LCD測試問題請教
這次的程式碼經過測試,使用LCD(STC2A16DRG-P)顯示正常,不過使用LCD(MTC-16101X)
卻無法正常顯示,在電源部份有接可變電阻,RS RW E接P1_0~3,LCD IO接P2,可是MTC
這顆LCD依然屹立不搖,完全不給我面子,只出現了八格黑色,想請教各位大大,為什麼M
TC這顆LCD不會動呢?是硬體部分漏了什麼嘛?還是我哪裡遺漏了什麼嘛?請各位大大指導!
(這程式碼只是為了測試LCD是否能夠正常顯示,按鍵只是附加!)
程式碼如下:
#include <at89x52.h>
#define RS P1_0
#define RW P1_1
#define Enable P1_2
//sbit P1_0 = 0xa0;
//sbit P1_1 = 0xa1;
//sbit P1_2 = 0xa2;
void delay(void);
void InitialLCD(void);
void WriteLCDcmd(char);
void WriteLCDdata(char);
void WriteLCDstring(char,char *);
void CheckBusy(void);
void KeyScan(void);
void firstLCD(void);
int KeyData=0xff;
int KeyTemp=0xff;
int user_phone[10]={0,9,3,7,1,2,3,4,5,6};
char one=0;
char zero=0;
unsigned char code MSG1[]="HELLO USER";
unsigned char code MSG2[]="User PhoneCell";
unsigned char code MSG3[]="0937123456";
unsigned char code MSG4[]="11111";
unsigned char code MSG5[]="22222";
unsigned char code MSG6[]="33333";
main()
{
InitialLCD();
WriteLCDcmd(0x01);
WriteLCDstring(10,MSG1);
delay();
while(1)
{
if(P3_0!=0xff)
{
WriteLCDcmd(0x01);
WriteLCDstring(14,MSG2);
delay();
}
else if(P3_1!=0xff)
{
WriteLCDcmd(0x01);
WriteLCDstring(10,MSG3);
delay();
}
else if(P3_2!=0xff)
{
WriteLCDcmd(0x01);
WriteLCDstring(5,MSG4);
delay();
}
else if(P3_3!=0xff)
{
WriteLCDcmd(0x01);
WriteLCDstring(5,MSG5);
delay();
}
else if(P3_4!=0xff|P3_5!=0xff
|P3_6!=0xff|P3_7!=0xff)
{
WriteLCDcmd(0x01);
delay();
}
}
}
void InitialLCD(void)
{
WriteLCDcmd(0x38);
WriteLCDcmd(0x38);
WriteLCDcmd(0x38);
WriteLCDcmd(0x38);
WriteLCDcmd(0x08); /* off display */
WriteLCDcmd(0x01); /* clear buffer */
WriteLCDcmd(0x0e); /* on display */
WriteLCDcmd(0x06); /* set input mode */
} /* InitialLCD */
void WriteLCDcmd(char instruction)
{
RS=0;
RW=0;
Enable=1;
P2=instruction;
Enable=0;
CheckBusy();
} /* WriteIns */
void WriteLCDdata(char i)
{
RS=1;
RW=0;
Enable=1;
P2=i;
Enable=0;
CheckBusy();
} /* WriteData */
void WriteLCDString(count,MSG)
char count;
char MSG[];
{
char i;
for(i=0;i<count;i++)
WriteLCDdata(MSG[i]);
} /* WriteString */
void CheckBusy(void)
{
char i=0x80;
while(i&0x80)
{
RS=0;
RW=1;
Enable=1;
i=P2;
Enable=0;
delay();
}
} /* CheckBusy */
void delay(void)
{
int i;
for(i=0;i<500;i++)
;
}
void KeyScan(void) //鍵盤掃描
{
int KeyStatus;
P3=0xff;
KeyStatus=~P3;
if(KeyStatus==0x01) //有按鍵輸入
{
one=0;
if(KeyTemp!=KeyStatus) //與上次鍵值不同
{
KeyTemp=KeyStatus; //儲存未除彈跳鍵值
zero=1;
}
else //與上次鍵值相同
{
zero+=1;
if(zero==5) //偵測已按下按鍵5次
KeyData=KeyTemp;//儲存鍵值
}
}
one+=1;
if(one==5) //偵測已釋放按鍵5次?
{
zero=0;
KeyTemp=0xff; //清除鍵值
KeyData=0xff; //清除鍵值
}
}/* KeyScan */
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 120.96.47.187
→
10/04 15:55, , 1F
10/04 15:55, 1F
→
10/04 15:55, , 2F
10/04 15:55, 2F
→
10/04 16:43, , 3F
10/04 16:43, 3F
→
10/04 18:30, , 4F
10/04 18:30, 4F
→
10/04 18:31, , 5F
10/04 18:31, 5F
→
10/04 18:35, , 6F
10/04 18:35, 6F
推
10/05 02:19, , 7F
10/05 02:19, 7F
→
10/14 08:43, , 8F
10/14 08:43, 8F
→
10/14 08:44, , 9F
10/14 08:44, 9F
→
10/14 08:44, , 10F
10/14 08:44, 10F
ASM 近期熱門文章
PTT數位生活區 即時熱門文章