LCD1602显示控制器设计

合集下载

lcd1602课程设计

lcd1602课程设计

lcd1602课程设计一、课程目标知识目标:1. 学生能理解LCD1602液晶显示屏的基本结构、工作原理及功能。

2. 学生能掌握LCD1602液晶显示屏与微控制器(如Arduino)的连接方法。

3. 学生能了解LCD1602液晶显示屏的指令集,并学会使用相关函数控制显示内容。

技能目标:1. 学生能运用所学知识,自主完成LCD1602与微控制器的硬件连接。

2. 学生能通过编程,实现LCD1602显示自定义文字和图案。

3. 学生能在实际项目中运用LCD1602进行信息展示,提高实际问题解决能力。

情感态度价值观目标:1. 学生通过学习LCD1602液晶显示屏的使用,培养对电子技术和编程的兴趣和热情。

2. 学生在团队合作中,学会沟通、协作,培养团队精神和责任感。

3. 学生能够关注科技创新,意识到学习与实践相结合的重要性,提高自我探索和创新能力。

课程性质:本课程为实践性较强的电子技术课程,旨在让学生掌握LCD1602液晶显示屏的使用方法,培养实际操作能力和编程技能。

学生特点:学生为初中或高中年级,具备一定的电子技术基础和编程能力,对新鲜事物充满好奇,喜欢动手实践。

教学要求:课程要求教师以学生为主体,注重启发式教学,引导学生主动探索,提高实践操作能力。

同时,关注学生个体差异,提供个性化指导,确保课程目标的实现。

通过课程学习,使学生能够将所学知识应用于实际项目中,培养创新精神和问题解决能力。

二、教学内容1. LCD1602基本结构:讲解LCD1602液晶显示屏的构造、各部分功能及其工作原理。

- 教材章节:第二章 电子元件及显示器件2. 硬件连接:介绍LCD1602与微控制器(以Arduino为例)的接线方法,讲解各引脚功能。

- 教材章节:第三章 微控制器及其接口技术3. LCD1602指令集:详细解释LCD1602的指令集,包括清屏、光标移动、显示开关等指令。

- 教材章节:第四章 显示器件控制方法4. 编程控制:学习使用Arduino编程控制LCD1602显示自定义内容,如文字、数字和简单图案。

液显模块LCD1602的接口设计及编程技巧

液显模块LCD1602的接口设计及编程技巧

液显模块LCD1602的接口设计及编程技巧摘要:结合液显模块LCD1602在温度测量仪中的应用,介绍了LCD1602的接口设计。

在软件设计方面,编写了初始化程序和写操作程序,同时,针对LCD1602上显示内容的两种存在方式,分别编写了程序和提出了编程过程中的注意事项,最后总结出LCD1602的编程技巧,以供编程人员参考。

关键词:LCD1602 接口设计编程技巧引言液显模块LCD1602广泛应用于袖珍式仪表和低功耗应用系统中,是目前单片机应用设计中常用的显示器件之一,它具有功耗低、体积小、寿命长等优点。

能够显示个字符,工作电压一般取为+5V(允许电压为 4.5V—5.5V),接口设计简单,价格便宜,具有很高的性价比。

这里介绍LCD1602在温度测量仪中的接口设计和编程技巧。

1 LCD1602的接口设计LCD1602具有标准14脚(无背光)和标准16脚(带背光)两种型号,这里介绍标准16脚的LCD1602。

选择AT89S52单片机作为微控制器,其接口连接如图1所示。

LCD1602的引脚连接为:VSS接电源地;VDD接电源+5V;VL为液显对比度调整端,接电源正极时对比度最弱,接电源地时对比度最高,对比度过高会产生“鬼影”,在这里通过一个10 电阻来调整对比度,可以取得理想的效果;RS、E、R/W为LCD1602的3根控制线,控制着液显的读/写状态。

其中,RS为高电平时选择数据寄存器,RS为低电平时选择指令寄存器;R/W为读/写控制端,在这里将R/W接地,只能进行写操作;E为使能端,当E端由高电平跳变成低电平时,液晶显示模块执行命令。

2 LCD1602的软件设计软件设计主要包括初始化、读/写程序编写、数据地址指针设置等。

2.1 LCD1602的初始化程序LCD1602提供了11条控制指令,通过这些指令可实现基本控制显示功能。

每次读/写LCD寄存器后要延时一定的时间,之后CPU才可发下一条指令。

