基于单片机的液晶显示系统设计毕业设计(论文)word格式.doc_第1页
基于单片机的液晶显示系统设计毕业设计(论文)word格式.doc_第2页
基于单片机的液晶显示系统设计毕业设计(论文)word格式.doc_第3页
基于单片机的液晶显示系统设计毕业设计(论文)word格式.doc_第4页
基于单片机的液晶显示系统设计毕业设计(论文)word格式.doc_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 摘摘 要要 本文围绕设计以单片机作为 lcd 液晶显示系统控制器为主线,基于单片机 8051,采 用的液晶显示控制器的芯片是 sed1520,主要实现中文显示、滚屏以及左右移动功能。 同时也对部分芯片和外围电路进行了介绍和设计,并附以系统结构框图加以说明,着 重介绍了本系统应用的各硬件接口技术和各个接口模块的功能及工作过程,并详细阐 述了程序的各个模块。本系统是以单片机的汇编语言来进行软件设计,指令的执行速 度快,节省存储空间。为了便于扩展和更改,软件的设计采用模块化结构,使程序设 计的逻辑关系更加简洁明了。使硬件在软件的控制下协调运作。其次阐述了部分程序 的流程图和实现过程。本文撰写的主导思想是软、硬件相结合,以硬件为基础,来进 行各功能模块的编写。最后对我所开发的用单片机实现 lcd 液晶显示器控制原理的设 计思想和软、硬件调试作了详细的论述。 关键字:关键字:单片机、液晶显示、8051、sed1520 目目 录录 2 1 绪 论2 1.1 单片机液晶显示系统设计课题背景 .2 1.2 开发单片机液晶显示系统的意义 .2 1.3 课题完成的功能 .3 2 单片机与 c8051f020 单片机实验系统4 2.1 单片机技术的发展特点.4 2.2 c8051f020 单片机实验系统5 2.3 cip-51 tm cpu.7 3 液晶显示控制器 ks0108.10 3.1 ks0108 的特点10 3.2 ks0108 管脚10 3.3 ks0108 受控引脚11 3.4 ks0108 的时序411 3.4.1 ks0108 与 68 系列微处理器直接接口的时序.11 3.4.2 复位时序 12 3.5 ks0108 显示 ram 地址结构.13 3.6 ks0108 指令系统413 4 图形动态显示15 4.1 图形点阵式液晶显示控制原理 .15 4.2 液晶显示模块外部接口 .15 4.3 图形点阵液晶显示编码规则 .17 4.3.1 汉字编码规则.17 4.3.2 图形编码规则 19 4.4 程序流程 .19 4.5 功能实现 .20 5 系统实验仿真23 5.1 平台及操作 .23 5.2 仿真及结果 .23 参考文献.25 致 谢.26 3 1 绪 论 1.1 单片机液晶显示系统设计课题背景 单片机液晶显示系统主要是指单片机以及由单片机驱动的点阵式液晶显示屏所组 成的一个显示系统。液晶显示器与 crt(cathode-ray tube,阴极射线管)、led (light-emitting diode,发光二级管)或等离子显示器相比是一种低功耗的平面显示 器件。它在车内广告、在型智能广告、可视电话、仪表盘、空调、洗衣机和其它低功 耗电子产品中得到广泛应用。老式七段 lcd(liquid crystal display 液晶显示屏) 显示的字符数量有限,只能用于简单显示,而对于比较复杂的字符、图形无法表达。 然而在现代工业控制和一些智能化仪器仪表中,越来越多的场所需要用点阵图形显示 器显示汉字。由于物探仪器的多功能化、智能化、并且普遍采用人机对话的交互方式, 需要能够显示更丰富信息和通用性较强的显示器,便于开发和应用,并要求其体积小、 重量轻、功耗小。图形点阵式 lcd 不仅可以显示字符、数字,还可以显示各种图形、 曲线及汉字,并且可以实现屏幕画面滚动、分区开窗口、反转、闪烁、位操作等功能, 可以显示用户自定义的任意符号以及曲线、图形等,是信息处理、信息输出的重要手 段之一,具有广泛的应用前景。 1.2 开发单片机液晶显示系统的意义 社会意义: 液晶显示器(lcd)具有功耗低、体积小、重量轻、超薄等许多其它显示器无法相比 的优点。近几年来被广泛用于单片机控制的智能仪器、仪表和低功耗电子产品中。液 晶显示器分为字符型 lcd 显示模块和点阵型 lcd 显示模块。字符型 lcd 是一种用 57 点阵图形来显示字符的液晶显示器。点阵型液晶可显示用户自定义的任意符号和图形, 并可卷动显示,它作为便携式单片机系统人机交互界面的重要组成部分被广泛应用于 实时检测和显示的仪器仪表中。支持汉字显示的点阵型液晶在现代单片机应用系统中 是一种十分常用的显示设备,汉字 bp 机、手机上的显示屏就是点阵型 lcd。点阵型 lcd 是现代单片机应用系统中最常用的人机交互界面之一。 4 现实意义: 我选择的单片机液晶显示系统的开发,是基于 ks0108 液晶显示控制器,在 c8051f020 单片机实验系统上实现。ks0108 是点阵型液晶显示控制器,c8051f020 单片 机是美国 silabs 公司推出的完全集成的混合信号系统芯片(soc)。利用单片机控制液 晶显示系统的原理,完成单片机液晶显示系统的设计,我希望能够触类旁通,灵活应 用其他型号的液晶显示控制器。将来如果有机会从事这方面的工作,要运用的液晶显 示控制器不一定是 ks0108,但这次毕业设计中学到的东西为此打下了良好的基础,相 信自己能做好这方面的工作。 1.3 课题完成的功能 所选的单片机液晶显示系统设计,是在 c8051f020 系统实验设备上实现的。 c8051f020 中有内藏 ks0108 控制器的液晶模块 cgm12864b。ks0108,12864 个点阵, 与行控制器 ks0107 配合使用,组成液晶显示驱动控制系统。我最主要是用 ks0108 来 设计图形动态显示。 在显示屏上的显示点是以字节数和位数为显示单元的,单元内为“1”的位在屏幕 上反应是亮点,为“0”的位不亮。在字节中能够显示的位数可编程设置,范围是 116。如果小于等于 8 位,则用一个字节,每个字节的低位不起显示作用。例如,设 置显示单元为 6,每个字节显示 6 位,那么屏幕上的显示单元为 16 点;如果大于 8 位则用两个字节,低字节的低位不起显示作用。屏幕上同一行的显示单元从左到右地 排列,对应着显示内存中的地址是从高到低,同一列中的显示单元从上到下,对应显 示内存中的地址相差一定的值,称作行地址间隔,可用程序设置。显示内存 (ram,random access memory 随机存储器)中的地址与屏幕上的显示位置一一对应。 在液晶显示屏上显示图形实际上是将对应的图形显示数据写入显示 ram 的相应位置。 显示图形首先需要将图形转换为图形字模,然后根据该图形的显示位置将图形字模写 入对应的显示 ram 区地址。在图形显示过程中,按列扫描,显示完一页后,要送一个 页面地址加 1 指令,让单片机将数据传送到显示 ram 的下一页。除了实现图形简单的 整屏显示外,根据单片机编程控制灵活的特点,还可以实现图形的左右或上下滚动。 实现图形左右滚屏的基本思想是让后一列的数据写住前一列的显示 ram,直至整屏都往 右移一列;实现上下滚屏的基本思想是每显示完整屏数据后,显示起始行地址加 1,再 显示原整屏数据,这样就实现了上下滚屏的效果。 2 单片机与 c8051f020 单片机实验系统 5 2.1 单片机技术的发展特点1 自单片机出现至今,单片机技术已走过了近 20 年的发展路程。纵观 20 年来单片 机发展里程可以看出,单片机技术的发展以微处理器(mpu,microprocessor unit) 技术及超大规模集成电路技术的发展为先导,以广泛的应用领域拉动,表现出比微处 理器更具个性的发展趋势。 单片机寿命长 一般说来,单片机开发的产品可以稳定可靠地工作 10 年、20 年;另外,与微处理 器相比,单片机的长寿命表现在它不会像 386、486、586 等 mpu 一样,随着半导体技 术的飞速发展,更新换代的速度越来越快,很短的时间内就被淘汰出局。传统的单片 机如 68hc05、8051 等年龄已有十几年的历史,但产量仍是上升的,这是因为它们在其 对相应应用领域的适应性强,并且与之兼容的 i/o 功能模块的扩展接口技术也层出不 穷。 8 位、16 位与 32 位单片机共同发展 这是单片机技术发展的另一个动向。长期以来,单片机技术的发展是以 8 位机为 主的。随着移动通信、网络技术、多媒体技术等高科技产品进入家庭,32 位单片机应 用得到了长足的发展,而 16 位单片机的发展无论从品种和产量方面,近年来也有较大 幅度的增长。 单片机的速度越来越快 mpu 发展中表现出来的速度越来越快是以时钟频率越来越高为标志的。而单片机则 有所不同,为提高单片机抗干扰能力,降低噪声,降低时钟频率而不牺牲运算速度是 单片机技术发展之追求。一些 8051 单片机兼容厂商改善了单片机的内部时序,在不提 高时钟频率的条件下,使运算速度提高了许多。 低电压与低功耗 自 80 年代中期以来,nmos 工艺单片机逐渐被 cmos(互补金属氧化物半导体)工 艺所代替,功耗得以大幅度下降,随着超大规模集成电路技术由 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 供电的单片机已经问世。 低噪声与高可靠性技术 为提高单片机系统的抗电磁干扰能力,使产品能适应恶劣的工作环境,满足电磁 6 兼容性方面更高标准的要求,各单片机商家在单片机内部电路中采取了一些新的技术 措施。 otp 与掩膜 otp 是一次性写入的单片机。过去认为一个单片机产品的成熟是以投产掩膜型单片 机为标志的。由于掩膜需要一定的生产周期,而 otp 型单片机价格不断下降,使得近 年来直接使用 otp 完成最终产品制造更为流行。它较之掩膜具有生产周期短、风险小 的特点。近年来,otp 型单片机需量大幅度上扬,为适应这种需求许多单片机都采用了 在片编程技术(in system programming) 。未编程的 otp 芯片可采用裸片 bonding 技 术或表面贴装技术,先焊在印刷板上,然后通过单片机上的编程线、串行数据、时钟 线等对单片机编程,解决了批量写 otp 芯片时容易出现的芯片与写入器接触不好的问 题,使 otp 的裸片得以广泛应用,降低了产品的成本。编程线与 i/o 线共用,不增加 单片机的额外引脚。而一些生产厂商推出的单片机不再有掩膜型,全部为有 isp 功能 的 otp。 mtp 向 otp 挑战 mtp 是可多次编程的意思。一些单片机厂商以 mtp 的性能、otp 的价位推出他们的 单片机,如 atmel avr 单片机,片内采用 flash,可多次编程。华帮公司生产的 8051 兼容的单片机也采用了 mtp 性能,otp 的价位。这些单片机都使用了 isp 技术,等安装 到印刷板线路板上以后再下载程序。 2.2 c8051f020 单片机实验系统2 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 串行接口 5 个通用的 16 位定时器 具有 5 个捕捉/比较模块的可编程计数器/定时器阵列 7 片内看门狗定时器、vdd 监视器和温度传感器 具有片内 vdd 监视器、看门狗定时器和时钟振荡器的 c8051f020 是真正能独立工 作的片上系统。所有模拟和数字外设均可由用户固件配置为使能或禁止。flash 存储器 还具有在系统重新编程能力,可用于非易失性数据存储,并允许现场更新 8051 固件。 片内 ftag 调试电路允许使用安装在最终应用系统上的产品 mcu 进行非侵入式(不 占用片内资源)、全速、在系统调试.该调试系统支持观察和修改存储器和寄存器,支 持断点、观察点、单步及运行和停机命令。在使用 jtag 调试时,所有的模拟和数字外 设都可全功能运行。 每个 mcu 都可在工业温度范围(-45+85)内用 2.7v3.6v 的电压工作。端c o c o 口 i/o、/rst、和 jtag 引脚都容许 5v 的输入信号电压。c8051020 为 100 脚 tqfp 封装 (见图 2.1)。 图 2.1 c8051f020 原理框架 2.3 cip-51cpu tm 与 8051 完全兼容 c8051f020 系列器件使用 cygnal 的专利 cip-51 微控制器内核。cip-51 与 mcs-51 指令集完全兼容,可以使用标准 803x/805x 的汇编器和编译器进行软件开发。cip-51 tm 内核具有标准 8052 的所有外设部件,包括 5 个 16 位的计数器/定时器、两个全双工 uart、256 字节内部 ram、128 字节特殊功能寄存器(sfr)地址空间及 8/4 个字节宽的 8 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 个中断源),允许大 量的模拟和数字外设中断微控制器,一个中断驱动的系统需要较小的 mcu 干预,因而 有更高的执行效率。在设计一个多任务实时系统时,这些增加的中断源是非常有用的。 mcu 可有多达 7 个复位源:一个片内 cdd 监视器、一个看门狗定时器、一个时钟丢 失检测器、一个由比较器 0 提供的电压检测器、一个软件强制复位、cnvstr 引脚及 /rst 引脚。mcu 内部有一个独立运行的时钟发生器,在复位后被默认为系统时钟。如果 需要,时钟源可以在运行时切换到外部振荡器,外部振荡器可以使用晶体、陶瓷谐振器、 电容、rc 或外部时钟源产生系统时钟。 片内存储器 3 cip-51 有标准的 8051 程序和数据地址配置。它包括 256 字节的数据 ram,其中高 128 字节为双映射。用间接寻址访问通用 ram 的高 128 字节,用直接寻址访问 128 字节 的 sfr 地址空间。数据 ram 的低 128 字节可用直接或间接寻址方式访问。前 32 个字节 为 4 个通用寄存器区,接下来的 16 个字节既可以按字节寻址也可以按位寻址。 mcu 的程序存储器包含 64k 字节的 flash。该存储器以 512 字节为一个扇区,可以 在系统编程,且不需要特别的编程电压。从 0xfe00 到 0xffff 的 512 字节被保留,由 工厂使用。还有一个位于地址 0x100000x1007f 的 128 字节的扇区,该扇子区可作为 一个小的软件常数表使用。图 2.2 给出了 mcu 系统的存储器结构。 9 图 2.2 片内存储器组织 jtag 调试和边界扫描 c8051f020 系列具有片内 jtag 边界扫描和调试电路,通过 4 脚 jtag 接口并使用安 装在最终应用系统中的产品器件就可以进行非侵入式、全速的在系统调试。该 jtag 接 口完全符合 ieee1149.1 规范,为生产和测试提供完全的边界扫描功能。 cygnal 的调试系统支持观察和修改存储器和寄存器,支持断点、观察点、堆栈指 示器和单步执行。不需要额外的目标 ram、程序存储器、定时器或通信通道。在调试时 所有的模拟和数字外设都正常运行,以保持同步。图 2.3 给出了调试环境示意图。 图 2.3 调试环境示意图 可编程数字 i/o 和交叉开关 该系列 mcu 具有标准 8051 的端口(0、1、2 和 3) 。在 c8051f020 中有 4 个附加的 端口(4、5、6 和 7) ,因此共有 64 个通用端口 i/o。这些端口 i/o 的工作情况与标准 8051 相似,但有一些改进。 可能最独特的改进是引入了数字交叉开关。这是一个大的数字开关网络,允许将 内部数字系统资源映射到 p0、p1、p2 和 p3 的端口 i/o 引脚(见图 2.4) 。具有标准复 用数字 i/o 的微控制器不同,这种结构可支持所有的功能组合。 10 图 2.4 数字交叉开关原理框图 可编程计数器阵列 除了 5 个 16 位的通用计数器/定时器之外,c8051f020 mcu 系列还有一个片内可编 程计数器/定时器阵列(pca) 。pca 包括一个专用的 16 位计数器/定时器时间基准和 5 个可编程的捕捉/比较模块。时间基准的时钟可以是下面的 6 个时钟源之一:系统时钟 /12、系统时钟/4、定时器 0 溢出、外部时钟输入(eci) 、系统时钟和外部振荡器源频 率/8。 c8051f020 还有更多的优势,需要详细了解的请参考文献9。 本节主要讲了单片机的特点和 c8051f020 单片机实验系统的特性。c8051f020 与 8051 完全兼容,指令采用流水线结构提高了系统速度,有可编程数字 i/o 和交叉开关, 增加了一些功能器件,提高了 c8051f020 整体性能。 11 3 液晶显示控制器 ks0108 ks0108是一种带有驱动输出的点阵型液晶显示控制器,它可直接与8位微处理器相 连,它可与ks0107配合对液晶显示控制器进行行、列驱动,组成液晶显示驱动控制系 统。 3.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 管脚4 ks0108的管脚见图3.1所示: 12 图3.1 ks0108管脚图 3.3 ks0108 受控引脚 ks0108的引脚功能见表1 表1 引脚功能 引脚符号状态引脚名称功能 cs1,cs2,cs 3 输入芯片片选端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相 连,由mpu控制;也右直接接vdd,使之不起 作用。 13 3.4 ks0108 的时序4 3.4.1 ks0108 与 68 系列微处理器直接接口的时序 各种信号波形对照见表2: 表2 信号波形 mpu读时序见图3.2: 图3.2 读时序 mpu写时序见图3.3: 图3.3 写时序 14 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 ks0108的指令系统比较简单,总共只有七种。现分别介绍如下: 3.6.1 显示开/关指令见表4 表4 显示开/关指令 r/w rsdb7 db6 db5 db4 db3 db2 db1 db0 15 0 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 db0 0 0 1 1 显示起始行(0-63) 该指令设置了对应液晶屏最一行的显示ram的行号,有规律的改变显示起始行,可 以使lcd实现显示滚屏的效果。 3.6.3 页(rage)设置指令见表6 表6 页设置指令 r/w rsdb7 db6 db5 db4 db3 db2 db1 db0 0 0 1 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 db0 0 0 0 1 显示列地址(0-63) 设置了页地址和列地址,就唯一确定了显示ram中的一个单元,这样mpu就可以用 读、写指令读出该单元中的内容或向该单元写进一个字节数据。 3.6.5 读状态指令见表8 表8 读状态指令 r/w rsdb7 db6 db5 db4 db3 db2 db1 db0 1 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 db0 0 1 写 数 据 3.6.7读数据指令见表10 表10 读数据指令 16 r/w rsdb7 db6 db5 db4 db3 db2 db1 db0 1 1 读 显 示 数 据 读、写数据指令每执行完一次读、写操作,列地址就自动增一,必须注意的是, 进行读、写操作之前,必须有一次空读操作,紧接着再读才会读出所要读的单元 中的数据。 本节主要是介绍液晶显示控制器ks0108的特点、外部部分引脚功能、时序、显示 ram地址结构及指令集,为单片机液晶显示系统设计打下基础。 17 4 图形动态显示 4.1 图形点阵式液晶显示控制原理 c8051f020实验板中使用的是内置液晶显示模块cgm12864b的液晶屏。cgm12864b内 部没有振荡器电路,它必须由外部提供一个时序发生器作为振荡源方可工作,它由两 片带有64列驱动控制器ks0108和一片带有64行驱动控制器ks0107组合而成。另外还可 以附加负压发生电路。显示是以一12864 个点的液晶屏显示。 图形液晶显示模块ks0108将显示区分为左右半屏,整个屏从上到下64 行分为8 页, 每页8 行,页地址范围为:b8hbfh。列地址范围为:40h7fh。数据为纵向读写, 即每页的第一行对应d0 第八行对应d7。左、右半屏由cs1、cs2选择。 控制器ks0108 的指令相对简单,总共七条指令:显示开关设定(3eh/ 3fh),显 示起始行设定(c0h /ffh),页地址设定(b8h/ bfh),列地址设定(40h/ 7fh)状 态读取,写数据,读数据。 12864 点阵式液晶模块的逻辑图见图 4.14 图4.1 液晶模块逻辑图 4.2 液晶显示模块外部接口 外部接口信号见表 11 表 11 外部接口信号 管脚号管脚名称lever管脚功能描述 1vss0电源地 2vdd+0.5v电源电压 3v0液晶显示器驱动电压 4d/ih/ld/i=“h” ,表示 db7db0 为显示数据 18 d/i=“l” ,表示 db7db0 为显示指令数据 5r/wh/lr/w=“h” ,e=“h”数据被读到 db0db7 r/w=“h” ,e=“hl”数据被写到 ir 或 dr 6eh/lr/w=“l” ,e 信号下降沿锁存 db7db0 r/w=“h” ,e=“h”ddram 数据读到 db7db0 7db0h/l数据线 8db1h/l数据线 9db2h/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位数据传送,间接控制方式。 19 所谓间接控制方式就是通过单片机的并行接口与液晶显示模块直接连接,单片机 通过对这些接口的操作,实现对液晶显示模块的控制,完成相应的显示,可以显示数 字、字母、图形符号及自定义符号。 使用lcd做数据显示,一旦数据写入lcd,数据就会一直显示在液晶屏上,不必像 数码管显示那样要定时扫描才能将数据显示,其显示效果远远超过数码管显示。 4.3 图形点阵液晶显示编码规则 4.3.1 汉字编码规则 一般地,常用点阵液晶显示模块的汉字字模是直接从中文系统汉字字库中提取的, 然后经过格式上的调整和转换,可以得到欲显示的汉字字模。在毕业设计中,我用的 汉字不是从字库中提取字模,而是采用了一个字模软件来取模(将图形点阵转换为计 算机内部显示缓冲单元的数据) 。字模软件的界面见图 4.3。 图 4.3 字模软件界面图 这个字模软件使用起来相当简单和方便。lcd 显示模块显示中文字符串中,显示汉 字(1616 点阵)必须使用图形方式。在使用 ks0108 图形方式时,显示缓冲区单元与 显示屏的对应关系见图 4.4 所示。 图 4.4 显示缓冲区单元与显示屏的关系5 20 图 4.4 所示的显示格式与我们的习惯正好相反,如想在显示屏上显示 10010110, 则须向 ram 中写入 01101001。这适应人们的习惯,在字模软件取模时设置“字节倒序” , 字模软件在取模的参数设置见图 4.5 所示。1616 汉字共有 32 个字节。这 32 字节存 放方式见表 11 所示: 表 11 32 字节存放方式 117 218 1632 图 4.5 取模参数设置 在取模时,须设置取模参数如图 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, 0x80,0 x7f,0x00,0x00 在一个字符显示过程中,扫描方式是按列扫描。 21 4.3.2 图形编码规则 图形与字符的编码规则一样。但在图形取模时,要求是位图(文件的扩展名为 bmp) ,其它类型图形无法取模。位图的大小为 128*64,不能超出这个范围。例如下图 (图 4.6)取模后所得编码在附录:程序代码里 ks0108.c 部分 char code sreen3中 已列出。 图 4.6 位图 图形转换为机内字模之后,跟字符显示原理一样。在图形的上下滚动上,是将显 示起始行地址在显示完本屏之后增加 1;在图形的左右移动上,相对而言要复杂得多: 起始行地址不变,但由于液晶屏的列是由两块 ks0108 分左、右屏控制的,必须注意左、 右屏的分开控制:当在起始列在左半屏时,先从左半屏的起始列写数据,写到左半屏 的第 64 列,然后从左半屏的第一列开始写数据直到左半屏的第 64 列;当起始列在右 半屏时,左半屏不需要驱动,直接从起始列中减去 64 而得到对应右半屏的第多少列, 然后从右半屏的第多少列驱动。 4.4 程序流程 程序流程见图4.7和图4.8 22 初始化时钟 初始化定时器 0 初始化 io 口 初始化 spio 使能比较器 1 使能片内参考电压 使能 dac0 开中断 调用显示子程序 开始 结束 图4.7 主程序流程图 实现位图左右移动 静态显示文字 实现位图上下滚动 静态显示位图 字符从右向左移动 字符从上到下移动 开始 图4.8 lcd测试流程图 4.5 功能实现 lcd 初始化: void initlcd(void)/初始化 lcd char i,j; lcd_rst=0; 23 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(0xb8+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_writecommand2(0x40+x-64+i%16); lcd_writedata2(doti); 静态显示一幅位图: 24 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(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;row128;row+) delay1ms(50); for (eight=0;eight8;eight+) if (row64) lcd_writecommand1(0xb8+eight); lcd_writecommand1(0x40+row); 25 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 显示屏的应用。例如空调,车内广告,可视电话, 显示仪表盘等等,它们都是一个小型的单片机控制液晶显示系统。在日常生活中,我 们也可以看到一些类似的由单片机控制的显示系统,如火车站售票大厅的候车信息显 示屏,在这些屏幕上,可以显示各种不同的图形、汉字等,并且可以实现上下滚屏与 左右移动等。 5.1 平台及操作 平台准备:在确认连线已接好时,将拨码开关 s1 和 s2 置于 on 位置 操作流程:建立一个新的项目文件,将程序加到这个项目文件中,编译连接后, 将程序下载到 c8051f020 中。打开 ram 观察窗口,运行程序。运行程序时,可单步 执行或在送数指令后加断点观察 ram 存储单元的变化,观察加法结果是否正确。 26 5.2 仿真及结果 在 c8051f020 系统实验箱上的液晶显示屏上,我实现了这些动态显示功能,特设 计了以下几个显示场景: (1)场景一: 第一个场景是在液晶显示屏上静态显示位图,如图 5.1 所示: 图 5.1 位图上下滚动 在这个场景中,是对位图 128*64 的模仿上下滚动。 (2)场景二: 第二个场景显示的内容较少,只有几个字“湖南理工学院计算机与信息工程 系单片机液晶显示系统设计-图形动态显示研究” ,是静态的显示效果如图 5.2 所示: 号 图 5.2 汉字 (3)场景三 第三个场景是图形动态显示模拟,它们是从左向右推出的,一直移动到显示屏最 右端。具体如图 5.3 所示: 图 5.3 位图右移 (4)场景四 第四个场景是静态显示一幅位图如图 5.4 27 图 5.4 位图显示 (5)场景五 这个场景是实现对字符的动态显示如图 5.5。我用的是“湖南”与“湘”这三个汉 字来模仿的。让“湖南”两个字纵向排列,从右向左移动;“湘”字从上下落到液晶 屏的底部。在这些场景中,液晶显示屏上显示的汉字,我是把它当作图形来显示的, 汉字和图形的字模我是借助字模软件取模的,并没有自己去设计汉字和图形的字模。 当然这样做省了不少的事,就我个人来看,把大量的时间分配在接口的编程上和如何 利用 c 语言实现接口是更有价值的。 图 5.5 字符串移动 由于这种型号液晶屏的观察角度不同,一般采用成 45 度的角度来观察为最好,直 视比较黑而且图像不明显,所以在系统仿真实验中,我没有取到最佳图形。 总 结 液晶显示

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论