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