LCD课程设计128X64液晶显示程序设计Word文档下载推荐.docx
- 文档编号:18558991
- 上传时间:2022-12-27
- 格式:DOCX
- 页数:20
- 大小:1.33MB
LCD课程设计128X64液晶显示程序设计Word文档下载推荐.docx
《LCD课程设计128X64液晶显示程序设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《LCD课程设计128X64液晶显示程序设计Word文档下载推荐.docx(20页珍藏版)》请在冰豆网上搜索。
六、主要参考资料
[1]陈曦.通信与电子系统实验指导书,武汉:
华中科技大学武昌分校.
[2]谭会生.EDA技术及应用,西安:
西安电子科技大学出版社,2010.
[3]潘松,黄继业.EDA技术与VHDL,北京:
清华大学出版社,2009.
指导教师(签名):
20年月日
摘要…………………………………………………………………………………3
1.课程设计的目的…………………………………………………………………4
2.课程设计题目和要求……………………………………………………………4
3.课程设计报告内容………………………………………………………………4
3.1课程设计原理…………………………………………………………………4
3.2课程设计相关图………………………………………………………………5
3.3课程设计程序…………………………………………………………………6
3.4课程设计的结果………………………………………………………………14
3.5课程设计的波形仿真…………………………………………………………15
4.课程设计所遇到的问题及解决方案…………………………………………15
5.课程设计总结……………………………………………………………………17
摘要
在硬件电子电路设计领域中,电子设计自动化(EDA)工具已成为主要的设计手段,而VHDL语言是EDA的关键技术之一,它采用自顶向下的设计方法,即从系统总体出发,自上至下地将设计任务分为不同的功能模块,最后将各功能模块连接形成顶层模块,完成系统硬件的整体设计。
本课设主要是基于FPGA的128X64的液晶显示控制器。
控制部分采用VHDL语言编写,主体程序采用状态机作为主要控制方式。
关键字:
VHDL,状态机,12864
1课程设计的目的
通过对液晶屏的安装调试,需学习掌握:
(1)液晶屏显示文字的整体设计流程。
(2)Quartus2软件的调试方法及相关工具的使用。
(3)液晶屏LCD12864的使用方法。
(4)各种常见元器件的选择及使用。
2课程设计题目描述和要求
题目描述:
频率计的设计
制作要求:
用VHDL编程控制LCD12864显示的频率计。
(1)用LCD12864显示“频率及姓名”等内容。
(2)显示过程:
实验板通电开机后,下载运行之后,LCD显示器显示“频率及姓名”,本组成员等内容。
(3)熟悉单片机系统的工作原理及调测方法。
软硬件安装调测完成后根据系统的工作原理、过程、测试数据及遇到的问题与处理情况、体会等完成课设报告。
3课程设计报告内容
3.1课程设计原理
该设计分为三个模块:
信号源模块,频率计模块,显示模块。
通过软件程序下载运行在LCD上显示频率等信息。
采用一个标准的基准时钟,在单位时间如(1s)里对被测信号的脉冲数进行计数,即为信号的频率。
由于闸门起始和结束时刻对于信号来说是随机的,将会有一个脉冲周期的量化误差。
进一步分析测量准确度:
设待测信号脉冲周期为TX,频率为FX,当测量时间为T=1s时,测量精度为&
=TX/T=1/FX..由此可知直接测频法的测量准确度与信号的频率有关:
当代侧信号频率较高时,测量准确度也较高。
反之测量准确度较低。
因此直接测频法适合频率较高的信号,不能满足在整个测量频段内的测量进度保持不变的要求。
若要得到整个频段内较高的精确度,应该考虑等精度测量等其他方法。
最后将测得的频率送到显示部分显示。
3.2课设相关图
(1)顶层原理图
(2)频率计原理图
(3)引脚匹配
(4)硬件电路
3.3课程设计程序
1.信号源模块(信号源是为了产生1HZ的门控信号和待测的定频信号,而对输入系统时钟clk(50MHZ)进行分频的模块):
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCNTIS
PORT(CLK:
INSTD_LOGIC;
FREQ1:
OUTSTD_LOGIC;
FREQ488:
FREQ1953:
FREQ7812:
FREQ31250:
FREQ125K:
FREQ500K:
OUTSTD_LOGIC);
ENDCNT;
ARCHITECTUREBEHVOFCNTIS
SIGNALTEMP:
STD_LOGIC_VECTOR(19DOWNTO0);
BEGIN
PROCESS(CLK)
BEGIN
IFCLK'
EVENTANDCLK='
1'
THEN
IFTEMP="
11110100001000111111"
TEMP<
="
00000000000000000000"
;
ELSE
=TEMP+1;
ENDIF;
ENDPROCESS;
FREQ1<
=TEMP(19);
FREQ488<
=TEMP(10);
FREQ1953<
=TEMP(8);
FREQ7812<
=TEMP(6);
FREQ31250<
=TEMP(4);
FREQ125K<
=TEMP
(2);
FREQ500K<
=TEMP(0);
ENDBEHV;
2.FREQ模块:
是通过元件例化将各个功能模块组合在一起的。
ENTITYFREQIS
PORT(CLK:
INSTD_LOGIC;
FSIN:
DOUT:
OUTSTD_LOGIC_VECTOR(31DOWNTO0));
ENDFREQ;
ARCHITECTUREBEHVOFFREQIS
COMPONENTTESTCTL
TSTEN:
OUTSTD_LOGIC;
CLR_CNT:
LOAD:
OUTSTD_LOGIC);
ENDCOMPONENT;
COMPONENTCNT10
CLR:
ENA:
CQ:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
CARRY_OUT:
COMPONENTREG32B
PORT(LOAD:
DIN:
INSTD_LOGIC_VECTOR(31DOWNTO0);
OUTSTD_LOGIC_VECTOR(31DOWNTO0));
SIGNALLOAD1,TSTEN1,CLR_CNT1:
STD_LOGIC;
SIGNALDTO1:
STD_LOGIC_VECTOR(31DOWNTO0);
SIGNALCARRY_OUT1:
STD_LOGIC_VECTOR(6DOWNTO0);
BEGIN
U1:
TESTCTLPORTMAP(CLK=>
CLK,TSTEN=>
TSTEN1,CLR_CNT=>
CLR_CNT1,LOAD=>
LOAD1);
U2:
REG32BPORTMAP(LOAD=>
LOAD1,DIN=>
DTO1,DOUT=>
DOUT);
U3:
CNT10PORTMAP(CLK=>
FSIN,CLR=>
CLR_CNT1,ENA=>
TSTEN1,
CQ=>
DTO1(3DOWNTO0),CARRY_OUT=>
CARRY_OUT1(0));
U4:
CARRY_OUT1(0),CLR=>
DTO1(7DOWNTO4),CARRY_OUT=>
CARRY_OUT1
(1));
U5:
CARRY_OUT1
(1),CLR=>
DTO1(11DOWNTO8),CARRY_OUT=>
CARRY_OUT1
(2));
U6:
CARRY_OUT1
(2),CLR=>
DTO1(15DOWNTO12),CARRY_OUT=>
CARRY_OUT1(3));
U7:
CARRY_OUT1(3),CLR=>
DTO1(19DOWNTO16),CARRY_OUT=>
CARRY_OUT1(4));
U8:
CARRY_OUT1(4),CLR=>
DTO1(23DOWNTO20),CARRY_OUT=>
CARRY_OUT1(5));
U9:
CARRY_OUT1(5),CLR=>
DTO1(27DOWNTO24),CARRY_OUT=>
CARRY_OUT1(6));
U10:
CARRY_OUT1(6),CLR=>
DTO1(31DOWNTO28));
3.分频模块(50MHZ经过50分频得到1MHZ)
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitypin1mhzis
port(clkin:
instd_logic;
clkout:
outstd_logic);
endpin1mhz;
architectureaofpin1mhzis
begin
process(clkin)
variablecnttemp:
integerrange0to49;
begin
ifclkin='
andclkin'
eventthen
ifcnttemp=49thencnttemp:
=0;
else
ifcnttemp<
25thenclkout<
='
elseclkout<
0'
endif;
cnttemp:
=cnttemp+1;
endprocess;
endarchitecturea;
4.显示模块(由状态机来完成液晶屏的时序)
useIEEE.STD_LOGIC_ARITH.ALL;
entityclock_lcd_dispis
generic(divide_to_100k:
integer:
=500);
port(clk:
instd_logic;
DATAIN:
instd_logic_vector(31downto0);
rw,rs,e,lcd_rst:
outstd_logic;
lcd_data:
outstd_logic_vector(7downto0));
endclock_lcd_disp;
architecturetclofclock_lcd_dispis
signalclk_100k:
std_logic;
signalclkout:
signaltemp:
std_logic_vector(7downto0);
typestateis
(s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12);
signalcurrent_s:
state;
typedata_bufferisarray(0to15)of
typedata_buffer1isarray(0to7)of
signaltime:
std_logic_vector(23downto0);
signaldisp_time:
data_buffer1:
=(
x"
31"
x"
32"
3a"
33"
34"
35"
36"
);
constantdata_buf0:
data_buffer:
=
(x"
c6"
b5"
c2"
ca"
--频率
20"
--空格
constantdata_buf1:
--
constantdata_buf2:
c7"
d8"
c5"
e5"
--秦佩
a1"
aa"
--——
d1"
d4"
f4"
--訚鹏
begin
--U1:
divclk1portmap(clk,clk_100k);
process(clk)
variablecnt:
integerrange0todivide_to_100k;
if(clk'
eventandclk='
)thencnt:
=cnt+1;
if(cnt=divide_to_100k)thencnt:
if(cnt<
divide_to_100k/2)thenclk_100k<
elseclk_100k<
disp_time(7)<
=DATAIN(3downto0)+x"
30"
disp_time(6)<
=DATAIN(7downto4)+x"
disp_time(5)<
=DATAIN(11downto8)+x"
disp_time(4)<
=DATAIN(15downto12)+x"
disp_time(3)<
=DATAIN(19downto16)+x"
disp_time
(2)<
=DATAIN(23downto20)+x"
disp_time
(1)<
=DATAIN(27downto24)+x"
disp_time(0)<
=DATAIN(31downto28)+x"
read_time:
process(time)
begin
endprocess;
process(clk_100k)
variablecnt1:
integerrange0to10000;
variablecnt_1:
integerrange0to1000;
variablecode_cnt:
integerrange0to13;
variabledata_cnt:
integerrange0to480;
if(clk_100k'
eventandclk_100k='
)then
casecurrent_sis
whens0=>
rw<
rs<
e<
cnt1:
=cnt1+1;
ifcnt1<
500thenlcd_rst<
elsifcnt1<
1000thenlcd_rst<
elsifcnt1=1000then
lcd_rst<
current_s<
=s1;
whens1=>
cnt_1:
=cnt_1+1;
ifcnt_1<
1*3then
elsifcnt_1<
2*3then
lcd_data<
=x"
0c"
10*3thene<
elsifcnt_1=10*3then
=s2;
whens2=>
90"
=s3;
whens3=>
=data_buf1(data_cnt);
elsifcnt_1=2*3then
data_cnt:
=data_cnt+1;
100thene<
cnt_1:
ifcnt_1=100thencnt_1:
ifdata_cnt=16then
=s4;
data_cnt:
whens4=>
88"
=s5;
whens5=>
=data_buf2(data_cnt);
=s6;
whens6=>
80"
=s7;
whens7=>
=data_buf0(data_cnt);
=s8;
--动态显示
whens8=>
5*3then
20*3thene<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- LCD 课程设计 128 X64 液晶显示 程序设计