利用键盘控制液晶显示器_第1页
利用键盘控制液晶显示器_第2页
利用键盘控制液晶显示器_第3页
利用键盘控制液晶显示器_第4页
利用键盘控制液晶显示器_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

1、中北大学中北大学课 程 设 计 说 明 书 学生姓名学生姓名:毛雪娇学学 号:号: 0706024101学学 院院:电子与计算机科学技术学院 专专 业业:微电子学 题题 目目:利用键盘控制液晶显示器 进行汉字显示 指导教师:指导教师: 王红亮王红亮 职称职称: : 讲师讲师 2010 年 6 月 25 日- 1 -目 录1. 课程设计目的22. 课程设计内容和要求22.1、设计内容22.2、设计要求23、设计方案及实现情况23.1、设计思路23.2、工作原理及框图33.3、各模块功能描述63.4、仿真结果143.5、实验箱验证情况144、课程设计总结155、参考文献16- 2 -1 1、课程设

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

3、 设计方案及实现情况设计方案及实现情况3.1、设计思路利用 process 进程语句进行不同功能的实现,主要有分频,消抖,键盘扫描,键盘译码,- 3 -数据存储模块,控制液晶显示器,主要是键盘模块和液晶模块,键盘主要是扫描信号,当其扫描到一个信号时,向液晶显示器发出一个该信号对应的地址信号,液晶显示器接收到该地址信号后,输出相应的数据,该数据为用户要其显示的汉字的区位码。当按键分别为“1” 、“2” 、 “3” 、 “4” 、 “5” 、 “6”时,液晶显示器显示的汉字分别为“中” 、 “北” 、 “大” 、 “学” 、“春” 、 “天” 。3.2、工作原理及框图1.矩阵式键盘 矩阵式键盘又叫

4、行列式键盘,是用 I/O 口线组成的行、列矩阵结构,在每根行线与列线的交叉处,二线不直接相通而是通过一个按键跨接接通。采用这种矩阵结构只需 M 根行输出线和 N 根列输入线,就可连接 MN 个按键。通过键盘扫描程序的行输出与列输入就可确认按键的状态,再通过键盘处理程序便可识别键值。键盘扫描电路, 键盘扫描电路是用来提供键盘扫描信号的电路,扫描信号的变化顺序依次为 000-001-010-011-100-101-110-111依次的周而复始,扫描时依次分别扫描八列按键,当扫描信号周而复始,扫描时依次分别扫描八列按键,当扫描信号依次为 000 时,扫描 0 这一列按键每扫描一列按键,就检查一次是否

5、有按键按下,如果这排有按键按下,就马上停止扫描,立即进行按键编码动作,如果没有就继续扫描下一列。- 4 -图 1 键盘电路原理图- 5 - 图 2 按键位置与数码关系2液晶显示器接口协议为请求/应答(REQ/BUSY) 握手方式。应答 BUSY 高电平(BUSY =1) 表示 OCMJ 忙于内部处理,不能接收用户命令;BUSY 低电平(BUSY =0)表示 OCMJ 空闲,等待接收用户命令。发送命令到 OCMJ 可在 BUSY =0 后的任意时刻开始,先把用户命令的当前字节放到数据线上,接着发高电平 REQ 信号(REQ =1)通知 OCMJ 请求处理当前数据线上的命令或数据。OCMJ 模块在

6、收到外部的 REQ 高电平信号后立即读取数据线上的命令或数据,同时将应答线 BUSY 变为高电平,表明模块已收到数据并正在忙于对此数据的内部处理,此时,用户对模块的写操作已经完成,用户可以撤消数据线上的信号并可作模块显示以外的其他工作,也可不断地查询应答线 BUSY 是否为低(BUSY =0?) ,如果 BUSY =0,表明模块对用户的写操作已经执行完毕。可以再送下一个数据。- 6 -图 3 模块写汉字时序图3.按键的抖动问题:由于机械触点的弹性振动,按键在按下时不会马上稳定地接通而在弹起时也不能一下子完全的断开,因而在按键闭合和断开的瞬间均会出现一连串的抖动,这称为按键的抖动干扰,其产生的波

7、形如图 2 所示,当按键按下时会产生前沿抖动,当按键弹起时会产生后沿抖动。这是所有机械触点式按键在状态输出是的共性问题,抖动的时间长短取决于按键的机械特性与操作状态,一般为 10ms-100ms,此为键盘处理设计时要考虑的一个重要参数。前沿抖动后沿抖动图 6 -2 按键的抖动干扰闭合稳定释放稳定键按下键释放图 4 按键抖动干扰产生的波形键盘抖动干扰的消除:按键的抖动会造成按一次键产生的开关状态被可编程逻辑器件误读几次。为了使可编程逻辑器件能正确地读取按键状态,必须在按键闭合或断开时,消除产生的前沿或后沿抖动,去抖动的方法有硬件方法和软件方法两种。本次课程设计采用了软件方法:软件方法是指编制一段

8、时间大于 100ms 的延时程序,在- 7 -第一次检测到有键按下时,执行这段延时子程序使键的前沿抖动消失后再检测该键状态,如果该键仍保持闭合状态电平,则确认为该键已稳定按下,否则无键按下,从而消除了抖动的影响。同理,在检测到按键释放后,也同样要延迟一段时间,以消除后沿抖动,然后转入对该按键的处理。3.3、各模块功能描述LIBRARY ieee;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_unsigned.ALL;USE ieee.std_logic_arith.all;ENTITY hanzi is PORT(clr,clk,BUSY: IN

9、 std_logic; -清零信号,时钟 0 信号,应答信号 REQ : OUT std_logic; -请求信号 sel : OUT STD_LOGIC_VECTOR (2 downto 0) ; -扫描信号 key : IN STD_LOGIC_VECTOR (3 downto 0) ; -键盘输入 dout: out std_logic_vector(7 downto 0) -数据输出 );END hanzi;ARCHITECTURE doit OF hanzi ISsignal counter :std_logic_vector(7 downto 0); -计数信号,用来确定 REQs

