利用按键开关控制液晶显示器进行十六进制数字显示.._第1页
利用按键开关控制液晶显示器进行十六进制数字显示.._第2页
利用按键开关控制液晶显示器进行十六进制数字显示.._第3页
利用按键开关控制液晶显示器进行十六进制数字显示.._第4页
利用按键开关控制液晶显示器进行十六进制数字显示.._第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

1、中北大学课程设计说明书 学生姓名学生姓名:冷鑫磊学学 号:号:0606024111学学 院院: 电子与计算机科学技术学院专专 业业: 微电子学题题 目目:利用按键开关控制液晶显示器进行十六进制数字显示 指导教师:指导教师: 王红亮王红亮 职称职称: : 讲师讲师 22010 年 6 月 25 日目 录1、课程设计目的32、课程设计内容及要求32.1、设计内容32.2、设计要求33、设计方案及实现情况33.1、设计思路33.2、工作原理及框图33.3、各模块功能描述43.4、仿真结果113.5、试验箱验证情况114、课程设计总结145、参考文献14附录 1:液晶显示屏说明书1531 1、课程设计

2、目的、课程设计目的1.学习操作数字电路设计实验开发系统,掌握液晶显示模块的工作原理及应用。2.掌握组合逻辑电路、时序逻辑电路的设计方法。3.学习掌握可编程器件设计的全过程。2 2、课程设计内容和要求:、课程设计内容和要求:2.1、设计内容用 VHDL 语言编写程序,实现利用按键开关控制液晶屏显示 16 进制数。2.2、设计要求1学习掌握按键开关控制模块、液晶显示模块的工作原理及应用;2. 熟练掌握 VHDL 编程语言,编写按键开关控制模块的控制逻辑;3. 仿真所编写的程序,模拟验证所编写的模块功能;4. 下载程序到芯片中,硬件验证所设置的功能,能够实现十六进制数字的显示;5. 整理设计内容,编

3、写设计说明书。3 3、 设计方案及实现情况设计方案及实现情况3.1、设计思路根据题目设计要求,用按键控制液晶屏显示 16 进制数,开始的实际本来是要用 16 个按键来实现,但在硬件实现的过程中,一直出现各种问题,所以采用了一个按键,循环显示0f。由于是按键控制,所以加入了消抖程序,对液晶屏的控制则是通过状态机来实现的。先输入4F9,选择 8*16ascII 码显示模式,在输入坐标 XX YY。3.2、工作原理及框图本设计将系统分为四个模块,消抖模块,按键输入模块,译码模块和液晶屏控制模块,先分别用 MAX+PLUS II 文本设计输入编写每个模块 ,模块功能好了就可以实现最后的结果了。信号由消

4、抖模块的 XD 管脚输入,经过消抖程序后,在译码模块中将四位二进制代码翻译成八位 2 进制的 ASCII 码,输入到液晶屏控制模块中,实现对液晶屏的控制。与此同时,每按下一次按键,按键模块中的变量就会+1,当加到 1111B 时,自动清零,实现了 0-F 循环显示。最重要也是最难的液晶屏控制模块采用状态机程序编写,原理祥见附录 1(如图 1) 。图 1 系统原理图3.3、各模块功能描述(1)消抖电路加入本模块的原因是因为按键开关在按下时信号会产生抖动,在硬件实现是可能出现按一下跳过很多个数的情况,对程序的输入会产生影响,加入模块后消除抖动(如图 2) 。程序代码:library ieee;us

5、e 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

