基于单片机的lcd显示系统设计_课程设计论文(编辑修改稿)内容摘要:
显示数据 ,此指令把 D7∽ D0写入相应的 DDRAM 单元, Y地指针自动加 1。 (READ DISPLAY DATE) 代码 R/W D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 形式 1 1 D7 D6 D5 D4 D3 D2 D1 D0 此指令把 DDRAM的内容 D7∽ D0读到数据总线 DB7∽ DB0, Y地址指针自动加 1。 读写操作时序 数表 表 14 名 称 符 号 最小值 典型值 最大值 单位 E周期时间 Tcyc 1000 ns E高电平宽度 Pweh 450 ns E低电平宽度 Pwel 450 ns E上升时间 Tr 25 ns E下降时间 Tf 25 ns 地址建立时间 Tas 140 ns 地址保持时间 Tah 10 ns 数据建立时间 Tdsw 200 ns 数据延 迟时间 Tddr 320 ns 写数据保持时间 Tdhw 10 ns 读数据保持时间 Tdhw 20 ns AT89C52 相关知识 VCC:供电电压。 GND:接地。 P0 口: P0 口为一个 8 位漏级开路双向 I/O 口,每脚可吸收 8TTL 门电流。 当 P1 口的管脚第一次写 1 时,被定义为高阻输入。 P0 能够用于外部程 序数据存储器,它可以被定义为数据 /地址的第八位。 在 FIASH 编程时, P0 口作为原码输入口,当 FIASH 进行校验时, P0 输出原码,此时 P0 外 部必须被拉高。 P1 口: P1 口是一个内部提供上拉电阻的 8 位双向 I/O 口, P1 口缓冲器能接收输出 4TTL 门电流。 P1 口管脚写入 1 后,被内部上拉为高,可用作 输入, P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。 在 FLASH编程和校验时, P1 口作为第八位地址接收。 P2 口: P2 口为一个内部上拉电阻的 8 位双向 I/O 口, P2 口缓冲器可接收,输出 4 个 TTL 门电流,当 P2 口被写 “1”时,其管脚被内部上拉电阻 拉高,且作为输入。 并因此作为输入时, P2 口的管脚被外部拉低,将输出电流。 这是由于内部上拉的缘故。 P2 口当用于外部程序存储器或 16 位地址外部数据存 储器进行存取时, P2 口输出地址的高八位。 在给出地址 “1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时, P2 口输出其特殊功能寄存器 的内容。 P2 口在 FLASH 编程和校 验时接收高八位地址信号和控制信号。 图 12 89C52 单片机 P3 口: P3 口管脚是 8 个带内部上拉电阻的双向 I/O 口,可接收输出 4 个 TTL门电流。 当 P3 口写入 “1”后,它们被内部上拉为高电平,并用作输入。 作为输入,由于外部下拉为低电平, P3 口将输出电流( ILL)这是由于上拉的缘故。 P3 口也可作为 AT89C51 的一些特殊功能口,如下表所示: 口管脚 备选功能 RXD(串行输入口) TXD(串行输出口 ) /INT0(外部中断 0) /INT1(外部中断 1) T0(记时器 0 外部输入) T1(记时器 1 外部输入) /WR(外部数据存储器写选通) /RD(外部数据存储器读选通) P3 口同时为闪烁编程和编程校验接收一些控制信号。 RST:复位输入。 当振荡器复位器件时,要保持 RST 脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。 在 FLASH 编程期间,此引脚用于输入编程脉冲。 在平时, ALE 端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的 1/6。 因此它可用作对外部输出的脉冲或用于定时目的。 然而要注意的是:每当用作外部数据存储器 时,将跳过一个 ALE 脉冲。 如想禁止 ALE 的输出可在 SFR8EH 地址上置 0。 此时, ALE 只有在执行 MOVX, MOVC 指令是 ALE 才起作用。 另外,该引脚被略微拉高。 如果微处理器在外部执行状态 ALE 禁止,置位无效。 PSEN:外部程序存储器的选通信号。 在由外部程序存储器取指期间,每个机器周期两次 /PSEN 有效。 但在访问外部数据存储器时,这两次有效的 /PSEN 信 号将不出现。 EA/VPP:当 /EA 保持低电平时,则在此期间外部程序存储器( 0000HFFFFH),不管是否有内部程序存储器。 注意加密方式 1 时, /EA 将内部锁定为 RESET;当 /EA 端保持高电平时,此间内部程序存储器。 在 FLASH 编程期间,此引脚也用于施加 12V 编程电源( VPP)。 二、 方案论证 此 LCD 液晶显示控制系统设计的关键是要实现 LCD 的显示控制。 应该先从显示方式的确定入手,接下来设计相应显示方式的电路,要实现显示内容的实时更新,就必须考虑字模数据的存储及通信电路的设计。 字模数据的存 储 由于 89C51 单片机内部程序存储器( ROM)只有 4K 空间 ,本设计采用 816点阵显示一个汉字,每一行需要两个字节数据,一个汉字占 162 = 32 字节,汉字一共有 6000 多个,不可能将庞大的汉字字库存入在单片机内部,即使将预先要显示的内容存入 ROM 中,也不便于实时控制,所以只有考虑扩展外部数据存储器。 方案一:采用标准字库,制作一个专用硬字库。 这种方法仿效中文 DOS 的办法,将一个标准的汉字库装入 ROM 存储器,再根据汉字的机内码在字库中寻址,找到对应的字模,提取后送到显示器显示。 因为采用了和 PC 机相同的编码 (机内码 ),软件的开发和维护非常简单,基本上与写 PC 机软件差不多。 而对单片机系统自身的要求则相对高多了, 1616 点阵的字库需要 256K 字节,但是一般 8 位单片机的寻址能力只有 64K 字节,要进行存储器扩充,除增加很大一部分硬件成本外,还因为要进行存储器分页管理、地址切换,显示速度明显受影响。 方案二:利用 Windows 自带的字库(即使用软字库)。 通过软件编程直接在字库中找到需要显示字符的区位码并读出其字符码,存于一个文本文件中,待所有显示内容的字符码查询完毕后,将存放所有字符码的文本文件通过串行通信发送给单片机 ,单片机将接收到的数据存放在外部扩展的数据存储器中,数据接收完毕后,单片机就从存储器中依次读出每一个字符的字符码并送到 LCD 显示屏显示。 该方案与方案一相比,虽然通信过程占整个显示周期的比例相对较大,但是硬件电路设计简单,成本较低,减少了单片机查询硬件字库所需要的时间,提高了单片机动态扫描的速度,字符显示的稳定度较高。 从设计成本、显示内容的稳定性、硬件电路设计的简易程度等方面综合考虑,第二种方案明显优于第一方案,所以采用第二种方案解决字模的问题。 通信电路 并行通信 :采用并行传送方式在微机与外部设备 之间进行数据传送的接口叫并行接口。 主要特点:一是同时并行传送的二进位数就是数据宽度;二是在计算机与外设间采用应答式的联络信号来协调双方的数据操作。 传送的数据位 1128位,一般为 8位。 单片机与外部设备之间也通常采用 8 位并行 I/O 接口进行短距离的通信。 其传输距离近 ,传送方式单一,每次传送一个字或一个字节。 图 21 并行通信方式 GND B0 B1 B2 外 B3 部 B4 设 B5 备 B6 B7 GND GND 三,电路与程序设计 系统 硬件电路图 工作原理: 电源电路为单片机以及其他模块提供 5V 电 源。 晶振模块为单片机提供时钟标准,使系统各部分能协调工作。 复位电路模块为单片机系统提供复位功能。 单片机作为主控制器,根据输入信号对系统进行相应的控制。 系统液晶显示内容为汉子和字母加数字, 当系统上电后,先按下复位键 S,其目的是为了避免 后续显示被先前信号或外来信号所干扰。 按下 key1 或者key2 时 ,系统接收到指令使显示器分别显示汉字和字母数字 ,清除屏幕显示则按复位键 S 即可。 图 31 硬件电路图(未上电) 系统软件 设计 1, 功能介绍 当系统启动后 , 由于 显示器 上电 及程序的初始化,屏幕背光灯亮,随着单片机对程序的读取以及系统对指令的执行,显示器进行检查忙状态,读写数据,设置行列等准备工作,而后先清除屏幕,再 随着对键盘的操作 显示出文字及数字和字母 等内容。 最后由复 位操作发出命令清除屏幕。 2,流程图 显示的子程序通过指针从数据库中逐个提取数据送如液晶显示模块的显示 RAM 进行显示。 数据库中的数据为要显示的内容,此汉字字模提取软件不仅可以提取汉字字模的十六进制数据,而且可以提取数字和字母的十六进制数据。 其显示过程是 先 对显示器进行初始化,接着将其清零,将已计算好的字库内容调用进去,即定入显示数据,再对显示器进行读忙,而后进行读写操作,显示调用内容,最后复位结束。 其显示内容过程 先对显示的内容在 RAM 中位置进行计 算,再对内容进行排序显示,而后取出数据显示出来,最后结束。 开始 始 计算显示 RAM地址 文本显示区首地址 设置显示 RAM地址 取数据代码 写入数据代码 结束 图 34 显示 内容 流程图 开始 始 初始化 清 零 定入显示数据 状态读取 写指令(读数)据) 结束 图 33 显示过程流程图 3,部分程序定义 对 LCD12864 显示器及 AT89C52 各接口进行定义 include define uchar unsigned char define uint unsigned int sbit e=P2^0。 sbit wr=P2^1。 sbit rs=P2^2。 sbit cs1=P2^3。 sbit cs2=P2^4。 sbit key1=P1^0。 sbit key2=P1^1。 对 LCD12864 显示器 进行状态检查 void checkstate() { uchar bf。 rs=0。 wr=1。 do{ P0=0x00。 bf=0。 e=1。 delay(0)。 e=0。 bf=P0amp。 0x80。 }while(!(bf==0x00))。 } 对 LCD12864 显示器进行初始化 void init12864() { checkstate()。 slectscreen(0)。 setonoff(0)。 slectscreen(0)。 setonoff(1)。 slectscreen(0)。 clearscreen(0)。 setstartline(0)。 } 四,结果分析 系统调试 LCD 液晶显示电路调试显示 : 硬件电路设计及软件设计好之后进行各模块的调试,首先调试字符显示部分,单片机的调试使用伟福单片机仿真器。 采用直接查字符码表显示的办法,将要显示汉字的字符码直接写在单片机程序中并输出显示。 计算机与单片机通信电路调试 : 将计算机与单片机相连之后调试也就是调试单片机的数据收发功能。 系统整体调试: 将计算机程序 通过仿真器传送 到 89C52 单片机内部 ROM 中,用线将液晶显示系统与计算机 并行口连接起来,在 LCD 显示屏 上能够实现要显示的数据。 仿真显示结果 图 41 初始 状态 图 42 复位后先按下 key1 时的显示 图 43 复位后先按下 key2 是的显示 图。基于单片机的lcd显示系统设计_课程设计论文(编辑修改稿)
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。
用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。