我用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;
} |