




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目录1、课程设计目的.2 2、课程设计内容和要求.22.1、设计内容.22.2、设计要求.23、 设计方案及实现情况.23.1、设计思路.23.2、工作原理及框图23.3、各模块功能描述.33.4、仿真结果.93.5、实验箱验证情况.94、课程设计总结105、参考文献101 课程设计目的n 学习操作数字电路设计实验开发系统,掌握液晶显示模块的工作原理及应用;n 掌握组合逻辑电路、时序逻辑电路的设计方法;n 学习掌握可编程器件设计的全过程。2 课程设计内容和要求2.1、设计内容n 学习掌握按键开关控制模块、液晶显示模块的工作原理及应用;n 熟练掌握VHDL编程语言,编写按键开关控制模块
2、的控制逻辑;n 仿真所编写的程序,模拟验证所编写的模块功能;n 下载程序到芯片中,硬件验证所设置的功能,能够实现十进制数字的显示;n 整理设计内容,编写设计说明书。2.2、设计要求n 本课程设计说明书;n VHDL源程序及内部原理图;n 该设计可以在实验箱上正常工作并演示。3 设计方案及实现情况3.1、设计思路由于是按键控制十进制显示,所以采用十个按键K0-K9表示09十个数字;设计三位数显示,则可以显示000-999范围内的任意整数,而百位、十位、个位的选择则由分别由按键K10、K11、K12控制。若按下K11,则显示器光标跳到百位上,然后按下K1K10中的任意一按键,显示器则在百位处显示与
3、之对应的数值;十位、个位数值的改变的过程与之相同。3.2、工作原理及框图液晶显示的工作原理1、 基本操作时序:读状态:输入:RS=L,RW=H,E=H 输出:D0D7=状态字写指令:输入:RS=L,RW=L,D0D7=指令码,E=H 输出:无读数据:输入:RS=H,RW=H,E=H 输出:D0D7=数据写数据:输入:RS=H,RW=L,D0D7=数据,E=H 输出:无2、显示位置及显示字符的选择 该液晶显示器内置了DDRAM、CGROM和CGRAM三种存储器。其中DDRAM就是显示数据RAM,用来寄存待显示的字符代码;CGROM是液晶模块内部的字符发生存储器;CGRAM 是控制芯片留给用户,用
4、以存储用户自己设计的字模编码存储器。DDRAM地址与显示位置的对应关系如表1 表1 DDRAM地址与显示位置的对应关系而设定DDRAM地址指令为 表2 DDRAM地址指令这里我们送地址的时候应该是0x80+Address,、所以写地址命令的时候要加上0x80的原因)。如果你要想在DDRAM的00H地址处显示数据,则必须将00H加上80H,即80H,若要在DDRAM的01H处显示数据,则必须将01H加上80H即81H。依次类推。数据写入DDRAM或CGRAM指令如表3 表3 数据写入指令其功能:<1> 将字符码写入DDRAM,以使液晶显示屏显示出相对应的字符;
5、 <2> 将使用者自己设计的图形存入CGRAM。3.3、各模块功能描述 图1 系统电路图1) 按键输入译码模块 图2按键输入译码模块功能:Clk和Key_in为输入端,Key_out为输出端。Clk为时钟输入,Key_in为按键输入,Key_out为译码输出端。在每次时钟的上升沿扫描K0-K9十个按键的状态,一旦有按键Ki的电平为低,则Key_out输出二进制表示的i值。若无按键按下则Key_out保持之前的状态不变。Key_out连接到液晶显示器控制模块的输入端Data_in,来选择要显示的字符i。程序代码:LIBRARY ieee;ENTITY KEY IS por
6、t( Clk:in std_logic;Key_in : in std_logic_vector(9 downto 0);Key_out : out std_logic_vector(3 downto 0);END KEY;ARCHITECTURE YIMA OF KEY ISSIGNAL cnt1: std_logic_vector(3 downto 0);BEGINKey_out<=cnt1;process(clk)beginif rising_edge( Clk ) thencase key_in iswhen "1111111110"=>cnt1<
7、="0000"when "1111111101"=>cnt1<="0001"when "1111111011"=>cnt1<="0010"when "1111110111"=>cnt1<="0011"when "1111101111"=>cnt1<="0100"when "1111011111"=>cnt1<="0101&quo
8、t;when "1110111111"=>cnt1<="0110"when "1101111111"=>cnt1<="0111"when "1011111111"=>cnt1<="1000"when "0111111111"=>cnt1<="1001"when others=>null;end case;end if;end process;END YIMA;2) 按键选位模块 图3
9、 按键输入选位模块功能:Clk为时钟输入端,Sel_in为选位按键输入端,Sel_out为输出端。选位按键共有三个,Sel_in2、 Sel_in1、 Sel_in0分别对应液晶显示位置02H、01H、00H,也就是百位、十位、个位。Sel_out接液晶显示控制模块的Sel输入端。程序代码:LIBRARY ieee;ENTITY SEL IS port(Clk:in std_logic;SEL_in : in std_logic_vector(2 downto 0);SEL_out : out std_logic_vector(1 downto 0);END SEL;ARCHITECTURE
10、SELAD OF SEL ISsignal addr :std_logic_vector(1 downto 0);BEGINSEL_out<=addr;process(clk)beginif rising_edge( Clk ) then case SEL_in iswhen "110"=>addr<="00"when "101"=>addr<="01"when "011"=>addr<="10"when others=>nul
11、l;end case;end if;end process;END SELAD;3) 液晶显示控制模块 图4 液晶显示控制模块功能:Clk为时钟输入端,Reset为复位输入端,Data_in接按键输入译码模块的Key_out端,Sel接按键选位模块的Sel_out端,LCD_RS为寄存器选择信号,LCD_RW为液晶读写信号,LCD_EN为液晶时钟信号,LED申请信号, LCD_Data为液晶显示数据和命令字输出端。程序代码:LIBRARY ieee;ENTITY LCD ISPORT( Clk : in std_logic; -状态机时钟信号,同时也是液晶时钟信号,-其周期应该满足液晶数据的建
12、立时间 Reset : in std_logic; Data_in : in std_logic_vector(3 downto 0); Sel : in std_logic_vector(1 downto 0); LCD_RS : out std_logic; -寄存器选择信号 LCD_RW : out std_logic; -液晶读写信号 LCD_EN : out std_logic; -液晶时钟信号 LED : out std_logic; LCD_Data : out std_logic_vector(7 downto 0); END LCD;ARCHITECTURE Behavior
13、al OF LCD IStype state is (set_dlnf,set_cursor,set_dcb,set_ddram,write_LCD_Data); signal Current_State:state; signal Count : std_logic_vector(18 downto 0);signal Clk_Out : std_logic;signal LCD_Clk : std_logic;beginLCD_EN <= Clk_Out ; LED <= Clk_Out;LCD_RW <= '0' ;process( Reset, Clk
14、 )begin if Reset = '0' then Count <= (others => '0');elsif rising_edge( Clk ) thenCount <= Count + 1;if(Count = 0)thenClk_Out<= not Clk_Out;end if;end if;LCD_Clk<= Clk_Out;end process ;control:process(LCD_Clk,Reset,Current_State,Data_in,Sel) -液晶驱动控制器beginif Reset='
15、0'thenCurrent_State<=set_dlnf;LCD_RS<='0'elsif rising_edge(LCD_Clk)thenCurrent_State<= Current_State ;LCD_RS <= '0'case Current_State iswhen set_dlnf=> LCD_Data<="00110000"-30HCurrent_State<=set_cursor;when set_cursor=>LCD_Data<="00000110
16、"-06HCurrent_State<=set_dcb;when set_dcb=>LCD_Data<="00001111"-0fHCurrent_State<=set_ddram;when set_ddram=>LCD_RS<='0'LCD_Data<="10000000"+Sel;-80H or 81H or 82HCurrent_State<=write_LCD_Data;when write_LCD_Data=> LCD_RS<='1'LCD_D
17、ata<="00110000"+Data_in;Current_State<=set_ddram;when others => null;end case;end if;end process;END Behavioral; 3.4、仿真结果 图5 系统仿真波形3.5、实验箱验证情况 图6 两位显示03 图7 三位显示999 4、课程设计总结 在此次系统设计中,自己对可VHDL语言的应用和相应程序的编写有了更深的掌握和加强,对状态机的使用和设计思路有了更深的理解,同时应用也更加熟练了。同时由于设计要求模块设计,我对模块设计系统的方法也有了更深次的掌握。在此次设计之前我还没有接触过液晶显示器,通过本次系统设计我对液晶显示器的工作原理、工作方式及其相应的程序编写有了一定的理解和掌握,也认识到液晶显示器在日常生活中的应用十分广泛。在设计的过程中,我遇到了键盘消抖问题,自己也查找了一些相应的消抖程序,但由于应用的时钟频率很高,所以消抖效果不是很好,最终选择了一按键对应一数字的方案。在系统设计的过程中
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年果蔬罐头加工项目申请报告
- 2025民间简单委托合同范本
- 计算机组成原理课件设计:理解硬件与软件的交互基础
- 实习生基本礼仪课件
- 提前解约合同协议书
- 桐乡买房定金协议书
- 智能家庭无线协议书
- 机械售后质保协议书
- 昌乐战略合作协议书
- 旅馆门店转让协议书
- 数据标注与审核行业营销策略方案
- 中国电信股份有限公司广东公司4G四期规划基站(广州、清远、韶关分册)项目环境影响报告表
- 健康照明技术研究
- 年产3.0万吨二甲醚装置分离精馏工段的设计
- 验房项目详细表格
- 小学二年级下册第19课-大象的耳朵教案(部编版)
- 过敏性休克应急预案ppt
- 爱情公寓第二季1至5集剧本
- 康复医学质控标准
- 《石壕吏》优质课一等奖课件
- 义务教育英语课程标准(2022年版)
评论
0/150
提交评论