[51单片机] LCD12864串口驱动程序设计,LCD主控ST7920,MCU;STC89C52&11.0592M

[复制链接]
7103|7
 楼主| 电子云图 发表于 2013-9-14 09:42 | 显示全部楼层 |阅读模式
本帖最后由 电子云图 于 2013-9-14 09:47 编辑

  我们在学习LCD12864(主控ST7920)时,大部分的例程用的是并口例程。
    下面我来讲解一下如何用串口(三线SPI)驱动LCD12864.
   硬件;1.STC89C52最小系统(带串口功能),晶振11.0592m
               2.LCD12864(主控ST7920)一片,
               3.杜邦若根,

    电脑大家都有吧!!!:lol
    软件;KEIL和STC-ISP


     首先我们来看下时序图;

             从这个时序图中我们可以看出,无论是写一个字节或者读一个字节;
都必须先给LCD12864写一个操作指令(读还是写,指令寄存器还是数据寄存器);然后是两个字节的数据或指令,但是两个字节都只是高四位有用,实际数据或指令是第一个字节的高四位做数据或指令的高四位,第二个字节的高四位做指令或数据的低四位。
   总结:写入方式是三个字节,第一个是确定要干什么(要干什么都没确定怎么工作),后面两个字节就是要干的事了(写数据或指令),至于为什么要两个字节合并成一个字节,这恐怕就要去问做ST7920的厂商了。。。。。

        LCD12864的指令集我就不罗嗦了,最主要的还是看懂时序图,废话不多讲了,上图,上源代码

源代码:
LCD12864数据手册;
欢迎大家下载测试,有什么问题也欢迎大家讨论。




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
SLHSu37 发表于 2013-10-15 09:49 | 显示全部楼层
感谢分享~~~~正在做这个,学习学习·~~
八月风 发表于 2014-10-1 14:07 | 显示全部楼层
经试验程序可用,不过本人硬件用的是P0口,实验的时候遇到了点小问题。开始的时候直接用楼主的的程序,P1、P2、P3都顺利通过。将端口定义为P0.5、P0.6、P0.7,结果没有成功,反复检查发现:unsigned char LCD12864_ReceiveByte()函数需改进:
源代码:
        if(LCD12864_SID)
                dat++;
改为:
        if(LCD12864_SID==1)
                dat++;
xyz549040622 发表于 2014-10-1 15:46 来自手机 | 显示全部楼层
八月风 发表于 2014-10-1 14:07
经试验程序可用,不过本人硬件用的是P0口,实验的时候遇到了点小问题。开始的时候直接用楼主的的程序,P1、 ...

这两语句一个意思吧,建议后面那条语句加括号直观
taotao112 发表于 2014-10-6 22:22 | 显示全部楼层
谢谢楼主的程序 @@@哈哈哈 !!!
加油吧小鱼儿 发表于 2015-4-16 00:44 | 显示全部楼层
非常感谢,串口试验成功~
small_toger09 发表于 2015-7-7 10:25 | 显示全部楼层
非常感谢,正好用到!
xm_smallp 发表于 2016-4-22 10:54 | 显示全部楼层
谢谢分享!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

162

帖子

7

粉丝
快速回复 在线客服 返回列表 返回顶部