1 / 13
文档名称:

玩转8液晶屏(st9)精要.pdf

格式:pdf   页数:13页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

玩转8液晶屏(st9)精要.pdf

上传人:q1188830 2016/5/22 文件大小:0 KB

下载得到文件列表

玩转8液晶屏(st9)精要.pdf

相关文档

文档介绍

文档介绍:在我们常用的人机交互显示界面中,除了数码管, LED ,以及我们之前已经提到的 LCD1602 之外,还有一种液晶屏用的比较多。相信接触过单片机的朋友都知道了,那就是 12864 液晶。顾名思义, 12864 表示其横向可以显示 128 个点,纵向可以显示 64 个点。我们常用的 12864 液晶模块中有带字库的,也有不带字库的,其控制芯片也有很多种,如 KS0108 T6963, ST7920 等等。在这里我们以 ST7920 为主控芯片的 12864 液晶屏来学习如何去驱动它。( 液晶屏采用金鹏的 OCMJ4X8C) 关于这个液晶屏的更多信息,请参考它的 DATASHEET ,附件中有下载。我们先来了解一下它的并行连接情况。下面是电路连接图从上面的图可以看出,液晶模块和单片机的连接除了 P0 口的8 位并行数据线之外,还有 RS,RW,E 等几根线。其中 R/S 是指令和数据寄存器的选择控制线( 串行模式下为片选), R/W 是读写控制线( 串行模式下是数据线),E 是使能线( 串行模式下为时钟线)。通过这几根控制线和数据线,再结合它的时序图,我们就可以编写出相应的驱动程序啦。看看并行模式下的写时序图: 根据这个时序图,我们就可以写出写数据或者写命令到 LCD12864 液晶的子程序。读时序图如下: 根据这个时序图我们就可以从 LCD12864 液晶模块内部 RAM 中读出相应的数据,我们的忙检测函数就是根据这个时序图写出来的。以及后面章节中讲的画点函数等都要用到读时序。有了这两个时序图,然后我们再看看 OCMJ4X8C 的相关指令集,就可以编写出驱动程序了。这里要注意的是指令集分为基本指令集和扩充指令集,其中扩充指令集主要是与绘图相关, 在此后的章节中会有相应的介绍。下面让我们根据这些编写出它的驱动程序吧。我的硬件测试条件为: STC89C516() + OCMJ4X8C 实际显示效果图片如下: 程序部分如下,请结合液晶模块的 DATASHEET 看程序,这样能够更加快速的弄懂程序的流程。大致有如下几个函数:写数据,写指令,忙检测,初始化,指定地址显示字符串等等。#include "" #include "" sbit io_LCD12864_RS = P1^0 ; sbit io_LCD12864_RW = P1^1 ; sbit io_LCD12864_EN = P1^2 ; #define io_LCD12864_DATAPORT P0 #define SET_DATA io_LCD12864_RS = 1 ; #define SET_INC io_LCD12864_RS = 0 ; #define SET_READ io_LCD12864_RW = 1 ; #define SET_WRITE io_LCD12864_RW = 0 ; #define SET_EN io_LCD12864_EN = 1 ; #define CLR_EN io_LCD12864_EN = 0 ; void v_Lcd12864CheckBusy_f( void ) // 忙检测函数{ unsigned int nTimeOut = 0 ; SET_INC SET_READ CLR_EN SET_EN while( ( io_LCD12864_DATAPORT & 0x80 ) && ( ++nTim eOut != 0 ) ) ; CLR_EN SET_INC SET_READ } void v_Lcd12864SendCmd_f( unsigned char byCmd ) // 发送命令{ v_Lcd12864CheckBusy_f() ; SET_INC SET_WRITE CLR_EN io_LCD12864_DATAPORT = byCmd ; _nop_(); _nop_(); SET_EN _nop_(); _nop_(); CLR_EN SET_READ SET_INC } void v_Lcd12864SendData_f( unsigned char byData

最近更新