看板 ASM 關於我們 聯絡資訊
這次的程式碼經過測試,使用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
easypro:http://0rz.tw/4dkRc 按照DataSheet的第11頁接對比色 10/04 15:55
easypro:然後作調整 10/04 15:55
maxwellyann:EA大你貼的DATASHEET網址掛ㄌ看不到,可以麻煩重PO嘛? 10/04 16:43
maxwellyann:用我家的電腦就可以看的到了 = = 學校的看不到 10/04 18:30
maxwellyann:先來研究一下 感恩EA大唷~有問題再來問你!!! 10/04 18:31
maxwellyann:DATASHEET第11頁沒有對比色啊 = =都是黑色ㄉ! 10/04 18:35
WolfLord:WriteLCDcmd(0x38); 改成 WriteLCDcmd(0x30); 看看 10/05 02:19
maxwellyann:改成0X30以後,依然沒有動作捏 = = 是LCM的問題嗎??? 10/14 08:43
maxwellyann:而且程式碼我有在別顆學校教學用的LCM上試過可以用, 10/14 08:44
maxwellyann:那問題到底出在哪裡呢?是MTC這顆LCM需要外接甚麼嗎? 10/14 08:44