玩转12864液晶--显示字符

玩转12864液晶--显示字符

ID:32431618

大小:224.50 KB

页数:6页

时间:2019-02-04

玩转12864液晶--显示字符_第1页
玩转12864液晶--显示字符_第2页
玩转12864液晶--显示字符_第3页
玩转12864液晶--显示字符_第4页
玩转12864液晶--显示字符_第5页
资源描述:

《玩转12864液晶--显示字符》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、在我们常用的人机交互显示界面中,除了数码管,LED,以及我们之前已经提到的LCD1602之外,还有一种液晶屏用的比较多。相信接触过单片机的朋友都知道了,那就是12864液晶。顾名思义,12864表示其横向可以显示128个点,纵向可以显示64个点。我们常用的12864液晶模块中有带字库的,也有不带字库的,其控制芯片也有很多种,如KS0108T6963,ST7920等等。在这里我们以ST7920为主控芯片的12864液晶屏来学习如何去驱动它。(液晶屏采用金鹏的OCMJ4X8C)关于这个液晶屏的更多信息,请参考它的DATASHEET,附件中有下载。我们先来了解一下它的并行连接情况。下

2、面是电路连接图从上面的图可以看出,液晶模块和单片机的连接除了P0口的8位并行数据线之外,还有RS,RW,E等几根线。其中R/S是指令和数据寄存器的选择控制线(串行模式下为片选),R/W是读写控制线(串行模式下是数据线),E是使能线(串行模式下为时钟线)。通过这几根控制线和数据线,再结合它的时序图,我们就可以编写出相应的驱动程序啦。看看并行模式下的写时序图:根据这个时序图,我们就可以写出写数据或者写命令到LCD12864液晶的子程序。读时序图如下:根据这个时序图我们就可以从LCD12864液晶模块内部RAM中读出相应的数据,我们的忙检测函数就是根据这个时序图写出来的。以及后面章节

3、中讲的画点函数等都要用到读时序。有了这两个时序图,然后我们再看看OCMJ4X8C的相关指令集,就可以编写出驱动程序了。这里要注意的是指令集分为基本指令集和扩充指令集,其中扩充指令集主要是与绘图相关,在此后的章节中会有相应的介绍。下面让我们根据这些编写出它的驱动程序吧。我的硬件测试条件为:STC89C516(11.0592MHz)+OCMJ4X8C实际显示效果图片如下:程序部分如下,请结合液晶模块的DATASHEET看程序,这样能够更加快速的弄懂程序的流程。大致有如下几个函数:写数据,写指令,忙检测,初始化,指定地址显示字符串等等。[p][/p]#include"reg52.h"

4、#include"intrins.h"sbitio_LCD12864_RS=P1^0;sbitio_LCD12864_RW=P1^1;sbitio_LCD12864_EN=P1^2;#defineio_LCD12864_DATAPORTP0#defineSET_DATAio_LCD12864_RS=1;#defineSET_INCio_LCD12864_RS=0;#defineSET_READio_LCD12864_RW=1;#defineSET_WRITEio_LCD12864_RW=0;#defineSET_ENio_LCD12864_EN=1;#defineCLR_ENi

5、o_LCD12864_EN=0;voidv_Lcd12864CheckBusy_f(void)//忙检测函数{unsignedintnTimeOut=0;SET_INCSET_READCLR_ENSET_ENwhile((io_LCD12864_DATAPORT&0x80)&&(++nTimeOut!=0));CLR_ENSET_INCSET_READ}voidv_Lcd12864SendCmd_f(unsignedcharbyCmd)//发送命令{v_Lcd12864CheckBusy_f();SET_INCSET_WRITECLR_ENio_LCD12864_DATAPOR

6、T=byCmd;_nop_();_nop_();SET_EN_nop_();_nop_();CLR_ENSET_READSET_INC}voidv_Lcd12864SendData_f(unsignedcharbyData)//发送数据{v_Lcd12864CheckBusy_f();SET_DATASET_WRITECLR_ENio_LCD12864_DATAPORT=byData;_nop_();_nop_();SET_EN_nop_();_nop_();CLR_ENSET_READSET_INC}voidv_DelayMs_f(unsignedintnDelay)//延时

7、{unsignedinti;for(;nDelay>0;nDelay--){for(i=125;i>0;i--);}}voidv_Lcd12864Init_f(void)//初始化{v_Lcd12864SendCmd_f(0x30);//基本指令集v_DelayMs_f(50);v_Lcd12864SendCmd_f(0x01);//清屏v_DelayMs_f(50);v_Lcd12864SendCmd_f(0x06);//光标右移v_DelayMs_f(50);v_Lcd12864Send

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。