单片机课程设计报告——液晶显示
- 格式:doc
- 大小:167.50 KB
- 文档页数:32
单片机原理与接口技术课程设计报告课程名称:单片机原理与接口技术设计题目:时钟及液晶显示器设计院系:机械与电子工程控制学院组长:童佳楠组员:许倩倩、闫剑、杜唐云、程先科指导教师:肖燕彩一、课题设计背景LCD作为一种新的材料,它在设计制造技术与应用水平上都得到了迅速的提高,生产上也得到了迅速的发展,并逐步形成产业,成为光电子行业的新宠;随着人们生活节奏的加快,时间对人们的重要性也越来越重要。
因此,拥有一个简单方便的时钟对人们的生活将带来很大的方便。
基于此背景,我们小组决定设计LCD电子时钟,用所学的单片机知识服务于实际生活。
二、课题设计任务设计一个单片机时钟显示调整系统,扩展液晶显示器(LCD)用于时钟显示和调整,连接按键分别控制系统的显示模式切换和时间值增减调整。
预期效果:1、实现时钟功能;2,实现显示汉字功能;本课题课题基本要求:1、掌握单片机开发编程设计的基本流程;2、了解Keil及Proteus软件的基本使用;3、了解LCD的基本使用;4、学习单片机硬件制作。
三、软件平台单片机应用系统设计包括硬件系统设计和软件系统设计两大部分,本课题基于Keil C51和proteus这两个软件。
Keil C51完成软件系统设计部分,包括软件总体设计、软件流程图设计和源程序的编制;proteus作为硬件系统的仿真软件,可以在虚拟的环境中实现微控制器系统的仿真,并可由仿真电路原理图完成PCB设计。
最后Keil C51与proteus结合进行调试与整个系统的仿真。
1)Keil编程Keil的开发工具的使用的基本过程:○1创建汇编语言的源程序;○2汇编源文件;○3纠正源文件中的错误;○4从编译器和汇编器连接目标文件;○5测试连接的应用程序。
2)Proteus仿真Proteus软件不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
它是目前最好的仿真单片机及外围器件的工具。
在编译方面,它也支持IAR,Keil,PLAB等多种编译器。
一、实验目的1. 理解液晶显示器(LCD)的基本工作原理和组成结构。
2. 掌握液晶显示器驱动电路的设计与调试方法。
3. 熟悉液晶显示器的接口技术及其与单片机的连接方式。
4. 通过实验验证液晶显示器的显示功能,并实现简单图形和文字的显示。
二、实验原理液晶显示器(LCD)是一种利用液晶材料的光学各向异性来实现图像显示的设备。
它主要由液晶层、偏光片、电极阵列、驱动电路等部分组成。
液晶分子在电场作用下会改变其排列方向,从而改变通过液晶层的光的偏振状态,实现图像的显示。
三、实验器材1. 液晶显示器模块(如12864 LCD模块)2. 单片机开发板(如STC89C52单片机)3. 电源模块4. 连接线5. 实验平台(如面包板)四、实验内容1. 液晶显示器模块的识别与检测首先,对所购买的液晶显示器模块进行外观检查,确保无损坏。
然后,根据模块说明书,连接电源和单片机开发板,进行初步的检测。
2. 液晶显示器驱动电路的设计与调试根据液晶显示器模块的技术参数,设计驱动电路。
主要包括以下部分:- 电源电路:将单片机提供的电压转换为液晶显示器所需的电压。
- 驱动电路:负责控制液晶显示器模块的行、列电极,实现图像的显示。
- 接口电路:将单片机的信号与液晶显示器的控制信号进行连接。
在设计电路时,需要注意以下几点:- 电源电压要稳定,避免对液晶显示器模块造成损害。
- 驱动电路的驱动能力要足够,确保液晶显示器模块能够正常显示。
- 接口电路的信号传输要可靠,避免信号干扰。
设计完成后,进行电路调试,确保电路正常工作。
3. 液晶显示器的控制程序编写根据液晶显示器模块的控制指令,编写控制程序。
主要包括以下部分:- 初始化程序:设置液晶显示器的显示模式、对比度等参数。
- 显示程序:实现文字、图形的显示。
- 清屏程序:清除液晶显示器上的显示内容。
在编写程序时,需要注意以下几点:- 控制指令要正确,避免对液晶显示器模块造成损害。
- 程序要简洁,易于调试和维护。
引言单片机即微型计算机。
是集成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字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。
单片机控制的液晶显示器的设计及实现指导老师:88姓名:88班级:099141专业:电子信息工程本论文主要讨论了通过单片机的控制功能,实现在液晶显示器上显示出相应的汉字,并通过按键功能选择所需要的显示方式。
并且从硬件和软件两个方面入手进行分析研究。
系统设计要求:本系统是对AT89C52单片机和OCMJ4某8点阵液晶显示器应用,利用OCMJ4某8点阵液晶显示“电子设计”四个字。
显示方式可由K1、K2、和K3选择,K1为逐字显示,K2为向上滚动显示,K3为向左滚动显示。
整体设计方案:本题目要求的电路系统具有以下几个模块:电源模块、主处理模块、按键输入模块、液晶显示输出模块等部分。
(1).稳压电源电路将输入的220V交流电整流输出5V稳压电源;(2).主处理模块主要是AT89C51及其外围电路的设计(3)按键输入模块主要是控制液晶显示内容的花样滚动,从而达到不同的显示方式,实现不同的视觉效果。
(4)液晶显示模块是液晶电路以及控制器的连接电路设计,通过单片机将要写的内容写到液晶里并显示出来。
其中我所用的12864液晶显示模块是市面上常用的液晶显示模块。
CM1286426SLYB是Proteu仿真软件里经常用的一种液晶显示模块,可以进行很好的仿真实验。
液晶显示系统方框图:本课程设计几个关键点:(1)液晶显示器接口电路的合理设置,要求可以进行亮度和对比度的调节;(2)单片机控制系统的设计,最小系统的设计和调试;(3)液晶显示器的正确连接和安装,要求实现汉字的显示;(4)通过C语言编程,实现汉字的花样滚动显示;液晶模块的外接电路:主程序流程图:Proteu仿真电路设计:显示效果图:最终显示效果:(1)在液晶屏中间稳定清晰的显示“电子设计”四个字。
(2)利用三个按键控制液晶上的显示内容不同的花样显示。
(3)顺利实现内容的上下移动,逐字显示,和水平移动。
毕业设计的收获:首先,进一步认识51系列单片机的基本结构功能和其编程原理。
单片机显示控制课程设计一、课程目标知识目标:1. 让学生理解单片机显示控制的基本原理,掌握显示器件的工作机制;2. 学会使用编程语言对单片机进行编程,实现字符、图形的显示控制;3. 了解单片机显示控制在不同应用场景下的实际运用。
技能目标:1. 培养学生动手操作能力,能够独立完成单片机显示控制电路的搭建;2. 提高学生编程能力,使其能够熟练编写并调试显示控制程序;3. 培养学生分析问题和解决问题的能力,能够针对实际应用场景设计合适的显示控制方案。
情感态度价值观目标:1. 培养学生对单片机技术的兴趣,激发其学习热情;2. 培养学生团队协作精神,使其在合作中共同解决问题;3. 增强学生的创新意识,鼓励其勇于尝试新的显示控制方法。
课程性质:本课程为实践性较强的课程,结合理论知识,注重培养学生的动手操作能力和实际应用能力。
学生特点:学生具备一定的单片机基础知识,对编程和电路搭建有一定了解,但实践经验不足。
教学要求:教师应注重理论与实践相结合,通过讲解、示范、指导等教学手段,帮助学生掌握单片机显示控制技术,并能够将其应用于实际项目中。
同时,关注学生的个体差异,给予个性化的指导和支持。
通过本课程的学习,使学生能够达到上述课程目标,为后续相关课程的学习打下坚实基础。
二、教学内容1. 单片机显示控制原理:讲解显示器件的工作原理,如LED、LCD等,分析单片机与显示器件的接口技术。
- 教材章节:第二章 单片机显示技术基础2. 显示控制编程:介绍单片机编程语言,以C语言为例,讲解显示控制编程方法,实现字符、图形的显示。
- 教材章节:第三章 单片机显示控制编程3. 电路设计与搭建:指导学生进行显示控制电路的设计与搭建,包括硬件连接、调试等。
- 教材章节:第四章 单片机显示控制系统设计4. 实践项目:开展单片机显示控制实践项目,如电子时钟、温度显示等,让学生在实际操作中掌握所学知识。
- 教材章节:第五章 单片机显示控制应用实例5. 创新设计与展示:鼓励学生进行创新设计,将所学知识应用于实际项目中,并进行展示和交流。
单片机LCD显示实验报告实验目的:本实验旨在通过使用单片机控制LCD进行显示,掌握单片机与外围设备的交互操作,学习并理解LCD显示原理。
实验器材:1. 单片机开发板2. LCD1602液晶显示屏3. 杜邦线若干4. 电阻若干实验原理:液晶显示原理是在液晶材料施加电场的作用下,通过改变传输光的偏振状态来实现图像显示。
本实验使用的LCD1602是一种16×2的字符型液晶显示模块,其中每个字符由5×8的点阵构成。
实验步骤:1. 连接电路:将LCD1602与单片机开发板通过杜邦线连接。
一般来说,液晶显示屏的引脚布局如下:- VSS: 接地- VDD: 供电(一般为5V)- V0:对比度控制端(通过电位器调节)- RS:数据/指令选择端(通常连接到单片机的I/O口)- RW:读写选择端(连接至地)- E:使能端(通常连接到单片机的I/O口)- D0-D7:数据线(连接到单片机的I/O口)- A:背光灯正极(连接5V)- K:背光灯负极(连接至地)2. 编写程序:根据实验要求,使用相应的单片机编程语言编写程序。
在程序中,需要调用相关的LCD1602命令来实现字符的显示。
3. 烧录程序:使用相应的烧录工具将编写好的程序下载到单片机开发板中。
4. 实验验证:将开发板上电,通过观察LCD1602的显示情况来验证程序的正确性。
实验结果与分析:在本次实验中,我使用单片机控制LCD1602成功实现了字符的显示。
实验结果表明,编写的程序能够正确地将字符显示在液晶屏上,并且显示效果良好。
实验中遇到的问题及解决方法:在实验过程中,我遇到了一些问题,例如LCD1602无显示、乱码或显示异常等情况。
针对这些问题,我采取了以下解决方法:1. 检查接线是否正确:确保LCD1602的引脚与单片机开发板之间的连接准确无误。
2. 检查电源供应:确认LCD1602的电源供应是否正常,电源电压是否稳定。
3. 调整对比度:通过旋转电位器调整LCD1602的对比度,以适应不同环境下的显示效果要求。
一、实训目的本次实训旨在通过实际操作,让学生掌握单片机与液晶显示模块的接口连接方法,学会编写程序实现液晶显示模块的基本功能,如字符显示、图形显示等,并了解液晶显示模块在嵌入式系统中的应用。
二、实训内容1. 硬件环境- 单片机:AT89C51- 液晶显示模块:LCD1602- 开发工具:Keil uVision4- 仿真软件:Proteus2. 实训步骤- 熟悉LCD1602液晶显示模块的引脚功能。
- 设计单片机与LCD1602的接口电路。
- 编写程序实现LCD1602的初始化。
- 实现字符显示功能,包括中文字符和英文字符。
- 实现图形显示功能,如直线、矩形等。
- 优化程序,提高显示效果。
3. 实训要求- 熟练掌握LCD1602液晶显示模块的硬件连接。
- 熟练掌握Keil uVision4软件的使用。
- 熟练掌握C语言编程。
- 能够根据实际需求设计并实现LCD1602的显示功能。
三、实训过程1. 硬件连接- 将LCD1602的RS、RW、EN引脚分别连接到单片机的P1.0、P1.1、P1.2引脚。
- 将LCD1602的DB0-DB7引脚分别连接到单片机的P0.0-P0.7引脚。
- 将LCD1602的VCC、GND分别连接到单片机的VCC和GND。
2. 程序编写- 使用Keil uVision4编写程序,实现LCD1602的初始化。
- 编写程序实现字符显示功能,包括中文字符和英文字符。
- 编写程序实现图形显示功能,如直线、矩形等。
3. 仿真调试- 使用Proteus软件对程序进行仿真调试,确保程序能够正常运行。
四、实训结果1. 成功实现了LCD1602的初始化。
2. 成功实现了字符显示功能,包括中文字符和英文字符。
3. 成功实现了图形显示功能,如直线、矩形等。
五、实训心得1. 通过本次实训,我对单片机与液晶显示模块的接口连接方法有了更深入的了解。
2. 通过编程实现LCD1602的显示功能,提高了我的编程能力。
LCD1602液晶显示实验实验报告及程序一、实验目的本次实验的主要目的是熟悉并掌握 LCD1602 液晶显示屏的工作原理和编程方法,能够成功实现字符在液晶屏幕上的显示和控制。
二、实验原理LCD1602 是一种工业字符型液晶,能够显示 16x2 个字符,即每行16 个字符,共 2 行。
它的工作原理是通过控制液晶分子的偏转来实现字符的显示。
LCD1602 有 16 个引脚,主要引脚功能如下:1、 VSS:接地。
2、 VDD:接电源(通常为+5V)。
3、 V0:对比度调整引脚,通过外接电位器来调节屏幕显示的对比度。
4、 RS:寄存器选择引脚,高电平时选择数据寄存器,低电平时选择指令寄存器。
5、 RW:读写选择引脚,高电平时进行读操作,低电平时进行写操作。
6、 E:使能引脚,下降沿触发。
7、 D0 D7:数据引脚,用于传输数据和指令。
LCD1602 的指令集包括清屏、归位、输入方式设置、显示开关控制、光标或显示移位、功能设置、CGRAM 和 DDRAM 地址设置以及读忙标志和地址等。
三、实验设备与材料1、单片机开发板2、 LCD1602 液晶显示屏3、杜邦线若干4、电脑四、实验步骤1、硬件连接将 LCD1602 的 VSS 引脚接地。
将 VDD 引脚接+5V 电源。
将 V0 引脚通过一个 10K 的电位器接地,用于调节对比度。
将 RS、RW、E 引脚分别连接到单片机的三个 I/O 口。
将 D0 D7 引脚连接到单片机的 8 个 I/O 口。
2、软件编程包含必要的头文件。
定义与 LCD1602 连接的 I/O 口。
编写初始化函数,包括设置显示模式、清屏、输入方式等。
编写写指令函数和写数据函数,用于向LCD1602 发送指令和数据。
编写显示字符串函数,实现字符在屏幕上的显示。
3、编译下载程序使用编译软件对编写的程序进行编译,生成可执行文件。
将可执行文件下载到单片机开发板中。
4、观察实验结果给开发板上电,观察 LCD1602 液晶显示屏上是否正确显示预设的字符。
机械与电子工程学院课程设计报告课程名称《单片机应用技术》设计题目LCD1602液晶屏使用所学专业名称班级学号学生姓名指导教师年月日任 务 书设计名称: LCD1602液晶屏使用 学生姓名: 指导教师: 葛 浩 起止时间:自 2012 年 5 月 12 日起 至 2012 年 6 月 2 日止一、课程设计目的1. 熟练掌握51单片机的工作原理;2. 熟练掌握LCD1602液晶的使用方法;3. 掌握单片机系统的设计方法。
二、课程设计任务和基本要求 1.设计任务:通过单片机对LCD1602液晶进行控制,实现字符、数字的显示。
2. 基本要求: 1) 显示两屏 内容:2) 在Proteus 仿真环境实现,或完成实物设计;3) 按照课程设计论文格式要求,撰写设计报告,字数要求3000字以上。
3. 提高要求:实现信息的上下或左右滚动指导老师评价表课程设计报告(格式)目录(目录应包括论文中全部章节的标题及页码,含摘要与关键词、正文章、节题目、参考文献、附录等。
目录题头用四号黑体字居中排写,隔行书写目录内容。
目录中各章节题序及标题用五号宋体。
)摘要与关键词 (1)1 标题(正文第1章标题,小三号黑体,上下间距为:段前0.5行,段后0.5行) (1)1.1 ××××××(正文2级标题,四号黑体) (1)1.1.1 ××××(正文3级标题,小四号黑体) (1)1.1.2 ××××(正文3级标题,小四号黑体) (1)1.2 ××××××(正文2级标题,四号黑体) (1)2 标题×××××(正文第2章标题,要求同上) (1)2.1 ××××××(正文2级标题,四号黑体) (1)2.1.1 ××××(正文3级标题,小四号黑体) (2)2.2 ××××××(正文2级标题,四号黑体) (2)3 标题××××(正文第2章标题,要求同上) (2)3.1 ××××××(正文2级标题,四号黑体) (2)3.1.1 ××××(正文3级标题,小四号黑体) (2)4 总结(正文第2章标题,要求同上) (2)参考文献(四号黑体居左) (2)附录(另起一页,四号黑体) (2)(分页)摘要与关键词摘要:中文摘要与关键词单独成页置于目录后。
单片机课程设计实验报告单片机课程设计实验报告引言单片机是嵌入式系统中常见的一种计算机芯片,具有体积小、功耗低、成本低等优势。
本次实验旨在通过单片机的应用设计,加深对单片机原理和应用的理解,并提升解决问题的能力。
实验目的本次实验的目的是设计一个简单的温度监测系统,通过单片机采集温度传感器的数据,并将数据显示在液晶显示屏上。
通过这个实验,我们可以掌握单片机的基本编程和电路连接方法,同时加深对温度传感器的原理和应用的理解。
实验原理1. 单片机基本原理单片机是一种集成电路,内部包含了CPU、内存、输入输出端口等功能模块。
通过编程,可以控制这些功能模块的工作,实现各种应用。
2. 温度传感器原理温度传感器是一种能够感知环境温度变化的器件,常见的有热敏电阻、热电偶等。
本次实验使用的是热敏电阻,其电阻值随温度的变化而变化。
实验材料1. 单片机开发板2. 温度传感器3. 液晶显示屏4. 连接线等实验步骤1. 连接电路将单片机开发板与温度传感器、液晶显示屏连接起来,确保电路连接正确无误。
2. 编写程序使用C语言编写单片机的程序,实现温度传感器数据的采集和液晶显示屏的显示。
程序的基本思路是通过单片机的模拟输入端口读取温度传感器的电阻值,然后将电阻值转换为温度值,并将温度值显示在液晶显示屏上。
3. 烧录程序将编写好的程序烧录到单片机开发板上,确保程序能够正常运行。
4. 实验测试将温度传感器放置在不同的环境中,观察液晶显示屏上的温度数值是否能够准确显示,并记录实验结果。
实验结果与分析经过实验测试,我们发现温度传感器能够准确地采集环境温度,并将温度数值显示在液晶显示屏上。
通过对比实际温度和显示温度的差异,我们可以评估温度传感器的准确性和精度。
实验总结通过本次实验,我们深入了解了单片机的基本原理和应用,掌握了单片机的编程方法和电路连接方法。
同时,我们也加深了对温度传感器的原理和应用的理解。
这些知识和技能对于今后的学习和工作都具有重要意义。
目录1前言 (1)2总体方案设计 (2)2.1设计内容 (2)2.2设计内容 (2)2.3方案论证 (3)2.4方案选择 (4)3单元模块设计 (5)3.1各单元模块功能介绍及电路设计 (5)3.1.1 温度采集电路 (5)3.1.2 DS1302时钟电路 (5)3.1.3 串行通信接口电路 (6)3.1.4 USB连接电路 (6)3.1.5 按键电路 (7)3.1.6液晶显示显示电路 (7)3.2特殊器件介绍 (7)3.2.1 STC89C52单片机芯片 (7)3.2.2 DS1302介绍 (8)3.2.3 温度传感器DS18B20 (9)3.2.4 液晶显示LCD1602 (9)4软件设计 (10)4.1软件选择 (10)4.2软件设计流程 (10)4.2.1 温度采集流程 (11)4.2.2 日期数据处理流程 (12)5系统的仿真及调试 (13)5.1系统仿真 (13)5.2硬件调试 (13)5.3软件调试 (14)6结论 (16)7总结与体会 (17)7.1设计小结 (17)7.2设计收获及改进 (17)7.3致谢 (17)8参考文献 (18)附录: (19)1前言单片机是指一个集成在一块芯片上的完整计算机系统。
尽管他的大部分功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大部分部件:CPU、内存、内部和外部总线系统,目前大部分还会具有外存。
同时集成诸如通讯接口、定时器,实时时钟等外围设备。
而现在最强大的单片机系统甚至可以将声音、图像、网络、复杂的输入输出系统集成在一块芯片上。
单片机也被称为微控制器(Microcontroller),它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。
概括的讲:一块芯片就成了一台计算机。
它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。
单片机诞生于20世纪70年代末,经历了SCM、MCU、SOC三大阶段。
STC单片机完全兼容51单片机,并有其独到之处,其抗干扰性强,加密性强,超低功耗,可以远程升级,内部有专用复位电路,价格也较便宜,由于这些特点使得 STC 系列单片机的应用日趋广泛。
《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)熟悉单片机系统的工作原理及调测方法。
软硬件安装调测完成后根据系统的工作原理、过程、测试数据及遇到的问题与处理情况、体会等完成课设报告。
专业综合课程设计任务书班级:学号:姓名:成绩:电子与信息工程学院计算机科学系图1.2 图1.3图1.42.3键盘电路这部分有16个button构成4*4矩阵,通过p1口进行行扫描方式实现按键的读取。
硬件电路图如图1.4。
2.4总体硬件图如图1.5图1.53 软件详细设计3.1键盘扫描子程序要进行数据的计算就必须进行数据的输入,也就是确定按键输入的数值是什么,这就需要对键盘进行行扫描,从而确定究竟是那个键按下。
对于键盘的扫描,既可以使用行扫描也可以使用列扫描,这里采用行扫描的方法完成对键盘的扫描行扫描就是逐行扫描键盘,看那一行有键按下,再通过返回的见马来确定究竟是哪个按键按下。
对第一行扫描就置p1.0为底电平,其余p1口为高电平,如果有按键按下,则p1口的值就会变为别的值,再由新值来确定是那个键按下。
程序流程图如图1.6图1.6dd:mov r0,#0f7h mov r1,#0cc:mov a,r0 mov p1,amov a,p1 mov r2,asetb c mov r3,#4bb:rlc a jnc aaee:inc r1 djnz r3,bbmov a,r0 setb crrc a mov r0,ajc cc ljmp ddKAOO:LJMP KAO BBB2:LJMP BB2aa:lcall mm mov a,p1xrl a,r2 nz eeff:mov a,p1 xrl a,r2jz ff MOV A,51HCJNE A,#1,BBB2RET3.4主程序及其他部分程序下图为主程序流程图:主要有:初始化子程序,清屏子程序,固定字符显示,单元定义,端口定义,字模部分。
主程序:RG 0LJMP STARTSTART:MOV SP,#60HLCALL INT ;调用初始化子程序START1:LCALL CLEAR ;调用清屏子程序初始化子程序:INT: MOV COM,#0C0H ;设置显示起始行为第一行LCALL PRM0LCALL PRR0MOV COM,#3FH ;开显示设置LCALL PRM0LCALL PRR0RET清屏子程序:CLEAR:MOV R4,#00H。
一、实训背景随着科技的不断发展,单片机技术在各个领域得到了广泛的应用。
为了提高学生的实际操作能力和创新精神,我们选择了单片机实训课程,其中液晶显示屏(LCD)的应用是实训的重要内容。
通过本次实训,我们学习了单片机与液晶显示屏的接口设计,掌握了液晶显示屏的编程技巧,并在实际操作中提高了自己的动手能力和问题解决能力。
二、实训目的1. 理解单片机与液晶显示屏的接口原理。
2. 掌握液晶显示屏的编程方法。
3. 实现汉字在液晶显示屏上的显示。
4. 提高动手能力和团队协作精神。
三、实训内容1. 液晶显示屏介绍液晶显示屏(LCD)是一种显示技术,它通过液晶分子在电场作用下的旋转来控制光线的透过。
LCD具有体积小、功耗低、显示效果清晰等优点,广泛应用于各种电子设备中。
2. 单片机与液晶显示屏的接口设计本次实训中,我们选择了常用的12864 LCD液晶显示屏。
该显示屏具有128列、64行的显示能力,支持汉字显示和图形显示。
为了实现单片机与液晶显示屏的通信,我们需要设计相应的接口电路。
3. 编程实现汉字显示在掌握了液晶显示屏的接口电路后,我们需要编写相应的程序,实现汉字在液晶显示屏上的显示。
本次实训中,我们使用了标准字库,通过单片机的程序控制,实现了汉字的显示。
四、实训过程1. 硬件连接首先,我们需要将12864 LCD液晶显示屏与单片机连接。
具体连接方法如下:- 将单片机的数据线(P0口)与液晶显示屏的数据线连接。
- 将单片机的控制线(RS、RW、EN)与液晶显示屏的控制线连接。
- 将单片机的电源线和地线与液晶显示屏的电源线和地线连接。
2. 程序编写接下来,我们需要编写程序,实现汉字在液晶显示屏上的显示。
具体步骤如下:- 初始化液晶显示屏,设置显示模式、显示位置等。
- 从标准字库中读取汉字数据。
- 将汉字数据写入液晶显示屏的指定位置。
3. 测试与调试编写程序后,我们需要进行测试和调试。
具体步骤如下:- 将程序烧录到单片机中。
单片机实验课程名称:点阵液晶汉字显示实验授课班级:10自动化三班任课教师:文远熔计划学时:32学时实验组员:张腾耀梁钦赵福亮秦菱蔚郑欢王聪慧摘要本文介绍了PROTEUS与Keil联调开发51系列单片机应用系统的方法以及基于PROTEUS环境下的12864液晶显示的仿真设计。
将Keil C开发的程序用Proteus设计的仿真电路中交互运行调试的方法,设计12864的液晶显示汉字图像。
在基于PROTEUS 环境下的12864液晶显示的仿真设计中,使用51芯片控制,然后显示在12864显示屏上,最多可显示4行每行8个汉字,并且可以通过按键随时改变12864显示屏上的内容。
通过Proteus环境下的温度报警器的仿真实验证明,在PROTEUS环境下可以完成单片机系统的硬件设计和软件调试,测试系统的性能,在实际应用中可以降低设计成本,缩短开发周期,提高效率。
关键词:Proteus;仿真;单片机;12864目录第一章绪论1.1实验任务和要求 (1)1.2 基于Proteus的12864显示的研究 (1). 1.3 实验方案及原理 (1)第二章点阵液晶汉字显示的硬件部分2.1程序流程图 (2)2.2硬件电路图…………………………………………………………….2.3芯片12864的简介………………………………………………………第三章点阵液晶汉字显示的软件部分3.1 Keil简介…………………………………………………………………….3.2 Proteus简介……………………………………………………………….3.3 Proteus与Keil软件联合仿真的建立……………………………………. 第四章结论4.1实验总结……………………………………………………………………. 附录1:点阵液晶汉字显示的源程序第一章绪论1.1 实验任务和要求用LCD128x64点阵液晶显示器显示指定汉字,最多可以显示4行、8个/行汉字,通过键盘可以随时改变显示的内容。
电子信息学院实验报告书课程名:《微机原理与接口技术》题目:128×64LC D液晶显示设计实验类别【综合】班级:学号:姓名:1.1设计背景21.2课程设计的目的和意义 (3)1.3课程设计的内容 (3)二.课程设计的步骤与方法 (3)2.1系统硬件设计32.11控制模块32.12 显示模块42.13电源模块62.2系统软件设计72.21系统流程图72.22系统时序图82.3系统调试9三.设计结论10四.收获与体会11参考文献:11附录一:程序清单12附录二:实验仪器201.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 个汉字。
单片机课程设计实验报告1. 实验目的本实验旨在通过单片机课程设计实验,掌握单片机的基本原理、编程方法和实验操作技巧,培养实际动手能力和创新意识。
2. 实验内容本次实验的内容是使用单片机进行信号采集与控制。
具体包括以下几个部分:2.1 信号采集首先,我们需要利用单片机的模拟输入功能,通过外部传感器采集环境中的温度、湿度和光照等信号,并将其转换为数字信号供单片机处理。
在本实验中,我们采用温湿度传感器和光敏传感器作为信号源,将它们与单片机的模拟输入引脚连接,通过编程读取传感器输出的模拟电压值,并进行相应的数值处理。
2.2 数据处理与显示采集到的信号经过模数转换后,将在单片机内部得到相应的数字值。
接下来,我们需要对这些数据进行处理,并将结果显示在数码管或LCD液晶屏上。
在本实验中,我们可以利用单片机的数字输出端口控制数码管显示温度、湿度和光照度等数据。
也可以通过串口通信方式将数据发送到上位机进行进一步处理和显示。
2.3 信号控制除了信号采集和显示外,单片机还具备信号输出的功能。
我们可以使用单片机的数字输出端口向外部器件发送控制信号,控制其工作状态。
在本实验中,我们可以利用单片机的数字输出口控制LED灯的亮灭,或者控制电机的转动方向和速度等。
2.4 扩展应用我们还可以通过外部扩展模块,如无线模块、蓝牙模块等,将单片机连接到网络或其他设备上,实现更加丰富的应用。
3. 实验步骤1.搭建实验电路:按照实验要求,连接单片机、传感器和显示模块等元件,确保电路连接正确无误。
2.编写程序:打开开发环境,编写单片机程序,实现信号采集、处理和控制功能。
3.烧录程序:将编写好的程序烧录到单片机中,并确保烧录成功。
4.实验调试:连接电源,启动单片机,进行实验调试。
根据实验需求,调整传感器和器件的工作参数,观察实验结果是否符合预期。
5.总结与报告撰写:对实验过程和结果进行总结,撰写实验报告,包括实验目的、实验内容、实验步骤、实验结果及分析等。
J I A N G S U U N I V E R S I T Y 单片机原理及应用课程设计学院名称:计算机科学与通信工程专业班级:通信1002学生姓名:***学生学号:**********指导教师姓名:赵念强2013年 1 月点阵式液晶显示屏的显示程序设计一、设计目的1.熟练掌握C51系统仿真开发系统的应用。
2.加强单片机的综合运用能力、提高单片机的软件编程和调试能力,为以后的学习和开发工作打下良好基础。
3.掌握的液晶的工作原理以及应用设计。
4.掌握小系统开发设计的流程以及设计思路。
二、设计方案实验要求:1)从下到上左到右滚动显示:自己设计的图片2)能进行正常的模拟量采样值显示(温度、压力、电位)。
3)未按键时菜单要可以停下来设计思路:由于实验指导书中做过液晶显示和模数转换得实验,根据两个实验的功能实现和流程原理进行设计将程序分成四个模块:主函数模块main.c模数转换模块ADC.c液晶显示模块KS0108.c按键调试模块Test7179.c其中让主函数模块做一些初始化和函数调用工作,模数转换模块主要是将温度,压力,点位的值转化为数字量供液晶显示用,液晶显示模块得到模数转换模块传递过来的数字量显示到液晶面板上,按键调试模块是输入按键显示温度,电压,压力等。
程序流程图:1系统主流程图如下2主函数流程图3 显示模块流程图4 模数转换模块流程图主要的源程序及注释主函数:#include "c8051f020.h" #include <intrins.h>void Delay1us(unsigned char us)while (us){_nop_(); _nop_(); _nop_(); _nop_(); _nop_();--us;}}void SYSCLK_Init (void){int i; // delay counterOSCXCN = 0x67; // start external oscillator with// 18.432MHz crystalfor (i=0; i < 256; i++) ; // Wait for osc. to start upwhile (!(OSCXCN & 0x80)) ; // Wait for crystal osc. to settleOSCICN = 0x88; // select external oscillator as SYSCLK // source and enable missing clock// detector// OSCICN = 0x07; file://interal 16MHZ}#define PRT0CF P0MDOUT#define PRT1CF P1MDOUT#define PRT2CF P2MDOUTvoid PORT_Init (void){XBR0 = 0x07; // Enable SMBus, SPI0, and UART0XBR1 = 0x00;XBR2 = 0x44; // Enable crossbar and weak pull-upsEMI0CF = 0x27;EMI0TC = 0x21;P74OUT = 0xFF;P0MDOUT = 0x15;P1MDOUT |= 0x3C; //P1.2-P1.5推挽输出P1 &= 0xc3; //P1.2-P1.5=0}void SPI0_Init (void){SPI0CFG = 0x07; // data sampled on 1st SCK rising edge // 8-bit data wordsSPI0CFG|=0xC0; //CKPOL =1;SPI0CN = 0x03; // Master mode; SPI enabled; flags // clearedSPI0CKR = SYSCLK/2/8000000-1; // SPI clock <= 8MHz (limited by // EEPROM spec.)}unsigned char Count1ms;void Timer0_Init (void){CKCON|=0x8;TMOD|=0x1; //16BitCount1ms=10;TR0 = 0; // STOP Timer0TH0 = (-SYSCLK/1000) >> 8; // set Timer0 to overflow in 1msTL0 = -SYSCLK/1000;TR0 = 1; // START Timer0IE|= 0x2;}void Timer0_ISR (void) interrupt 1 //1ms{TH0 = (-SYSCLK/1000) >> 8;TL0 = -SYSCLK/1000;if (Count1ms) Count1ms--;}void Delay1ms(unsigned char T){Count1ms=T;while (Count1ms);}void Delay1s(unsigned char T){while (T){Delay1ms(200);Delay1ms(200);Delay1ms(200);Delay1ms(200);Delay1ms(200);T--;}char GetKeyValue(void);void init_adc(void);unsigned int GetADCValue(char No); void TestLCD(void);void DispLCD(char *DispBuf,char num); void InitLCD(void); //初始化¯LCDvoid ShowWenDu(void);void Test7279(bit LoopFlag) ;void main (void){unsigned int w;char No,i,buf[5];No=1;WDTCN = 0xde;WDTCN = 0xad; //关看门狗SYSCLK_Init (); // 初始化时钟Timer0_Init();//初始化定时器PORT_Init (); //初始化IO口 SPI0_Init (); //初始化SPI0 init_adc();CPT1CN|=0x80; //使能比较器1REF0CN = 0x07; //使能片内参考电压DAC0CN |= 0x80; //使能DAC0DAC0H=0; DAC0L=0;EA=1; //开中断//Test7279(0);loop: Test7279(0) ;//关闭数码关显示TestLCD();InitLCD();No=0;//w = GetADCValue(1);for (;;){i=GetKeyValue();if ((i>=0)&&(i<=3)){No=i;switch(No){case 1:ShowWenDu();break;case 2:ShowDianYa();break;case 3:ShowYaLi();break; case 0:goto loop;break; default:break;}}w = GetADCValue(No); Delay1ms(30);switch(No){case 1:buf[0]=(w%10000)/1000; buf[1]=(w%1000)/100;buf[2]=' ';buf[3]=(w%100)/10;buf[4]=(w%10);DispLCD(buf,1);showdu();break;case 2:buf[0]=(w%10000)/1000; buf[1]=(w%1000)/100;buf[2]=' ';buf[3]=(w%100)/10;buf[4]=(w%10);DispLCD(buf,2);showfu();break;case 3:buf[0]=(w%10000)/1000; buf[1]=(w%1000)/100;buf[2]=' ';buf[3]=(w%100)/10;buf[4]=(w%10);DispLCD(buf,3);showniu();break;default:break;}}}模数转换#include "c8051F020.h"#include <intrins.h>/*压力应变片ADC实验*/#define MUX_TEMP 0x08#define MUX_VOLT 0x01#define MUX_PRESS 0x02unsigned int idata Temp, Press, Volt;unsigned char idata mux_select;sfr16 ADC0 = 0xbe; // ADC0 datavoid init_adc(void){ADC0CN = 0x81; // ADC0 enabled; normal tracking// mode; ADC0 conversions are initiated // on write to AD0BUSY; ADC0 data is // left-justifiedREF0CN = 0x07; // enable temp sensor, on-chip VREF,// and VREF output buffermux_select = MUX_TEMP; // CPU on-chip temp sensorAMX0SL = MUX_TEMP;ADC0CF = (SYSCLK/2500000) << 3; // ADC conversion clock = 2.5MHz//ADC0CF |= 0x01; // PGA gain = 2EIE2 &= ~0x02; // disable ADC0 EOC interruptEIE1 &= ~0x04; // disable ADC0 window compare interrupt }// On-chip temperature// AN1. 电位片// AN2. 应变片void read_analog_inputs(void){long temp_long;AD0INT = 0; // clear conversion complete indicatorAD0BUSY = 1; // initiate conversionwhile (AD0INT == 0); // wait for conversion completeswitch (mux_select){case MUX_TEMP:temp_long = ADC0 - 42380/2;temp_long = (temp_long * 200L) / 156;Temp=temp_long;AMX0SL = MUX_VOLT; // Select AIN1 for next readmux_select = MUX_VOLT;break;case MUX_VOLT:temp_long = ADC0;Volt = 24*temp_long/655;AMX0SL = MUX_PRESS; // Select on-chip temp sensormux_select = MUX_PRESS;break;case MUX_PRESS:temp_long = ADC0;temp_long = 24*temp_long/655;Press = temp_long;AMX0SL = MUX_TEMP;mux_select = MUX_TEMP;break;default:AMX0SL = MUX_TEMP;mux_select = MUX_TEMP;break;}}unsigned int GetADCValue(char No){read_analog_inputs();read_analog_inputs();read_analog_inputs();switch (No){case 1:return Temp;case 2:return Volt;case 3:if (Press<10) Press=0;return Press;}}液晶显示模块KS0108.c#include "C8051F020.h"#include <intrins.h>/*液晶点阵显示实验-128*64,控制器KS0108实验准备:将拨码开关S1和S2置ON运行此程序将上下左右滚动显示“姓名,马彩霞学号,3100601033班级,通信1002”出现菜单,按键选择。