打印
[51单片机]

1602液晶的疑问

[复制链接]
1830|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
994920256|  楼主 | 2013-11-25 16:39 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 994920256 于 2013-11-25 16:42 编辑

1602.zip (346.98 KB)

我手上有两块51单片机的板子,都是STC 89C52单片机,晶振都是11.0592M,两块不同的1602液晶,想在上面显示一个字符A,出现问题的程序如下C:\Users\hp\Desktop\XQ6R625(Q~YPZ1VZ9ZVEKG2.jpg

问题的现象是当不加de();这个延时函数时,在一个液晶上可以正常显示,在另一个液晶显示不正常,可以出现A这个字母,但是第一行会出现鬼影,加上延时,显示正常,也就是说想要不正常的那个液晶正常工作就必须加上那个de()延时函数

我个人觉得是生产液晶的厂家不同,导致液晶的时序上会有点不同,所以会出现这个现象,但是另外一个液晶必须至少延时大概15us左右的时间才能正常,但我看到的1602液晶上的手册上[img]C:\Users\hp\Desktop\]S4(7G@PEFAWZ52MX@G1K59.jpgC:\Users\hp\Desktop\}KWUXX6DYV9WU2)LQGMJLJ5.jpg[/img]
写时序上的时间都是ns级别的,51单片机执行一条指令就1us(12M的晶振),加de()延时函数没必要啊,可是不加的话,在第二个液晶上没办**常显示啊,恳求各位帮帮忙,解除我的疑惑

相关帖子

沙发
994920256|  楼主 | 2013-11-25 16:43 | 只看该作者
不会上传图片,部分程序和部分1602数据手册,都在附件里,麻烦各位了

使用特权

评论回复
板凳
ayb_ice| | 2013-11-25 17:23 | 只看该作者
严格按时序写肯定没有问题

使用特权

评论回复
地板
994920256|  楼主 | 2013-11-25 18:46 | 只看该作者
ayb_ice 发表于 2013-11-25 17:23
严格按时序写肯定没有问题

就是照着时序写的,同样的程序在一个液晶上显示正常,在另一个液晶上显示不正常

使用特权

评论回复
5
ningling_21| | 2013-11-25 19:27 | 只看该作者
994920256 发表于 2013-11-25 18:46
就是照着时序写的,同样的程序在一个液晶上显示正常,在另一个液晶上显示不正常 ...

显示不正常的LCD是不是坏了?

使用特权

评论回复
6
994920256|  楼主 | 2013-11-25 19:35 | 只看该作者
本帖最后由 994920256 于 2013-11-25 21:26 编辑
ningling_21 发表于 2013-11-25 19:27
显示不正常的LCD是不是坏了?

void de(void)
{
        _nop_();_nop_();_nop_();_nop_();_nop_();
        _nop_();_nop_();_nop_();_nop_();_nop_();
        _nop_();_nop_();_nop_();_nop_();_nop_();
}
void LCD1602_write_command(uint8 com)
{
        LCD_RS = 0;
        LCD_RW = 0;
        LCD_DB = com;
//        de();
        LCD_EN = 1;
        LCD_EN = 0;
        delay(10);
}
当加上de();这个函数时显示正常,不加的时候还会显示字母A,但是会出现黑框,所以应该不是液晶坏了

第一幅图为加延时函数的显示,第二幅图为不加延时的显示

使用特权

评论回复
7
994920256|  楼主 | 2013-11-25 19:57 | 只看该作者

使用特权

评论回复
8
ningling_21| | 2013-11-25 22:08 | 只看该作者
加延时是应该的,LCD也有反应时间,否则就会有问题。

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
994920256 + 1 1
9
xianfly1990| | 2013-11-25 22:14 | 只看该作者
高手阿  我刚学到这里 1602液晶显示字符 我还没尝试写程序!

使用特权

评论回复
10
994920256|  楼主 | 2013-11-25 22:17 | 只看该作者
ningling_21 发表于 2013-11-25 22:08
加延时是应该的,LCD也有反应时间,否则就会有问题。

但是在另外一个1602液晶上,不加延时程序也正确,经过我的摸索,在每次写命令的时候进行忙检查,不加延时也会显示正确,还是ayb_ice大牛说的对啊,要严格遵照时序,至于在那个不加延时显示正确的液晶上估计是巧合而已,不严格遵守时序总会出现问题

使用特权

评论回复
11
994920256|  楼主 | 2013-11-25 22:17 | 只看该作者
本帖最后由 994920256 于 2013-11-25 22:19 编辑

ll

使用特权

评论回复
12
994920256|  楼主 | 2013-11-25 22:19 | 只看该作者
ayb_ice 发表于 2013-11-25 17:23
严格按时序写肯定没有问题

多谢您的指导,问题已解决

使用特权

评论回复
13
994920256|  楼主 | 2013-11-25 22:24 | 只看该作者
xianfly1990 发表于 2013-11-25 22:14
高手阿  我刚学到这里 1602液晶显示字符 我还没尝试写程序!

什么高手啊,我是菜鸟,还在学习

使用特权

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

本版积分规则

2

主题

29

帖子

1

粉丝