版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、题系目LCD1602显示控制器设计(部)班级姓名学号指导教师2014年06月30日至07_月06日共X周2014年07月02日课程设计成绩评定表目录出勤出勤天数1丄情况缺勤天数成出勤情况及设计过程表现(20分)绩课设答辩(20分)评设计成果(60分)硬件调试设计说明书疋总成绩(100分)提问(答辩)问题情况综合评疋指导教师签名:年月日目录31引言42VHDL/Quart简介53系统设计63.1整体功能63.2各模块功能设计6功能6模块引脚6程序7仿真图124系统调试及下载错误!未定义书签。5设计总结141引言通过对LCD1602/LCD12864显示模块控制时序和指令集的对比分析,利用Veri
2、logHDL描述语言完成了多功能LCD显示控制模块的IP核设计,所设计的LCD显示控制器具有很好的可移植性,只需通过端口的使能参数配置便可以驱动LCD1602/LCD12864模块实现字符或图形的实时显示,并且该多功能LCD控制器的可行性也在CycloneU系列的EP2C5T144C8FPGA芯片上得到了很好的验证。基于FPGA设计LCD显示控制器,关键在于采用硬件描述语言设计有限状态机(FSM)来控制LCD模块的跳转,文献中就是使用FSM实现了对LCD模块的显示控制,但是它们都是针对一种类型LCD模块的某种显示模式,不具有多模式的显示控制能力。因此,多功能LCD显示控制器的有限状态机就需要设
3、置更多的条件转换,来实现多种控制模式。系统上电后,首先完成持续大约0.1s(根据时钟频率配置)的自动复位,然后才根据模块的端口参数选择不同显示模式所对应的初始化命令,在状态机中设置有初始化命令、起始行地址和屏显示数据3条转换路径来适应LCD屏的工作状态,同时也在关键转换路径上设置有可以配置的延时循环,这样既能方便LCD模块的工作调试,又能使LCD模块一直工作在写屏模式(RW=0)对于LCD屏的显示数据存储可以完全采用FPGA内嵌的ROM/RAM单元实现,如果使用双口RAM(存储器读写独立)就能实现LCD模块的动态实时显示。2VHDL/Quartusll简介VHDL的英文全名是Very-High
4、-SpeedIntegratedCircuitHardwareDescriptionLanguage,诞生于1982年。1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言。VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就
5、可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。QuartusII是Altera公司的综合性PLD/FPGA开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(AlteraHardwareDescriptionLanguage)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。QuartusII可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。具有运行速度快,界面统一,功能集中,易学易用等特点。QuartusII支持Altera的IP核
6、,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。此外,QuartusII通过和DSPBuilder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。3系统设计3.1整体功能使用VHDL语言通过FPGA实现对LCD1602字符型液晶显示器的控制。在LCD1602字符型液晶显示器上面显示个
7、人信息,包括姓名和学号。在LCD1602字符型液晶显示器上面显示动态字符,通过按键输入相应的数字和字符。3.2各模块功能设计3.2.1 功能1、分频模块应用时钟分频,满足其工作需求。2、键盘模块输入字母和数字用来实现动态字符,进行动态显示。3、消抖模块消除抖动,使显示平稳进行。4、LCD模块实现静态显示,显示个人信息。3.2.2 模块引脚1、分频模块引脚如图所示9Si'b*ti-1&bft1£"H”H"-n.uq_wu""*显EtLU2、键盘模块引脚如图所示3、消抖模块引脚如图所示4、LCD模块引脚如图所示323程序1、分频模块
8、程序libraryIEEE;useIEEE.STD_LOGIC_1164ALL;entityfenpinisPort(elk:instd_logic;lcd_clk:outstd_logic);endfenpin;architecturebhvoffenpinisbegin125Hz输出,125Hz输出,process(clk)-分频进程,CLK输入,CLK_Out输出,50MHz输入,8msconstantm:integer:=500000;variablecout:integerrange0to50000000:=0;beginifclk'eventandclk='0
9、9;thencout:=cout+1;ifcoutvm/2thenlcd_clk<='1'elsifcout<mthenlcd_clkv='0'elsecout:=0;endif;endif;endprocess;endbhv;2、键盘模块程序libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityjianpanisport(clk:instd_logic;reset:instd_logic;col:instd_logic_vector(3downto0)
10、;row:outstdogic_vector(3downto0);key_code:outstdogic_vector(7downto0);endjianpan;architecturebhvofjianpanissignalent:stdogic_vector(1downto0);signalkey:std_logic;beginkey<=col(3)andcol(2)andcol(1)andcol(0);p2:process(clk)beginifclk'eventandclk='1'thenifkey='1'thenent<=ent+1
11、;endif;endif;endprocess;P3:process(col,cnt,reset)beginifreset='0'thenrow<="1111"elsifent<="00"thenrow<="1110"casecoliswhen"1110"=>key_code<="11101110"when"1101"=>key_code<="11011110"when"1011"
12、;=>key_code<="10111110"when"0111"=>key_code<="01111110"whenothers=>key_code<="11111111"endcase;elsifent<="01"thenrow<="1101"casecoliswhen"1110"=>key_code<="11101101"when"1101"=>
13、key_code<="11011101"when"1011"=>key_code<="10111101"when"0111"=>key_code<="01111101"whenothers=>key_code<="11111111"endcase;elsifent<="10"thenrow<="1011"casecoliswhen"1110"=>key_co
14、de<="11101011"when"1101"=>key_code<="11011011"when"1011"=>key_code<="10111011"when"0111"=>key_code<="01111011"whenothers=>key_code<="11111111"endcase;elsifent<="11"thenrow<=&quo
15、t;0111"casecoliswhen"1110"=>key_code<="11100111"when"1101"=>key_code<="11010111"when"1011"=>key_code<="10110111"when"0111"=>key_code<="01110111"whenothers=>key_code<="11111111"
16、;endcase;endif;endprocess;endarchitecture;3、消抖模块程序libraryieee;useieee.std_logic_1164.all;useieee.stdogic_arith.all;entityxiaodouisport(clk:instd_logic;reset:instd_logic;din:instdogic_vector(7downto0);dout:outstdogic_vector(7downto0);endxiaodou;architecturebhvofxiaodouisbeginprocess(clk,reset,din)var
17、iablecnt:integerrange0to2;variablestore:stdogic_vector(7downto0);variabled1,d2,d3:std_logic:='1'beginifreset='0'thendout<="11111111"elsifclk'eventandclk='1'thencaseentiswhen0=>store:=din;cnt:=cnt+1;when1=>ifdin=storethencnt:=cnt+1;elsestore:=din;cnt:=0;
18、endif;when2=>ifdin=storethendout<=store;d1:=store(7)andstore(6)andstore(5)andstore(4);d2:=store(3)andstore(2)andstore(1)andstore(0);d3:=d1ord2;ifd3='0'thenendif;elsestore:=din;cnt:=0;endif;endcase;endif;endprocess;endbhv;4、LCD模块程序libraryieee;useieee.std_logic_1164.all;useieee.std_logic
19、_unsigned.all;entitylcdisport(lcd_clk:instd_logic;dout:instd_logic_vector(7downto0);rs:outstdogic;-寄存器选择信号rw:outstd_logic;-液晶读写信号en:outstd_logic;-液晶时钟信号data:outstdogic_vector(7downto0);-液晶数据信号endlcd;architecturebhvoflcdisistapestates(set_function,set_cursor,set_display,clear_display,set_ddram1,write
20、_data1);signalstate:states;beginprocess(lcd_clk,state)-状态机控制显示beginiflcd_clk'eventandlcd_clk='1'then,2行,5*7*/casestateiswhenset_function=>data<="00111000"-/*设置8位格式rs<='0'state<=set_display;,不闪烁*/whenset_display=>data<="00001100"-/*整体显示,关光标rs&
21、lt;='0'state<=clear_display;whenclear_display=>data<="00000001"rs<='0'state<=set_cursor;显示移动格式,看最后两whenset_cursor=>data<="00000110"-/*位,10表示光标右移rs<='0'state<=set_ddram1;whenset_ddram1=>data<="10000000"rs<='
22、0'state<=write_data1;whenwrite_data1=>rs<='1'data<=dout;endcase;endif;endprocess;endbhv;324仿真图10UC4V-W3V0data13rsn厅LnnfLrulWnnnRmnTLrwmj4系统调试及下载程序编写完,仿真成功后,引脚设置对应好,在实验箱上连接好线,最后可以进行下载了,然后就可以在实验箱上观察实验结果了。5设计总结这次EDA课程设计历时一周,学到很多很多的东西,不仅可以巩固以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次设计,进一
23、步加深了对EDA的了解,让我对它有了更加浓厚的兴趣。特别是当每一个子模块编写调试成功时,心里特别的开心。但是在编写顶层文件的程序时,遇到了不少问题,可以说是错误百出,系统不停报错,特别是各元件之间的连接,以及信号的定义,总是有错误,在细心的检查和请教同学后,终于找出了错误和警告,排除困难后,程序编译就通过了,心里终于舒了一口气。其次,在连接各个模块的时候一定要注意各个输入、输出引脚的线宽,因为每个线宽是不一样的,只要让各个线宽互相匹配,才能得出正确的结果,否则,出现任何一点小的误差就会导致整个文件系统的编译出现错误提示,在器件的选择上也有一定的技巧,只有选择了合适当前电路所适合的器件,编译才能得到完满成功。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 指纹锁招标文件交换解读3篇
- 教育机构认证合同3篇
- 文明市民停车文明的不乱停3篇
- 安徽餐饮业劳动合同模板3篇
- 推广用品选购合同3篇
- 出行业合同管理策略
- 医疗科研合作合同准则
- 制造业合同存档查阅指南
- 城市公园给水设施建设工程合同
- 建材生产钢板租赁协议
- 2022-2023学年广东省广州市增城区教科版(广州)六年级上册期末测试英语试卷(含听力音频) 【带答案】
- 恶性综合征课件
- 2024年春季国开《学前教育科研方法》期末大作业(参考答案)
- 2024年中考物理复习精讲练(全国)专题22 计算题(力热电综合)(讲练)【学生卷】
- 水利水电安全生产评估报告
- MOOC 宏观经济学-南京财经大学 中国大学慕课答案
- 三年级语文试卷讲评市公开课一等奖省赛课获奖课件
- 湖南少数民族舞蹈智慧树知到期末考试答案2024年
- 仓储物流部的安全与风险管理措施
- 征兵体检人员培训课件
- 蒙牛数字化 营养世界
评论
0/150
提交评论