1、中北大学课 程 设 计 说 明 书学生姓名 : 张又木学 号:0906044112学 院 : 电子与计算机科学技术学院专 业 : 电子科学与技术 题 目 : 利用按键开关控制液晶显示器进行十六进制数字显示指导教师: 焦新泉 职称: 讲师 2012 年 6 月 20 日- 1 -目 录1、课程设计目的22、课程设计内容和要求22.1、设计内容22.2、设计要求23、 设计方案及实现情况23.1、设计思路23.2、工作原理及框图23.3、各模块功能描述43.4、仿真结果153.5、实验箱验证情况174、课程设计总结185、参考文献18- 2 -1、课程设计目的1.学习操作数字电路设计实验开发系统,
2、掌握液晶显示模块的工作原理及应用。2.掌握组合逻辑电路、时序逻辑电路的设计方法。3.学习掌握可编程器件设计的全过程2、课程设计内容和要求2.1、设计内容1学习掌握按键开关控制模块、液晶显示模块的工作原理及应用;2. 熟练掌握 VHDL编程语言,编写按键开关控制模块的控制逻辑;3. 仿真所编写的程序,模拟验证所编写的模块功能;4. 下载程序到芯片中,硬件验证所设置的功能,能够实现十六进制数字的显示;5. 整理设计内容,编写设计说明书。 2.2、设计要求1本课程设计说明书。2VHDL 源程序及内部原理图。3该设计可以在实验箱上正常工作并演示。3、设计方案和实现情况3.1、设计思路对于这个题目,首先
3、对试验箱上的时钟频率进行降频,因为试验箱上的时钟频率很高,而液晶系统并不需要很高的时钟频率,并且低频时钟更加有利于消抖功能的实现,其次对所使用的按键进行消抖处理,然后将消抖处理后的按键信号直接送入按键计数模块进行计数,再将按键计数模块的计数结果送往译码显示模块,严格按照液晶 OCMJ的显示时序将要显示的数据的行坐标,列坐标和数据对应的在 BUSY信号不为高的情况下,通过数据线送出,然后在 REQ信号线上送出一个高脉冲,将数据显示在液晶 OCMJ上。3.2、工作原理及框图总体工作原理:在经过分频的时钟信号的驱动下,利用按键计数模块对进行了消抖处理- 3 -后的按键信号进行计数,然后将计数数据送给
4、译码液晶显示模块,进而驱动液晶屏幕进行数据的显示。系统总体原理图如图 1所示。图 1 系统总体原理图液晶显示器工作原理: OCMJ中文模块系列液晶显示器内含 GB 2312 16*16点阵国标一级简体汉字和 ASCII8*8(半高)及 8*16(全高)点阵英文字库,用户输入区位码或 ASCII 码即可实现文本显示。OCMJ 中文模块系列液晶显示器可以实现汉字、ASCII 码、点阵图形和变化曲线的同屏显示,并可通过字节点阵图形方式造字。由于显示的是十六进制数字,故只须掌握接口协议和其中一条用户命令。接口协议为请求/应答(REQ/BUSY)握手方式。应答 BUSY 高电平(BUSY =1) 表示
5、OCMJ 忙于内部处理,不能接收用户命令;BUSY 低电平(BUSY =0)表示 OCMJ 空闲,等待接收用户命令。发送命令到 OCMJ可在 BUSY =0 后的任意时刻开始,先把用户命令的当前字节放到数据线上,接着发高电平 REQ 信号(REQ =1)通知 OCMJ请求处理当前数据线上的命令或数据。OCMJ 模块在收到外部的 REQ高电平信号后立即读取数据线上的命令或数据,同时将应答线 BUSY变为高电平,表明模块已收到数据并正在忙于对此数据的内部处理,此时,用户对模块的写操作已经完成,用户可以撤消数据线上的信号并可作模块显示以外的其他工作,也可不断地查询应答线 BUSY是否为低(BUSY
6、=0?) ,如果 BUSY =0,表明模块对用户的写操作已经执行完毕。可以再送下一个数据。液晶显示器显示 8X8ASCII字符命令:格式:F1 XX YY AS该命令为 4字节命令(最大执行时间为 0.8毫秒,Ts2=0.8mS) ,其中XX:为以 ASCII码 为单位的屏幕行坐标值,取值范围 00到 0F、04 到 13、00 到- 4 -13;YY:为以 ASCII码为单 位的屏幕列坐标值,取值范围 00到 1F、00 到 3F、00 到4F;AS:坐标位置上要显示的 ASCII 字符码。OCMJ液晶控制时序图如图 2所示:3.3、各模块功能描述说明书要求:图 2 OCMJ液晶控制时序图3
7、.3、各模块功能描述总原理图如图 3所示:图 3 总原理图模块一:分频模块- 5 -图 4 分频模块符号利用 VHDL语言生成的分频符号如图 4所示,clk 和 rst分别是输入的时钟信号引脚和复位引脚,clkout 是分频后的时钟输出引脚。本模块使用 13位计数常量分频,可以将试验箱上 1.25MHZ的时钟频率降到 150HZ左右,这足以驱动液晶工作。代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity fenpin i
8、sport( clk,rst:in std_logic;clkout:out std_logic);end fenpin;architecture fenpin_behave of fenpin issignal inclk : std_logic_vector(12 downto 0);signal inner : std_logic;beginprocess(clk,rst)beginif rst = 0 theninclk dout -状态 s1到 s6同上- 8 -dout dout dout dout dout dout dout dout -req输出一个高脉冲reqreq if
9、busy = 0 then dout req- 13 -req -写列坐标if busy=1 then statereqreq -写行坐标if busy=1 then statereqreqif busy=1 then statedout dout dout dout dout dout dout dout dout dout dout dout - 15 -dout dout dout dout dout reqreqstate=st0;end case;end if; end process;end disply_arch;3.4、仿真结果1.分频器仿真如图 8所示:- 16 -图 8 分
10、频器功能仿真波形图2.消抖模块仿真如图 9 所示:图 9 消抖模块功能仿真波形图说明:通过仿真可以看出,当按键时间适当的时候,dout 端出现了一个低脉冲,而当按键时间过短的时候,此时 din 输入的低脉冲被当作毛刺,而持续按键的时候, dout 会出现连续规律的低脉冲。这种消抖方式比较符合实际需要。3.计数模块仿真如图 10所示:图 10 计数模块功能仿真波形图4.译码及显示模块仿真如图 11所示:- 17 -图 11 译码及显示模块功能仿真波形图说明:通过仿真波形图可以看出,如果假设 busy一直为低,那么当 din输入 0010即 2的时候,输出端依次输出 F1(ASCII 码命令字)
11、、0F(行坐标) 、01(列坐标) 、和 32(2 的ASCII码) ,同时在每次输出的时候还在 req给出一个高脉冲。因此,此程序是可行的。5.总体仿真如图 12所示:图 12 总体仿真波形图3.5、实验箱验证情况试验箱验证情况如图 13 所示:- 18 -图 13 试验箱验证图4、课程设计总结通过本次课程设计,我熟练的掌握了使用 QuartusII软件进行可编程逻辑器件的开发流程,我巩固了对 VHDL语法和基本语句的掌握,并且真正学会了分析任务,发现问题,分析- 19 -问题,解决问题的能力。此外,我还意识到和同学相互交流的重要性,只有通过不断的和别人的交流,才能逐渐的发现别人的某些想法的
12、先进性,为己所用。然而,通过这次课程设计我也发现的不少问题,对于自身而言,在调试程序的过程中在遇到难以解决的问题时,总是缺乏耐心,容易急躁;对于基础的东西,总是不屑于去学,最后也总是在这方面栽跟头;另外一点要提出的是实验室里的试验箱大部分液晶不可用,而且缺少说明书,这导致大家在课设过程中遇到很大的问题。5、参考文献(1)侯伯亨,顾新.VHDL 硬件描述语言与数字逻辑电路设计. 西安:西安电子科技大学出版社,1999(2)求是科技.CPLD/FPGA 应用开发技术与工程实践. 北京:人民邮电出版社,2005(3)罗苑棠.CPLD/FPGA 常用模块与综合系统设计实例精讲. 北京:电子工业出版社,2007(4)任勇峰,庄新敏.VHDL 与硬件实现速成.北京:国防工业出版社,2005