6、if(rst=0)then count=0; xdout=0; elsif(clkevent 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;6use ieee.std_l

7、ogic_1164.all;use ieee.std_logic_unsigned.all; 图 3 按键及译码模块硬件原理图 use ieee.std_logic_arith.all;entity aj isport( aj:in std_logic; rst:in std_logic; ajout:out std_logic_vector(3 downto 0) );end aj;architecture ajwork of aj issignal q: std_logic;signal count : std_logic_vector(3 downto 0);begin q=aj whe

8、n rst=1else 0; process(q,rst) begin if(rst=0)then count=0000; elsif qevent 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_lo

9、gic_vector(3 downto 0); Y:out std_logic_vector(7 downto 0);end ym;architecture yima_arch of ym issignal a:std_logic_vector(3 downto 0);begina=ym;YIF busy=0 THEN9IF ready=1 THEN current_state = XX;ready = 0;ELSEdb = 11111001;req = 1;ready = 0;END IF;ELSEreq = 0;ready = 1;current_state IF busy=0 THENI

10、F ready=1 THENcurrent_state = YY;ready = 0;ELSEdb = 00000111;req = 1;ready = 0;END IF;ELSEreq = 0;ready = 1;current_state IF busy=0 THENIF ready=1 THENcurrent_state = ASCII;ready = 0;ELSEdb = 00000011;req = 1;ready = 0;END IF;ELSEreq = 0;ready =1;current_state IF busy=0 THENIF ready=1 THENcurrent_st

11、ate = CMD;ready = 0;ELSE db =db_ascii; req = 1;ready = 0END IF;ELSEreq = 0;ready = 1;current_state = ASCII;11END IF;END CASE;END IF;END PROCESS;END rtl;3.4、仿真结果本实验结果主要表现在波形的 DB7.0信号的波形输出,实现了 16 进制数的显示(如图 5、6) 。图 5 09 仿真波形图 图 6 AF 并置 0 波形图3.5、实验箱验证情况(1)部分管脚分配(自动分配) (如图 7) 。12图 7 部分管脚图(自动分配)(2)程序硬件实现结

12、果的部分显示(如图 815) 。 图 8 数字 1 图 9 数字 2 图 10 数字 3 图 11 数字 813 图 12 数字 9 图 13 数字 10图 14 数字 11 图 15 数字 12(3)总体硬件图(如图 16) 。14 图 16 整体硬件图4 4、课程设计总结、课程设计总结 通过本次课程设计我学到了很多东西,以前虽然也做过不少 VHDL 程序的设计,但都是在已经有写好的程序的情况下。这次从设计到实现都独立完成还是第一次,自己亲身试过之后才会发现,软件上做出来的正确结果和硬件的实现有着巨大的差距。编译好的程序在硬件实现时还有很多的因素要考虑,要处理。比如,消抖程序中的 count

13、 值的设定,有的同学count=5 就足够了,而有的在设定为 5 时抖动的相当厉害,这都需要在硬件实现时再进行调试,有时候甚至整个程序都要重新编写。这次课程设计我收获了很多。5 5、参考文献、参考文献1侯伯亨,顾新.VHDL 硬件描述语言与数字逻辑电路设计. 西安:西安电子科技大学出版15社,19992求是科技.CPLD/FPGA 应用开发技术与工程实践. 北京:人民邮电出版社,20053罗苑棠.CPLD/FPGA 常用模块与综合系统设计实例精讲. 北京:电子工业出版社,20074任勇峰,庄新敏.VHDL 与硬件实现速成.北京:国防工业出版社,2005附录附录 1 1:液晶显示屏说明书:液晶显

14、示屏说明书1)表1:OCMJ2X8(128X32)引脚说明引脚引脚 名称名称方向方向说明说明引脚引脚名称名称方向方向说明说明1 1VLED+VLED+I I背光源正极(背光源正极(LED+5VLED+5V)8 8DB1DB1I I数据数据 1 12 2VLED-VLED-I I背光源负极(背光源负极(LED-OVLED-OV)9 9DB2DB2I I数据数据 2 23 3VSSVSSI I地地1010DB3DB3I I数据数据 3 34 4VDDVDDI I(+5V+5V)1111DB4DB4I I数据数据 4 45 5REQREQI I请求信号,高电平有效请求信号,高电平有效1212DB5D

15、B5I I数据数据 5 56 6BUSYBUSYO O应答信号应答信号=1=1:已收到数据并正在处理中:已收到数据并正在处理中 =0=0:模块空闲,可接收数据:模块空闲,可接收数据1313DB6DB6I I数据数据 6 67 7DB0DB0I I数据数据 0 01414DB7DB7I I数据数据 7 7硬件接口硬件接口16接口协议为 请求/应答(REQ/BUSY) 握手方式。应答 BUSY 高电平(BUSY =1) 表示 OCMJ 忙于内部处理,不能接收用户命令;BUSY 低电平(BUSY =0)表示 OCMJ 空闲,等待接收用户命令。发送命令到 OCMJ 可在 BUSY =0 后的任意时刻开

16、始,先把用户命令的当前字节放到数据线上,接着发高电平 REQ 信号(REQ =1)通知 OCMJ 请求处理当前数据线上的命令或数据。OCMJ 模块在收到外部的 REQ 高电平信号后立即读取数据线上的命令或数据,同时将应答线 BUSY 变为高电平,表明模块已收到数据并正在忙于对此数据的内部处理,此时,用户对模块的写操作已经完成,用户可以撤消数据线上的信号并可作模块显示以外的其他工作,也可不断地查询应答线 BUSY 是否为低(BUSY =0?) ,如果 BUSY =0,表明模块对用户的写操作已经执行完毕。可以再送下一个数据。如向模块发出一个完整的显示汉字的命令,包括坐标及汉字代码在内共需 5 个字

17、节,模块在接收到最后一个字节后才开始执行整个命令的内部操作,因此,最后一个字节的应答 BUSY 高电平(BUSY =1)持续时间较长,具体的时序图参见 图图-1-1,对应的具体时间参数说明参见 表表-1T Tr rT Tb bT Ts s1 1T Ts s2 2B BU US SY YD DB BR RE EQ QT Tr rt tt1t2t3t4t5图1:对模块写汉字时序图电性能参数电性能参数模块时间参数表值值编号编号名称名称单位单位最小值最小值最大值最大值说说 明明1TruS0.4-数据线上数据稳定时间2TbuS220最大模块响应时间3TrtuS11-最小 REQ 保持时间4Ts1uS20

18、45最大数据接收时间5Ts2mS-0.130*最大命令指令处理时间*:不同命令所占用的时间各不相同,具体时间在命令表中给出模块主要电气参数表值值编号编号名称名称单单位位2X84X85X10说说 明明171电源工作电压V5552电源电流mAmA2353输入引脚电压V V5554最大输入电压建立时间uSuS1115最小复位电压持续时间uSuS666RES 端高电平时间6复位内部处理时间mSmS151515此时模块不接收命令7背光电压V V5558标称背光电流mAmA1201802509外接灰度调节电位器5K20010K用户命令用户命令 用户通过用户命令调用 OCMJ 系列液晶显示器的各种功能。命令

19、分为操作码及操作数两部分,操作数为十六进制。1)显示国标汉字命令格式: F0 XX YY QQ WW该命令为 5 字节命令(最大执行时间为 1.2 毫秒,Ts2=1.2mS) ,其中XX:为以汉字为单位的屏幕行坐标值,取值范围 00 到 07、02 到 09、00 到 09YY:为以汉字为单位的屏幕列坐标值,取值范围 00 到 01、00 到 03、00 到 04QQ WW:坐标位置上要显示的 GB 2312 汉字区位码2) 显示 8X8 ASCII 字符命令格式:F1 XX YY AS该命令为 4 字节命令(最大执行时间为 0.8 毫秒,Ts2=0.8mS) ,其中XX:为以 ASCII 码

