微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 关于lcd1602移屏问题

关于lcd1602移屏问题

时间:10-02 整理:3721RD 点击:
我想按一下键盘的时候把整个屏幕移16位,得到新的两行,可是为什么我一输入移屏指令0x18之后,屏幕就不断地移动,不能停下来那?
求大神帮帮忙!最好有具体指令讲解

求大神解答.

程序贴上来看看,不然不好说

额,我就是想问一下,移屏到第二页之后应该怎样将它固定着~

应该是你程序有问题,移屏指令每次只移动一列,操作完就结束了,不会不停的移动。看看你控制移屏16列的循环有没有问题。

指令不是用0x18吗? 要不要先设置指针什么的先阿?

不用,直接把0x18,当作命令送进1602就可以了,送一次移动一列。
还是建议你贴一下程序

write_com(0x80+0x11);
for(num=0;num<15;num++)
{
write_date(table7[num]);
}
   
write_com(0x80+0x54);
for(num=0;num<5;num++)
{
  write_date(table8[num]);
}
for(num=0;num<16;num++)
{
  write_com(0x18);
}
前面初始化的那几个函数都不写了,主函数就是这个,就想把它移进显示区域.可是执行后只会不停地移动

最后加一个while(1);
用于停止程序,不停下来的话会从main函数开始语句再次执行程序(我记得好像是这样),就造成了你说的不断移屏的现象了。

  1. write_com(0x80+0x11);
  2. for(num=0;num<15;num++)
  3. {
  4. write_date(table7[num]);
  5. }
  6.    
  7. write_com(0x80+0x54);
  8. for(num=0;num<5;num++)
  9. {
  10.   write_date(table8[num]);
  11. }
  12. for(num=0;num<16;num++)
  13. {
  14.   write_com(0x18);
  15. }
  16. while(1);

复制代码

可是如果在有其它程序的情况下,整个程序一执行不就停在这里了吗? 有什么方法可以让它跳出来阿?

如果你还有其他程序,那你就不加while(1),在下面继续写的程序,他执行完移屏后会继续执行下面的语句,知道所有程序都执行完了,在后面再加一个while(1)。
或者你把这个1602显示程序改为子函数,当需要的时候就在main函数里调用,在main函数结尾处加上while(1)。

说的不错,顶一个

看1602的指令表,每写一次,整屏移动一位

同求同求同求同求同求同求同求同求同求同求同求同求同求同求

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top