利用拨码开关控制液晶显示器进行ASIC字符显示_第1页
利用拨码开关控制液晶显示器进行ASIC字符显示_第2页
利用拨码开关控制液晶显示器进行ASIC字符显示_第3页
利用拨码开关控制液晶显示器进行ASIC字符显示_第4页
利用拨码开关控制液晶显示器进行ASIC字符显示_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

1、中北大学中北大学课课 程程 设设 计计 说说 明明 书书 学生姓名学生姓名:甘世伟学学 号:号:0706024144学学 院院:电子与计算机科学技术学院专专 业业:微电子学题题 目目:利用拨码开关控制液晶显示器进行 ASIC 字符显示 指导教师:指导教师: 王红亮王红亮 职称职称: : 讲师讲师 - 1 -2010 年 6 月 25 日目 录1.课程设计目的 22.课程设计内容和要求 22.1 设计内容 22.2 设计要求 23.设计方案及实现情况 23.1 设计思路 23.2 工作原理及框图 33.3 各模块功能描述 33.4 仿真结果 103.5 实验箱验证情况 104.课程设计总结 12

2、5.参考文献 136.附录:液晶显示器简介 13- 2 -1 1、课程设计目的、课程设计目的 (1)学习操作数字电路设计实验开发系统,掌握液晶显示器的工作原理及应用。(2)掌握组合逻辑电路、时序逻辑电路的设计方法。(3)学习掌握可编程器件设计的全过程。2 2、课程设计内容和要求、课程设计内容和要求:2.1、设计内容 用 VHDL 语言编写程序,利用拔码开头控制液晶显示器进行 ASIC 字符显示。2.2、设计要求(1)学习掌握拔码开头控制模块、液晶显示模块的工作原理及应用;(2)熟练掌握 VHDL 编程语言,编写键盘控制模块的控制逻辑;(3)仿真所编写的程序,模拟验证所编写的模块功能;(4)下载

3、程序到芯片中,硬件验证所设置的功能,能够实现 ASIC 字符的显示;(5)整理设计内容,编写设计说明书. 3 3、 设计方案及实现情况设计方案及实现情况3.1、设计思路 运用 VHDL 语言进行各个模块的程序编写,该设计共有四个模块分别为:拨码模块;消抖模块;译码模块;显示模块.整个、模块共有四个单元电路组成为:图 1 译码消抖液晶显示拨码控制图 1 原理图3.2、工作原理及框图 - 3 - 图 2 系统电路原理图 3.3、各模块功能描述 (1)拨码模块 程序代码为:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsi

4、gned.all;use ieee.std_logic_arith.all;entity bm1 is port( rst:in std_logic; xd: in std_logic; clk: in std_logic; xdout: out std_logic );end bm1;architecture a of bm1 is signal count:integer range 0 to 100; begin process(clk,rst,xd) begin if(rst=0)then count=0;- 4 - xdout=0; elsif(clkevent and clk=1)

5、then if(count=5)then count=0; xdout=not xd; else count=count+1; end if; end if; end process;end a;(2)消抖模块 程序代码为:Library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity xd isport( aj:in std_logic; rst:in std_logic; ajout:out std_logic_vector(4 down

6、to 0) );end xd;architecture ajwork of xd issignal q: std_logic;signal count : std_logic_vector(4 downto 0);begin q=aj when rst=1else 0; process(q,rst)- 5 - begin if(rst=0)then count=00000; elsif qevent and q=1 then if count=11111 then count=00000; else count=count+1; end if; end if; ajout=count; end

