图形点阵液晶显示模块与单片机的接口设计
- 格式:doc
- 大小:87.50 KB
- 文档页数:5
图形点阵液晶显示模块与单片机的接口设计
摘要:本文介绍以AT89S52单片机为控制核心,以LCD12864液晶作为屏幕的显示模块。
简述了显示模块的制作工艺过程,采用C语言编程,驱动液晶模块实现并行传输的字符、汉字以及图形显示,阐述了LCD12864液晶显示模块与单片机AT89S52的并行接口电路和软件编程方法,通过protel连接电路制成PCB板,在经过C语言驱动液晶显示,从而显示制作者所要显示的内容。
该模块硬件结构简单、功能齐全,工作稳定,可完成目前绝大部分设备的显示工作。
关键字:AT89S52单片机 LCD12864液晶显示模块 protel电路设计软件
中图分类号:TN141.9
1. 引言
在电子行业中,越来越多的产品开始重视人机信息交换的输入输出设备。
其中高像素液晶屏也越来越被广泛的采用。
手机、GPS、PDA等电子设备均已使用320*240或更高像素的18位色屏幕。
而目前大学生设计电子产品或毕业论文中常采用的显示电路却是LED数码管,显然已跟不上时代的发展。
文本设计的LCD12864液晶显示模块可提供大部分电子产品及电器的显示功能。
MCS-51单片机是美国INTE公司于1980年推出的产品,各高校及专业学校的培训教材仍与MCS-51单片机作为代表进行理论基础学习。
虽然目前51系列单片机已无法满意目前某些功能或环境的要求,但是51系列的单片机仍旧是最为成功的单片机芯片,它的影响力仍旧延续到现在,以致于被越来越多的人所认识。
而从目前市场价格及普及程度等多方面因素考虑,本文采用AT89S52单片机作为显示模块的控制核心。
目前众多电子类产品用于显示功能常用到数码管LED与液晶LCD。
虽然数码管LED的结构简朴、显示方便,但是功能比较单一,已无法满意科技进步而产生的显示要求。
并且LED 常用到动态显示,在复杂的系统中十分耗费系统资源,已逐渐被淘汰。
而在LCD方面,常见的有LCD1602,LCD12232,LCD12864等。
LCD1602可以在LCD显示屏上完整显示32个英文字符和日文等一些字符适合显示英文文字信息量较小的地方。
可以应用在计算器、频率计、时钟等产品上。
LCD12232也只适合文字量较少的场合。
而LCD12864的分辨率达到了128*64,对于16*16的字体可显示4行8列,已能满意大部分设备显示的要求。
LCD12864在市场上主要分为两种,一种采用st7920控制器,它一般带有中文字库字模,价格略高一点。
另一种是采用KS0108控制器,它只是点阵模式,不带字库。
而本文无需专门显示文本,且菜单文字比较简朴。
因此采用常见的KS0108控制器的LCD12864来完成显示模块的设计。
2.实验仪器设备
液晶显示模块12864、52驱动系统、直流电压源(+5V,内正外负)、电烙铁等
3. LCD12864的显示
3.1 点阵LCD的显示原理
液晶屏上如何显示一些汉字或图画,这也许是所有LCD12864初学者都最先思索的一个问题。
在数字电路中,所有数据都是由0和1保存的,同样LCD也利用了这一方法。
在点阵LCD上显示的只有两种颜色,因此可利用0和1来表示这两种颜色。
假设空格是由16*16个0组成的,在显示16*16的字体时,将其中某些点置为1便可在视觉上形成一个汉字,这些
二进制数称为代位码。
而这些由0和1转换而成的16进制数据便是字模。
不同的汉字有不同的字模,相同的汉字不同的字体也有不同的字模。
而将字模设为16*16像素是因为这样基本可以将汉字显示清晰准确,更高像素则更为清晰准确,但是却更多地占用了LCD的面积。
与汉字不同的是,一个字符只需要16*8的像素便即可。
如何将这16*16或者16*8个0、1保存下来是初学者所需要了解的,假设要在 LCD12864屏幕上准确准确的显示出汉字,则需要将16*16的汉字分为两行,每行由16列组成,这16列每列存在8个点,用2位16进制数(8位二进制数)表示这8个点,16个16进制数可表示1行,32个16进制数则能表示整个汉字。
通过LCD12864,则可将这些字模信息还原成汉字或图像。
3.2 LCD的硬件连接
LCD12864的管脚共有20个之多,但是连接的电路并不复杂。
但是需要注重的是LCD的电源共有2组,一组是用于驱动LCD显示,另一组用于背光显示。
可将这两组连在一起或者背光电源省略。
另外有个输入管脚V0需要接入LCD调整电压来调节对比度。
通常刚使用液晶时的问题是由此引起的,对比度过高于或过低均会使屏幕无法正常显示。
它可接10K-20K 电位器的调整端,电位器两端分别接至VDD与VEE。
目前市场上某些LCD12864的对比度可由单片机操作其寄存器调节,可根据不同的条件进行选择。
其余的端口均连接至单片机。
本文将IO口DB0-DB7连接至P2口,RS、RW、E分别连接至P1.0至P1.2,如图1。
图1 12864-单片机硬件接口连接图
3.3 LCD12864的显示
使用LCD12864时,需要对其寄存器以及功能器件有所了解。
寄存器包括指令寄存器以及数据寄存器。
通过对这两个寄存器的操作可改变LCD的显示方式和显示内容。
在LCD12864中存在行地址、列地址、以及页地址,而这些地址是由LCD中的地址计数器记录的。
如果需要在屏幕上第二行开头空两格显示多个汉字,则先要向指令寄存器写入这几个字的位置,然后将其字模按序存入。
前面提到过,一个字由两行数据组成,而这每一行所在的地址则是页地址,LCD12864共有8个页地址。
因此屏幕上第二行显示汉字则需要将页地址设置为2(页地址0和1分别为第一行字的所在的上下部分),显示这些汉字的上半部分,然后再设置为3显示下半部分。
行地址绝大部分情况下设置为0,它的作用是设置屏幕显示的起始行,实现屏幕的上下滚动功能可循环设置这一地址。
也可直接设置行地址来控制字体上下的位置。
开头空两格则可设置列地址来完成,可将列地址设置为32。
而这一行文字的其余列的列地
址并不需要手动设置,LCD中的Y地址计数器可自动加1。
对应页地址计数的还有X地址计数器与对应行地址计数的Z地址计数器。
XY地址计数器是一个9位计数器,高3位是X地址计数器,低6位为Y地址计数器,是作为DDRAM的地址指针,X地址计数器为DDRAM的页指针,Y地址计数器为DDRAM的Y地址指针。
而这里的DDRAM是存储图形显示数据的,用于存储单片机送入的点阵信息。
另外同样重要的还有液晶的指令系统与时序。
只有了解了指令系统才能准确的设置读与写操作,才能准确的设置行地址、列地址以及页地址。
而时序的设置直接决定了显示能否成功。
不同的晶振需要不同的延时来保证时序的准确(本文采用24M晶振)。
相关的指令代码与时序图这里不再展开。
3.4 12864显示模块单片机硬件制作工艺过程
图二为PCB板的制作过程:
图二 12864显示模块单片机硬件制作工艺流程
4. 软件设计
4.1 LCD底层接口驱动程序
底层驱动主要包含4个子程序,分别为LCD的初始化子程序init,写指令子程序inst,写数据子程序wdata,判断忙子程序bf。
LCD的初始化包含对LCD的复位与关开显示,其他读写子程序大同小异,其中对液晶操作的三个延时子程序;语句以确保时序的准确性。
对于液晶的读写均用到空闲状态检测以保证液晶的正常显示。
程序流程图如图2。
图2 程序流程图
5. 调试的结果
5.1 显示结果
通过单片机硬件的设计与制作及C语言的驱动以及取膜软件的取膜,最后可以得到所需要的图形和文字:
6.总结
在单片机与液晶的接口设计中,关键是要满足液晶的时序要求实现液晶的显示,软硬件同等重要。
在软件编程中,关键是要进行正确的初始化、操作及写入显示内容的代码,以上的接口电路和相应的程序已通过调试,并在实际中得到应用。
同时硬件要合理设计电路,电路布线合理正确,同时在焊接的过程中避免出现虚焊,焊接不良等不正确不合理的焊接,这样才能得到所显示的内容,同时由于12864液晶显示的诸多优点,如12864液晶显示屏不仅
能显示连续的汉字、字符,而且能读取GDRAM中的内容实现图形和曲线的显示等,人机接口更加友好,图形显示更加流畅,因此其应用也将越来越广泛。
参考文献
【1】刘银春.平板显示技术课程设计实验指导书福建农林大学出版社.
2010
【2】李广第.单片机基础. 北京:北京航空航天大学出版社.1994.
【3】远飞基于单片机和MGLS12864显示模块的液晶显示系统设计电子元器件应用2009年第1期。