利用拨码开关控制液晶显示器进行十进制数.doc

上传人:精*** 文档编号:865869 上传时间:2023-10-05 格式:DOC 页数:12 大小:342.27KB
下载 相关 举报
利用拨码开关控制液晶显示器进行十进制数.doc_第1页
第1页 / 共12页
利用拨码开关控制液晶显示器进行十进制数.doc_第2页
第2页 / 共12页
利用拨码开关控制液晶显示器进行十进制数.doc_第3页
第3页 / 共12页
利用拨码开关控制液晶显示器进行十进制数.doc_第4页
第4页 / 共12页
利用拨码开关控制液晶显示器进行十进制数.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

1、目 录1. 课程设计目的22. 课程设计内容和要求22.1 设计内容22.2 设计要求23. 设计方案及实现情况23.1 设计思路23.2 工作原理及框图23.3 各模块功能描述33.4 仿真结果73.5 实验箱验证情况84. 课程设计总结125. 参考文献121、 课程设计目的:1.学习操作数字电路设计实验开发系统,掌握液晶显示模块的工作原理及应用。2.掌握组合逻辑电路、时序逻辑电路的设计方法。3.学习掌握可编程器件设计的全过程。2、课程设计内容和要求:2.1、设计内容1. 拨码模块实现对液晶显示的扫描控制。2. 编写控制液晶显示的程序,实现液晶的显示控制,使液晶能够正常工作。3添加消抖功能

2、模块,协调模块更好地进行工作。2.2、设计要求1学习掌握按键拨码控制模块、液晶显示模块的工作原理及应用;2. 熟练掌握VHDL编程语言,编写拨码开关控制模块的控制逻辑;3. 仿真所编写的程序,模拟验证所编写的模块功能;4. 下载程序到芯片中,硬件验证所设置的功能,能够实现十进制数字的显示;3、设计方案及实现情况3.1、设计思路 采用模块化的设计思想,对于不同的功能用不同的程序模块来实现。各个模块之间保持相对独立,这样有利于针对不同的功能模块进行调试,以便增加整个系统的成功率;同时还为功能改进和完善提供了方便,使其他无关模块不受影响。基于这种设计思想,对本次课程设计题目分为以下几个模块:消抖模块

3、:对输入进行消抖处理,消除抖动对输入的影响;开关模块:对拨动的开关进行检测,并将得到的输入转换成2进制数;译码模块:对从开关模块得到的2进制数进行译码,使其转变为液晶的显示码输出。3.2、工作原理及框图拨码模块消抖模块译码模块 图13.3各模块源程序消抖模块源程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity antivibrate is port( rst:in std_logic; xd: in std_logic; c

4、lk: in std_logic; xdout: out std_logic );end antivibrate;architecture anti of antivibrate is signal count:integer range 0 to 100; begin process(clk,rst,xd) begin if(rst=0)then count=0; xdout=0; elsif(clkevent and clk=1)then if(count=5)then count=0; xdout=not xd; else count=count+1; end if; end if; e

5、nd process;end anti;按键模块源程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity keyboard isport( aj:in std_logic; rst:in std_logic; ajout:out std_logic_vector(3 downto 0) );end keyboard;architecture key of keyboard issignal q: std_logic;signal

6、 count : std_logic_vector(3 downto 0);begin q=aj when rst=1else 0; process(q,rst) begin if(rst=0)then count=0000; elsif qevent and q=1 then if count=1001 then count=0000; else count=count+1; end if; end if; ajout=count; end process; end key;译码电路模块源程序:library ieee;use ieee.std_logic_1164.all;use ieee

7、.std_logic_unsigned.all;entity decode is port(ym:in std_logic_vector(3 downto 0); Y:out std_logic_vector(7 downto 0);end decode;architecture decode1 of decode issignal a:std_logic_vector(3 downto 0);begin a=ym;Y=00110000 when ( a=0000 ) else 00110001 when ( a=0001 ) else 00110010 when ( a=0010 ) els

8、e 00110011 when ( a=0011 ) else 00110100 when ( a=0100 ) else 00110101 when ( a=0101 ) else 00110110 when ( a=0110 ) else 00110111 when ( a=0111 ) else 00111000 when ( a=1000 ) else 00111001 when ( a=1001 ) else 00110000;end decode1;LCD模块源程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGI

9、C_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY lcd ISPORT(busy:INSTD_LOGIC;clk_fsm :INSTD_LOGIC;db_ascii:INSTD_LOGIC_VECTOR(7 DOWNTO 0);req:OUTSTD_LOGIC;db:OUTSTD_LOGIC_VECTOR(7 DOWNTO 0);END lcd;ARCHITECTURE lcd1 OF lcd ISSIGNALready:STD_LOGIC;TYPEstate IS (CMD_SEND,XX_SEND,YY_SEND,ASCII_SEND);

10、 SIGNAL current_state:state;-SIGNAL db_send: std_logic_vector(7 downto 0);BEGINPROCESS(clk_fsm,busy,ready,db_ascii) variable cnt1: std_logic_vector(2 downto 0); BEGIN -db_sendIF busy=0 THENIF ready=1 THEN current_state = XX_SEND;ready = 0;ELSEdb = 11111001;-F1req = 1;ready = 0;END IF;ELSEreq = 0;rea

11、dy = 1;current_state IF busy=0 THENIF ready=1 THENcurrent_state = YY_SEND;ready = 0;ELSEdb = 00001001;-07req = 1;ready = 0;END IF;ELSEreq = 0;ready = 1;current_state IF busy=0 THENIF ready=1 THENcurrent_state = ASCII_SEND;ready = 0;ELSEdb = 00000010;-02req = 1;ready = 0;END IF;ELSEreq = 0;ready =1;c

12、urrent_state IF busy=0 THENIF ready=1 THENcurrent_state = CMD_SEND;ready = 0;ELSE db =db_ascii; req = 1;ready = 0; END IF;ELSEreq = 0;ready = 1;current_state = ASCII_SEND;END IF;END CASE;END IF;END PROCESS;END lcd;3.4、仿真结果1、消抖模块仿真波形图如下所示: 图22、拨码开关模块仿真波形图如下所示: 图33、译码模块仿真波形图如下所示: 图44、液晶模块仿真波形图如下所示: 图5

13、3.5、实验箱验证情况 1. 电路设计总体图 图62. 实验箱连接图 图73.实验箱验证图 图8 图9 图10 图11 图12 图13 图14 图15 图16 图174、课程设计总结本次实验遇到的问题是如何实现防抖电路和拨码开关译码同步进行,经过不断的实验和更改,终于比完美的解决了以上问题,从而实现了拨码开关控制液晶,在其上显示出10进制数。软件的编写与调试是本次实验的重点,在编写过程中遇到最大的麻烦是标点符号和拼写错误,经过反复调试终于得到了预期的结果。硬件电路的调试经过多次的实验才达到实验的要求,原因是连线中有短线和部分引脚分配不正确。本次实验提高的我的设计能力和动手能力,为将来的工作打下了良好的基础。 5主要参考文献:1侯伯亨,顾新。VHDL硬件描述语言与数字逻辑电路设计 西安:西安电子科技大学出版社,19992求是科技。CPLD/FPGA应用开发技术与工程实践 北京:人民邮电出版社,20053罗苑棠。CPLD/FPGA常用模块与综合系统设计实例精讲北京:电子工业出版社,20074任勇峰,庄新敏。VHDL与硬件实现速成北京:国防工业出版社,200511

展开阅读全文
相关资源
相关搜索
资源标签

当前位置:首页 > 学术论文 > 毕业设计

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922