打印
[51单片机]

LCD1602显示串扰的问题咨询

[复制链接]
1352|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
mokedeng|  楼主 | 2013-9-21 15:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用1602显示了两行数据,第一行是把程序里面的一个值读出来显示,第二行显示的是将外部输入的一个频率值显示出来(P3.4口输入)
现在是出现了这样一个问题,当我先开启单片机再将外部输入端口插到单片机对应管脚上显示,两行值的显示是没有问题的。
但是当我先插上外部输入端口的频率值管脚,再打开单片机的电源的时候就会出现两个值的串扰,第二行的频率值会同时显示在两行。 调整两行数值的大小时。第二行的频率值可以改变,但原先留在第一行的值(就是多余显示的那个数值)不变了,一直停留在那里。    不知道是程序哪里有BUG。有没有同学遇到类似的问题。


下面我将1602的程序附上,中间的延时函数都是毫秒级别的
sbit lcde=P2^7;          //使能端
sbit lcdrs=P2^6;   //复位端
sbit lcdrw=P2^5; //写数据端

/*******************************************************************/
/*                                                                                                                                  */
/*写指令数据到LCD                                                                                                          */
/*RS=L,RW=L,E=高脉冲,D0-D7=指令码。                                                                   */
/*                                                                                                                                  */
/*******************************************************************/

void write_com(uchar com)  //写指令
{
        lcdrs=0;
        lcdrw=0;
        lcde=0;
        delay(5);
        P0=com;         //将8位指令通过P0口传给1602
        delay(5);
        lcde=1;
        delay(5);
        lcde=0;

}

/*******************************************************************/
/*                                                                                                                                  */
/*写显示数据到LCD                                                                                                          */
/*RS=H,RW=L,E=高脉冲,D0-D7=数据。                                                                     */
/*                                                                                                                                  */
/*******************************************************************/

void write_date(uchar date)  //写数据
{
        lcdrs=1;
        lcdrw=0;
        lcde=0;
        P0=date;   //将8位数据通过P0口传给1602
        delay(5);
        lcde=1;
        delay(5);         
        lcde=0;

}

相关帖子

沙发
mokedeng|  楼主 | 2013-9-21 16:21 | 只看该作者
等待ing

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

38

帖子

0

粉丝