通过对LCD1602控制指令的理解,编写初始化程序如下:void init()//初始化程序{write_com(0x38);//设置为8位数据传送,2行显示, 点阵字符delay(20); //延时write_com(0x0c);//开显示,不显示光标,光标不闪烁delay(20); //延时write_com(0x06);//设置为地址指针加一,且光标加一delay(20); //延时write_com(0x01);//清屏delay(20); //延时}2.2 LCD1602的写操作LCD1602内部电路的工作需要有一个统一的时序。

LCD1602设计说明书

LCD1602设计说明书

机电一何化强化训练单片机系统设计说明书LCD字幕显示院(系)机电系专业/方向机械工程及自动化班级机械(6)班学生姓名苏志斌、成林、刘嘉星、邝铭朝指导老师姚超友20 年月日华南理工大学广州学院单片机系统设计任务书兹发给机械6 班学生高级工训练设计任务书,内容如下:1.设计题目:LCD字幕显示2.完成的项目:LCD字幕显示(1)原理图设计(2)PCB设计、PCB制作(打印腐蚀焊接)(3)程序编写、下载和调试(4)说明书的编写3.参考资料以及说明:(1)姚超友主编。

光机电一体化强化训练实训教材——单片机篇。

广东华南理工大学广州学院。

2011(2)张瑞玲主编。

单片机原理与应用.西北工大出版社。

2009(3)杨学昭主编。

单片机原理接口技术及应用。

西安电科大出版社。

2009 (4)4.本设计任务书于20 年月日发出,应于20 年月日前完成,然后进行答辩。

专业教研室、研究所负责人审核年月日指导教师签发年月日设计评语:设计总评成绩:设计答辩负责人签字:年月日摘要本文讲述的是一种基于AT89S52单片机实现控制的LCD液晶显示屏。

硬件系统由单片机系统和液晶显示系统组成,液晶显示系统由主控模块和LCD液晶显示模块接口电路组成,主控模块负责接收单片机字模数据并控制各显示模块工作,控制LCD液晶显示屏显示。

本实验系统分为单片机系统和液晶显示屏两部分。

单片机系统负责接收计算机所编辑的数据,通过接口完成单片机与PC机之间的数据传送,而计算机(即PC机),主要完成显示内容的编辑、字符码的查找、字符数据的发送等工作。

LCD 显示屏包括主控制模块和LCD液晶显示模块。

主控制模块负责接收单片机发送过来的字模数据文件,并且协调各个LCD液晶显示模块工作, LCD液晶显示模块主要是接收主控制模块的数据和将数据送LCD液晶显示屏显示,为了方便系统的扩展,各模块之间采用串行口接收数据,并且接到系统串行总线上。

本系统主要是实现单片机与液晶显示模块之间的接口技术,可以采用间接控制方式完成。

LCD液晶显示器1602

LCD液晶显示器1602

3.4.1LCD显示模块LCD显示器分为字段显示和字符显示两种。

其中字段显示与LED显示相似,只要送对应的信号到相应的管脚就能显示。

字符显示是根据需要显示基本字符。

本设计采用的是字符型显示。

系统中采用LCD1602作为显示器件输出信息。

与传统的LED数码管显示器件相比,液晶显示模块具有体积小、功耗低、显示内容丰富等优点,而且不需要外加驱动电路,现在液晶显示模块已经是单片机应用设计中最常用的显示器件了。

LCD1602可以显示2行16个汉字。

3.4.2LCD1602的引脚功能LCD1602模块的引脚如图3-8所示,其引脚功能如下:RS:数据和指令选择控制端,RS=0命令状态;RS=1数据R/W:读写控制线,R/W=0写操作;R/W=1读操作A:背光控制正电源K:背光控制地E:数据读写操作控制位,E线向LCD模块发送一个脉冲,LCD模块与单片机间将进行一次数据交换DB0~DB7:数据线,可以用8位连接,也可以只用高4位连接,节约单片机资源。

VDD:电源端VEE:亮度控制端(1-5V)VSS:接地端图3-8LCD1602模块3.4.3LCD1602的显示操作1.四种基本操作LCD有四种基本操作,具体如表3-1所示。

表3-1LCD与单片机之间有四种基本操作(1)读状态字执行读状态字操作,如表3-1满足RS=0,R/W=1。

根据管脚功能,当为有效电平时,状态命令字可从LCD模块传输到数据总线。

同时可以保持一段时间,从而实现读状态字的功能。

读状态字流程如图3-9所示。

图3-9读入状态字流程图(2)命令字表3-2所示为命令字,其主要介绍了指令名称、控制信号及控制代码。

其指令名称是指要实现的功能;控制代号是采用的十六进制的数值表示的。

