利用按键开关控制液晶显示器进行十六进制数字显示.doc_第1页
利用按键开关控制液晶显示器进行十六进制数字显示.doc_第2页
利用按键开关控制液晶显示器进行十六进制数字显示.doc_第3页
利用按键开关控制液晶显示器进行十六进制数字显示.doc_第4页
利用按键开关控制液晶显示器进行十六进制数字显示.doc_第5页
免费预览已结束,剩余17页可下载查看

下载本文档

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

文档简介

中北大学 课程设计说明书 学生姓名学生姓名 冷鑫磊 学学 号 号 0606024111 学学 院院 电子与计算机科学技术学院 专专 业业 微电子学 题题 目目 利用按键开关控制液晶显示器进行十六进制数字显示 指导教师 指导教师 王红亮王红亮 职称职称 讲师讲师 2 2010 年 6 月 25 日 目 录 1 课程设计目的 3 2 课程设计内容及要求 3 2 1 设计内容 3 2 2 设计要求 3 3 设计方案及实现情况 3 3 1 设计思路 3 3 2 工作原理及框图 3 3 3 各模块功能描述 4 3 4 仿真结 果 11 3 5 试验箱验证情 况 11 4 课程设计总 结 14 5 参考文 献 14 附录 1 液晶显示屏说明 书 15 3 1 1 课程设计目的 课程设计目的 1 学习操作数字电路设计实验开发系统 掌握液晶显示模块的工作原理及应用 2 掌握组合逻辑电路 时序逻辑电路的设计方法 3 学习掌握可编程器件设计的全过程 2 2 课程设计内容和要求 课程设计内容和要求 2 1 设计内容 用 VHDL 语言编写程序 实现利用按键开关控制液晶屏显示 16 进制数 2 2 设计要求 1 学习掌握按键开关控制模块 液晶显示模块的工作原理及应用 2 熟练掌握 VHDL 编程语言 编写按键开关控制模块的控制逻辑 3 仿真所编写的程序 模拟验证所编写的模块功能 4 下载程序到芯片中 硬件验证所设置的功能 能够实现十六进制数字的显示 5 整理设计内容 编写设计说明书 3 3 设计方案及实现情况设计方案及实现情况 3 1 设计思路 根据题目设计要求 用按键控制液晶屏显示 16 进制数 开始的实际本来是要用 16 个按 键来实现 但在硬件实现的过程中 一直出现各种问题 所以采用了一个按键 循环显示 0 f 由于是按键控制 所以加入了消抖程序 对液晶屏的控制则是通过状态机来实现的 先输入 4 F9 选择 8 16ascII 码显示模式 在输入坐标 XX YY 3 2 工作原理及框图 本设计将系统分为四个模块 消抖模块 按键输入模块 译码模块和液晶屏控制模块 先分别用 MAX PLUS II 文本设计输入编写每个模块 模块功能好了就可以实现最后的结果 了 信号由消抖模块的 XD 管脚输入 经过消抖程序后 在译码模块中将四位二进制代码翻 译成八位 2 进制的 ASCII 码 输入到液晶屏控制模块中 实现对液晶屏的控制 与此同时 每按下一次按键 按键模块中的变量就会 1 当加到 1111B 时 自动清零 实现了 0 F 循 环显示 最重要也是最难的液晶屏控制模块采用状态机程序编写 原理祥见附录 1 如图 1 图 1 系统原理图 3 3 各模块功能描述 1 消抖电路 加入本模块的原因是因为按键开关在按下时信号会产生抖动 在硬件实现是可能出现按 一下跳过很多个数的情况 对程序的输入会产生影响 加入模块后消除抖动 如图 2 程序代码 library ieee use ieee std logic 1164 all use ieee std logic unsigned all use ieee std logic arith all 图 2 消抖模块硬件原理图 entity xd is port rst in std logic 5 xd in std logic clk in std logic xdout out std logic end xd architecture a of xd is signal count integer range 0 to 100 begin process clk rst xd begin if rst 0 then count 0 xdout 0 elsif clk event and clk 1 then if count 30 then count 0 xdout not xd else count count 1 end if end if end process end a 2 按键输入和译码模块 该模块的作用是将按键输入进来的信号进行处理 每按一次 数自动 1 并将数字的 ASCII 码编译成 8 位 2 进制 ASCII 码送给液晶屏控制程序 当显示到 F 时置 0 如图 3 程序代码 按键输入模块 library ieee 6 use ieee std logic 1164 all use ieee std logic unsigned all 图 3 按键及译码模块硬件原理图 use ieee std logic arith all entity aj is port aj in std logic rst in std logic ajout out std logic vector 3 downto 0 end aj architecture ajwork of aj is signal q std logic signal count std logic vector 3 downto 0 begin q aj when rst 1 else 0 process q rst begin if rst 0 then count 0000 elsif q event and q 1 then if count 1111 then count 0000 else count count 1 end if end if ajout count end process end ajwork 7 译码模块 library ieee use ieee std logic 1164 all use ieee std logic unsigned all entity ym is port ym in std logic vector 3 downto 0 Y out std logic vector 7 downto 0 end ym architecture yima arch of ym is signal a std logic vector 3 downto 0 begin a ym Y IF busy 0 THEN 9 IF ready 1 THEN current state XX ready 0 ELSE db 11111001 req 1 ready 0 END IF ELSE req 0 ready 1 current state IF busy 0 THEN IF ready 1 THEN current state YY ready 0 ELSE db 00000111 req 1 ready 0 END IF ELSE req 0 ready 1 current state IF busy 0 THEN IF ready 1 THEN current state ASCII ready 0 ELSE db 00000011 req 1 ready 0 END IF ELSE req 0 ready 1 current state IF busy 0 THEN IF ready 1 THEN current state CMD ready 0 ELSE db db ascii req 1 ready 0 END IF ELSE req 0 ready 1 current state ASCII 11 END IF END CASE END IF END PROCESS END rtl 3 4 仿真结果 本实验结果主要表现在波形的 DB 7 0 信号的波形输出 实现了 16 进制数的显示 如 图 5 6 图 5 0 9 仿真波形图 图 6 A F 并置 0 波形图 3 5 实验箱验证情况 1 部分管脚分配 自动分配 如图 7 12 图 7 部分管脚图 自动分配 2 程序硬件实现结果的部分显示 如图 8 15 图 8 数字 1 图 9 数字 2 图 10 数字 3 图 11 数字 8 13 图 12 数字 9 图 13 数字 10 图 14 数字 11 图 15 数字 12 3 总体硬件图 如图 16 14 图 16 整体硬件图 4 4 课程设计总结 课程设计总结 通过本次课程设计我学到了很多东西 以前虽然也做过不少 VHDL 程序的设计 但都是 在已经有写好的程序的情况下 这次从设计到实现都独立完成还是第一次 自己亲身试过之 后才会发现 软件上做出来的正确结果和硬件的实现有着巨大的差距 编译好的程序在硬件 实现时还有很多的因素要考虑 要处理 比如 消抖程序中的 count 值的设定 有的同学 count 5 就足够了 而有的在设定为 5 时抖动的相当厉害 这都需要在硬件实现时再进行调 试 有时候甚至整个程序都要重新编写 这次课程设计我收获了很多 5 5 参考文献 参考文献 1 侯伯亨 顾新 VHDL 硬件描述语言与数字逻辑电路设计 西安 西安电子科技大学出版 15 社 1999 2 求是科技 CPLD FPGA 应用开发技术与工程实践 北京 人民邮电出版社 2005 3 罗苑棠 CPLD FPGA 常用模块与综合系统设计实例精讲 北京 电子工业出版社 2007 4 任勇峰 庄新敏 VHDL 与硬件实现速成 北京 国防工业出版社 2005 附录附录 1 1 液晶显示屏说明书 液晶显示屏说明书 1 表 1 OCMJ2X8 128X32 引脚说明 引脚引脚 名称名称方向方向说明说明引脚引脚名称名称方向方向说明说明 1 1VLED VLED I I背光源正极 背光源正极 LED 5VLED 5V 8 8DB1DB1I I数据数据 1 1 2 2VLED VLED I I背光源负极 背光源负极 LED OVLED OV 9 9DB2DB2I I数据数据 2 2 3 3VSSVSSI I地地1010DB3DB3I I数据数据 3 3 4 4VDDVDDI I 5V 5V 1111DB4DB4I I数据数据 4 4 5 5REQREQI I请求信号 高电平有效请求信号 高电平有效1212DB5DB5I I数据数据 5 5 6 6BUSYBUSYO O 应答信号应答信号 1 1 已收到数据并正在处理中 已收到数据并正在处理中 0 0 模块空闲 可接收数据 模块空闲 可接收数据 1313DB6DB6I I数据数据 6 6 7 7DB0DB0I I数据数据 0 01414DB7DB7I I数据数据 7 7 硬件接口硬件接口 16 接口协议为 请求 应答 REQ BUSY 握手方式 应答 BUSY 高电平 BUSY 1 表示 OCMJ 忙于内部处理 不能接收用户命令 BUSY 低电平 BUSY 0 表示 OCMJ 空闲 等待 接收用户命令 发送命令到 OCMJ 可在 BUSY 0 后的任意时刻开始 先把用户命令的当前字 节放到数据线上 接着发高电平 REQ 信号 REQ 1 通知 OCMJ 请求处理当前数据线上的命 令或数据 OCMJ 模块在收到外部的 REQ 高电平信号后立即读取数据线上的命令或数据 同 时将应答线 BUSY 变为高电平 表明模块已收到数据并正在忙于对此数据的内部处理 此时 用户对模块的写操作已经完成 用户可以撤消数据线上的信号并可作模块显示以外的其他工 作 也可不断地查询应答线 BUSY 是否为低 BUSY 0 如果 BUSY 0 表明模块对用户 的写操作已经执行完毕 可以再送下一个数据 如向模块发出一个完整的显示汉字的命令 包括坐标及汉字代码在内共需 5 个字节 模块在接收到最后一个字节后才开始执行整个命令 的内部操作 因此 最后一个字节的应答 BUSY 高电平 BUSY 1 持续时间较长 具体的 时序图参见 图图 1 1 对应的具体时间参数说明参见 表表 1 T Tr r T Tb b T Ts s1 1 T Ts s2 2 B BU US SY Y D DB B R RE EQ Q T Tr rt t t1t2 t3 t4 t5 图 1 对模块写汉字时序图 电性能参数电性能参数 模块时间参数表 值值 编号编号名称名称单位单位 最小值最小值最大值最大值 说说 明明 1TruS0 4 数据线上数据稳定时间 2TbuS220最大模块响应时间 3TrtuS11 最小 REQ 保持时间 4Ts1uS2045最大数据接收时间 5Ts2mS 0 1 30 最大命令指令处理时间 不同命令所占用的时间各不相同 具体时间在命令表中给出 模块主要电气参数表 值值 编号编号名称名称 单单 位位2X84X85X10 说说 明明 17 1电源工作电压V555 2电源电流mAmA235 3输入引脚电压V V555 4最大输入电压建立时间uSuS111 5最小复位电压持续时间uSuS666RES 端高电平时间 6复位内部处理时间mSmS151515此时模块不接收命令 7背光电压V V555 8标称背光电流mAmA120180250 9外接灰度调节电位器 5K20010K 用户命令用户命令 用户通过用户命令调用 OCMJ 系列液晶显示器的各种功能 命令分为操作码及操作数 两部分 操作数为十六进制 1 显示国标汉字 命令格式 F0 XX YY QQ WW 该命令为 5 字节命令 最大执行时间为 1 2 毫秒 Ts2 1 2mS 其中 XX 为以汉字为单位的屏幕行坐标值 取值范围 00 到 07 02 到 09 00 到 09 YY 为以汉字为单位的屏幕列坐标值 取值范围 00 到 01 00 到 03 00 到 04 QQ WW 坐标位置上要显示的 GB 2312 汉字区位码 2 显示 8X8 ASCII 字符 命令格式 F1 XX YY AS 该命令为 4 字节命令 最大执行时间为 0 8 毫秒 Ts2 0 8mS 其中 XX 为以 ASCII 码为单位的屏幕行坐标值 取值范围 00 到 0F 04 到 13 00 到 13 YY 为以 ASCII 码为单位的屏幕列坐标值 取值范围 00 到 1F 00 到 3F 00 到 4F AS 坐标位置上要显示的 ASCII 字符码 3 显示 8X16 ASCII 字符 命令格式 F9 XX YY AS 该命令为 4 字节命令 最大执行时间为 1 0 毫秒 Ts2 1 0mS 其中 XX 为以 ASCII 码为单位的屏幕行坐标值 取值范围 00 到 0F 04 到 13 00 到 13 YY 为以 ASCII 码为单位的屏幕列坐标值 取值范围 00 到 1F 00 到 3F 00 到 4F AS 坐标位置上要显示的 ASCII 字符码 4 显示位点阵 命令格式 F2 XX YY 该命令为 3 字节命令 最大执行时间为 0 1 毫秒 Ts2 0 1mS 其中 18 XX 为以 1 1 点阵为单位的屏幕行坐标值 取值范围 00 到 7F 20 到 9F 00 到 9F YY 为以 1 1 点阵为单位的屏幕列坐标值 取值范围 00 到 40 00 到 40 00 到 40 5 显示字节点阵 命令格式 F3 XX YY BT 该命令为 4 字节命令 最大执行时间为 0 1 毫秒 Ts2 0 1mS 其中 XX 为以 1 8 点阵为单位的屏幕行坐标值 取值范围 00 到 0F 04 到 13 00 到 13 YY 为以 1 1 点阵为单位的屏幕列坐标值 取值范围 00 到 1F 00 到 3F 00 到 4F BT 字节像素值 0 显示白点 1 显示黑点 显示字节为横向 8051 与 OCMJ4X8 模块连接 1 写模块子程序 双线应答方式 该程序使用 REQ 及 BUSY 两条控制线的握手方式对模块进行写操作 SUB1 JB BUSY SUB1 确信模块空闲 BUSY 0 MOV P1 A 向总线送数 NOP 等待数据总线稳定 SETB REQ 置模块 REQ 端为高电平 REQ 1 向模块发请求命令 HE3 JNB BUSY HE3 等待模块响应 BUSY 1 CLR REQ 撤消 REQ 请求信号 数据输入结束 RET 返回 2 写模块子程序 单线延时方式 19 该程序仅使用 REQ 一条控制线方式对模块进行写操作 在 MPU 的 I O 口短缺的情况 下非常适用 SUB2 MOV P1 A 向总线送数 NOP 等待数据总线稳定 SETB REQ 置模块 REQ 端为高电平 REQ 1 向模块发请求命令 LCALL DALEY1 调延时子程序 DALEY1 等待模块响应 1 CLR REQ 撤消 REQ 请求信号 数据输入结束 LCALL DALEY2 调延时子程序 DALEY2 等待模块内部处理完成 2 RET 返回 注 1 延时时间参照表 4 中的 Tb 及 Trt 2 延时时间参照表 4 中的 Ts1 及 Ts2 3 写汉字程序 该程序显示一个汉字 啊 区位码为 1001H MOV A 0F0H 选显示汉字命令字 ACALL SUB1 调用写子程序 MOV A 02H O2H XX 16 16 点阵为单位的屏幕坐标 ACALL SUB1 调用写子程序 MOV A 00H 00H YY 16 16 点阵为单位的屏幕坐标 ACALL SUB1 调用写子程序 MOV A 10H 10H QQ GB2312 汉字区位码高位 ACALL SUB1 调用写子程序 MOV A 01H 01H WW GB2312 汉字区位码低位 ACALL SUB1 调用写子程序 4 写 8 16 ASCII 码程序 该程序显示一个 8 16 ASC 码 A MOV A 0F9H 选显示 8 16 ASCII 字符命令字 ACALL SUB1 调用写子程序 MOV A 04H 04H XX 8 8 点阵为单位的屏幕坐标值 X ACALL SUB1 20 MOV A 00H 00H YY 1 1 点阵为单位的屏幕坐标值 Y ACALL SUB1 MOV A 41H AS ASCII 字符代码 A ACALL SUB1 注 X 坐标 本例中的 04H 与 ASC 码中规定的相同 Y 坐标 本例中的 00H 以点 阵单元为单位 5 写 8 8 ASCII 码程序 该程序显示一个 8 8 ASC 码 A MOV A 0F1H 选显示 8 8 ASCII 字符命令字 ACALL SUB1 调用写子程序 MOV A 04H 04H XX 8 8 点阵为单位的屏幕坐标值 X A

温馨提示

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

评论

0/150

提交评论