单片机课程设计.docx
- 文档编号:23581318
- 上传时间:2023-05-18
- 格式:DOCX
- 页数:26
- 大小:1.79MB
单片机课程设计.docx
《单片机课程设计.docx》由会员分享,可在线阅读,更多相关《单片机课程设计.docx(26页珍藏版)》请在冰豆网上搜索。
单片机课程设计
课程设计(论文)
题目名称基于89C51的液晶显示系统设计
课程名称单片机原理及在电气与测控学科中的应用
学生姓名汪中正
学号1041201056
系、专业10级电气工程及其自动化
指导教师朱群峰
2012年6月1日
邵阳学院课程设计(论文)任务书
年级专业
电气工程及其自动化
学生姓名
汪中正
学号
1041201056
题目名称
基于89C51的液晶显示系统设计
设计时间
2012年5月21日—2012年6月1日
课程名称
单片机原理及应在电气测控学科中的应用
课程编号
121200105
设计地点
数字控制与PLC实验室(305)
一、课程设计(论文)目的
课程设计是在校学生素质教育的重要环节,是理论与实践相结合的桥梁和纽带。
单片机课程设计,要求学生更多的完成软硬结合的动手实践方案,解决目前学生课程设计过程中普遍存在的缺乏动手能力的现象.《单片机课程设计》是继《电子技术》、和《单片机原理与应用》课程之后开出的实践环节课程,其目的和任务是训练学生综合运用已学课程“电子技术基础”、“单片机原理及应用”的基本知识,独立进行单片机应用技术和开发工作,掌握单片机程序设计、调试和应用电路设计、分析及调试检测。
二、已知技术参数和条件
1、液晶显示功能见第三项“任务和要求”具体参数
2、89C51系列单片机;
3、KEIL软件;Wave软件、protuse软件
4、THKSCM-1型单片机实验系统。
三、任务和要求
利用89C51驱动液晶显示器工作,液晶显示器的型号自己确定(可以用1602或者12864)要求显示出自己的基本信息(英文或者中文,内容自定)。
1、要求设计出硬件系统的电气原理图;
2、要求设计出程序流程图和程序;
3、要求设计出实物或者仿真调试。
注:
1.此表由指导教师填写,经系、教研室审批,指导教师、学生签字后生效;
2.此表1式3份,学生、指导教师、教研室各1份。
四、参考资料和现有基础条件(包括实验室、主要仪器设备等)
1、单片机课程设计指导,北京航空航天大学出版社,楼然苗等2007年7月
2、单片机实验与实践教程,北京航空航天大学出版社,何立民等2004年7月
3、THKSCM-1型单片机实验系统实验指导书、KEIL软件,WAVE软件
4、数字控制与PLC实验室”THKSCM-1型单片机实验系统”。
五、进度安排
2012年5月21日-22日:
收集和课程设计有关的资料,熟悉课题任务何要求总体方案设计
2012年5月23日-25日:
硬件电路设计
2012年5月26日-28日:
软件设计
2012年5月29日-30日:
系统调试改进
2012年5月31日:
整理书写设计说明书
2012年6月1日:
答辩并现场考核
六、教研室审批意见
教研室主任(签名):
年月日
七|、主管教学主任意见
主管主任(签名):
年月日
八、备注
指导教师(签字):
学生(签字):
汪中正
邵阳学院课程设计(论文)评阅表
学生姓名汪中正学号1041201056
系别电气工程系专业班级10电气一班
题目名称基于89C51的液晶显示系统设计课程名称单片机原理及应在电气测控学科中的应用
一、学生自我总结
通过本次课程设计,我有熟悉和掌握了单片机开发软件Keil和仿真软件Proteus。
同时明白面对一个新项目时,应该先自己构思一下整个程序的架构,想想如何来完成,有可能的话,画一个流程图,简单的可以画在脑子里,对程序中用到的数据、变量有一个初步的安排,然后自己动手去写,遇到实在没办法解决的地方,再去请教别人,或看别人是怎么处理的,这样首先起码你自己动过脑想过,自己有自己的思路,如果你一开始就看别人的程序,你的思维就会受限在别人的思维里,自己想再创新就更难了,这样你自己永远也没办法提高,因为你是走在别人的影子里。
学生签名:
汪中正2012年6月1日
二、指导教师评定
评分项目
平时成绩
论文
答辩
综合成绩
权重
30
40
30
单项成绩
指导教师评指导教师(签名):
年月日
注:
1、本表是学生课程设计(论文)成绩评定的依据,装订在设计说明书(或论文)的“任务书”页后面;
2、表中的“评分项目”及“权重”根据各系的考核细则和评分标准确定。
摘要
液晶显示已经是人机界面的关键技术。
本文对基于单片机的液晶显示控制技术进行了研究。
本文阐明单片机(89C51)控制LCD1602显示屏的方法。
首先本文研究了LCD1602液晶屏的显示原理,随后通过在Proteus仿真软件上构建相关的仿真电路,并连接在Keil软件编写、编辑及编译生成的相关的.Hex驱动程序电路仿真,成功仿真出对所需内容的显示。
关键字:
LCD1602;单片机;仿真;
目录
摘要.................................................................................................................I
1设计的目的及意义...................................................................................1
1.1设计的目的............................................................................................1
1.2设计的意义.......................................................................................1
2硬件的设计.............................................................................................1
2.1AT89C51的设计.....................................................................................1
2.2LCD1602系统设计.................................................................................8
2.3系统总体硬件电路图设计....................................................................11
3软件设计.................................................................................................12
3.1程序流程图...........................................................................................12
3.2程序源代码...........................................................................................13
4系统仿真调试及其分析..........................................................................13
5总结..........................................................................................................14
参考文献.......................................................................................................16
致谢...............................................................................................................17
附录一:
程序源代码......................................................................................19
1设计目的和意义
1.1设计目的
熟悉掌握1602液晶,和1602液晶的原理,并会编程实现在液晶上显示想要显示的内容。
1.2设计意义
在日常生活中,我们对液晶显示器并不陌生。
液晶显示模块已作为很多电子产品的通过器件,如在计算器、万用表、电子表及很多家用电子产品中都可以看到,显示的主要是数字、专用符号和图形。
在单片机的人机交流界面中,一般的输出方式有以下几种:
发光管、LED数码管、液晶显示器。
发光管和LED数码管比较常用,软硬件都比较简单。
在单片机系统中应用晶液显示器作为输出器件有以下几个优点:
1、显示质量高
2、由于液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光,而不像阴极射线管显示器(CRT)那样需要不断刷新新亮点。
因此,液晶显示器画质高且不会闪烁。
3、数字式接口
4、液晶显示器都是数字式的,和单片机系统的接口更加简单可靠,操作更加方便。
5、体积小、重量轻、功耗低。
液晶显示器通过显示屏上的电极控制液晶分子状态来达到显示的目的,在重量上比相同显示面积的传统显示器要轻得多。
相对而言,液晶显示器的功耗主要消耗在其内部的电极和驱动IC上,因而耗电量比其它显示器要少得多。
2硬件电路设计
2.1最小系统设计
单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统。
对51系列单片机来说,最小系统一般应该包括:
单片机、晶振电路、复位电路。
最小系统电路图如图2.1所示。
图2.1最小系统电路图
2.1.1AT89C51芯片介绍
AT89C51是一个低电压,高性能CMOS8位单片机带有4K字节的可反复擦写的程序存储器(PENROM)。
和128字节的存取数据存储器(RAM),这种器件采用ATMEL公司的高密度、不容易丢失存储技术生产,并且能够与MCS-51系列的单片机兼容。
片内含有8位中央处理器和闪烁存储单元,有较强的功能的AT89C51单片机能够被应用到控制领域中。
外形及引脚排列如图2.2所示。
图2.2AT89C51引脚图
功能特性:
AT89C51提供以下的功能标准:
4K字节闪烁存储器,128字节随机存取数据存储器,32个I/O口,2个16位定时/计数器,1个5向量两级中断结构,1个串行通信口,片内震荡器和时钟电路。
另外,AT89C51还可以进行0HZ的静态逻辑操作,并支持两种软件的节电模式。
闲散方式停止中央处理器的工作,能够允许随机存取数据存储器、定时/计数器、串行通信口及中断系统继续工作。
掉电方式保存随机存取数据存储器中的内容,但震荡器停止工作并禁止其它所有部件的工作直到下一个复位。
内部结构组成:
单片机AT89C51可以划分为CPU、存储器、并行口、串行口、定时/计数器和中断逻辑几个部分。
·CPU由运算器和控制逻辑构成。
其中包括若干特殊功能寄存器(SFR)
·AT89C51时钟有两种方式产生,即内部方式和外部方式。
·AT89C51在物理上有四个存储空间:
片内/片外程序存储大路、片内/片外数据存储器。
片内有256B数据存储器RAM和4KB的程序存储器ROM。
除此之外,还可以在片外扩展RAM和ROM,并且和有64KB的寻址范围。
·AT89C51内部有一个可编程的、全双工的串行接口。
它串行收发存储在特殊功能寄存器SFR的串行数据缓冲器SBUF中的数据。
·AT89C51共有4个(P0、P1、P2、P3口)8位并行I/O端口,共32个引脚。
P0口双向I/O口,用于分时传送低8位地址和8位数据信号;P1、P2、P3口均为准双向I/O口;其中P2口还用于传送高8位地址信号;P3口每一引脚还具有特殊功能,用于特殊信号的输入输出和控制信号。
·AT89C51内部有两个16位可编程定时器/计数器T0、T1。
、工作方式和定时器或计数器的选择由指令来确定。
·中断系统允许接受5个独立的中断源,即两个外部中断,两个定时器/计数器中断以及一个串行口中断。
引脚说明:
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P0口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口同时为闪烁编程和编程校验接收一些控制信号。
P3口也可作为AT89C51的一些特殊功能口,如下表2.1所示。
端口引脚
复用功能
P3.0
RXD(串行输入口)
P3.1
TXD(串行输出口)
P3.2
/INT0(外部中断0)
P3.3
/INT1(外部中断1)
P3.4
T0(定时器0外部输入)
P3.5
T1(定时器1外部输入)
P3.6
/WR(外部数据存储器写选通)
P3.7
/RD(外部数据存储器读选通)
表2.1P3端口引脚与复用功能表
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
2.1.2时钟电路设计
AT89C51芯片内部有一个高增益反向放大器用于构成振荡器,XTAL1和XTAL2分别为反向放大器的输入和输出。
在XATL1和XATL2两端跨接由石英晶体及两个电容构成的自激振荡器,电容C1和C2取20pF,电容一端接与晶振相连,另一端接地,选择的晶振是频率为12MHZ。
选用不同的电容对震荡频率有微调作用,但石英晶体本身的标定频率才是单片机振荡频率的决定因数。
设计时钟电路模块的目的就是要产生像时钟一样准确的震荡电路使单片机按照固定的节拍工作。
时钟电路如图2.3所示。
图2.3时钟电路
2.1.3复位电路设计
复位是单片机的初始化操作,其功能主要是把PC初始化为0000H,使单片机从0000H单元开始执行程序。
复位操作有上电自动复位和按键手动复位两种方式。
上电自动复位是在加电瞬间电容通过充电来实现的,即接通电源就完成了系统的复位初始化;按键手动复位则是通过按键实现。
复位电路虽然简单,但其作用非常重要,是一个系统能否正常运行的首要条件,其电路连接图如图2.4所示。
图2.4复位电路
2.2LCD1602系统的设计
2.2.1LCD1602简介
1602是指显示的内容为16*2,即可以显示两行,每行16个字符。
目前市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。
LCD1602 主要参数引脚功能
2.2.21602LCD主要技术参数:
1、显示容量:
16×2个字符
2、芯片工作电压:
4.5—5.5V
3、工作电流:
2.0mA(5.0V)
4、模块最佳工作电压:
5.0V
5、字符尺寸:
2.95×4.35(W×H)mm
2.2.3引脚功能说明
(1)LCD1602引脚如图2.5所示
图2.5LCD1602引脚图
(2)引脚图的功能如表3—1所示
表2.2引脚功能图
2.2.4LCD1602显示模指令集
(1)清屏
功能:
清DDROM值和AC值
(2)归位
功能:
光标复位,光标返回到地址00H
(3)输入方式设置
功能:
设置光标,画面移动方式。
其中:
I/D=1:
数据读写操作后,AC自加一;
I/D=0:
数据读写操作后,AC自减一;
S=1:
数据读写操作,画面平移;
S=0:
数据读写操作,画面不动;
(4)显示开关控制
功能:
设置显示、光标和闪烁开关。
其中:
D表示显示开关,D=1为开,D=0为关;
C表示光标开关,C=1为开,C=0为关;
B表示闪烁开关,B=1为开,B=0为关。
(5)光标、画面位移
功能:
光标、画面移动。
其中:
S/C=1画面移动一个字符位;
S/C=0光标移动一个字符位;
R/L=1:
右移;R/L=0左移。
(6)功能设置
功能:
工作方式设置(初始化指令)。
其中:
DL=1,8位数据接口;
DL=0,4位数据接口;
N=1,两行显示;N=0,一行显示;
F=1,5*10点阵显示;F=0,5*7点阵显示。
(7)CGRAM地址设置
功能:
设置CGRAM地址,A5~A0=0~3FH。
(8)DDRAM地址设置
功能:
设置DDRAM地址。
其中:
N=0,一行显示A6~A0=0~4FH;
N=1两行显示,首行A6~A0=0~2FH,次行A6~A0=40~67H。
(9)读BF及AC值
功能:
读忙BF和地址计数器AC的值。
其中:
BF=1:
忙,BF=0:
准备好。
此时AC值意义为最近一次地址设置(CGRAM或DDRAM)定义。
(10)写数据
功能:
根据最近设置的地址性质,数据写入CGRAM或DDRAM中。
(11)读数据
功能:
根据最近设置的地址性质,从CGRAM或DDRAM数据读出。
2.3系统总体硬件电路图设计
硬件电路图用Protues软件绘制而成。
单片机芯片AT89C51、AT89C51引脚XTAL1、XTAL2接时钟电路、AT89C51引脚RST接复位电路,一起构成了单片机的最小系统。
引脚P0.0~P0.7通过外接上拉电阻与LCD显示器LCD1602的D0~D7相连,构成了液晶显示电路,用来显示信息。
系统硬件电路图如图2.6所示:
图2.6系统硬件电路图
3软件的设计
3.1程序流程图
主程序的主要功能是负责信息的显示,其程序流程如图3.1所示:
否
否
否
图3.1程序流程图
3.2程序源代码
见附录一
4系统仿真调试及其分析
·安装Keil与Proteus。
·在Keil软件上输入程序,进行编译、连接,若存在错误则根据软件下方提示修改正确。
图4.1keil软件下编写程序
·在Proteus进行硬件仿真,双击单片机AT89C51弹出对话框,在Programfile栏中加载以“.Hex”为后缀文件,再单击OK设置完成,最后按软件左下角的功能键“运行”、“暂停”、“帧进”、“停止”进行仿真。
·运行程序,LCD1602显示程序编写的信息,如图4.2所示。
图4.2显示程序编写的信息
5总结
在这次为期两星期的单片机课程设计中,我第一次接触了课程设计,这次的课程设计作品的制作让我对单片机的理论有了更加深入的了解。
我也学到了很多新东西,比如熟悉和掌握了单片机开发软件Keil和仿真软件Proteus的使用。
同时在具体的制作过程中我发现书本上的知识与实际的应用存在着不小的差距,书本上的知识很多都是理想化后的结论,忽略了很多实际的因素,或者涉及的不全面,可在实际的应用时这些是不能被忽略的。
通过这次实践使我更深刻的体会到了理论联系实际的重要性,在今后的学习工作中我会更加的注重实际。
在本系统中,采用模块化、层次化设计,单片机的主控制程序采用灵活的C语言编程。
本次设计主要是完成两方面工作,软件程序设计和硬件电路板设计,软件使用Keil软件进行仿真调试,硬件使用单片机仿真器、编程器、实验仪三合一综合开发平台上的模块。
这次设计基本完成了任务书的要求,通过编程实现了所需信息的显示,通过测试表明系统的设计是正确的、可行的。
但是由于设计者的设计经验和知识水平都有限,时间也比较仓促,本系统还存在许多不足和缺陷,需进一步改进,例如系统硬件电路的设计还需进一步改进。
第一次靠用所学的专业知识来解决问题,检查了自己的知识水平,使我对自己有一个全新的认识。
通过学习专业知识和查阅大量的资料,我在理论方面有了很大的收获,实践能力有了飞速提高,也积累了丰富的实践经验,还锻炼了自己分析问题、处理问题的能力,提高了自己的动手能力。
这些培养和锻炼对于我们这些以后都会走向工作岗位的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计