1)清零操作是指输入某命令字后即能将整个屏幕显示的内容全部清除;2)归home位:将光标送到初始位;其中的*号为任意,高低电平均可;3)输入方式:设光标移动方向并指定整体显示,是否移动。

第10章 用LCD1602显示的秒表设计

第10章 用LCD1602显示的秒表设计
2
10.2 硬件设计
图10-2 用LCD1602显示的秒表电路原理图
3
10.3 程序设计
开始 初始化 初始显示
按键1是否按下? N
Y
按键1次数加1
按键1次数等于1、3
按键1次数等于2、4
开定时器
关定时器
显示第1次(或第3次) 按下的提示信息
显示第2次(或第4次) 按下的提示信息
break
break
秒计数单元=60? N
分计数单元=60? N
时计数单元=24? N
中断返回
Y 秒计数器清零,分加1
Y 分计数器清零,时加1
Y 时计数器清零
图10-4 定时器中断程序
5
10.4 仿真与实验结果
图10-5 1602LCD显示的秒表Proteus仿真电路
6
10.4 仿真与实验结果
图10-6 多孔板实验结果
第10章用LCD1602显示的秒表设计
10.1 项目任务 10.2 硬件设计 10.3 程序设计 10.4 仿真与实验结果
1
ቤተ መጻሕፍቲ ባይዱ
10.1 项目任务
用STC89C52单片机与LCD1602液晶显示器设计并制作一个秒 表,实现秒表的计时、暂停与清零等基本功能,每秒自动加1, 至59秒后再回到00,如此循环。运用“开始”、“暂停”、 “复位”按键实现对秒表计时的控制。
7
按键2是否按下? N
Y
关定时器
清零计时缓冲单元
显示清零提示信息
执行beep子程序
执行beep子程序
显示秒信息
图10-3 1602LCD显示的秒表主程序流程图
程序清单见课程设计指导书或配套仿真软件
4

LCD1602+液晶显示数字电子钟+报告书

LCD1602+液晶显示数字电子钟+报告书

LCD1602中文资料介绍用LCD1602 液晶显示数字电子钟,整点蜂鸣器提醒,时间可自行调整。

同时用一个功能键切换显示日期(也可更改调整)和秒表。

本设计有五个按键,第一个是功能键,切换三个功能,分别是日期、时间和秒表;第二个是调整键,按一下屏幕不会变化,只有当按调整加减键时,屏幕就会变化。

例如:一上电显示的是年月日,然后想调整,按一下调整键,屏幕无变化,按调整加减键,屏幕就会变化,date变成tzy,表示正在调整年。

年调整好后,再按一下第二个调整键,屏幕无变化,按调整加减键,屏幕就会变化,tzy变成tzm,表示正在调整月。

其他类似。

第三四个键是加减键;第五个是调整好后的确认键和秒表的确认键。

操作说明:比如要调整日期,先按一下调整p2.1键(左边数第二个键),然后按加1键p2.2或减1键p2.3,第一次是让调整年,年调整后再按调整p2.1键,这次是调整月。

调整后再按调整p2.1键,最后是调整日。

调整好后按确认键p2.4,这样年月日就设置好了。

年月日设置好后按功能切换键p2.0它会回到时间设置上,调整方法和调整年月日类似。

电路原理图:目录扉页答辩许可证毕业设计(论文)任务书中文摘要英文摘要目录文献综述一.选题的目的及意义二.研究领域概况三.文献分析四.研究思路及方案五.进度计划六.参考文献专题论文正文1.引言2.核心芯片简介2.1AT89S51的结构和特点2.1.1芯片引脚及结构特点2.1.2主要功能特性2.1.3AT89S51的新功能2.1.4单片机内部结构及说明2.2 1602液晶显示器的结构及工作原理2.2.1液晶显示器的引脚功能及内部结构图2.2.2CGROM和CGRAM中字符代码与图形对应关系2.2.3液晶模块内部控制器指令说明3.方案设计及论证4.硬件设计4.1.1芯片接口与显示设计4.2.1单片机复位电路设计4.2.2单片机晶振电路设计4.2.3单片机报时电路设计4.2.4单片机下载程序电路设计4.2.5按键功能描述及调试过程5.结论致谢参考文献实习报告外文中文论文缩写电路图§§§基于LCD1602的数字电子钟§§§购物从这里开始:/CD.asp此设计费用为:基本费用155+20(LCD1602)+1(蜂鸣器)+1(电位器)+3(6个12*12*6按键)=180元. 用LCD1602 液晶显示数字电子钟,整点蜂鸣器提醒,时间可自行调整。

