这里通过三种方法实现了单片机控制字符串的滚动
方法一:向液晶写入字符串后,连续发送0x1c指令可以是整个屏幕向左滚动,0x18向右滚动这个方法在我上传的程序中没有用到
方法二:通过软件的方法让液晶的整个屏幕滚动,效果和方法一相同,实现较复杂,不建议使用这种方法在lcd.c文件中封装成了rolling_screen()函数
方法三:由于上两种方法会将屏幕的上下两行同时滚动,无法实现一行滚动一行静止不动,所以方法三通过:每次打印后对写入首地址的移动和对字符串指针的移动来实现字符串的滚动效果,这种方法在led.c文件中封装成了rolling_str()函数,这个函数仅作原理示范,不建议直接调用,
在我的程序中我把这个函数分解后放入了定时器,利用定时器完成每一次刷新,main()函数中使用的就是定时器刷新的方法
另注:time.c文件中定义了延时和定时器初始化函数,是lcd.c的支持文件
关于程序更详细的说明我放在了PPT中,版本支持位2013+
程序工程使用Keil4建立仿真使用Proteus7.8,连接方式见lcd.h文件关于底层端口的定义
视频预览:
PPT内容预览(内含关于1602液晶滚动显示源程序的详细讲解):
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
单片机源程序如下:
所有资料51hei提供下载:
ppt(程序详细讲解和实验现象视频).rar
(3.46 MB, 下载次数: 22)
程序和仿真.rar
(67.66 KB, 下载次数: 18)
|