7、 process; end ajwork; (3)译码模块 程序代码为:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity ym1 is port(ym:in std_logic_vector(4 downto 0); Y:out std_logic_vector(7 downto 0);end ym1;architecture yima_arch of ym1 issignal a:std_logic_vector(4 downto 0);begin a=ym;Y=01000001 w

8、hen ( a=00000 ) else 01000010 when ( a=00001 ) else 01000011 when ( a=00010 ) else 01000100 when ( a=00011 ) else 01000101 when ( a=00100 ) else- 6 - 00100001 when ( a=00101 ) else 00100011 when ( a=00110 ) else 00100100 when ( a=00111 ) else 00100101 when ( a=01000 ) else 00100110 when ( a=01001 )

9、else 00100111 when ( a=01010 ) else 00101000 when ( a=01011 ) else 00101001 when ( a=01100 ) else 00101010 when ( a=01101 ) else 00101011 when ( a=01110 ) else 00101100 when ( a=01111 ) else 00101101 when ( a=10000 ) else 00101110 when ( a=10001 ) else 00101111 when ( a=10010 ) else 00110000 when (

10、a=10011 ) else 00110001 when ( a=10100 ) else 00110010 when ( a=10101 ) else 00110011 when ( a=10110 ) else 00110100 when ( a=10111 ) else 00110101 when ( a=11000 ) else 00110110 when ( a=11001 ) else 00110111 when ( a=11010 ) else 00111000 when ( a=11011 ) else 00111001 when ( a=11100 ) else 001110

11、10 when ( a=11101 ) else 00111011 when ( a=11110 ) else 00111100 when ( a=11111 ) else 00110000;end yima_arch;(4)显示模块 程序代码为:- 7 -LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY lcd ISPORT(busy:INSTD_LOGIC;clk_fsm :INSTD_LOGIC;db_ascii:INST

12、D_LOGIC_VECTOR(7 DOWNTO 0);req:OUTSTD_LOGIC;db:OUTSTD_LOGIC_VECTOR(7 DOWNTO 0);END lcd;ARCHITECTURE rtl OF lcd ISSIGNAL ready:STD_LOGIC;TYPEstate IS (CMD_SEND,XX_SEND,YY_SEND,ASCII_SEND); SIGNAL current_state :state;-SIGNAL db_send: std_logic_vector(7 downto 0);BEGINPROCESS(clk_fsm,busy,ready,db_asc

13、ii) 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;-F1- 8 -req = 1;ready = 0;END IF;ELSEreq = 0;ready = 1;current_state IF busy=0 THENIF ready=1 THENcurrent_state = YY_SEND;ready = 0;ELSEdb = 00001001;-07re

14、q = 1;ready = 0;END IF;ELSEreq = 0;ready = 1;current_state IF busy=0 THENIF ready=1 THENcurrent_state = ASCII_SEND;ready = 0;ELSE- 9 -db = 00000010;-02req = 1;ready = 0;END IF;ELSEreq = 0;ready =1;current_state IF busy=0 THENIF ready=1 THENcurrent_state = CMD_SEND;ready = 0;ELSE db =db_ascii; req =

15、1;ready = 0; END IF;ELSEreq = 0;ready = 1;current_state = ASCII_SEND;END IF;END CASE;END IF;END PROCESS;- 10 -END rtl;3.4、仿真结果 (1)液晶显示器仿真结果: 当 BUSY 信号有效时(BUSY=1 ) ,停止输出地址信号;当液晶模块处于空闲状态(BUSY=0 )时,输出地址信号。BUSY=0,REQ=1,输出显示结果。 (图3)图 3 电路程序仿真图3.5、实验箱验证情况 (1)程序仿真编译成功后,再将 FPGA 芯片与液晶显示器进行连线.(图 4)- 11 -图 4 实

16、验箱接线图(2)将程序仿真编译后下载到 FPGA 芯片,接通电源,液晶显示器显示,拔动拔码开头就可以在液晶屏上显示 ASIC 符号.(图 5、图 6、图 7、图 8、图 9、图 10、)图 5 液晶显示的 ASIC 符号 图 6 液晶显示的 ASIC 符号- 12 -图 7 液晶显示的 ASIC 符号 图 8 液晶显示的 ASIC 符号 图 9 液晶显示的 ASIC 符号 图 10 液晶显示的 ASIC 符号4 4、课程设计总结、课程设计总结 在此次课程设计中,通过对平时的课程讲解,资料的查阅以及在同学有帮助下基本完成了本次的课程设计。这次的课程设计让我认识到了在知识储备上还是明显的不足。在设

17、计的过程中,我认真地完成了每一个步骤,并积极与同学展开讨论和请教了学长进而完成了课程设计。通过本次课程设计,我了解了液晶显示屏的逻辑和时序控制要求,掌握液晶显示器的工作原理及应用及键盘控制模块的控制逻辑,并知道如何用它们设计一个基于 FPGA 的液晶显示驱动电路。还学习了操作数字电路设计实- 13 -验开发系统的方法,巩固了组合逻辑电路、时序逻辑电路的设计方法,可编程器件设计的全过程。把理论和实践相结合,通过理论指导实践,在实践中理解理论,这是我们每个大学生都应该做到的一点。5 5、参考文献、参考文献(1) 侯伯亨,顾新.VHDL 硬件描述语言与数字逻辑电路设计. 西安:西安电子科技大学出版社

18、,1999(2) 求是科技.CPLD/FPGA 应用开发技术与工程实践. 北京:人民邮电出版社,2005(3) 罗苑棠.CPLD/FPGA 常用模块与综合系统设计实例精讲. 北京:电子工业出版社,2007(4) 基于 FPGA 的数字系统设计.西安:西安电子科技大学出版社,20086 6、附:液晶显示器简介、附:液晶显示器简介OCMJ 中文模块系列液晶显示器内含 GB 2312 16*16 点阵国标一级简体汉字和 ASCII8*8(半高)及 8*16(全高)点阵英文字库,用户输入区位码或 ASCII 码即可实现文本显示。 OCMJ 中文模块系列液晶显示器也可用作一般的点阵图形显示器之用。提供有

19、位点阵和字节点阵两种图形显示功能,用户可在指定的屏幕位置上以点为单位或以字节为单位进行图形显示。完全兼容一般的点阵模块。 OCMJ 中文模块系列液晶显示器可以实现汉字、ASCII 码、点阵图形和变化曲线的同屏显示,并可通过字节点阵图形方式造字。表1:OCMJ2X8(128X32)引脚说明引脚 名称方向说明引脚名称方向说明1VLED+I背光源正极(LED+5V)8DB1I数据 12VLED-I背光源负极(LED-OV)9DB2I数据 23VSSI地10DB3I数据 34VDDI(+5V)11DB4I数据 45REQI请求信号,高电平有效12DB5I数据 56BUSYO应答信号=1:已收到数据并正

20、在处理中 =0:模块空闲,可接收数据13DB6I数据 6- 14 -7DB0I数据 014DB7I数据 7硬件接口硬件接口接口协议为 请求/应答(REQ/BUSY) 握手方式。应答 BUSY 高电平(BUSY =1) 表示 OCMJ 忙于内部处理,不能接收用户命令;BUSY 低电平(BUSY =0)表示 OCMJ 空闲,等待接收用户命令。发送命令到 OCMJ 可在 BUSY =0 后的任意时刻开始,先把用户命令的当前字节放到数据线上,接着发高电平 REQ 信号(REQ =1)通知 OCMJ 请求处理当前数据线上的命令或数据。OCMJ 模块在收到外部的 REQ 高电平信号后立即读取数据线上的命令

21、或数据,同时将应答线 BUSY 变为高电平,表明模块已收到数据并正在忙于对此数据的内部处理,此时,用户对模块的写操作已经完成,用户可以撤消数据线上的信号并可作模块显示以外的其他工作,也可不断地查询应答线 BUSY 是否为低(BUSY =0?) ,如果 BUSY =0,表明模块对用户的写操作已经执行完毕。可以再送下一个数据。如向模块发出一个完整的显示汉字的命令,包括坐标及汉字代码在内共需 5 个字节,模块在接收到最后一个字节后才开始执行整个命令的内部操作,因此,最后一个字节的应答 BUSY 高电平(BUSY =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:对模块写汉字时序图四、电性能参数四、电性能参数1)表)表1 模块时间参数表模块时间参数表值值编号编号名称名称单位单位最小值最小值最大值最大值说说 明明1TruS0.4-数据线上数据稳定时间- 15 -2TbuS220最大模块响应时

温馨提示

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

评论

0/150

提交评论