LCD1602显示控制器设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
EDA技术课程设计
题目 LCD1602显示控制器设计
系 (部)
班级
姓名
学号
指导教师
2014 年06 月 30 日至 07 月 06 日共 1 周2014年07月02日
课程设计成绩评定表
目录
目录 (3)
1 引言 (4)
2 VHDL/ QuartusII简介 (5)
3 系统设计 (6)
3.1 整体功能 (6)
3.2 各模块功能设计 (6)
3.2.1 功能 (6)
3.2.2 模块引脚 (6)
3.2.3 程序 (7)
3.2.4 仿真图 (12)
4 系统调试及下载......................................................................................... 错误!未定义书签。
5 设计总结 (14)
1 引言
通过对LCD1602/LCD12864显示模块控制时序和指令集的对比分析,利用Verilog HDL描述语言完成了多功能LCD显示控制模块的IP核设计,所设计的LCD显示控制器具有很好的可移植性,只需通过端口的使能参数配置便可以驱动LCD1602/LCD12864模块实现字符或图形的实时显示,并且该多功能LCD控制器的可行性也在CycloneⅡ系列的EP2C5T144C8 FPGA芯片上得到了很好的验证。基于FPGA设计 LCD显示控制器,关键在于采用硬件描述语言设计有限状态机(FSM)来控制LCD模块的跳转,文献中就是使用FSM实现了对LCD模块的显示控制,但是它们都是针对一种类型LCD模块的某种显示模式,不具有多模式的显示控制能力。因此,多功能LCD显示控制器的有限状态机就需要设置更多的条件转换,来实现多种控制模式。系统上电后,首先完成持续大约0.1 s(根据时钟频率配置)的自动复位,然后才根据模块的端口参数选择不同显示模式所对应的初始化命令,在状态机中设置有初始化命令、起始行地址和屏显示数据3条转换路径来适应LCD屏的工作状态,同时也在关键转换路径上设置有可以配置的延时循环,这样既能方便LCD模块的工作调试,又能使LCD模块一直工作在写屏模式(RW=0)。对于LCD屏的显示数据存储可以完全采用FPGA内嵌的ROM/RAM单元实现,如果使用双口RAM(存储器读写独立)就能实现LCD模块的动态实时显示。
2 VHDL/ QuartusII简介
VHDL 的英文全名是Very-High-Speed Integrated Circuit Hardware Description Language,诞生于 1982 年。1987 年底,VHDL被 IEEE 和美国国防部确认为标准硬件描述语言。VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。Quartus II 是Altera公司的综合性PLD/FPGA开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。Quartus II可以在XP、Linux以及Unix 上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。具有运行速度快,界面统一,功能集中,易学易用等特点。Quartus II 支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。此外,Quartus II 通过和DSP Builder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。
3 系统设计
3.1 整体功能
使用VHDL语言通过FPGA实现对LCD1602字符型液晶显示器的控制。
在LCD1602字符型液晶显示器上面显示个人信息,包括姓名和学号。
在LCD1602字符型液晶显示器上面显示动态字符,通过按键输入相应的数字和字符。
3.2 各模块功能设计
3.2.1 功能
1、分频模块应用时钟分频,满足其工作需求。
2、键盘模块输入字母和数字用来实现动态字符,进行动态显示。
3、消抖模块消除抖动,使显示平稳进行。
4、LCD模块实现静态显示,显示个人信息。
3.2.2 模块引脚
1、分频模块引脚如图所示
2、键盘模块引脚如图所示
3、消抖模块引脚如图所示
4、LCD模块引脚如图所示
3.2.3 程序
1、分频模块程序
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity fenpin is
Port ( clk : in std_logic;
lcd_clk:out std_logic);
end fenpin;
architecture bhv of fenpin is
begin
process(clk)--分频进程,CLK输入,CLK_Out输出,50MHz输入,125Hz输出,8ms
constant m:integer:=500000;
variable cout:integer range 0 to 50000000:=0;
begin
if clk'event and clk='0' then cout:=cout+1;
if cout elsif cout else cout:=0; end if; end if; end process; end bhv; 2、键盘模块程序 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity jianpan is