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.51hei.com/bbs/) | Powered by Discuz! X3.1 |