LCD课程设计---128X64液晶显示程序设计
- 格式:doc
- 大小:9.43 MB
- 文档页数:19
引言单片机即微型计算机。
是集成CPU,RAM,ROM,定时器,计数器和多种接口于一体的微控制器,它体积小,成本低,功能强大,广泛应用于智能产品和工业自动化上,而51单片即是各单片机中最为典型的一种。
本次课程设计就是通过对他的学习应用,从而达到学习,设计,开发软、硬件的能力。
LCD液晶显示系统就是基于单片机的最小系统下所构建的一个功能系统,通过软、硬件的结合,实现LCD12864模块对数字,汉字,英文及图片的显示,来实现数据的输出显示和人及对话等高级功能。
1液晶显示系统简介1.1 主要功能本次课程设计能实现的功能如下:1.本电路为液晶显示系统。
2.通过电位器可对液晶的背光进行明暗调节。
3.可以实现对数字,汉字,英文以及图片的显示。
1.2 主要器件及介绍1.2.1主控模块STC89C52是INTEL公司MCS-51系列单片机中基本的产品,它采用INTEL公司可靠的CHMOS工艺技术制造的高性能8位单片机,属于标准的MCS-51的HCMOS产品。
它结合了HMOS的高速和高密度技术及CHMOS的低功耗特征,它基于标准的MCS-51单片机体系结构和指令系统,属于89C51增强型单片机版本,集成了时钟输出和向上或向下计数器等更多的功能,适合于类似马达控制等应用场合。
89C52内置8位中央处理单元、256字节内部数据存储器RAM、8k片内程序存储器(ROM)32个双向输入/输出(I/O)口、3个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路。
此外,80C52还可工作于低功耗模式,可通过两种软件选择空闲和掉电模式。
在空闲模据,时钟振荡停止,同时停止芯片内其它功能。
如下图所示STC89C52RC实物图(图1-1)和引脚图(图1-2)编辑本段主要功能特性:·标准MCS-51内核和指令系统·片内8kROM(可扩充64kB外部存储器)· 32个双向I/O口· 256x8bit内部RAM(可扩充64kB外部存储器)· 3个16位可编程定时/计数器·时钟频率3.5-12/24/33MHz·向上或向下定时计数器·改进型快速编程脉冲算法· 6个中断源· 5.0V工作电压·全双工串行通信口·布尔处理器—帧错误侦测· 4层优先级中断结构—自动地址识别·兼容TTL和CMOS逻辑电平·空闲和掉电节省模式图1-1 STC89C52RC实物图图1-2 STC89C52RC引脚图1.2.2 LCD12864液晶模块带中文字库的TS128X64(图1-3)是一种具有4位/8位并行、2线或3线串行多种接口方式,引脚功能见图表1-4,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64, 内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。
液晶显示器一.实验目的:1.了解全点阵图形LCD的结构和原理掌握在MSP430上如何使用外设。
2.了解LCD显示器的工作原理、种类(笔段型、点阵字符型、点阵图形)及主要性能指标。
3.掌握图形点阵LCD的编程使用方法;理解LCD显示模块命令的种类、功能及使用方法。
4.了解LCD字符生成软件的使用方法(见附录)。
二.实验内容:1.在LCD上显示Hello和中文字“南京工业大学”。
2.通过键盘控制Hello或者中文字符在LCD上左右、上下移动。
3.学会使用字符生成软件来实现任意字符代码的生成和显示。
4.其他另外可以实现的目标:使字符在按键没有松动的情况下连续移动;实现字符的循环移动,即当字符串移动到边界时仍可以移动,显示不完的部分从另一边显示出来。
三.实验原理:1.图形点阵式液晶原理液晶是一种具有规则性分子排列的有机化合物,它既不是液体也不是固体,而是介于固态和液态之间的物质。
液晶具有电光效应和偏光特性,这是它能用于显示的主要原因。
常用的液晶显示器可分成3类,分别是扭曲向列型(Twisted Nematic)、超扭曲向列型(Super TN)和彩色薄膜型。
字符点阵式属于扭曲向列型LCD。
典型的字符点阵式液晶显示器是由控制器、驱动器、字符发生器ROM、字符发生器RAM和液晶屏组成,字符由5*7 点阵或5*10点阵组成。
一般结果如图一所示:图一 128x64 点阵图形液晶模块方框示意图此次实验所用的LCD型号是RT12864CT。
12864是一种图形点阵液晶显示器,它主要由行驱动器/列驱动器及128*64全点阵液晶显示器组成。
可完成图形显示,也可以显示8*4个(16*16)汉字。
管脚号管脚名称LEVER 管脚功能描述1 VSS 0 电源地2 VDD +5.0V 电源电压3 V0 - 液晶显示器驱动电压4 D/I(RS) H/L D/I=“H”,表示DB7∽DB0为显示数据D/I=“L”,表示DB7∽DB0为显示指令数据5 R/W H/L R/W=“H”,E=“H”数据被读到DB7∽DB0R/W=“L”,E=“H→L”数据被写到IR或DR6 E H/ R/W=“L”,E信号下降沿锁存DB7∽DB0R/W=“H”,E=“H”DDRAM数据读DB7∽DB07 DB0 H/L 数据线8 DB1 H/L 数据线9 DB2 H/L 数据线10 DB3 H/L 数据线11 DB4 H/L 数据线12 DB5 H/L 数据线13 DB6 H/L 数据线14 DB7 H/L 数据线15 CS1 H/L H:选择芯片(右半屏)信号16 CS2 H/L H:选择芯片(左半屏)信号17 RET H/L 复位信号,低电平复位18 VOUT -10V LCD驱动负电压19 LED+ - LED背光板电源20 LED- - LED背光板电源表1:12864LCD的引脚说明128x64 点阵图形液晶模块的内部结构可分为三个部分:LCD 控制器,LCD 驱动器,LCD 显示装置。
电子信息学院实验报告书课程名:"微机原理与接口技术"题目: 128×64LCD液晶显示设计实验类别【综合】班级:学号:姓名:一.概述21.1设计背景21.2课程设计的目的和意义 (2)1.3课程设计的容 (2)二.课程设计的步骤与方法 (3)2.1系统硬件设计32.11控制模块32.12 显示模块32.13电源模块52.2系统软件设计62.21系统流程图62.22系统时序图72.3系统调试7三.设计结论7四.收获与体会7参考文献:8附录一:程序清单8附录二:实验仪器16一.概述1.1设计背景液晶作为一种显示器件,以其特有的优势正广泛应用于仪器、仪表、电子设备等低功耗产品中。
以往的测控仪器的显示局部大都采用LED式液晶显示屏进展参数设定和结果显示,其显示信息量少、形式单一、人机交互性差、操作人员要求较高。
而液晶显示器(LCD)具有功耗低、体积小、质量轻、超薄和可编程驱动等其他显示方式无法比较的优点,不仅可以显示数字、字符,还可以显示各种图形、曲线、及汉字,并且可实现屏幕上下左右滚动、动画、闪烁、文本特征显示等功能;人机界面更加友好,使用操作也更加灵活、方便,使其日益成为智能仪器仪表和测试设备的首选显示器件。
1.2课程设计的目的和意义〔1〕了解点阵式液晶显示器工作原理和显示方法。
〔2〕掌握8088微机系统与液晶显示器之间接口设计与编程。
1.3课程设计的容利用取模软件建立标准字库,编制程序,在液晶显示器上显示汉字。
二.课程设计的步骤与方法采用已有的DJ-598K三合一单片机微机试验仪作为设计平台来构建系统,以减少设计工作量。
2.1系统硬件设计2.11控制模块硬件构造应结合软件方案一并考虑,做到软件、硬件功能相匹配。
在DJ-598K三合一单片机微机试验仪上,硬件设计参考方案如下:2.12 显示模块图2.12显示模块的原理图LCM12864ZK中文图形液晶显示模块的液晶屏幕为128×64 ,可显示四行,每行显示8 个汉字。
LCD 128641.总体设计思路SMG12864一般用于显示汉字,字符,分辨率不高的bmp图像,可用来显示传感器采集到信息,是单片机和人交换信息的窗口,2.方案设计8051Lcd12864单片机3.硬件设计单片机控制12864的管脚来显示想要的字符和图像,P0用来发送必要的指令和数据,P2口协助P1口给12864写数据,1. 指令寄存器(IR)IR 是用于寄存指令码,与数据寄存器数据相对应。
当D/I=0 时,在E 信号下降沿的作用下,指令码写入IR。
2.数据寄存器(DR)DR 是用于寄存数据的,与指令寄存器寄存指令相对应。
当D/I=1 时,在下降沿作用下,图形显示数据写入DR,或在E 信号高电平作用下由DR 读到DB7∽DB0数据总线。
DR 和DDRAM 之间的数据传输是模块内部自动执行的。
3.忙标志:BFBF 标志提供内部工作情况。
BF=1 表示模块在内部操作,此时模块不接受外部指令和数据。
BF=0 时,模块为准备状态,随时可接受外部指令和数据。
利用STATUS READ 指令,可以将BF 读到DB7 总线,从检验模块之工作状态。
4.显示控制触发器DFF此触发器是用于模块屏幕显示开和关的控制。
DFF=1 为开显示(DISPLAY OFF),DDRAM 的内容就显示在屏幕上,DFF=0 为关显示(DISPLAY OFF)。
DDF 的状态是指令DISPLAY ON/OFF 和RST 信号控制的。
5.XY 地址计数器XY 地址计数器是一个9 位计数器。
高3 位是X 地址计数器,低6 位为Y 地址计数器,XY 地址计数器实际上是作为DDRAM 的地址指针,X 地址计数器为DDRAM的页指针,Y 地址计数器为DDRAM 的Y 地址指针。
X 地址计数器是没有记数功能的,只能用指令设置。
Y 地址计数器具有循环记数功能,各显示数据写入后,Y 地址自动加1,Y 地址指针从0 到63。
6.显示数据RAM(DDRAM)DDRAM 是存储图形显示数据的。
12864LCD液晶显示课程设计摘要:本次课程设计应用的液晶显示屏。
⑴掌握单片机与液晶显示器之间接口设计与编程。
⑵利用点阵式液晶显示器显示汉字或图形。
编制程序,建立图像代码,在液晶显示器上显示文字与图形。
简介:概述:128X64LCD液晶显示屏是一种带中文字库,具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64, 内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。
可以显示8×4行16×16点阵的汉字. 也可完成图形显示.低电压低功耗是其又一显著特点。
由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。
基本特性:(1)、低电源电压(VDD:+3.0--+5.5V)(2)、显示分辨率:128×64点(3)、内置汉字字库,提供8192个16×16点阵汉字(简繁体可选) (4)、内置 128个16×8点阵字符(5)、2MHZ时钟频率(6)、显示方式:STN、半透、正显(7)、驱动方式:1/32DUTY,1/5BIAS (8)、视角方向:6点(9)、背光方式:侧部高亮白色LED,功耗仅为普通LED的1/5—1/10 (10)、通讯方式:串行、并口可选(11)、内置DC-DC转换电路,无需外加负压(12)、无需片选信号,简化软件设计(13)、工作温度: 0℃ - +55℃ ,存储温度: -20℃ - +60℃模块接口说明:*注释1:如在实际应用中仅使用串口通讯模式,可将PSB接固定低电平,也可以将模块上的J8和“GND”用焊锡短接。
*注释2:模块内部接有上电复位电路,因此在不需要经常复位的场合可将该端悬空。
LCD12864多级菜单课程设计一、课程目标知识目标:1. 理解LCD12864液晶显示屏的基本工作原理和接口技术。
2. 掌握多级菜单的设计方法,包括菜单结构、界面布局及跳转逻辑。
3. 学会编写程序代码实现LCD12864多级菜单的显示与操作。
技能目标:1. 能够运用所学知识设计出结构清晰、界面友好的多级菜单界面。
2. 熟练使用相关编程语言和开发工具,完成程序编写和调试。
3. 培养学生的动手操作能力和团队协作能力,提高问题解决能力。
情感态度价值观目标:1. 培养学生对电子技术和编程的兴趣,激发学习热情。
2. 培养学生严谨、细心的学习态度,养成良好的编程习惯。
3. 增强学生的创新意识,鼓励学生敢于尝试、勇于实践。
分析课程性质、学生特点和教学要求,本课程目标旨在帮助学生在掌握LCD12864多级菜单设计的基础上,提高实际操作能力,培养学生的创新思维和团队协作精神。
通过本课程的学习,使学生能够在实际项目中运用所学知识,为我国电子信息产业的发展做出贡献。
同时,注重培养学生的情感态度价值观,使学生在学习过程中形成积极向上的人生态度。
二、教学内容1. LCD12864液晶显示屏原理介绍:包括显示原理、接口技术、指令集等基本知识。
- 教材章节:第三章第二节- 内容列举:LCD12864工作原理、接口类型、指令功能。
2. 多级菜单设计方法:- 教材章节:第五章- 内容列举:菜单结构设计、界面布局、跳转逻辑、操作流程。
3. 编程实现LCD12864多级菜单:- 教材章节:第六章- 内容列举:编程环境搭建、代码编写、程序调试、功能实现。
4. 实例分析与操作:- 教材章节:第七章- 内容列举:典型多级菜单实例、操作方法、优化技巧。
5. 动手实践与团队协作:- 教材章节:第八章- 内容列举:实践任务分配、协作流程、成果展示。
根据课程目标,教学内容分为五个部分,确保学生系统掌握LCD12864多级菜单设计的相关知识。
教学大纲明确指出各部分内容的安排和进度,以及教材对应的章节和具体内容。
AMPIRE 128X64 LCD显示器1. LCD接口液晶显示器件(LCD)独具的低压、微功耗特性使他在单片机系统中特得到了广泛的应用,常用的液晶显示模块分为数显液晶模块、点阵字符液晶模块和点阵图形液晶模块,其中图形液晶模块在我国应用较为广泛,因为汉字不能像西文字符那样用字符模块即可显示,要想显示汉字必须用图形模块。
本课设所选择的LCD是AMPIRE128×64的汉字图形型液晶显示模块,可显示汉字及图形,图形液晶显示显示器接口如图3-1图3-1 LCD电路图表3.1 AMPIRE128×64接口说明表管脚号管脚电平说明1 CS1 H/L 片选择信号,低电平时选择前64列2 CS2 H/L 片选择信号,低电平时选择后64列3 GND 0V 逻辑电源地4 VCC 5.0V 逻辑电源正5 V0 LCD驱动电压,应用时在Vout与GND之间加一个20K可调电阻,中心抽头接VO6 RS H/L 数据\指令选择:高电平:数据D0-D7将送入显示RAM;低电平:数据D0-D7将送入指令寄存器执行7 R/W H/L 读\写选择:高电平:读数据;低电平:写数据8 E H/L 读写使能,(上升沿使能,下降沿锁定数据。
)9 DB0 H/L 数据输入输出引脚10 DB1 H/L 数据输入输出引脚11 DB2 H/L 数据输入输出引脚12 DB3 H/L 数据输入输出引脚13 DB4 H/L 数据输入输出引脚14 DB5 H/L 数据输入输出引脚15 DB6 H/L 数据输入输出引脚16 DB7 H/L 数据输入输出引脚17 RST L 复位信号,低电平有效18 VOUT -10V LCD驱动电源2. 指令描述(1) 显示开/关设置CODE :R/W RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0功能:设置屏幕显示开/关。
DB0=H ,开显示;DB0=L ,关显示。
不影响显示RAM(DD RAM)中的内容。
12864课程设计一、教学目标本课程的教学目标是使学生掌握12864显示模块的基本原理和操作方法,能够独立完成简单显示内容的编程和显示。
具体包括:1.知识目标:使学生了解12864显示模块的内部结构、工作原理和接口协议,掌握其在嵌入式系统中的应用。
2.技能目标:培养学生能够使用编程语言进行12864显示模块的驱动程序编写,实现基本显示功能。
3.情感态度价值观目标:培养学生对嵌入式系统的兴趣,提高学生动手实践能力,培养学生的创新精神和团队合作意识。
二、教学内容本课程的教学内容主要包括以下几个部分:1.12864显示模块的内部结构和工作原理:介绍12864显示模块的组成部分,如显示缓冲区、控制逻辑等,以及其工作原理。
2.12864显示模块的接口协议:讲解12864显示模块与微控制器之间的接口协议,如数据线、时序等。
3.12864显示模块的编程方法:介绍如何使用编程语言编写12864显示模块的驱动程序,实现字符、图形等的显示。
4.12864显示模块在嵌入式系统中的应用:讲解12864显示模块在嵌入式系统中的应用实例,如液晶显示屏、触摸屏等。
三、教学方法本课程采用讲授法、讨论法、案例分析法和实验法等多种教学方法:1.讲授法:用于讲解12864显示模块的基本原理、接口协议和编程方法。
2.讨论法:用于引导学生探讨12864显示模块在实际应用中的问题和解决方案。
3.案例分析法:通过分析具体的嵌入式系统应用案例,使学生更好地理解12864显示模块的应用。
4.实验法:安排实验课程,让学生动手实践,巩固所学知识,提高实际操作能力。
四、教学资源本课程所需教学资源包括:1.教材:选用权威、实用的教材,详细介绍12864显示模块的相关知识。
2.参考书:提供相关领域的参考书籍,丰富学生的知识体系。
3.多媒体资料:制作PPT、视频等多媒体教学资料,提高课堂教学效果。
4.实验设备:准备12864显示模块实验板和相关调试工具,方便学生进行实验操作。
LCD12864系列点阵型液晶显示模块使用说明书一、OCM12864液晶显示模块概述1.OCM12864液晶显示模块是128×64点阵型液晶显示模块,可显示各种字符及图形,可与CPU直接接口,具有8位标准数据总线、6条控制线及电源线。
采用KS0107控制IC。
2.外观尺寸:113×65×11mm(ocm12864-1), 93×70×10mm(ocm12864-2)78×70×10mm(ocm12864-3),3.视域尺寸:×38.8mm(ocm12864-1) ×38mm(ocm12864-2),64×44mm(ocm12864-3)4.<5.重量:大约g补充说明:外观尺寸可根据用户的要求进行适度调整。
二、最大工作范围1、逻辑工作电压(Vcc):~2、电源地(GND):0V3、LCD驱动电压(Vee):0~-10V4、输入电压:Vee~Vdd5、工作温度(Ta):0~55℃(常温) / -20~70℃(宽温)}6、保存温度(Tstg):-10~65℃三、电气特性(测试条件 Ta=25,Vdd=+/1、输入高电平(Vih):2、输入低电平(Vil):3、输出高电平(Voh):4、输出低电平(Vol):5、工作电流:四、接口说明—12864-3A接口说明表管脚号管脚电平说明1CSA H/L]片选择信号,低电平时选择前64列。
2CSB H片选择信号,低电平时选择后64列。
3GND0V【逻辑电源地。
4VCC5V逻辑电源。
5VEE-10V'LCD驱动电源。
6D/I H/L数据\指令选择,高电平:数据D0-D7将送入显示RAM;低电平:数据D0-D7将送入指令寄存器执行。
7R/W%读\写选择,高电平:读数据;低电平:写数据。
H/L8E L读写使能,高电平有效,下降沿锁定数据。
D7-D0位数据为1表示显示,数据为0表示不显示。
AMPIRE128X64LCD编程C基于uC/COS的直流电机PID转速闭环调速控制系统Proteus仿真实现在工业自动控制系统和各种智能产品中常常会用用电动机进行驱动、传动和控制,而现代智能控制系统中,对电机的控制要求越来越精确和迅速,对环境的适应要求越来越高。
随着科技的发展,通过对电机的改造,出现了一些针对各种应用要求的电机,如伺服电机、步进电机、开关磁阻电机等非传统电机。
但是在一些对位置控制要求不高的电机控制系统如传动控制系统中,传统电机如直流电机乃有很大的优势,而要对其进行精确而又迅速的控制,就需要复杂的控制系统。
随着微电子和计算机的发展,数字控制系统应用越来越广泛,数字控制系统有控制精确,硬件实现简单,受环境影响小,功能复杂,系统修改简单,有很好的人机交换界面等特点。
在电机控制系统开发中,常常需要消耗各种硬件资源,系统构建时间长,而在调试时很难对硬件系统进行修改,从而延长开发周期。
随着计算机仿真技术的出现和发展,可用计算机对电机控制系统进行仿真,从而减小系统开发开支和周期。
计算机仿真可分为整体仿真和实时仿真。
整体仿真是对系统各个时间段对各个对象进行计算和分析,从而对各个对象的变化情况有直观的整体的了解,即能对系统进行精确的预测,如Matlab就是一个典型的实时仿真软件。
实时仿真是对时间点的动态仿真,即随着时间的推移它能动态仿真出当时系统的状态。
Proteus是一个实时仿真软件,用来仿真各种嵌入式系统。
它能对各种微控制器进行仿真,本系统即用Proteus对直流电机控制系统进行仿真。
在系统软件开发中开发中可用操作系统,也可不用操作系统。
如用操作系统,程序可实现模块化,并能对系统资源进行统筹管理,最主要的是可实现多任务运行。
如果需要多任务并行运行,并且需要一定的时间间隔,某些任务对时间的要求不高时,如不用操作系统则要占用定时器资源,并且对栈空间和硬件资源很难进行管理,所以在这种情况下需要操作系统。
《CPLD/FPGA 》课程设计报告题目:128X64液晶显示程序设计院(系):信息科学与工程学院专业班级:通信1001班学生姓名:訚鹏学号:20101181021同组学生:秦佩指导教师:吴莉20 13 年 10 月 14 日至20 13 年 10 月 25 日华中科技大学武昌分校制128X64液晶显示程序设计课程设计任务书目录摘要 (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,状态机,128641 课程设计的目的通过对液晶屏的安装调试,需学习掌握:(1)液晶屏显示文字的整体设计流程。
(2)Quartus2软件的调试方法及相关工具的使用。
(3)液晶屏LCD12864的使用方法。
(4)各种常见元器件的选择及使用。
2 课程设计题目描述和要求题目描述:频率计的设计制作要求:用VHDL编程控制LCD12864显示的频率计。
(1)用LCD12864显示“频率及姓名”等内容。
(2)显示过程:实验板通电开机后,下载运行之后,LCD显示器显示“频率及姓名”,本组成员等内容。
(3)熟悉单片机系统的工作原理及调测方法。
软硬件安装调测完成后根据系统的工作原理、过程、测试数据及遇到的问题与处理情况、体会等完成课设报告。
12864使用说明一、串/并接口1.1 串口接口管脚信号*注释1:如在实际应用中仅使用并口通讯模式,可将PSB 接固定高电平。
*注释2:模块内部接有上电复位电路,因此在不需要经常复位的场合可将该端悬空。
*注释3:如背光和模块共用一个电源,可以将模块上的JA、JK 用焊锡短接。
1.2 并行接口管脚信号*注释1:如在实际应用中仅使用并口通讯模式,可将PSB 接固定高电平。
*注释2:模块内部接有上电复位电路,因此在不需要经常复位的场合可将该端悬空。
*注释3:如背光和模块共用一个电源,可以将模块上的JA、JK 用焊锡短接。
二、模块主要硬件构成说明控制器接口信号说明:2.1、RS,R/W的配合选择决定控制界面的4种模式:2.2、E信号●忙标志BFBF 标志提供内部工作情况.BF=1 表示模块在进行内部操作,此时模块不接受外部指令和数据.BF=0 时, 模块为准备状态,随时可接受外部指令和数据.利用STATUS RD 指令,可以将BF 读到DB7 总线,从而检验模块之工作状态.●字型产生ROM(CGROM)字型产生ROM(CGROM)提供8192 个此触发器是用于模块屏幕显示开和关的控制。
DFF=1 为开显示(DISPLAY ON),DDRAM 的内容就显示在屏幕上,DFF=0 为关显示(DISPLAY OFF)。
DFF 的状态是指令DISPLAY ON/OFF 和RST 信号控制的。
●显示数据RAM(DDRAM)模块内部显示数据 RAM 提供 64×2 个位元组的空间,最多可控制 4 行 16 字(64 个字)的中文字型显示,当写入显示数据 RAM 时,可分别显示 CGROM 与CGRAM 的字型;此模块可显示三种字型,分别是半角英、数字型(16*8)、CGRAM 字型及 CGROM 的中文字型。
三种字型的选择,由在 DDRAM 中写入的编码选择,在0000H—0006H 的编码中(其代码分别是 0000、0002、0004、0006 共 4 个)将选择 CGRAM 的自定义字型,02H—7FH 的编码中将选择半角英数字的字型,至于A1 以上的编码将自动的结合下一个位元组,组成两个位元组的编码形成中文字型的编码BIG5(A140—D75F),GB(A1A0-F7FFH)。
L C D12864x y坐标轴显示程序(总7页)-CAL-FENGHAI.-(YICAI)-Company One1-CAL-本页仅作为文档封面,使用请直接删除#include<>#define uchar unsigned char#define uint unsigned intuchar code shuzi[]={0x00,0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};mp --*//*-- 宽度x高度=128x64 --*/0x00,0x00,0x00,0x70,0x50,0xD0,0x00,0xF0,0x10,0xF0,0x00,0xFF,0x40,0x00 ,0x00,0x00,,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0xC1,0x01,0xC1,0x00,0xC1,0x41,0xC1,0x00,0xFF,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x07,0x00,0x07,0x04,0x07,0x00,0xFF,0x01,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,,0x00,0x00,0x00,0x00,0x00,0x15,0x15,0x1F,0x00,0x1F,0x11,0x1F,0x00,0xFF,0x04,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x74,0x54,0x5C,0x00,0x7C,0x44,0x7C,0x00,0xFF,0x10,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x00,0xF0,0x10,0xF0,0x00,0xFF,0x40,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x01,0x01,0x00,0xFF,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x44,0x7C,0x00,0x01,0x01,0x01 ,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x7D,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01 ,0x75,0x55,0x5D,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x55,0x55,0x7D,0x01,0x01,0x01 ,0x01,0x01,0x01,0x01,0x1D,0x11,0x7D,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x5D,0x55 ,0x75,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x7D,0x55,0x75,0x01,0x01,0x01,0x01,0x01 ,0x01,0x01,0x05,0x05,0x7D,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x7D,0x55,0x7D,0x01 ,0x01,0x01,0x01,0x01,0x01,0x01,0x1D,0x15,0x7D,0x01,0x01,0x01,0x01,0x01,0x01,0x7D ,0x01,0x7D,0x45,0x7D,0x01,0x01,0x01,0x01,0x01,0x01,0x7D,0x01,0x01,0x7D,0x01,0x01 ,0x01,0x01,};void delay(uint k);//延时void hua_zuobiao(void);//画坐标void wcode(uchar com,uchar cs1,uchar cs2);//写指令void wdata(uchar da,uchar cs1,uchar cs2);//写数据void set_startline(uchar i);//起始行void set_adr(uchar x,uchar y);//页值设置,起始列值函数void clear(void);///clear清屏void initi_LCD(void);//初始化LCDsbit RST=P3^0;sbit CS2=P3^5;sbit CS1=P3^4;sbit RS=P3^1;sbit RW=P3^3;sbit E=P3^2;void busy() //状态检查,LCD是否忙{P2=0X00;RS=0;RW=1;E=1;while(P2&0X80);//结果为真则一直执行空操作,也就是说P0&0X80为0则结束循环E=0;}void initi_LCD(void)//初始化LCD{wcode(0x3e,1,1);//显示开//0x3e关set_startline(0);//起始行第0行}void set_startline(uchar i)//起始行。
《CPLD/FPGA 》课程设计报告题目:128X64液晶显示程序设计院(系):信息科学与工程学院专业班级:通信1001班学生姓名:学号:同组学生:指导教师:20 13 年 10 月 14 日至20 13 年 10 月 25 日128X64液晶显示程序设计课程设计任务书一、设计(调查报告/论文)题目128X64液晶显示程序设计二、设计(调查报告/论文)主要内容下述设计内容需由学生个人独立完成:1.设计EP1C6Q240C8控制128X64液晶屏显示电路原理图;2.分析128X64液晶工作原理;3.能按要求进行元器件的焊接;4. 能正确处理安装与调试过程中所遇到的问题;三、原始资料1. 通信与电子系统实验指导书;2. 128X64液晶显示电路制作套件。
四、要求的设计(调查/论文)成果1.元件布局美观,硬件焊接可靠,无虚焊,短路;2. 能在液晶屏上正确显示相关文字信息;3.结合实际编出具有特色功能程序,程序结构合理,语言简洁,格式规范,注释详细;4. 按要求完成课程设计报告,格式符合学校规范标准,字数不少于2000字。
五、进程安排第 1 天理论讲解,材料发放,学生进行元器件清理并检测;第 2天安装焊接,电路调试,硬件故障排查;第 3 天,软件编程调试;第4-5 天调测,验收,评分。
六、主要参考资料[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,状态机,128641 课程设计的目的通过对液晶屏的安装调试,需学习掌握:(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)进行分频的模块):LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT ISPORT(CLK :IN STD_LOGIC;FREQ1 :OUT STD_LOGIC;FREQ488 :OUT STD_LOGIC;FREQ1953 :OUT STD_LOGIC;FREQ7812 :OUT STD_LOGIC;FREQ31250:OUT STD_LOGIC;FREQ125K :OUT STD_LOGIC;FREQ500K :OUT STD_LOGIC);END CNT;ARCHITECTURE BEHV OF CNT ISSIGNAL TEMP: STD_LOGIC_VECTOR(19 DOWNTO 0);BEGINPROCESS(CLK)BEGINIF CLK'EVENT AND CLK='1' THENIF TEMP="11110100001000111111" THENTEMP<="00000000000000000000";ELSETEMP<=TEMP+1;END IF;END IF;END PROCESS;FREQ1<=TEMP(19);FREQ488<=TEMP(10);FREQ1953<=TEMP(8);FREQ7812<=TEMP(6);FREQ31250<=TEMP(4);FREQ125K<=TEMP(2);FREQ500K<=TEMP(0);END BEHV;2.FREQ模块:是通过元件例化将各个功能模块组合在一起的。
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY FREQ ISPORT(CLK: IN STD_LOGIC;FSIN:IN STD_LOGIC;DOUT:OUT STD_LOGIC_VECTOR(31 DOWNTO 0));END FREQ;ARCHITECTURE BEHV OF FREQ ISCOMPONENT TESTCTLPORT(CLK: IN STD_LOGIC;TSTEN: OUT STD_LOGIC;CLR_CNT:OUT STD_LOGIC;LOAD: OUT STD_LOGIC);END COMPONENT;COMPONENT CNT10PORT(CLK: IN STD_LOGIC;CLR: IN STD_LOGIC;ENA: IN STD_LOGIC;CQ: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);CARRY_OUT:OUT STD_LOGIC);END COMPONENT;COMPONENT REG32BPORT(LOAD: IN STD_LOGIC;DIN: IN STD_LOGIC_VECTOR(31 DOWNTO 0);DOUT: OUT STD_LOGIC_VECTOR(31 DOWNTO 0));END COMPONENT;SIGNAL LOAD1,TSTEN1,CLR_CNT1:STD_LOGIC;SIGNAL DTO1:STD_LOGIC_VECTOR(31 DOWNTO 0);SIGNAL CARRY_OUT1:STD_LOGIC_VECTOR(6 DOWNTO 0);BEGINU1: TESTCTL PORT MAP(CLK=>CLK,TSTEN=>TSTEN1,CLR_CNT=>CLR_CNT1,LOAD=>LOAD1);U2: REG32B PORT MAP(LOAD=>LOAD1,DIN=>DTO1,DOUT=>DOUT);U3: CNT10 PORT MAP(CLK=>FSIN,CLR=>CLR_CNT1,ENA=>TSTEN1,CQ=>DTO1(3 DOWNTO 0),CARRY_OUT=>CARRY_OUT1(0));U4: CNT10 PORT MAP(CLK=>CARRY_OUT1(0),CLR=>CLR_CNT1,ENA=>TSTEN1,CQ=>DTO1(7 DOWNTO 4),CARRY_OUT=>CARRY_OUT1(1));U5: CNT10 PORT MAP(CLK=>CARRY_OUT1(1),CLR=>CLR_CNT1,ENA=>TSTEN1,CQ=>DTO1(11 DOWNTO 8),CARRY_OUT=>CARRY_OUT1(2));U6: CNT10 PORT MAP(CLK=>CARRY_OUT1(2),CLR=>CLR_CNT1,ENA=>TSTEN1,CQ=>DTO1(15 DOWNTO 12),CARRY_OUT=>CARRY_OUT1(3));U7: CNT10 PORT MAP(CLK=>CARRY_OUT1(3),CLR=>CLR_CNT1,ENA=>TSTEN1,CQ=>DTO1(19 DOWNTO 16),CARRY_OUT=>CARRY_OUT1(4));U8: CNT10 PORT MAP(CLK=>CARRY_OUT1(4),CLR=>CLR_CNT1,ENA=>TSTEN1,CQ=>DTO1(23 DOWNTO 20),CARRY_OUT=>CARRY_OUT1(5));U9: CNT10 PORT MAP(CLK=>CARRY_OUT1(5),CLR=>CLR_CNT1,ENA=>TSTEN1,CQ=>DTO1(27 DOWNTO 24),CARRY_OUT=>CARRY_OUT1(6));U10: CNT10 PORT MAP(CLK=>CARRY_OUT1(6),CLR=>CLR_CNT1,ENA=>TSTEN1,CQ=>DTO1(31 DOWNTO 28));END BEHV;3.分频模块(50MHZ经过50分频得到1MHZ)library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity pin1mhz isport(clkin : in std_logic;clkout : out std_logic);end pin1mhz;architecture a of pin1mhz isbeginprocess(clkin)variable cnttemp: integer range 0 to 49;beginif clkin='1' and clkin'event thenif cnttemp=49 then cnttemp:=0;elseif cnttemp<25 then clkout<='1';else clkout<='0';end if;cnttemp:=cnttemp+1;end if;end if;end process;end architecture a;4.显示模块(由状态机来完成液晶屏的时序)library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use IEEE.STD_LOGIC_ARITH.ALL;entity clock_lcd_disp isgeneric(divide_to_100k:integer:=500);port(clk:in std_logic;DATAIN:in std_logic_vector(31 downto 0);rw,rs,e,lcd_rst:out std_logic;lcd_data:out std_logic_vector(7 downto 0));end clock_lcd_disp;architecture tcl of clock_lcd_disp issignal clk_100k:std_logic;signal clkout:std_logic;signal temp:std_logic_vector(7 downto 0);type state is(s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12);signal current_s:state;type data_buffer is array(0 to 15)ofstd_logic_vector(7 downto 0);type data_buffer1 is array(0 to 7)ofstd_logic_vector(7 downto 0);signal time:std_logic_vector(23 downto 0);signal disp_time:data_buffer1:=(x"31",x"32",x"3a",x"33",x"34",x"3a",x"35",x"36");constant data_buf0:data_buffer:=(x"c6",x"b5",x"c2",x"ca", --频率x"20",x"20",x"20",x"20", --空格x"20",x"20",x"20",x"20",x"20",x"20",x"20",x"20");constant data_buf1:data_buffer:=(x"20",x"20",x"20",x"20", --x"20",x"20",x"20",x"20",x"20",x"20",x"20",x"20",x"20",x"20",x"20",x"20");constant data_buf2:data_buffer:=(x"c7",x"d8",x"c5",x"e5", --秦佩x"a1",x"aa",x"a1",x"aa", -- ——x"d1",x"d4",x"c5",x"f4", --訚鹏x"20",x"20",x"20",x"20");begin--U1:divclk1 port map(clk,clk_100k);process(clk)variable cnt:integer range 0 to divide_to_100k;beginif(clk'event and clk='1')then cnt:=cnt+1;if(cnt=divide_to_100k)then cnt:=0;end if;if(cnt<divide_to_100k/2) then clk_100k<='0';else clk_100k<='1';end if;end if;end process;disp_time(7)<=DATAIN(3 downto 0)+x"30";disp_time(6)<=DATAIN(7 downto 4)+x"30";disp_time(5)<=DATAIN(11 downto 8)+x"30";disp_time(4)<=DATAIN(15 downto 12)+x"30";disp_time(3)<=DATAIN(19 downto 16)+x"30";disp_time(2)<=DATAIN(23 downto 20)+x"30";disp_time(1)<=DATAIN(27 downto 24)+x"30";disp_time(0)<=DATAIN(31 downto 28)+x"30";read_time:process(time)beginend process;process(clk_100k)variable cnt1:integer range 0 to 10000;variable cnt_1:integer range 0 to 1000;variable code_cnt:integer range 0 to 13;variable data_cnt:integer range 0 to 480;beginif(clk_100k'event and clk_100k='1')thencase current_s iswhen s0=>rw<='1';rs<='1';e<='1';cnt1:=cnt1+1;if cnt1<500 then lcd_rst<='0';elsif cnt1<1000 then lcd_rst<='1';elsif cnt1=1000 thenlcd_rst<='1';cnt1:=0;current_s<=s1;end if;when s1=>cnt_1:=cnt_1+1;if cnt_1<1*3 thene<='1';rs<='0';rw<='0';elsif cnt_1<2*3 thenlcd_data<=x"0c";elsif cnt_1<10*3 then e<='0';elsif cnt_1=10*3 thencnt_1:=0;current_s<=s2;end if;when s2=>cnt_1:=cnt_1+1;if cnt_1<1*3 thene<='1';rs<='0';rw<='0';elsif cnt_1<2*3 thenlcd_data<=x"90";elsif cnt_1<10*3 then e<='0';elsif cnt_1=10*3 thencnt_1:=0;current_s<=s3;end if;when s3=>if cnt_1<1*3 thene<='1';rs<='1';rw<='0';elsif cnt_1<2*3 thenlcd_data<=data_buf1(data_cnt);elsif cnt_1=2*3 thendata_cnt:=data_cnt+1;elsif cnt_1<100 then e<='0';end if;cnt_1:=cnt_1+1;if cnt_1=100 then cnt_1:=0;if data_cnt=16 then current_s<=s4;data_cnt:=0;end if;end if;when s4=>cnt_1:=cnt_1+1;if cnt_1<1*3 thene<='1';rs<='0';rw<='0';elsif cnt_1<2*3 thenlcd_data<=x"88";elsif cnt_1<10*3 then e<='0';elsif cnt_1=10*3 thencnt_1:=0;current_s<=s5;end if;when s5=>if cnt_1<1*3 thene<='1';rs<='1';rw<='0';elsif cnt_1<2*3 thenlcd_data<=data_buf2(data_cnt);elsif cnt_1=2*3 thendata_cnt:=data_cnt+1;elsif cnt_1<100 then e<='0';end if;cnt_1:=cnt_1+1;if cnt_1=100 then cnt_1:=0;if data_cnt=16 then current_s<=s6;data_cnt:=0;end if;end if;when s6=>cnt_1:=cnt_1+1;if cnt_1<1*3 thene<='1';rs<='0';rw<='0';elsif cnt_1<2*3 thenlcd_data<=x"80";elsif cnt_1<10*3 then e<='0';elsif cnt_1=10*3 thencnt_1:=0;current_s<=s7;end if;when s7=>if cnt_1<1*3 thene<='1';rs<='1';rw<='0';elsif cnt_1<2*3 thenlcd_data<=data_buf0(data_cnt);elsif cnt_1=2*3 thendata_cnt:=data_cnt+1;elsif cnt_1<100 then e<='0';end if;cnt_1:=cnt_1+1;if cnt_1=100 then cnt_1:=0;if data_cnt=16 then current_s<=s8;data_cnt:=0;end if;end if;--动态显示when s8=>cnt_1:=cnt_1+1;if cnt_1<1*3 thene<='1';rs<='0';rw<='0';elsif cnt_1<5*3 thenlcd_data<=x"90";elsif cnt_1<20*3 then e<='0';elsif cnt_1=20*3 thencnt_1:=0;current_s<=s9;end if;when s9=>if cnt_1<1*3 thene<='1';rs<='1';rw<='0';elsif cnt_1<2*3 thenlcd_data<=disp_time(data_cnt);elsif cnt_1=2*3 thendata_cnt:=data_cnt+1;elsif cnt_1<100 then e<='0';end if;cnt_1:=cnt_1+1;if cnt_1=100 then cnt_1:=0;if data_cnt=8 then current_s<=s8;data_cnt:=0;end if;end if;when others=>current_s<=s0;end case;end if;end process;end tcl;3.4课程设计结果3.5课程设计的波形仿真上图中可以很明显的看到显示模块程序的S1这个状态,根据程序来观察时序图,发现时序与程序一致,并且满足液晶屏要显示文字的条件。