单片机lcd1602工作原理

单片机lcd1602工作原理

单片机lcd1602工作原理单片机LCD1602工作原理。

LCD1602是一种常见的字符型液晶显示器,广泛应用于各种电子设备中。

它具有显示清晰、功耗低、体积小等优点,因此在单片机系统中应用十分广泛。

本文将介绍单片机LCD1602的工作原理,帮助读者更好地理解其工作方式。

首先,我们来了解LCD1602的基本结构。

LCD1602由16列、2行的字符组成,每个字符由5x8个像素点阵组成。

它采用平行接口方式与单片机连接,需要7根数据线(D0-D7)、3根控制线(RS、RW、E)以及电源线(VCC、GND)进行通讯。

在LCD1602内部,有一个控制器芯片,它负责接收来自单片机的指令和数据,并控制液晶显示。

LCD1602的工作原理主要分为两个部分,指令操作和数据显示。

在指令操作阶段,单片机通过数据线和控制线向LCD1602发送指令,包括清屏、光标移动、显示模式设置等。

LCD1602接收到指令后,根据指令内容进行内部操作,从而实现对显示内容的控制。

在数据显示阶段,单片机通过数据线向LCD1602发送要显示的字符数据,LCD1602接收到数据后,将其转换为像素点阵,然后在液晶屏上显示出来。

在实际应用中,单片机与LCD1602的通讯过程遵循一定的时序和协议。

单片机需要根据LCD1602的规格书,合理设置通讯时序和参数,以确保通讯的稳定和可靠。

通讯时,单片机先发送指令或数据的高位,然后发送低位,最后通过控制线产生一个脉冲信号,以告知LCD1602数据已经准备好。

LCD1602在接收到脉冲信号后,根据指令或数据进行相应的处理,完成显示操作。

除了基本的指令操作和数据显示外,LCD1602还具有一些特殊的功能,如光标显示、光标闪烁、显示移动等。

这些功能可以通过发送不同的指令实现,从而满足不同的显示需求。

总的来说,单片机LCD1602的工作原理是通过单片机向LCD1602发送指令和数据,控制LCD1602内部的显示操作,从而实现字符的显示。

LCD1602液晶显示实验要点

LCD1602液晶显示实验要点

LCD1602液晶显示实验要点一、液晶显示原理液晶显示屏是一种电场调制显示器件,通过激励电场使液晶分子的排列状态发生变化,从而控制光的透过程度,实现图像显示。

液晶显示器的基本结构是两块平行的玻璃基板夹层液晶,上面由导电涂层构成的液晶单元。

在液晶单元上方有一块透明电极玻璃,根据控制信号排列液晶分子,形成图像。

二、LCD1602液晶显示屏三、实验器材1. Arduino开发板2.LCD1602液晶显示屏3.面包板4.杜邦线等四、实验步骤1. 接线:将LCD1602液晶显示屏与Arduino开发板通过杜邦线连接。

将VCC接到5V电源、GND接到地、SCL接到A5口、SDA接到A4口。

2. 编写程序:打开Arduino开发环境,编写程序代码,实现液晶显示功能。

3. 初始化:使用LiquidCrystal库,编写代码进行液晶显示屏的初始化设置。

