标题: LCD1602显示发生串扰的问题咨询 [打印本页]

作者: mokedeng    时间: 2013-9-21 14:55
标题: LCD1602显示发生串扰的问题咨询
我用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;

}






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