打印
[51单片机]

LCD12864串口驱动程序设计,LCD主控ST7920,MCU;STC89C52&11.0592M

[复制链接]
6398|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 电子云图 于 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.zip (19.82 KB)
LCD12864数据手册; JLX12864C-1.pdf (428.78 KB)
欢迎大家下载测试,有什么问题也欢迎大家讨论。




相关帖子

沙发
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、 ...

这两语句一个意思吧,建议后面那条语句加括号直观

使用特权

评论回复
5
taotao112| | 2014-10-6 22:22 | 只看该作者
谢谢楼主的程序 @@@哈哈哈 !!!

使用特权

评论回复
6
加油吧小鱼儿| | 2015-4-16 00:44 | 只看该作者
非常感谢,串口试验成功~

使用特权

评论回复
7
small_toger09| | 2015-7-7 10:25 | 只看该作者
非常感谢,正好用到!

使用特权

评论回复
8
xm_smallp| | 2016-4-22 10:54 | 只看该作者
谢谢分享!!!

使用特权

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

本版积分规则

11

主题

162

帖子

7

粉丝