10、ignal addrbegin :std_logic_vector(7 downto 0); -存储器首地址signal addr1: std_logic_vector(7 downto 0); -变地址 signal addr: std_logic_vector(7 DOWNTO 0); -数据地址signal DAT : std_logic_vector(7 downto 0); -输入到 lcd 的数据signal counter1 : std_logic_vector(1 downto 0); -分频计数- 8 -signal counte : std_logic_vector(2 d

11、ownto 0); -键盘扫描辅助信号signal counter2 : std_logic_vector(4 downto 0); -弹跳消除计数signal dcc : std_logic_vector(6 downto 0); -键盘行、列扫描信号结合后的信号signal clk1,test,koff: std_logic; -时钟 1 信号,测试信号,按键消抖信号signal DCC1:STD_LOGIC_VECTOR (3 DOWNTO 0); -按的哪个键BEGIN -键盘部分test=key(3) and key(2) and key(1) and key(0); -检测有无按键

12、按下P0: process(clr,clk) begin if(clr=0) then counter1=00; elsif(clkevent and clk=1) then counter1=counter1+1; end if;end process P0;clk1=0 when counter1=01 else 1;-P0 为分频模块。P1: process(clr,clk1,test) begin if(clr=0) then counte=000; elsif(clk1event and clk1=1) then if(test=0) or (koff=0) then counte=

13、counte; else- 9 - counte=counte+1; end if; end if;end process P1;sel=counte;dcc=counte & key;-P1 为键盘扫描模块。P2: process(clk,test) begin if(clkevent and clk=0) then if(dcc=0001110) then dcc1=0000; elsif(dcc=0011110) then dcc1=0001; elsif(dcc=0101110) then dcc1=0010; elsif(dcc=0111110) then dcc1=0011

14、; elsif(dcc=1101110) then dcc1=0100; elsif(dcc=1111110) then dcc1=0101; elsif(dcc=0001101) then dcc1=0110; elsif(dcc=0011101) then dcc1=0111; elsif(dcc=1001101) then dcc1=1000;- 10 - elsif(dcc=1011101) then dcc1=1001; elsif(dcc=1101101) then dcc1=1010; elsif(dcc=1111101) then dcc1=1011; elsif(dcc=01

15、01011) then dcc1=1100; elsif(dcc=0111011) then dcc1=1101; elsif(dcc=1001011) then dcc1=1110; elsif(dcc=1011011) then dcc1=1111; elsif(test=0) then dcc1=1111; end if; end if;end process P2;-P2 为键盘译码。P3: process(test,clk,clr) begin if(clr=0) then counter2=00000; koff=1; elsif(clkevent and clk=1) then

16、if(test=0) then counter2=00000; koff=0;- 11 - elsif(counter211110) then counter2=counter2+1; elsif(counter2=11110) then koff addrbegin addrbegin addrbegin addrbegin addrbegin addrbegin null; end case;end process p4;-P4 为将按键与存储器的首地址相对应P5: process(clr,busy) begin if(clr=0) then addr=00000000; elsif(bu

17、syevent and busy=0) then addr=addrbegin+addr1;- 12 - end if;end process P5;-P5 为在 busy 允许条件下将首地址与变地址相加构成数据地址P6: process(clr,busy) begin if(clr=0) then addr1=00000000; elsif(busyevent and busy=1) then if(addr1=00000100) then addr1=00000000; else addr1=addr1+1; end if; end if;end process P6;-P6 为变地址的自

18、加。P7: process(busy, clk) begin if(busy=1) then counter=00000000; elsif(clkevent and clk=1) then counter=counter+1; end if;end process P7;-P7 为分频。dout=DAT;REQ=00000100 else -计 4 个数后,REQ 才为 1,否则为 0- 13 - 0; P8:PROCESS(addr) BEGIN CASE addr IS WHEN 00000000 = DAT DAT DAT DAT DAT DAT DAT DAT DAT DAT DAT

19、 DAT DAT DAT DAT DAT DAT DAT DAT DAT DAT DAT DAT DAT DAT DAT DAT DAT DAT DAT DAT DAT=00000000; END CASE; END PROCESS P8;-P8 为在 LCD 中写入汉字END doit;图 5 模块接口图- 15 -3.4、仿真结果图 6 仿真结果图此仿真图形为“中”字的仿真时序图。3.5、实验箱验证情况按照程序中管脚的分配,连接好电路,然后进行程序下载和验证。下面是验证结果的图片。图 7 整体连线图- 16 - 图 8 实验结果4 4、课程设计总结、课程设计总结通过这次的课程设计,我对可编程逻辑器件的应用有了更加深刻的理解,它让我认识到模块化设计思想的重要性,对于一个具有一定功能的系统来说,一般都有几个实现不同功能的模块。在设计这样的系统时,应该首先把系统按照功能分为几个相对独立的模块。各个模块用来完成特定的功能。模块化的设计思想不仅可以使设计思路更加明晰,同时还可以提高程序的可移植性。对于程序的后续调试工作也会带来很大的方便。- 17 -所以在最初拿到任务书时,我首先思考的就是如何把系统按照功能分为几个相对独立的模块,然后再在各个模块中完成各

温馨提示

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

评论

0/150

提交评论