标题: 单片机+lcd1602显示错误问题 [打印本页]

作者: whb1997    时间: 2019-12-21 11:58
标题: 单片机+lcd1602显示错误问题
用超声波和lcd做了个测距,但是发现字符有的显示不正确,就写了个lcd单独显示的程序,发现和之前错误的是一样的。
搞不懂是什么原因导致的。

代码和显示图片如下:
#include <reg52.h>
sbit LCDEN=P3^4;
sbit LCDRS=P3^5;
sbit U1=P2^6;
sbit U2=P2^7;
unsigned char code table[]={"Distance:"};  
void delayms(unsigned int);
void write_com(unsigned char com)   
{
    LCDRS=0;                        
    P0=com;                        
    delayms(10);                  
    LCDEN=1;                        
    delayms(10);
    LCDEN=0;

}
void write_date(unsigned char date)
{
    LCDRS=1;
    P0=date;
    delayms(10);
    LCDEN=1;
    delayms(10);
    LCDEN=0;

}
void init()
{
    U1=0;                          
    U2=0;
    LCDEN=0;                     
    write_com(0x38);               
    write_com(0x0C);               
    write_com(0x06);               
    write_com(0x01);               
}
void main()
{   unsigned char num;
    init();
    write_com(0x80);
    for(num=0;num<=8;num++)
    {
        write_date(table[num]);
    }
    while(1);
}
void delayms(unsigned int ms)
{
    unsigned int x,y;
    for(x=ms;x>0;x--)
        for(y=110;y>0;y--);}
[attach]213594[/attach]



作者: 杨雪飞    时间: 2019-12-21 17:04
unsigned char code table[]={"Distance:"};  

table 改成 strins试试。
作者: wulin    时间: 2019-12-21 19:18
本帖最后由 wulin 于 2019-12-21 21:21 编辑

代码没有任何问题,像是硬件问题引起的,楼主把P0插针上的杜邦线拔掉试试,有可能因此引入干扰导致数据错误。
作者: 萌萌哒啊    时间: 2019-12-21 21:57
把大括号去掉
作者: 诸天明月    时间: 2019-12-23 08:15
你要展示的内容是字符串,所以
     unsigned char code table[]="Distance:";  //注意不可以大括号
      void main()
{   unsigned char num;
    init();
    write_com(0x80);
   
  for(i=0;table[i]!='\0';i++)
                        {
                                write_date(table[i]);
                        }
    while(1);
}即可




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1