20、为单位的屏幕行坐标值,取值范围 00 到 0F、04 到 13、00 到 13YY:为以 ASCII 码为单位的屏幕列坐标值,取值范围 00 到 1F、00 到 3F、00 到 4FAS:坐标位置上要显示的 ASCII 字符码3) 显示 8X16 ASCII 字符命令格式:F9 XX YY AS该命令为 4 字节命令(最大执行时间为 1.0 毫秒,Ts2=1.0mS) ,其中XX:为以 ASCII 码为单位的屏幕行坐标值,取值范围 00 到 0F、04 到 13、00 到 13YY:为以 ASCII 码为单位的屏幕列坐标值,取值范围 00 到 1F、00 到 3F、00 到 4FAS:坐标位置

21、上要显示的 ASCII 字符码4) 显示位点阵 命令格式: F2 XX YY 该命令为 3 字节命令(最大执行时间为 0.1 毫秒,Ts2=0.1mS) ,其中18XX:为以 1*1 点阵为单位的屏幕行坐标值,取值范围 00 到 7F、20 到 9F、00 到 9FYY:为以 1*1 点阵为单位的屏幕列坐标值,取值范围 00 到 40、00 到 40、00 到 405) 显示字节点阵命令格式: F3 XX YY BT该命令为 4 字节命令(最大执行时间为 0.1 毫秒,Ts2=0.1mS) ,其中XX:为以 1*8 点阵为单位的屏幕行坐标值,取值范围 00 到 0F、04 到 13、00 到

22、13YY:为以 1*1 点阵为单位的屏幕列坐标值,取值范围 00 到 1F、00 到 3F、00 到 4FBT:字节像素值,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) CL

23、R 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 等待模块内部处理完成 *2RET ;返回注:*1、延时时

24、间参照表4 中的 Tb 及 Trt*2、延时时间参照表4 中的 Ts1 及 Ts23) 写汉字程序-该程序显示一个汉字“啊” (区位码为 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 汉字区位

25、码低位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 点阵为单位的屏幕坐标值 XACALL SUB120MOV A,#00H ;00H,YY,1*1 点阵为单位的屏幕坐标值 YACALL SUB1MOV 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 点阵为单位的屏幕坐标值 XACALL SUB1

温馨提示

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

评论

0/150

提交评论