单片机控制的LCD点阵图文显示系统.doc

单片机控制的lcd点阵图文显示系统

收藏

压缩包内文档预览:(预览前20页/共35页)
预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图
编号:512457    类型:共享资源    大小:37.20KB    格式:RAR    上传时间:2015-11-11 上传人:QQ28****1120 IP属地:辽宁
6
积分
关 键 词:
毕业设计
资源描述:
单片机控制的lcd点阵图文显示系统,毕业设计
内容简介:
1 目录 第一章 摘要 2 第二章 前言 3 第三章 概述 4 第四章 液晶显示器 LCD 的显示原理及 显示模块 DMF5001N 的介绍 5 第一节 液晶显示器 LCD 的显示原理 5 第二节 液晶显示模块 DMF5001N 的介绍 6 第五章 硬件介绍 第一节 最小系统的扩展 第六章 软件系统 第一节 系统资源分配 第二节 程序主体介绍 第三节 自检程序及定位显示 第四节 显示的各种移动模块 第五节 其它重要子程序介绍 第七章 设计中所遇到的问题 第一节 硬件调试 第二节 堆栈操作 第八章 结束语 nts 2 第 一章 摘要 本论文阐述了由单片机控制的 LCD 点阵图文显示系统。液晶显示模块由 DMF5001F 控制,详细介绍了其液晶的显示原理,及它与单片机的接口原理设计,在液晶屏上实 现汉字文本、图形的整屏显示、上下移动显示、左右移动显示及滚屏等多种显示方式的实现。 关键字 显示系统 液晶显示模块 显示方式 字模点阵 Abstract: the apper discuss the LCD picture and chiese-charact display system which is controled by the single-chip computer .it is detailed descripe the method of the whole machine design .it also descripe the realizing ways of display which include display of whole screen ,display from telow to up,display from up to below ,display from right to left,display from left to right and input the ASCII string. Keyword : Display system LCD Display mode nts 3 第 二章 前言 随 着 科 技 的 发 展 进 步 , 计 算 机 技 术 得 到 了 较 广 泛 的 普及应用。人们在加快了工作、学习和、生活节奏的同时,对信息的传递和更新速度也提出了更高的要求,在人机信息交换方面,更加智能化,作到图文并茂,因此出现了各种显示终端,包括 LED, CRT, LCD 等各种显示。随着单片机技术的发展,各种仪器仪表都或多或少的采用了微机技术, 使 智能化,需要 有良进行人机会 话,所以仪器中就必项配备各种各样的显示器,以便显示输入的参数和测量出的结果,在便携式低功耗智能仪器中,同样也是如此,但是为了缩小体积,为了降低功能,一般就采用液晶显示 系统。 液 晶 显 示 器 是 一 件 被 动 的 显 示 器 , 它 本 身 不 发 光 而 只是调制环境光,它显示时需要一定的光源,和其它显示器相比有如下的工作特点: ( 1)显示工作电压低,为 36V,功耗极小,每平方厘米仅 1880 微瓦,同样的显示面积,其功耗比 LED 显示器小几百倍,而且特别适宜与 CMOS 电路直接相配,用于各种数字及图形显示,尤其适用便携式智能仪器。 ( 2)液晶显示器可在明亮环境下正常使用,其显示清晰度不会随环境光的增强而减弱,在太阳光下它能正常显示。 ( 3)液晶显示体积小,外形薄,为平板式显示,使用方便 ( 4)液晶显示器显示面 积的字符大小以及字符的多少在一定范围内不受限制。 ( 5) 液 晶 显 示 器 的 响 应 时 间 和 余 辉 时 间 较 长 , 为 ms级,因而响应速度较慢。 ( 6)液晶显示晶本身不发光,在黑暗环境中不显示,需要用辅助光源。 ( 7) 液 晶 显 示 器 的 工 作 温 度 范 围 较 窄 , 通 常 为 -10nts 4 60 。 我 们 设 计 了 一 套 利 用 液 晶 屏 的 图 文 显 示 系 统 , 通 过 键盘的操作,可实现 认 字,字符,波形的输入与显示,通过031 控制液晶显示芯片,实现整屏的显示,上下移动,左右移动,滚屏等功能。 利 用 液 晶 屏 的 低 功 耗 特 性 , 开 发 出 各 种 具 有 各 种 友 好的人机 交换 界面的仪器 ,物别 是适用于野外工作的 仪器、仪表,一定具有潜在的市场。 本 液 晶 显 示 系 统 是 在 周 航 慈 教 授 及 张 福 柳 研 究 生 的 热情指导下,由我和王子军同学合作完成的,其中王子军同学实现了波形的显示 ,我负责了整机的自检,初始化,认字的显示,文本的显示与输入及各种移动显示,详细的介绍请参阅下面的论文。 第 三章 概述 本 液 晶 显 示 介 了 点 阵 图 形 液 晶 显 示 模 块 DMF5001N 与MCS-51 系列 单片机 的接 口及 使用 的以 DMF5001N 是集控 制器,驱动器和显示器于一体的点阵图形显示模块,它不仅可直接显示 ASCII 字符,还可显示汉字和各种曲线。因此可将它与单片机连 接成功能强,结构简单,人机界面友好的各种智能仪表和控制系统。 通过 .8051 与 DMF5001N 的接口,可在液晶屏上实现各种图形汉字、文本的显示及其三角波,方波,圆的显示。 nts 5 第 四章 液晶 显示 器 LCD 的显示 原理 及 显 示模 块 DMF5001N 的 介绍 第一节 液晶显示器 LCD 的显示原理 一、线段的显示 点阵图形式液晶显示器由 M 行 N 开列个显示单元组成。假设 LCD 显示屏有 128 行,每行有 160 列,每 8列对应 1 个字节的 8 个位,即每行 由 20字节,共 20x8=160个点组成。屏上 128x20 个显示单元与显 示 RAM 区 2560个字节相对应,每一字节的内容与屏上相应位置的亮暗对应。列如屏的第一行的亮暗由 RAM 区的 0000H 0014H的 20 个字节的内容决定,当( 0000H) =FFH 时,则屏的左上角显示一条短亮线,长度为 8 个点;当( 0A00H)=FFH 时 , 则 屏 的 右 下 角 显 示 一 短 亮 线 ; 当(0000H)=FFH,(0001H)=00H,(0002H)=FFH,(0003H)=00H,.(0012H)=FFH,(0013H)=00H 时,则在屏的顶部显示一条由 8 段亮线和 8 段暗线组成的虚线。这就是 LCD 显示的基本原理。 二 、字符的显示 当用 LCD 显示一个字符时就较复杂了,因为一个字符由 6x8 或 8x8 点阵组成,即要找到和屏上某几个位置对应的显示 RAM 区的 8 个字节,并且要使每个字节的不同的位为 1 , 其 它 的 为 0 ;为 1 的 点 亮 , 为 0 的点暗,这样一来就组成某个字符。但对于内带字符发生器的控制器(如 T6963C)来说 ,显示字符就比较简单了,可让控制器工作在文本方式,根据在 LCD 上开始显示的行列号及每行的列数找出显示 RAM 对应的地址,设立光标,在次送上该字符对应的代码即可。我们使用的就是带字符发生器的 DMF5001C 的液 晶控制器。 nts 6 三、汉字的显示 汉字的显示一般采用图形方式,事先从微机中提取要显示的汉字的点阵码,每个汉字占 32 个字节,分左右两半部,各占 16 个字节,左边的 为 1, 3, 5 右边的为 2, 4, 6根 据在 LCD 上 开始 显示 的行列 号及每 行的 列数可 找出显示RAM 对应的地址,设立光标,送上要显示的汉字的第一个字节,光标位置加一,送第二字节,换行按列对齐,送第三字节 直到 32 字节显示完就可在 LCD 上得到一个完整的汉字。 第二节 液晶显示模块 DMF5001N 的介绍 一、 DMF5001N 的特点 DMF5001N 内藏控制 芯片 6963C,是一种 160 128 点阵的液晶显示模块,控制芯片,驱动芯片,显示存储器,时序 电路 等到集 合在同 一块 印刷板 上。 T6963C 有 一内 置字符发生器 ROM(即 CGROM),共有 128 个 5 6 点阵的 ASCII 字符 ,它 还有 CGROM 功能 用户可 以自定 义所 需要的 文字或符号。它有 64的显示 RAM,可显示 ASCII 字符,特殊字符图形曲线及汉字,可选择文本与图形之间逻辑“与”、“或”、“异或”等组合,可实现反显、闪烁、滚屏翻页及动画等多种显示功能;具有多种光标显示功能。 模块有 20 个引脚,定义如表 1 下 : nts 7 端子序号 符号 功能 1 F.G 框架地(模块内已与 Vss 连接) 2 Vss 逻辑地 3 Vcc 逻辑电源 +5V 4 Vcont 液晶对比度控制 5 Vee 液晶驱动电源: -15V-20V 6 /WR 写操作信号,低电平有效 7 /RD 读操作信号,低电平有效 8 /CE 片选信号,低电平有效 9 C/D 寄存器选择信号: 1-指令, 0-口数据口 10 /HALT 间歇信号,低电平有效 11 /RESET 复位信号,低电平有效 1219 D0D7 数据总线 20 NC 未用 表 1 二、 MCS 51 与 DMF5001N 接口 MCS 51 数据口 AD0 AD7 直接与液晶显示模块的数据口连接, MCS-51 的 RD、 作为液晶显示模块的读、写控制信号,液晶显示模块的 HAC通过一个电阻接在 VCC上, C信号由地址线译码产生, C/D 信号由 MCS 51 地址线 A0提 供, A0 1 为指令 口地址 , A0 0, 为数据 口地 址,液晶驱动电源 VEE要求在 15V 20V 之间 ,实验结果表明该电压绝对值低于 15V 时, LCD 将不能正常工作(无显示),液晶对比度控制电压 VCO M 通过电位器与 VEE 连接,其具体连接如图 1: 图 1 P0 P3.0 MCS-51 RD WR D0D7 Vee CE C/D Vcont RD WR -15v 139 nts 8 三、 T6963C 的主要指令见表 2: 序号 参数 1 参数 2 指令代码 功能 1 水平位置 垂直位置 21H 光标指针设转置 2 地址 00H 22H CGRAM 偏置地址设置 3 低字节 高字节 24H 地址指针位置 4 低字节 高字节 40H 文本首址 5 低字节 高字节 41H 文本区宽度(字节/行) 6 低字节 高字节 42H 图形区首址 7 低字节 00H 43H 显示图形区宽度(字节数 /行) 8 无 无 8*H 显示方式设置 9 无 无 9*H 光标闪烁、显示图文本图形显示 10 无 无 A*H 光标形状选择 11 无 无 B*H 数 据 自 动 读 /写方式设置 12 D1 无 C0-C5 数 据 一 次 定 /读,地址加 1 或不变 13 无 无 D0H 屏读 14 无 无 D8H 屏拷贝 15 无 无 F*H 位操作 表 2 四、 T6963C 的状态字 对于 T6963C 进行操作前先读状态字,根据各状态标志看 LCD 是否准备好, T6963C 的状态字中各位含意如表 3: nts 9 位 状态 1 0 STA0 指令读定状态 准备好 忙 STA1 数据读定状态 准备好 忙 STA2 数据自动读状态 准备好 忙 STA3 数据自动定状态 准备好 忙 STA4 未用 STA5 控制器运行检测可能性 可能 不能 STA6 屏读 /拷贝出错状态 出错 正确 STA7 闪烁状态检测 正常显示 关显示 表 3 第 五章 硬 件介 绍 硬 件 电 路 的 设 计 也 是 整 机 的 设 计 , 它 是 软 件 设 计 的 基础 ,在 此次液 晶显示 系统 中主要由 8051 最小 扩展系 统, 4 4 的矩阵键 盘 DMF5001N 液晶显示模块和显示屏组成。 第一节 最小系统的扩展 虽然 8051 内带程序存储器,但是由于此液晶显示系统中 所带 的点阵 较多, 8051 内部存 储器 不够 ,所以 要扩展一片程序存储器。 8051 内部数据存储器只有 128 个字节,这对于图文显示系统是远远不够的。因为对于此系统所要所需要存储或移动的数据实在是太多了,因此要对 8051 扩展一片数据存储器。另外要使其能够正常工作还必须要有外接晶振。 一、晶振电路 单 片 机 要 在 时 钟 信 号 的 协 调 下 才 能 正 常 工 作 , 通 过XTAL1, XTAL2 外接 作为 反馈 元件晶体 ,构 成自 激振荡器,XTAL1 片内反向放大器输入端, XTAL2 片内反向放大器输出端。外接晶体时 XTAL1, XTAL2 各接晶体的一端,借外接晶nts 10 体 与片 内反向 放大器 构成振 荡器 。晶体 呈 感性 ,与 C1, C2构成并联谐振电路,振荡器的振荡频率主要取决于晶体。电容 的值 则具有 微调作 用, 通常情 况下为 30pf。电容 安装的位置应该尽量靠近单片机芯片,振荡器输出的振荡脉冲经 2分频成为内部时钟信号,用作单片机内部各功能部件按序协调工作的控制信号。 30pf 12M 30pf 图 2 本液晶显示系统的晶振如图 2 所示,晶振采用 12 MHz的 晶 振 , 每 个 机 器 周 期 为 ( 振 荡 频 率 周 期 2 6)为 1us。( 6 个时钟周期为一个机器周期)。 二、 片外 ROM 和 RAM 的扩展 本 液晶 图文 显示 系统 采用 27128 作为 程序 存储 器,用6264 作为数据存储器用 74Ls373 作为地址锁存器。为了访问片外程序存储器和数据存储器,要用到地址总线和数据总线 。低 8 位地址由 p0 口送出 ,经地址锁存器后送向 EPPROM,高位地址由 p2 口送出不经锁存直接指向程序存储器或数据存储器。 27128 是 8K 8 位存储器 ,寻址需 14 位,用 PSEN,WR 和 RD 作为 27128, 6264 的控制信号线,完成片外 16KRAM和 ROM 的扩展,它们的地址总线和数据总线是共用的。 本 显示 系统 中程 序存 储器 的地 址 是 0000H 4FFFH,数据存储器的 CE 片选端接译码器的 Y1 端,接法见 图 3。 XTAL1 XTAL2 8051 nts 11 8 p2.0-4 5 A8-12 +5 A8-12 +5 8051 p0.0-7 8 A0-7 A0-7 ALE G /CE GND /WE /PSEN 74LS373 /OE /GND /OE /RD Q0-7 I/O /WR 8 8 8 图 3 由于访问片外 ROM 和访问片内 RAM 所用的控制线不同,访问 ROM 用 PSEN 而访问 RAM 用 RD 和 WD,且 PSEN 和 RD, WD不会同时有效,所以虽然地址总线和数据总线共用,即使它们的地址相同也不会引起混乱,它们的工作时序如下 图 4所示: Pc1 输出有效 图 4 第二节 硬件编程原理图 由 于 利 用 的 是 微 机 能 谱 仪 上 的 液 晶 屏 , 硬 件 电 路 已 做nts 12 好,主要用的是液晶显示模块,对于存储器的扩展在上已详细介绍了( 8KR AM 62 64 的地址从 40 0 0H 到 5 FFFH),这里只介绍 80 5 1 与 DM F5 00 1 N 控制模块的连线。 P2 经 3 73 所存接 13 9 地址译码器译码,作为各芯片的片选信号。 Y4 接为D M F50 01 N 片选信号 ,所以 D M F5 00 1N 模块的地址为 E00 0 H, 8 0 51 的读写控制线接 D M F5 00 1 N 的相应的读写控制线。 P3 . 0接 寄 存 器 选 择 信 号 线 , 这 样 通 过P 3. 0 统资源,下面先对各种资源的分配进行如下说明: nts 13 统资源,下面先对各种资源的分配进行如下说明: 统资源,下面先对各种资源的分配进行如下说明: 统资源,下面先对各种资源的分配进行如下说明: 统资源,下面先对各种资源的分配进行如下说明: 统资源,下面先对各种资源的分配进行如下说明: 第六章 统资源,下面先对各种资源的分配进行如下说明: nts 14 统资源,下面先对各种资源的分配进行如下说明: 统资源,下面先对各种资源的分配进行如下说明: 统资源,下面先对各种资源的分配进行如下说明: 统资源,下面先对各种资源的分配进行如下说明: 地址分配 4000H5FFFH 8KRAM 0A00H 通音响 0C00H 断音响 0E00H LCD 选通 P3.0 LCD 命令 /数据 P3.5 RAM 切换 8K/64K 资源分配 4000H49FFH 图形区显示缓冲区 4A00H53FFH 图形显示缓冲区的数据保存区 5400H553FH 文本显示缓冲区 5540H5680H 文本显示缓冲区的数据保存区 23H 中的 18H 位文本刷新, 19H 位图形区更新, 20H 位文本图形区更新 第二节 程序主体 介绍 把模块化程序设计进行综合是主程序设计的内容。根据要进行特定的显示方式的任务,采用散转的方式进行跳转,按不同的模块键,跳到各自的功能模块去执行程序,散转判跳是利用 J MP 指令,根据功能键值 k ey 单 元的内容进行的。由于长跳指令 LJ MP 占三个指令周期,所以调整指针nts 15 时 k ey 单 元的内容要乘以 3 其指令实现如下: M O V DP TR, #PR OC M O V A, K E Y M O V B, #3 M U L A B J MP A +DP TR PR OC : LJ M P PROC 1 LJ MP PR OC 2 . . LJ MP PR OC n 其主程序流程图如下 图 5: 开始 自检 显示主画面 读键,模块键否? 模块键 模块键跳转 移动键否? 根据键值跳转 切换键否? 切换标志取反 切换标志 1 否 根据键值跳转 整屏循环上移 整屏上移 回车键 nts 16 图 5 第三节 自检程序及定位显示 一、自检 由于如何仪器仪表开始时,都必须自检,以检测各部分的是否能正常运行,本系统采用到了 .8051 64K 的 EPROM 和64K 的 RAM 等,都必须对它们进行必需要的自检。 CPU 自检主要是运行重要的指令以及定时中断是否能正常工作, ROM 自检主要是对存储在里面的程序是否改变,能否对它进行读操作,对读出的数据进行分析。 RAM 自检主要是否单元字节进行读写操作,如果能进行读写操作,即写进去的与读出来的数据相等的话,就认为是好 的,程序先以CPU 自检起,然后测 ROM RAM 等到如果全部通过,就会显示CPU ROM RAM 等 PASS,哪一部分出错,就会显示那一部分返回读键 整屏循环下 移 屏左移 整屏下移 字左上移 字右上移 屏右移 延时 连移标志为 1否 返回读键 设立连移标志 键 释 放 执行各自独立接收 返回读键 遇回车键返回 模块键跳转 显示字符 显示汉字 汉字字符混显 文本输入 画三角波 画方波 画圆 nts 17 ERROR,以更用户确定。 当然,由于要用到 LCD 显示自检信息,所以开始就必须对它进行初始化, LCD 初始化程序为 LCDS 子程序。 LCD 初始化必须规定 LCD 的文本 、图形混合方式(异或)光标形状(方块状)光标的坐标初始化( 0 行 0 列 )文本区首址( 5400H)文本宽度(列)图形区首址( 4000H)图形宽度 (160 点; 14H 字节 )等。 二、字符的定位显示 由于 DMF5001N 内带字符发生器,只有要在所定义的文本区中对应位置送上字符的代码,拿过去显示就可以在液晶屏 上显示 出来 ,例如 要在液 晶屏 的左上 角显示 一个 字符 A,(字符 A 的代码为 2H),只要在文本区的首地址 5400 单元写上 21H,即( 5400H) =21H, 然后过去显示就可以。当然,每个显示字符与地址单元有一一对应的关系,所以要注意字符的位置问题。由于液晶屏最多显示 16 20=320 个 ASCII字符,要显示一屏信息,就必需有 320 个单元与之对应,要显示一行字符,我们可以对其进行编码。例如我们要在屏的第八行第 3 列开始显示三个字母 ABC,可以进行如下编码:F8H, E3H, 21H, 22H, 23H, FFH。我们归定: F*表示当前位置下移 *行。 E*表示当前列数右移 *列。 FFH 表示字符结束,可 以把 显示字 母实际 上就 是在文 本区 54A3H 单元 开始 写上21H,22H,23H,我们把 F8HE3Hr 的低四位取出,利用公式,文本区当前位置 +14H行数例数。可求出要显示位置的首址即: 5400H+14H 8+3=54A3H,我们以 54A3H 单元依次送数 ,这样就控制了液晶屏上字符位置的显示。 三、汉字的定位显示 对于汉安的显示,此字符的显示复杂多了,要显示 汉安,只能把汉字作图形处理,每个计算机在显示汉字时,也是把nts 18 它当作图形处理,每一个汉字即有自己对应的矩形点阵,有16 16 点阵, 32 32 点阵的汉字,所显示的本系统所显示的汉字全都是否 32 32 点阵的汉字, 16 16 点阵的太小,屏上几乎难以辨认, 64 64 点 阵 的太 大 , 一 屏 只 能 显示 几个汉字。显示汉字,只能把汉字放到图形区去显示,图形区的每一单元控制屏上的个点,由于液晶屏是 160 128 点阵的屏,所以需要的图形显示缓冲区单元为 160 128 82560 单元 ,即 ACOH 单元,对于汉字的定位,仍可以采用上面的编码 形式,不过,我们把最高位为表示汉字。即对于汉字 ,字符编码 00-7F 为 ASCII 字符, 80-DF 为汉字,在这里整屏分为 128 行, 20 列,而不是分为 128 行, 160 列。因为一个字节单元控制的是横向的 8 个点,为了编程,而不分成 160 列。例如本系统中 80 编码代表汉字 ” 信 ” ,要在第8 行,第 3 列显示 “ 信 ” 。同样的编码为 F8, F3, 80H, FFH,写缓冲区程序毛到 F8H 时,把高四位去掉,留下低四位,与20 相乘,然后加上图形区的当前位置,读到 E3H 时,同样去高四位,留下低四位,加上低四位,得到下汉字要缓冲区地址单元读到 80H,就会 把 80H 代表的编码信息 “ 信 ” 的 32 32 点 阵 写 入 显示 缓 冲 区 。 计 算 汉字 缓 训 区 的 地 址 公式 同样为图形区当前位置 14H下 移 行数 右 移 列 数 。 这样 ,要显示汉字先要显示的汉字进行编码,然后调用写缓冲区程序,把缓冲区内容读过去显示就行了。 汉 字 字 符 要 同 时 显 示 , 只 要 它 们 各 自 的 缓 冲 区 写 入 要显示的信息,然后把文本图形缓冲区拿过去显示就可以,不过这里同样也要注意一个位置问题,图形区是可以做到对每点控制的,而文本区则只能实现 8 8 点阵控制,因此图形区的相对地址与文本区的相对地址的转换关系为 8 的倍数。如果说图形区的控制分 辨率为 128 160 的话,文本区的分辨率也就只有 16 20 了。例如一个 8 8 的点阵,图形区要8 个字节单元控制,而文本区只要一个单元控制,象屏的左nts 19 上角 8 8 点 阵 图 形 区 由 4000H,4013H,4027H 403BH,404FH,4063H,4077H,408BH,409FH 单元控制,而同样由文本控制的话,就是 5400H 单元控制。注意了这个问题,就不会是汉字与文本(即 ASCII 字符)叠加显示在同一个位置。 四、文本的输入 本 系 统 有 一 个 子 程 序 , 可 以 由 2 个 键 输 入 显 示 一 个ASCII 字符,实际上可以说是一种输入法 。通过上、下、左、右移动键来控制光标的移动,也就是输入字符的位置。光标开始位置为左上角,也就是 0 行 0 列,由于一个字符由一个2 位的十六进制数代码表示,所以按 2 个键就可以输入一个字符,第一键为高位,第二键为地位。如 A 的代码为 21H,先按 2 键,然后 按 1 键就可以在光标的位置显示一个大写的字母 A,光标右移一列。按键表示光标右移一列,按 表示光标左移一列,按表示下移一行,按表示光标上移一行。如果按下后,光标超出文本区,侧光标位置不变,此程序的流程图如图 6: 光标初始化 第一次读键 滴一声 保存键值 等待键释放 数字键否 移动键 光标左 /右 /上 /下移动一次 超出文本区否 nts 20 第二次读键 与上次键合成一键值 在光标位置缓冲区写入该值 不显示字符 返回光标上次位置 键释放 返回第一次读键处 图 6 第四节 显示的各种移动模块 对于屏的内容的上下左右移动,整屏,滚屏移动,都是对显示缓冲区的内容进行操作。实际上也就是对数据块进行移动,所以对图形区和文本区的移动,其程序基本上差不多 ,只不过是对数据块操作的范围大小而已。不过图形区是能实现对点的移动,而文本区就只能实现对 字节单元的移动,也就是只能对一个 8*8 的点阵进行移动。下面详细介绍图形区的各种移动功能。由于文本区的移动跟图形区差不多,也就不做详细的介绍。 一、整屏循环上移 整屏循环上移就是把屏的第一行移到屏的最后一行,第二行移 到第 一行 .依 次类 推。具 体移 动如 下:先 把第一列第一行(这里把屏看作 20 列)的数据保存,然后把第一列第二行的数据移到第一列第一行中,第一列第三行的数据移到第一列第二行中等等,依次循环 127 次,然后把保存的第超出文本区否 显示光标 返回光标上次位置 延时 第一次读键处 显示字符 光标下移一位 nts 21 一列第一行的数移到第一列最后一列。这样完成了第一列数据 往 上 移 动 一 行 的 任 务 , 然 后 再 移 第 二 列 , 第 三 列 .直到最后一列,即第 32 列,这样也就完成了整屏往上移动一行,其程序流程图如下图 7(见下一页 ): 二、整屏循环下移 整屏循环下移和整屏循环上移一样,不过是把第一行的数据移到第二行,把第二行的数据移到第三行 .把最后一行的数据移到第一行而已。其程序流程图也和整屏上移一样,只不过先保存的是最后一行的数据,指针地址初始化指向第一列最后一行 ,也就是 492CH 地址指针每移动一次是减 14H,而不是加 14H。地址指针减 14H 可用如下指令实现: MOV A,#14H XCH A,DPL CLR C SUBB A,DPL MOV DPL,A CLR A XCH A,DPH SUBB A,DPH MOV DPH,A 这样就完成了地址指针 dptr 减 14h 的操作。其流程图和上移一样,不再画出。 指针指向 0行 0列 加上列指针 保存数据 指针进堆 指针地址加 20H,指向下 一行 开始 nts 22 图 7 三、整屏左移 整屏左移就是把第一列的数据移到最右一列,而其它各列的数据依次往左移动。这里就有一个问题,是把一个字节单元看成一列,还是把液晶屏上的一个点看成一列,把一个字节单元看成一列对其进行移动,当然比较简单些,把一点看成一列,要每移动一列,就要把 160 列左移一次。每一列相当于字节单元的一位,也就是说要对一个 160 位的单元左移一次,而实际上没有 160 位的单元,只有一条可实现 9位左移的 RLC A 指令 。下面就详细介绍把一个点看成一列的左移程序:当然,正如前面所说,没 有 160 位的单元位移指令,就只能利用可实现 9 位位移的 RLC A 指令了。 RLC A 指读出数据 指针出堆 写数据 指针加 20H 计数器满否 保存的数据写入指针地址 列指针加 1 计数器满否 返回 nts 23 令是把 C 位移到 A 的最低位,其它位依次左移一位。所以我们只能从一行的最后一列字节单元开始操作,先取出最后一列的内容,循环左移一次,这样它的最高位就到 C 中了,然后取出倒数第二列的字节单元内容,循环左移一次, C 就移到了倒数第二列的字节单元的最低一位了。依次类推,把直到 把第 一列循 环左移 后的 C 再 移到最 后一列 的最 低位就完成了一行的左移一位。其它行照此移动,就实现了整屏往左移动一点,其流程图如下图 8: 指针初始化为 0 行最后一列 指针地址入堆 取指针地址单元数据 循环左移一位 数据地址指针所指单元 地址指针减 1 nts 24 图 8 四、整屏右移 整屏右移与整屏左移一样,只不过使用循环右移指令对每一行右移一位,地址指针初始化为行的最左边的单元地址。程序的实现和整屏左移几乎一样,流程图差不多。这里不再做介绍了。 五、整屏上移 整屏上移指汉字从屏的最后一行出来,一行行往上移,从最上一行消失。这与整屏循环上移也差不多,只不过循环上移的操作区只在缓冲区中,从 4000H 到 4A00H,而要产生整屏上移的效果,就可以再加一个缓冲区的缓冲区,以保存缓冲区的数据。我们对 2 倍缓冲区的单元实行循环上移,液计数器加 1 满否 地址指针出堆 C 位送指针单元最后一位 地址指针加 14 H 计数器加 1 满否 返回 nts 25 晶 屏 上 就 会 显 示 整 屏 上 移 的 效 果 。 所 以 我 们 只 要 对4000h-53FFH 单元的数据操作 ,实行上移一行就可以了 。当然,首先要对 4A00H-53FFH 单元的内容必需清零,要不然会显示乱码。流程图与整屏循环上移一样,只是循环变量扩大了一倍。 六、整屏下移 这和整屏上移原理一样,不再做介绍。 七、汉字左上移 汉字左上移指汉字一个字一个字左移半的汉字位置,当汉字达到一行的最左边 再移动时跳到上一行的最右边。由于汉字显示放到了图形缓冲区,一个汉字由缓冲区的 32 个字节单元控制,分成左右两半,每移动一次,必需对 16 个单元的内容向左平移一次。具体编程实现不能同时对 16 个单元的内容向左移动,否则,必需同时保存 16 个单元的数据 。如果把 16 个单元看成一个单元的话,就相当于数据块向左移动一次,把屏的行数分成 16 份第 1 行与 1+n 16( n=1,2, 3 8)行相对,第 2 行与 2+n 16( n=1, 2, 3 8)行相对, m 与 m+n 16( m=0, 1, 15, n=1, 2, 8)行相对。把( m+n 16)行的内容移到( m+( n-1) 16)行的地方,全部移完 16 次就实现了汉字左移半个位置,其流程图如图 9: 指针初始化为 0 行 0 列 指针入堆 保存指针地址单元内容 地址指针能被16 整除否 地址指针加 15 20 地址指针加 1 读地址指针单元内容 nts 26 图 9 八 、 汉字右下移 汉 字 右 下 移 与 汉 字 左 上 移 一 样 , 只 不 过 是 半 个 汉 字 16个单元里的内容向右平移一次而已。其做法与汉字右移一样,也是把屏的行数分成 16 份,对其每份实现右移一次,移完 16 次就实现了汉字右移半个汉字。 对文本区中 ASCII字符的移动,其实现就简单多了。因为在文本区中一个单元控制一个 ASCII 字符,对字符进行移动,只需移相应的单元内容。 上面全部介绍完了图形区即汉字的上、下、左、右移动的显示子程序。对于连续移动,只要循环调用各移动程序nts 27 就可以了。在主程序中,按回车键就可以实现各个移动显示的连续调用,实现连移的效果。正如前面所讲,对于文本区( ASCII 字符)的各种移动同图形区一样。在具体程序实现起来比图形区还简单得多,不在做详细的介绍了,流程图也省略不写。 第五节 其它重要子程序介绍 一、 汉字,字符代码写入缓冲区的 子程序 PRIN PRIN 程序包括计算当前指针地址应下移,右移多少行多少列,求出汉字显示的缓冲区首址,然后计算字模的首址(字库首址为 3500H)。列如 81H 代表 “ 工 ” ,由于汉字字模长度为 20H 字节所以“工”字字模首址的计算公式为: 3500+20 1=3520H 即从 3520H 单元开始的 32 个单元 ROM 中存放的是“工”字模点阵信息。把此点阵送到刚计算出的显示该汉字的图形缓冲区的首址开始的一个 32 32(点),即 16 2(单元)中去,然后对地址指针右移 2 列,就完成了一个汉字字模装入缓冲区的过程,其流程图如 下图 10: 保存 A 中内容 换行符 F*? 下移 *行 返回 空格符 E*? 右移 *列 返回 汉字否 计算字模首址 保存代码 nts 28 图 10 二、显示子程序 显示程序就是把缓冲区的数据送到控制器中去显示。包括把文本区内容,图形区内容,文本区及图形区的内容都去显示。在开始送的过程中,必须先判断 LCD 控制器是否准备好,告诉 LCD 缓冲区的首址,及其把控制器置成自动写的方式,然后将显示缓冲区内容送 LCD 中,把所有的全部内容送完就完成了一次显示操作过程,流程图如下图 11: 取出输出内容范围 输出文本否? 计算缓冲区填入汉字处的首址 取字模字节 送入地址指针 地址指针加 1 取字模字节 送地址指针 地址指针调整到下一列 装完一个汉字否 地址指针右移 2 列 返回 求得文本行 计算文本区地址 写入文本缓冲区 地址指针右移一列 返回 nts 29 图 11 三、键盘程序 本系统键盘的扩展使用输出输入口 P1 口,组成一个 4 4 的键盘矩阵,键值的读出采用反转读键法,即先 P1 口低四位送 1,读高四位,然后高四位送 1,读低四位。读出的两个四位合成一个键值的特征码,再根据特征码,利用查表转换成顺序码。 P1 口的键盘接法: P1.7 P1.6 P1.5 P1.4 置文本输出 置图形输出 置文本图形输出 取出缓冲区首址及循环 变量 设置 LCD,准备好接收数据 送完全部数据 返回 图形输出否? nts 30 特征码与顺序码的关系: 键 0 1 2 3 4 5 6 7 8 特征码 DBH EBH 7DH BDH DDH EDH 7EH BEH DEH 顺序码 00H 01H 02H 03H 04H 05H 06H 07H 08H 键 9 空 特征码 EEH 7BH 77H BBH B7H D7H C7H FFH 顺序码 09H 0AH 0BH 0CH 0DH 0EH 0FH FFH 键盘程序流程图如图 12: 6 7 8 9 2 3 4 5 0 1 P1.0 P1.1 P1.2 P1.3 P1 口四位 送 1 延时 读 P1 口高四位 高四位送 1 延时 读 P1 口低四位 合成特征码 查表求出顺序码 nts 31 图 12 四、 LCD 初始化程序 在使用液晶控制器时,都必须对控制器 DMF5001N 进行初始化。初始化包括设定文本图形的混合方式,光标是否闪烁,光标形状,光标坐标初始化,文本区,图形区的首址 文本区图形区的宽度等信息。这样才能对 LCD 液晶屏进行使用。如果 LCD 初始化不正确 ,后面的调用 LCD 显示程序就会毫 无反 应,但 在每一 次送 LCD 控制码 前, 都必须 检测 LCD的状态码,看 LCD 是否准备好,读 LCD 状态码的指令为: MOV DPH,#E0H;LCD 地址 BUS1: SETB P3.0;指令口 MOVX A, DPTR CLR P3.0;数据口 ANL A,#3;取状态信息 CJNE A, #3, BUS1;等待命令数据准备好 RET;返回 其流 程图如下图 13: 返回 延时,使 LCD 充分复位 文本图形混合方式,光标闪烁,暂不亮 光标形状设置 光标位置初始化 nts 32 图 13 五、音响程序 每调用一次此程序,就会发出滴的一声,在系统自检及输入文本时都会调用此程序。 程序每隔 0.5ms 使喇叭接通一次,振动 200 次,就会产生滴一声的效果。 第 七章 设 计中 所遇到 的问题 对于一个系统的设计,其原理是理想的,但在实际设计和调试时肯定会遇到各式各样的问题,如何解决问题,这是必须克服的难关,也是积累经验的源泉。 第一节 硬件调试 由于利用的是微机能谱仪上的液晶 显示屏,里面对于液晶控制器 DMF5001N 及其存储器的扩展已连接好,只需要负责软件的编制与调试。但是在调试过程中还是遇到了不少问题,也学到了许多书本上学不到的东西。 在刚开始编完系统自检及显示一个主画面后,对程序进行调试,全速运行无反应,单步运行时发现,在对 LCD 初始化调用检测 LCD 状态码时进入了死循环,每次读到的
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
提示  人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:单片机控制的lcd点阵图文显示系统
链接地址:https://www.renrendoc.com/p-512457.html

官方联系方式

2:不支持迅雷下载,请使用浏览器下载   
3:不支持QQ浏览器下载,请用其他浏览器   
4:下载后的文档和图纸-无水印   
5:文档经过压缩,下载后原文更清晰   
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

网站客服QQ:2881952447     

copyright@ 2020-2025  renrendoc.com 人人文库版权所有   联系电话:400-852-1180

备案号:蜀ICP备2022000484号-2       经营许可证: 川B2-20220663       公网安备川公网安备: 51019002004831号

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