4. 显示字符:通过调用lcd.print(函数,将指定字符显示在液晶屏上。

5. 光标控制:调用lcd.setCursor(函数,设置光标所在位置。

6. 清屏:调用lcd.clear(函数,清除液晶屏上的字符。

7. 控制显示:通过调用lcd.noDisplay(和lcd.Display(函数,控制液晶屏的显示和关闭。

8. 自定义字符:通过调用lcd.createChar(函数,创建自定义字符并显示在液晶屏上。

五、实验注意事项1.液晶显示屏的类型应与编程语言库文件匹配。

2.接线时要确保正确连接,以免损坏LCD1602显示屏。

3.初始化液晶显示屏时,要设置液晶屏的列数和行数。

4.控制液晶显示屏时,要注意操作指令的执行顺序,以免出现误操作。

六、实验结果展示通过编写相应的程序,可以实现在液晶显示屏上显示指定字符、自定义字符,以及控制光标的移动和屏幕的清除等功能。

实验成功时,可以在液晶显示屏上看到所期望的字符和效果。

七、实验应用液晶显示屏广泛应用于各种电子设备和仪器仪表,如电子体温计、电子秤、数码相册、电视机等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 系统调试及下载......................................................................................... 错误!未定义书签。

4 1.................................................................................................................................... . 设计总结51 引言通过对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、消抖模块引脚如图所示模块引脚如图所示LCD、4.3.2.3 程序1、分频模块程序library IEEE;use IEEE.STD_LOGIC_1164.ALL;entity fenpin isPort ( clk : in std_logic;lcd_clk:out std_logic);end fenpin;architecture bhv of fenpin isbeginprocess(clk)--分频进程,CLK输入,CLK_Out输出,50MHz输入,125Hz输出,8msconstant m:integer:=500000;variable cout:integer range 0 to 50000000:=0;beginif clk'event and clk='0' then cout:=cout+1;if cout<m/2 then lcd_clk<='1';elsif cout<m then lcd_clk<='0';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 isport(clk:in std_logic;reset:in std_logic;col:in std_logic_vector(3 downto 0);row:out std_logic_vector(3 downto 0);key_code:out std_logic_vector(7 downto 0));end jianpan;architecture bhv of jianpan issignal cnt: std_logic_vector(1 downto 0);signal key: std_logic;beginkey <= col(3) and col(2) and col(1) and col(0);p2: process(clk)beginif clk'event and clk='1' thenif key = '1' thencnt <= cnt + 1;end if;end process;P3: process(col, cnt,reset)beginif reset='0' thenrow<=I1;elsif cnt <=row <= I0;case col iswhen I0 => key_code <= I01110;when H1 => key_code <= H11110;when A1 => key_code <= A11110;when 1 => key_code <= 11110;when others => key_code <= I11111; end case;elsif cnt <= thenrow <= H1;case col iswhen I0 => key_code <= I01101;when H1 => key_code <= H11101;when A1 => key_code <= A11101;when 1 => key_code <= 11101;when others => key_code <= I11111; end case;elsif cnt <= thenrow <= A1;case col iswhen I0 => key_code <= I01011;when H1 => key_code <= H11011;when A1 => key_code <= A11011;when 1 => key_code <= 11011;when others => key_code <= I11111; end case;elsif cnt <= thenrow <= 1;case col iswhen I0 => key_code <= I00111;when H1 => key_code <= H10111;when A1 => key_code <= A10111;when 1 => key_code <= 10111;when others => key_code <= I11111; end case;end process;end architecture;3、消抖模块程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;entity xiaodou isport(clk:in std_logic;reset:in std_logic;din:in std_logic_vector(7 downto 0);dout:out std_logic_vector(7 downto 0));end xiaodou;architecture bhv of xiaodou isbeginprocess(clk,reset,din)variable cnt:integer range 0 to 2;variable store:std_logic_vector(7 downto 0);variable d1,d2,d3:std_logic:='1';beginif reset='0'thendout<=I11111;elsif clk'event and clk='1'thencase cnt iswhen 0=>store:=din;cnt:=cnt+1;when 1=>if din=store thencnt:=cnt+1;elsestore:=din;cnt:=0;end if;when 2=>if din=store thendout<=store;d1:=store(7) and store(6) and store(5) and store(4); d2:=store(3) and store(2) and store(1) and store(0); d3:=d1 or d2;if d3='0' thenend if;elsestore:=din;end if;end case;end if;end process;end bhv;4、LCD模块程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity lcd isport( lcd_clk : in std_logic;dout:in std_logic_vector(7 downto 0);rs: out std_logic; --寄存器选择信号rw : out std_logic; --液晶读写信号en: out std_logic; --液晶时钟信号data: out std_logic_vector(7 downto 0)); --液晶数据信号end lcd;architecture bhv of lcd istape statesis(set_function,set_cursor,set_display,clear_display,set_ddram1,write_d ata1);signal state:states;beginprocess(lcd_clk,state) --状态机控制显示beginif lcd_clk'event and lcd_clk='1' thencase state is,5*7*/ ,2 when set_function=> data<=11000;--/*设置8位格式行rs<='0';state<=set_display;*/ 关光标整体显示 when set_display=> data<=,,不闪烁rs<='0';state<=clear_display;when clear_display=> data<=rs<='0';state<=set_cursor;when set_cursor=> data<=显示移动格式,看最后两位,10表示光标右移rs<='0';state<=set_ddram1;when set_ddram1=> data<=@00000;state<=write_data1;when write_data1=> rs<='1';data<=dout;end case;end if;end process;end bhv;3.2.4 仿真图4 系统调试及下载程序编写完,仿真成功后,引脚设置对应好,在实验箱上连接好线,最后可以进行下载了,然后就可以在实验箱上观察实验结果了。

相关文档
最新文档