LCD1602切屏后为什么会一直闪烁

陌简凉ζ 2020-12-28 10:53:32
51单片机中,使用LCD1602切屏后,为什么会一直闪烁
...全文
22780 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
刺客阿瑞 2021-02-02
  • 打赏
  • 举报
回复
额,我再次看了一下你们上面的讨论过程,你说到会显示部分内容不是你要的效果,那就说明你在LCD1602初始化函数不够完善,你要发送一个0x01的清屏指令,这个在手册上应该有写,但是市面上很多程序都没有这一句,这个还是有必要的。 注意,你要设置一个器件(不仅仅对于LCD1602),一般都要对它内部的参数进行设置,就像手机,有的手机默认12小时制时间,有的手机默认24小时制时间,你拿到新手机,就需要设置一下,这是一个道理。
刺客阿瑞 2021-02-02
  • 打赏
  • 举报
回复
你对具体现象描述的不够清楚,不过你可以看看是否存在下面的两种情形: (1)在main()函数中没有写while(1)函数,也就是类似于 void main() { ……;//lcd1602初始化 ……; //lcd1602显示内容 } 这样的代码在51单片机里面,它会不停的执行main()函数,也就是不停的初始化LCD1602、LCD1602显示内容,是会不停的闪烁的。(这样的代码也有可能”不会“闪烁,因为闪烁的太快,肉眼无法观察到,在LCD1602的显示函数中,延时越长,闪烁的现象也就更加明显) (2)在main()函数中写了while(1)函数,也就是类似于 void main() { ……;//lcd1602初始化 while(1) { ……; //lcd1602显示内容 } } 这样的代码“可能会”产生闪烁:因为如果lcd1602显示函数中,延时比较长,是会出现闪烁的 同时也“不能不会”闪烁:因为显示太快,肉眼无法观察到闪烁的状态,但实际执行效果是不停的闪烁的 如果是为了单纯的测试你写的代码是否正确,可以这样: void main() { ……;//lcd1602初始化 ……; //lcd1602显示内容 while(1); } 但是这样的代码,只适合于单独的功能测试,具体实践中要适时调整策略。 上面的属于理论推测,希望对你有帮助。
brian_stm32 2021-01-14
  • 打赏
  • 举报
回复
这个挺奇怪,解决了吗
陌简凉ζ 2020-12-28
  • 打赏
  • 举报
回复
引用 3 楼 yishumei的回复:
[quote=引用 2 楼 陌简凉ζ 的回复:][quote=引用 1 楼 yishumei的回复:]程序里是不是在一直刷新1602显示内容?
是的,会显示第一个屏里的部分内容[/quote] 刷新时间多少?延长刷新时间[/quote] 延时时间是100
Andy___Zhong 2020-12-28
  • 打赏
  • 举报
回复
那一行估计没有被新的内容给替换掉(内存没刷新, 有部分残留)
yishumei 2020-12-28
  • 打赏
  • 举报
回复
引用 2 楼 陌简凉ζ 的回复:
[quote=引用 1 楼 yishumei的回复:]程序里是不是在一直刷新1602显示内容?
是的,会显示第一个屏里的部分内容[/quote] 刷新时间多少?延长刷新时间
陌简凉ζ 2020-12-28
  • 打赏
  • 举报
回复
引用 1 楼 yishumei的回复:
程序里是不是在一直刷新1602显示内容?
是的,会显示第一个屏里的部分内容
yishumei 2020-12-28
  • 打赏
  • 举报
回复
程序里是不是在一直刷新1602显示内容?

27,375

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