找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2501|回复: 0
打印 上一主题 下一主题
收起左侧

LCD1602显示发生串扰的问题咨询

[复制链接]
跳转到指定楼层
楼主
ID:51963 发表于 2013-9-21 14:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用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;

}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表