LCD1602顯示時(shí),總是前面空四格,單詞間的空格會(huì)變成$,字母“A”會(huì)變成"E".仿真運(yùn)行時(shí)沒(méi)問(wèn)題。哪位能幫忙解決一下#defin 主程序中: uchar disp[16]={"Number: "};//顯示數(shù)組 LCD_Init();//LCD初始化 WriteChar(1,0,16,"No one Calls.... ");//第一行顯示“No one Calls.... ” 調(diào)用程序: #include"delay.h" //添加延時(shí)函數(shù)頭文件 #define LCD_PINDATA P0 //數(shù)據(jù)端口定義 P2 sbit RS = P1^4; //RS P0^7 sbit RW = P1^5; //RW P0^6 sbit E = P1^6; //E P0^5 /************************************************ ** 函數(shù)名稱(chēng) : WriteCOMDATA(uchar LCD_DATA,uchar N) ** 函數(shù)功能 : LCD1602寫(xiě)指令、數(shù)據(jù)函數(shù) ** 輸 入 : LCD_DATA:指令或者數(shù)據(jù) N:指令方式還是數(shù)據(jù)方式 N=0時(shí),LCD_DATA為指令,N=1時(shí),LCD_DATA為數(shù)據(jù) ** 輸 出 : 無(wú) ** 說(shuō) 明 : ************************************************/ void WriteCOMDATA(uchar LCD_DATA,uchar N) { Delay(10); E=1; RW=0; RS=N; LCD_PINDATA=LCD_DATA; E=0; } /************************************************ ** 函數(shù)名稱(chēng) : void LCD_init(void) ** 函數(shù)功能 : LCD1602初始化操作 ** 輸 入 : 無(wú) ** 輸 出 : 無(wú) ** 說(shuō) 明 : ************************************************/ void LCD_Init(void) { WriteCOMDATA(0x01,0); Delay(500); WriteCOMDATA(0x38,0); Delay(10); WriteCOMDATA(0x06,0); Delay(10); WriteCOMDATA(0x0c,0); Delay(10); } /************************************************ ** 函數(shù)名稱(chēng) :void WriteChar(uchar Row,uchar Col,uchar Num,uchar *pBuffer) ** 函數(shù)功能 :在任意位置寫(xiě)指定個(gè)字符 ** 輸 入 :Row : 要寫(xiě)的字符所在的行,只能為1或2; Col : 要寫(xiě)的字符所在的列,只能為0---15 Num : 要寫(xiě)字符的個(gè)數(shù) pbuffer : 要寫(xiě)字符的首地址 ** 輸 出 :無(wú) ** 說(shuō) 明 : ************************************************/ void WriteChar(uchar Row,uchar Col,uchar Num,uchar *pBuffer) { uchar i; if(Row==1)Row=0x80+Col; else Row=0xC0+Col; WriteCOMDATA(Row,0); for(i=Num;i!=0;i--) { WriteCOMDATA(*pBuffer,1); pBuffer++; } } #endif |
歡迎光臨 (http://m.zg4o1577.cn/bbs/) | Powered by Discuz! X3.1 |