基于单片机的液晶显示系统设计(共29页).doc

上传人:飞****2 文档编号:17101618 上传时间:2022-05-21 格式:DOC 页数:29 大小:3.05MB
返回 下载 相关 举报
基于单片机的液晶显示系统设计(共29页).doc_第1页
第1页 / 共29页
基于单片机的液晶显示系统设计(共29页).doc_第2页
第2页 / 共29页
点击查看更多>>
资源描述

《基于单片机的液晶显示系统设计(共29页).doc》由会员分享,可在线阅读,更多相关《基于单片机的液晶显示系统设计(共29页).doc(29页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上 摘 要本文围绕设计以单片机作为LCD液晶显示系统控制器为主线,基于单片机8051,采用的液晶显示控制器的芯片是SED1520,主要实现中文显示、滚屏以及左右移动功能。同时也对部分芯片和外围电路进行了介绍和设计,并附以系统结构框图加以说明,着重介绍了本系统应用的各硬件接口技术和各个接口模块的功能及工作过程,并详细阐述了程序的各个模块。本系统是以单片机的汇编语言来进行软件设计,指令的执行速度快,节省存储空间。为了便于扩展和更改,软件的设计采用模块化结构,使程序设计的逻辑关系更加简洁明了。使硬件在软件的控制下协调运作。其次阐述了部分程序的流程图和实现过程。本文撰写的主导思

2、想是软、硬件相结合,以硬件为基础,来进行各功能模块的编写。最后对我所开发的用单片机实现LCD液晶显示器控制原理的设计思想和软、硬件调试作了详细的论述。关键字:单片机、液晶显示、8051、SED1520 目 录1 绪 论1.1 单片机液晶显示系统设计课题背景单片机液晶显示系统主要是指单片机以及由单片机驱动的点阵式液晶显示屏所组成的一个显示系统。液晶显示器与CRT(cathode-ray tube,阴极射线管)、LED (light-emitting diode,发光二级管)或等离子显示器相比是一种低功耗的平面显示器件。它在车内广告、在型智能广告、可视电话、仪表盘、空调、洗衣机和其它低功耗电子产品

3、中得到广泛应用。老式七段LCD(Liquid Crystal Display 液晶显示屏)显示的字符数量有限,只能用于简单显示,而对于比较复杂的字符、图形无法表达。然而在现代工业控制和一些智能化仪器仪表中,越来越多的场所需要用点阵图形显示器显示汉字。由于物探仪器的多功能化、智能化、并且普遍采用人机对话的交互方式,需要能够显示更丰富信息和通用性较强的显示器,便于开发和应用,并要求其体积小、重量轻、功耗小。图形点阵式LCD不仅可以显示字符、数字,还可以显示各种图形、曲线及汉字,并且可以实现屏幕画面滚动、分区开窗口、反转、闪烁、位操作等功能,可以显示用户自定义的任意符号以及曲线、图形等,是信息处理、

4、信息输出的重要手段之一,具有广泛的应用前景。1.2 开发单片机液晶显示系统的意义社会意义:液晶显示器(LCD)具有功耗低、体积小、重量轻、超薄等许多其它显示器无法相比的优点。近几年来被广泛用于单片机控制的智能仪器、仪表和低功耗电子产品中。液晶显示器分为字符型LCD显示模块和点阵型LCD显示模块。字符型LCD是一种用57点阵图形来显示字符的液晶显示器。点阵型液晶可显示用户自定义的任意符号和图形,并可卷动显示,它作为便携式单片机系统人机交互界面的重要组成部分被广泛应用于实时检测和显示的仪器仪表中。支持汉字显示的点阵型液晶在现代单片机应用系统中是一种十分常用的显示设备,汉字BP机、手机上的显示屏就是

5、点阵型LCD。点阵型LCD是现代单片机应用系统中最常用的人机交互界面之一。现实意义:我选择的单片机液晶显示系统的开发,是基于KS0108液晶显示控制器,在C8051F020单片机实验系统上实现。KS0108是点阵型液晶显示控制器,C8051F020单片机是美国Silabs公司推出的完全集成的混合信号系统芯片(SOC)。利用单片机控制液晶显示系统的原理,完成单片机液晶显示系统的设计,我希望能够触类旁通,灵活应用其他型号的液晶显示控制器。将来如果有机会从事这方面的工作,要运用的液晶显示控制器不一定是KS0108,但这次毕业设计中学到的东西为此打下了良好的基础,相信自己能做好这方面的工作。1.3 课

6、题完成的功能所选的单片机液晶显示系统设计,是在C8051F020系统实验设备上实现的。C8051F020中有内藏KS0108控制器的液晶模块CGM12864B。KS0108,12864个点阵,与行控制器KS0107配合使用,组成液晶显示驱动控制系统。我最主要是用KS0108来设计图形动态显示。在显示屏上的显示点是以字节数和位数为显示单元的,单元内为“1”的位在屏幕上反应是亮点,为“0”的位不亮。在字节中能够显示的位数可编程设置,范围是116。如果小于等于8位,则用一个字节,每个字节的低位不起显示作用。例如,设置显示单元为6,每个字节显示6位,那么屏幕上的显示单元为16点;如果大于8位则用两个字

7、节,低字节的低位不起显示作用。屏幕上同一行的显示单元从左到右地排列,对应着显示内存中的地址是从高到低,同一列中的显示单元从上到下,对应显示内存中的地址相差一定的值,称作行地址间隔,可用程序设置。显示内存(RAM,Random Access Memory随机存储器)中的地址与屏幕上的显示位置一一对应。在液晶显示屏上显示图形实际上是将对应的图形显示数据写入显示RAM的相应位置。显示图形首先需要将图形转换为图形字模,然后根据该图形的显示位置将图形字模写入对应的显示RAM区地址。在图形显示过程中,按列扫描,显示完一页后,要送一个页面地址加1指令,让单片机将数据传送到显示RAM的下一页。除了实现图形简单

8、的整屏显示外,根据单片机编程控制灵活的特点,还可以实现图形的左右或上下滚动。实现图形左右滚屏的基本思想是让后一列的数据写住前一列的显示RAM,直至整屏都往右移一列;实现上下滚屏的基本思想是每显示完整屏数据后,显示起始行地址加1,再显示原整屏数据,这样就实现了上下滚屏的效果。2 单片机与C8051F020单片机实验系统2.1 单片机技术的发展特点注释:李秉操.单片机接口技术及其在工业控制中的应用M.陕西:陕西电子编辑部,1991.3:314-336.自单片机出现至今,单片机技术已走过了近20年的发展路程。纵观20年来单片机发展里程可以看出,单片机技术的发展以微处理器(MPU,Microproce

9、ssor Unit)技术及超大规模集成电路技术的发展为先导,以广泛的应用领域拉动,表现出比微处理器更具个性的发展趋势。 单片机寿命长 一般说来,单片机开发的产品可以稳定可靠地工作10年、20年;另外,与微处理器相比,单片机的长寿命表现在它不会像386、486、586等MPU一样,随着半导体技术的飞速发展,更新换代的速度越来越快,很短的时间内就被淘汰出局。传统的单片机如68HC05、8051等年龄已有十几年的历史,但产量仍是上升的,这是因为它们在其对相应应用领域的适应性强,并且与之兼容的I/O功能模块的扩展接口技术也层出不穷。 8位、16位与32位单片机共同发展 这是单片机技术发展的另一个动向。

10、长期以来,单片机技术的发展是以8位机为主的。随着移动通信、网络技术、多媒体技术等高科技产品进入家庭,32位单片机应用得到了长足的发展,而16位单片机的发展无论从品种和产量方面,近年来也有较大幅度的增长。 单片机的速度越来越快 MPU发展中表现出来的速度越来越快是以时钟频率越来越高为标志的。而单片机则有所不同,为提高单片机抗干扰能力,降低噪声,降低时钟频率而不牺牲运算速度是单片机技术发展之追求。一些8051单片机兼容厂商改善了单片机的内部时序,在不提高时钟频率的条件下,使运算速度提高了许多。 低电压与低功耗 自80年代中期以来,NMOS工艺单片机逐渐被CMOS(互补金属氧化物半导体)工艺所代替,

11、功耗得以大幅度下降,随着超大规模集成电路技术由3m工艺发展1.5、1.2、0.8、0.5、0.35进而实现了0.2m工艺,全静态设计使时钟频率从直流电到数十MHz任选,都使功耗不断下降。几乎所有的单片机都有Wait、Stop等省电运行方式。允许使用的电源电压范围也越来越宽。一般单片机都能在36V范围内工作,对电池供电的单片机不再需要对电源采取稳压措施。低电压供电的单片机电源下限已由2.7V降至2.2V、1.8V、0.9V供电的单片机已经问世。 低噪声与高可靠性技术 为提高单片机系统的抗电磁干扰能力,使产品能适应恶劣的工作环境,满足电磁兼容性方面更高标准的要求,各单片机商家在单片机内部电路中采取

12、了一些新的技术措施。OTP与掩膜 OTP是一次性写入的单片机。过去认为一个单片机产品的成熟是以投产掩膜型单片机为标志的。由于掩膜需要一定的生产周期,而OTP型单片机价格不断下降,使得近年来直接使用OTP完成最终产品制造更为流行。它较之掩膜具有生产周期短、风险小的特点。近年来,OTP型单片机需量大幅度上扬,为适应这种需求许多单片机都采用了在片编程技术(In system Programming)。未编程的OTP芯片可采用裸片Bonding技术或表面贴装技术,先焊在印刷板上,然后通过单片机上的编程线、串行数据、时钟线等对单片机编程,解决了批量写OTP芯片时容易出现的芯片与写入器接触不好的问题,使O

13、TP的裸片得以广泛应用,降低了产品的成本。编程线与I/O线共用,不增加单片机的额外引脚。而一些生产厂商推出的单片机不再有掩膜型,全部为有ISP功能的OTP。 MTP向OTP挑战 MTP是可多次编程的意思。一些单片机厂商以MTP的性能、OTP的价位推出他们的单片机,如ATMEL AVR单片机,片内采用FLASH,可多次编程。华帮公司生产的8051兼容的单片机也采用了MTP性能,OTP的价位。这些单片机都使用了ISP技术,等安装到印刷板线路板上以后再下载程序。2.2 C8051F020单片机实验系统潘琢金, 施国君编著. C8051F高速Soc单片机原理及应用M.北京:北京航空航天大学出版社,20

14、05.C8051F020器件是完全集成的混合信号系统级MCU(微程序控制器)芯片,具有64个数字I/O引脚。下面列出了一些主要特性:高速、流水线结构的8051兼容的CIP-51内核(可达25MIPS(Million Instructions Per Second, 每秒百万条指令))全速、非侵入式的在系统调试接口(片内)真正12位、100ksps的8通道ADC,带PGA和模拟多路开关两个12位DAC,可编程更新时序64K字节可在系统编程的FLASH存储器4352(4096+256)字节的片内RAM可寻址64K字节地址空间的外部数据存储器接口硬件实现的SPI、SMBus/I2C和两个UART串行

15、接口5个通用的16位定时器具有5个捕捉/比较模块的可编程计数器/定时器阵列片内看门狗定时器、VDD监视器和温度传感器具有片内VDD监视器、看门狗定时器和时钟振荡器的C8051F020是真正能独立工作的片上系统。所有模拟和数字外设均可由用户固件配置为使能或禁止。FLASH存储器还具有在系统重新编程能力,可用于非易失性数据存储,并允许现场更新8051固件。片内FTAG调试电路允许使用安装在最终应用系统上的产品MCU进行非侵入式(不占用片内资源)、全速、在系统调试.该调试系统支持观察和修改存储器和寄存器,支持断点、观察点、单步及运行和停机命令。在使用JTAG调试时,所有的模拟和数字外设都可全功能运行

16、。每个MCU都可在工业温度范围(-45+85)内用2.7V3.6V的电压工作。端口I/O、/RST、和JTAG引脚都容许5V的输入信号电压。C为100脚TQFP封装(见图2.1)。图2.1 C8051F020原理框架2.3 CIP-51CPU与8051完全兼容C8051F020系列器件使用Cygnal的专利CIP-51微控制器内核。CIP-51与MCS-51指令集完全兼容,可以使用标准803x/805x的汇编器和编译器进行软件开发。CIP-51内核具有标准8052的所有外设部件,包括5个16位的计数器/定时器、两个全双工UART、256字节内部RAM、128字节特殊功能寄存器(SFR)地址空间

17、及8/4个字节宽的I/O端口。速度提高CIP-51采用流水线结构,与标准的8051结构相比指令执行速度有很大的提高。在一个标准的8051中,除MUL和DIV以外所有指令都需要12或24个系统时钟周期,最大系统时钟频率为1224MHz。而对于CIP-51内核,70的指令的执行时间为1或2个系统时钟周期,只有4条指令的执行时间大于4个系统时钟周期。增加的功能C8051F202系列MCU在CIP-51内核和外设有几项关键性的改进,提高了整体性能,更易于在最终应用中使用。扩展的中断系统向CIP-51提供22个中断源(标准8051只有7个中断源),允许大量的模拟和数字外设中断微控制器,一个中断驱动的系统

18、需要较小的MCU干预,因而有更高的执行效率。在设计一个多任务实时系统时,这些增加的中断源是非常有用的。MCU可有多达7个复位源:一个片内CDD监视器、一个看门狗定时器、一个时钟丢失检测器、一个由比较器0提供的电压检测器、一个软件强制复位、CNVSTR引脚及/RST引脚。MCU内部有一个独立运行的时钟发生器,在复位后被默认为系统时钟。如果需要,时钟源可以在运行时切换到外部振荡器,外部振荡器可以使用晶体、陶瓷谐振器、电容、RC或外部时钟源产生系统时钟。 片内存储器新华龙有限公司.C8051F020单片机实验系统使用说明书.CIP-51有标准的8051程序和数据地址配置。它包括256字节的数据RAM

19、,其中高128字节为双映射。用间接寻址访问通用RAM的高128字节,用直接寻址访问128字节的SFR地址空间。数据RAM的低128字节可用直接或间接寻址方式访问。前32个字节为4个通用寄存器区,接下来的16个字节既可以按字节寻址也可以按位寻址。MCU的程序存储器包含64K字节的FLASH。该存储器以512字节为一个扇区,可以在系统编程,且不需要特别的编程电压。从0xFE00到0xFFFF的512字节被保留,由工厂使用。还有一个位于地址0x100000x1007F的128字节的扇区,该扇子区可作为一个小的软件常数表使用。图2.2给出了MCU系统的存储器结构。图2.2 片内存储器组织JTAG调试和

20、边界扫描C8051F020系列具有片内JTAG边界扫描和调试电路,通过4脚JTAG接口并使用安装在最终应用系统中的产品器件就可以进行非侵入式、全速的在系统调试。该JTAG接口完全符合IEEE1149.1规范,为生产和测试提供完全的边界扫描功能。Cygnal的调试系统支持观察和修改存储器和寄存器,支持断点、观察点、堆栈指示器和单步执行。不需要额外的目标RAM、程序存储器、定时器或通信通道。在调试时所有的模拟和数字外设都正常运行,以保持同步。图2.3给出了调试环境示意图。图2.3 调试环境示意图可编程数字I/O和交叉开关该系列MCU具有标准8051的端口(0、1、2和3)。在C8051F020中有

21、4个附加的端口(4、5、6和7),因此共有64个通用端口I/O。这些端口I/O的工作情况与标准8051相似,但有一些改进。可能最独特的改进是引入了数字交叉开关。这是一个大的数字开关网络,允许将内部数字系统资源映射到P0、P1、P2和P3的端口I/O引脚(见图2.4)。具有标准复用数字I/O的微控制器不同,这种结构可支持所有的功能组合。图2.4 数字交叉开关原理框图可编程计数器阵列除了5个16位的通用计数器/定时器之外,C8051F020 MCU系列还有一个片内可编程计数器/定时器阵列(PCA)。PCA包括一个专用的16位计数器/定时器时间基准和5个可编程的捕捉/比较模块。时间基准的时钟可以是下

22、面的6个时钟源之一:系统时钟/12、系统时钟/4、定时器0溢出、外部时钟输入(ECI)、系统时钟和外部振荡器源频率/8。C8051F020还有更多的优势,需要详细了解的请参考文献9。本节主要讲了单片机的特点和C8051F020单片机实验系统的特性。C8051F020与8051完全兼容,指令采用流水线结构提高了系统速度,有可编程数字I/O和交叉开关,增加了一些功能器件,提高了C8051F020整体性能。3 液晶显示控制器KS0108KS0108是一种带有驱动输出的点阵型液晶显示控制器,它可直接与8位微处理器相连,它可与KS0107配合对液晶显示控制器进行行、列驱动,组成液晶显示驱动控制系统。3.

23、1 KS0108的特点(1).内藏6464=4096位显示RAM,RAM中每位数据对应LCD屏上一个点的亮、暗状态;(2).KS0108是列驱动器,具有64路列驱动输出;(3).KS0108读、写操作时序与68系列微处理器相符,因此它可直接与68系列微处理器接口相连;(4).KS0108的占空比为1/481/64;(5).具有专用指令集,可完成文本显示或图形显示的功能设置,以及实现画面滚动、光标、闪烁和位操作等功能;(6).KS0108可管理64KB显示RAM。其中,图形方式为64KB;字符方式为4KB。3.2 KS0108管脚 冀诚电子有限公司.KS0108液晶显示控制驱动器的应用.KS01

24、08的管脚见图3.1所示:图3.1 KS0108管脚图3.3 KS0108受控引脚KS0108的引脚功能见表1表1 引脚功能引脚符号状态引脚名称功能CS1,CS2,CS3输入芯片片选端CS1和CS2低电平选通,CS3高电平选通E输入读写使能信号在E下降沿,数据被锁存(写)入KS0108;在E高电平时,数据被读出R/W输入读写选择信号R/W=1,为读选通;R/W=0为写选通RS(也习惯叫做D/I)输入数据、指令选择信号RS=1为数据操作RS=0为写指令或读状态DB0-DB7三态数据总线RST输入复位信号低电平有效,复位信号有效时,关闭液晶显示,使显示起始终不渝行为0,RST可跟MPU相连,由MP

25、U控制;也右直接接VDD,使之不起作用。3.4 KS0108的时序43.4.1 KS0108与68系列微处理器直接接口的时序各种信号波形对照见表2:表2 信号波形MPU读时序见图3.2:图3.2 读时序MPU写时序见图3.3:图3.3 写时序3.4.2 复位时序复位后,KA0108显示关闭,显存地址归零。复位条件见表3和图3.4:表3 复位条件项目符号最小值典型值最大值单位复位时间Trs1.0微秒上升时间Tr200纳秒图3.4 复位条件3.5 KS0108显示RAM地址结构 KS0108中的显示RAM共有64行,64列,其结构见图3.5图3.5 显示RAM地址结构3.6 KS0108指令系统4

26、KS0108的指令系统比较简单,总共只有七种。现分别介绍如下:3.6.1 显示开/关指令见表4表4 显示开/关指令R/W RSDB7 DB6 DB5 DB4 DB3 DB2 DB1 DB00 00 0 1 1 1 1 1 1/0当DBO=1时,LCD显示RAM中的内容;DBO=0时,关闭显示。3.6.2 显示起始行(ROW)设置指令见表5表5 显示起始行指令R/W RSDB7 DB6 DB5 DB4 DB3 DB2 DB1 DB00 01 1 显示起始行(0-63)该指令设置了对应液晶屏最一行的显示RAM的行号,有规律的改变显示起始行,可以使LCD实现显示滚屏的效果。3.6.3 页(RAGE)

27、设置指令见表6表6 页设置指令R/W RSDB7 DB6 DB5 DB4 DB3 DB2 DB1 DB00 01 0 1 1 1 页号(0-7)显示RAM共64行,分8页,每页8行。3.6.4 列地址(Y Address)设置指令见表7表7 列地址设置指令R/W RSDB7 DB6 DB5 DB4 DB3 DB2 DB1 DB00 00 1 显示列地址(0-63)设置了页地址和列地址,就唯一确定了显示RAM中的一个单元,这样MPU就可以用读、写指令读出该单元中的内容或向该单元写进一个字节数据。3.6.5 读状态指令见表8表8 读状态指令R/W RSDB7 DB6 DB5 DB4 DB3 DB2

28、 DB1 DB01 0BUSY 0 ON/OFF REST 0 0 0 0该指令用来查询KS0108的状态,各参量含义如下:BUSY:1-内部在工作 0-正常状态ON/OFF:1-显示关闭 0-显示打开REST: 1-复位状态 0-正常状态在BUSY和REST状态时,除读状态指令外,其它指令均不对KS0108产生作用。在对KS0108操作之前要查询BUSY状态,以确定是否可以对KS0108进行操作。3.6.6 写数据指令见表9表9 写数据指令R/W RSDB7 DB6 DB5 DB4 DB3 DB2 DB1 DB00 1 写 数 据3.6.7 读数据指令见表10表10 读数据指令R/W RSD

29、B7 DB6 DB5 DB4 DB3 DB2 DB1 DB01 1 读 显 示 数 据读、写数据指令每执行完一次读、写操作,列地址就自动增一,必须注意的是,进行读、写操作之前,必须有一次空读操作,紧接着再读才会读出所要读的单元中的数据。本节主要是介绍液晶显示控制器KS0108的特点、外部部分引脚功能、时序、显示RAM地址结构及指令集,为单片机液晶显示系统设计打下基础。4 图形动态显示4.1 图形点阵式液晶显示控制原理C8051F020实验板中使用的是内置液晶显示模块CGM12864B的液晶屏。CGM12864B内部没有振荡器电路,它必须由外部提供一个时序发生器作为振荡源方可工作,它由两片带有6

30、4列驱动控制器KS0108和一片带有64行驱动控制器KS0107组合而成。另外还可以附加负压发生电路。显示是以一12864 个点的液晶屏显示。图形液晶显示模块KS0108将显示区分为左右半屏,整个屏从上到下64 行分为8 页,每页8 行,页地址范围为:B8HBFH。列地址范围为:40H7FH。数据为纵向读写,即每页的第一行对应D0 第八行对应D7。左、右半屏由CS1、CS2选择。控制器KS0108 的指令相对简单,总共七条指令:显示开关设定(3EH/ 3FH),显示起始行设定(C0H /FFH),页地址设定(B8H/ BFH),列地址设定(40H/ 7FH)状态读取,写数据,读数据。12864

31、点阵式液晶模块的逻辑图见图4.14图4.1 液晶模块逻辑图4.2 液晶显示模块外部接口外部接口信号见表11表11 外部接口信号管脚号管脚名称LEVER管脚功能描述1Vss0电源地2Vdd+0.5V电源电压3V0液晶显示器驱动电压4D/IH/LD/I=“H”,表示DB7DB0为显示数据D/I=“L”,表示DB7DB0为显示指令数据5R/WH/LR/W=“H”,E=“H”数据被读到DB0DB7R/W=“H”,E=“HL”数据被写到IR或DR6EH/LR/W=“L”,E信号下降沿锁存DB7DB0R/W=“H”,E=“H”DDRAM数据读到DB7DB07DB0H/L数据线8DB1H/L数据线9DB2H

32、/L数据线10DB3H/L数据线11DB4H/L数据线12DB5H/L数据线13DB6H/L数据线14DB7H/L数据线15CS1H/LH:选择芯片(右半屏)信号16CS2H/LH:选择芯片(左半屏)信号17RSTH/L复位信号,低电平复位18Vee-10VLCD驱动负电压19LED-LED背光板电源20LED+-LED背光板电源12864A接口定义及其与C8051F020的接口电路图见图4.2图4.2 接口电路KS0108采用8位数据传送,间接控制方式。所谓间接控制方式就是通过单片机的并行接口与液晶显示模块直接连接,单片机通过对这些接口的操作,实现对液晶显示模块的控制,完成相应的显示,可以显

33、示数字、字母、图形符号及自定义符号。使用LCD做数据显示,一旦数据写入LCD,数据就会一直显示在液晶屏上,不必像数码管显示那样要定时扫描才能将数据显示,其显示效果远远超过数码管显示。4.3 图形点阵液晶显示编码规则4.3.1汉字编码规则一般地,常用点阵液晶显示模块的汉字字模是直接从中文系统汉字字库中提取的,然后经过格式上的调整和转换,可以得到欲显示的汉字字模。在毕业设计中,我用的汉字不是从字库中提取字模,而是采用了一个字模软件来取模(将图形点阵转换为计算机内部显示缓冲单元的数据)。字模软件的界面见图4.3。图4.3 字模软件界面图这个字模软件使用起来相当简单和方便。LCD显示模块显示中文字符串

34、中,显示汉字(1616点阵)必须使用图形方式。在使用KS0108图形方式时,显示缓冲区单元与显示屏的对应关系见图4.4所示。图4.4 显示缓冲区单元与显示屏的关系马忠梅,籍顺心等编著.单片机的C语言应用程序设计(第3版)M.北京:北京航空航天大学出版社,2003.11.图4.4所示的显示格式与我们的习惯正好相反,如想在显示屏上显示,则须向RAM中写入。这适应人们的习惯,在字模软件取模时设置“字节倒序”,字模软件在取模的参数设置见图4.5所示。1616汉字共有32个字节。这32字节存放方式见表11所示:表11 32字节存放方式1172181632图4.5 取模参数设置在取模时,须设置取模参数如图

35、4.5所示:纵向取模、字节倒序。在对字符取模时,可以根据个人需要设置不同字体和字号。不同字体和字号,取模之后得到的对应字阵的宽和高不同,但建议最好用1616字阵,这是为了在显示过程中便于控制写数据。例如:取模得到“湖”字的编码为:/*- 文字: 湖 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x10,0x21,0x86,0x60,0x90,0x90,0xFF,0x90,0x90,0x00,0xFE,0x92,0x92,0xFE,0x00,0x00,0x04,0xFC,0x03,0x00,0x1F,0x10,0x10,0x90,0x5F,0x30,0x0F,0x40

36、,0x80,0 x7F,0x00,0x00在一个字符显示过程中,扫描方式是按列扫描。4.3.2 图形编码规则图形与字符的编码规则一样。但在图形取模时,要求是位图(文件的扩展名为BMP),其它类型图形无法取模。位图的大小为128*64,不能超出这个范围。例如下图(图4.6)取模后所得编码在附录:程序代码里KS0108.C部分char code sreen3中已列出。图4.6 位图图形转换为机内字模之后,跟字符显示原理一样。在图形的上下滚动上,是将显示起始行地址在显示完本屏之后增加1;在图形的左右移动上,相对而言要复杂得多:起始行地址不变,但由于液晶屏的列是由两块KS0108分左、右屏控制的,必须

37、注意左、右屏的分开控制:当在起始列在左半屏时,先从左半屏的起始列写数据,写到左半屏的第64列,然后从左半屏的第一列开始写数据直到左半屏的第64列;当起始列在右半屏时,左半屏不需要驱动,直接从起始列中减去64而得到对应右半屏的第多少列,然后从右半屏的第多少列驱动。4.4 程序流程程序流程见图4.7和图4.8初始化时钟初始化定时器0初始化IO口初始化SPIO使能比较器1使能片内参考电压使能DAC0开中断调用显示子程序开始结束 图4.7 主程序流程图 实现位图左右移动静态显示文字实现位图上下滚动静态显示位图字符从右向左移动字符从上到下移动开始 图4.8 LCD测试流程图4.5 功能实现LCD初始化:

38、void InitLCD(void)/初始化LCDchar i,j;LCD_RST=0;Delay1ms(1);LCD_RST=1;LCD_WriteCommand1(0xc0);LCD_WriteCommand2(0xc0);LCD_WriteCommand1(0x3f); /开显示LCD_WriteCommand2(0x3f);for (j=0;j8;j+) /清屏LCD_WriteCommand1(0xB8+j); /清左半屏LCD_WriteCommand1(0x40);for (i=0;i64;i+)LCD_WriteData1(0x00);LCD_WriteCommand2(0xB

39、8+j); /清右半屏LCD_WriteCommand2(0x40);for (i=0;i64;i+)LCD_WriteData2(0x00); 单个汉字显示:void LCD_Write_A_HZ(char x,char y,char *Dot) /显示16*16点阵汉字 char i;for (i=0;i32;i+) if (x+i%16)64)LCD_WriteCommand1(0xB8+y+i/16);LCD_WriteCommand1(0x40+x+i%16);LCD_WriteData1(Doti);else LCD_WriteCommand2(0xB8+y+i/16);LCD_W

40、riteCommand2(0x40+x-64+i%16);LCD_WriteData2(Doti);静态显示一幅位图:void DispBmp(char *buf) /显示一幅位图 int i,j;for (j=0;j8;j+) /显示位图 LCD_WriteCommand1(0xB8+j); LCD_WriteCommand1(0x40);for (i=0;i64;i+)LCD_WriteData1(buf(j*2)*64+i); LCD_WriteCommand2(0xB8+j);LCD_WriteCommand2(0x40);for (i=0;i64;i+)LCD_WriteData2(

41、buf(j*2+1)*64+i);位图上下滚动实现:Void DispBmp_Roll(char *buf)char *Buffer; int i; Buffer=buf; DispBmp(Buffer);for (i=0;i64;i+)Delay1ms(50); LCD_WriteCommand1(0xc0+i%64);/设置起始行,实现向上滚动 LCD_WriteCommand2(0xc0+i%64); 位图从左到右移动实现:void DispBmp_Move(char *buf) /左右移动一幅位图 int line,line0,row,eight; /显示位图 for (row=0;r

42、ow128;row+) Delay1ms(50); for (eight=0;eight8;eight+) if (row64) LCD_WriteCommand1(0xB8+eight); LCD_WriteCommand1(0x40+row); for (line=0;line+row64;line+) LCD_WriteData1(buf(eight*2)*64+line); LCD_WriteCommand2(0xB8+eight); LCD_WriteCommand2(0x40); for (line0=0;line0+row64;line0+) LCD_WriteData2(buf(eight*2)*64+line+line0); else LCD_WriteCommand2(0xB8+eight); LCD_WriteCommand2(0x40+row-64); for (line0=0;line0+row-6464;line0+) LCD_WriteData2(buf(eight*2)*64+line0); 关于汉字的上下、左右移动较简单,请参照附录:程序代码。5 系统实验仿真我们在许多地方可以看到LCD显示屏的应用。例如空调,车内广告,可视电话,显示仪表盘等等,它们都是一个

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