基于单片机的多功能计算器的设计与实现电气工程及其自动化专业毕业论文.docx
《基于单片机的多功能计算器的设计与实现电气工程及其自动化专业毕业论文.docx》由会员分享,可在线阅读,更多相关《基于单片机的多功能计算器的设计与实现电气工程及其自动化专业毕业论文.docx(43页珍藏版)》请在冰点文库上搜索。
基于单片机的多功能计算器的设计与实现电气工程及其自动化专业毕业论文
毕业设计论文
基于单片机的多功能计算器的设计与实现
毕业设计(论文)原创性声明和使用授权说明
原创性声明
本人郑重承诺:
所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。
尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。
对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。
作者签名:
日 期:
指导教师签名:
日 期:
使用授权说明
本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:
按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。
作者签名:
日 期:
学位论文原创性声明
本人郑重声明:
所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。
除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。
对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。
本人完全意识到本声明的法律后果由本人承担。
作者签名:
日期:
年月日
学位论文版权使用授权书
本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。
本人授权 大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。
涉密论文按学校规定处理。
作者签名:
日期:
年月日
导师签名:
日期:
年月日
摘要
单片机是计算机制造技术高速发展下所诞生的产物,它是嵌入式系统的控制核心,如今,它已被广泛的应用于国民经济建设、军工产品及家用电器之中,而计算器作为一种方便快捷的计算工具在生活中得到了普遍使用。
本次设计的题目是基于单片机的多功能计算器的设计与实现,通过设计实现温度的测量、时钟的显示以及计算器的加、减、乘、除基本四则运算,并将数据发送到LCD上显示。
系统设计采用SCT89C52单片机作为主要的控制元件,使用4×4矩阵键盘作为主要的输入设备,实现功能的选择以及数字和运算符的输入。
关键词:
单片机;计算器;矩阵键盘;LCD
TheDesignandImplementationofaMultifunctionCalculatorBasedonSingleChipMicrocomputer
Abstract:
MCUistherapiddevelopmentofcomputermanufacturingtechnologyatthebirthoftheproduct,whichisthecoreofembeddedsystems,andnow,ithasbeenwidelyusedinthenationaleconomy,militaryproductsandhouseholdappliances,amongwhichasaconvenientcalculatorquickcalculationtoolhasbeenwidelyusedinlife.
ThistopicisdesignedMCUmulti-functioncalculatorDesignandImplementation,toachievethroughthedesigntemperaturemeasurement,displayoftheclockandcalculatortoadd,subtract,multiply,dividefourbasicoperations,andsendsdatatotheLCDdisplay.SCT89C52systemdesignusingmicrocontrollerasthemaincontrolelement,usinga4×4matrixkeyboardasthemaininputdevice,andimplementationchoicesanddigitaloperatorinputfunction.
Keyword:
MCU,Calculator,Matrixkeyboard,LCD
第1章绪论
1.1背景介绍
当今社会,人们对生活品质的要求越来越高,因此各式各样的电子产品也就应运而生并逐渐走进了千家万户。
电子产品的使用几乎渗透我们生活中的方方面面,而计算器算得上是我们生活中最为常用的电子产品之一,它作为一种方便快捷的计算工具方便了广大用户的使用。
本次设计的重点在于计算器的硬件系统设计和控制程序编写,并从实用性出发在本设计中加入时钟模块和温度测量装置。
1.2设计目的
作为对大学所学课程的总结和检验,毕业设计是一个不可或缺的重要环节。
本次设计的题目为《基于单片机的多功能计算器的设计与实现》,在设计的过程中用到了《单片机微机原理》、《数字电路技术》、《模拟电路技术》、《C语言设计》等所学的相关知识并查阅了其他的相关资料,期望通过本次设计能够把平日所学的知识得以实际应用,从而提高对知识的综合运用能力和课题的设计能力。
1.3设计要求
在本次设计中,主要完成以下几方面的设计要求:
(1)了解单片机最小系统的构成以及如何搭建单片机外围扩展电路的方法;
(2)实现计算器的加、减、乘、除基本四则运算;
(3)实现对温度的测量;
(4)实现时钟的显示和设定。
1.4方案的论证和选择
1.4.1方案一采用PLC控制
PLC是可编程逻辑控制器的简称,最早出现于60年代末期的美国,目的是用于取代继电器。
可以执行计时、计数、算数运算和逻辑判断等操作指令,并通过模拟量和数字量的输入和输出,实现对各种类型机械和生产设备的控制。
PLC以其可靠性高、抗干扰能力强、程序编写简单直观、适应性好、功能完善、接口易于扩展等优点被广泛应用于工业控制中。
但是,PLC外围扩展模块的使用方法麻烦且体积相对较大,保密性不好,就本次设计的需求来说,使用PLC设计从经济性来说成本过高,从实用性来说不易于携带,因此不被采用。
1.4.2方案二采用STC89C52控制
单片机是一种集成电路芯片,全称为单片微型计算机,它的制造采用的是超大规模集成电路工艺将中央处理器CPU、只读存储器ROM、随机存储器RAM、以及各种I/O接口电路集成到一块半导体芯片上。
因此,单片机以重量轻、功耗小、价格低、体积小、可靠性高、易于扩展、计算速度快和控制功能强等优点在各个领域得到了广泛的应用。
1.4.3方案的比较和选择
通过对上述两种方案的比较,结合设计的实用性、便携性和成本考虑,选择以STC89C52作为主控芯片,通过添加外围电路来实现多功能计算器的设计更加符合实际需求。
1.5设计思路
结合实际需求,本次设计的主控芯片采用STC89C52单片机,它能够满足系统所需的各项控制要求,信息显示、温度测量、时钟功能和按键功能通过则添加的外围电路来实现,具体的设计构思如下:
(1)为了保证良好的显示效果,本系统采用1602液晶作为时钟、温度以及运算式和结果的显示器件;
(2)多功能计算器的按键包括数字键(0~9),四则运算符(+、—、×、/),复位键和等号共计16个按键,因此采用4×4的矩阵键盘和键盘扫描程序可以达到设计要求,而且电路和程序设计也相对简单;
(3)系统上电后LCD显示“PleaseInput:
”,等待用户按下所需的功能键,当按下“7”键进入时钟界面LCD第一行显示日期,第二行显示时间;按下“8”键进入实时温度的测量界面,LCD的第一行显示“Temperature:
”,第二行显示测量到的温度值;按下“9”键进入计算器功能,LCD第一行显示运算数字和运算符,第二行显示运算结果。
1.6系统总体模块图
图1-1体统总体模块图
1.7设计方案
经过反复考虑最终确定本次设计采用如下方案:
(1)采用STC89C52作为主控芯片;
(2)采用LCD1602液晶作为显示模块;
(3)采用DS12C887作为时钟模块;
(4)采用DS18B20作为温度测量模块;
(5)输入采用4×4的矩阵键盘;
(6)电源采用5v的稳压电源。
第2章开发软件简介
2.1KeilC51编程软件
美国KeilSoftware公司出品的KeilC51,是一款能够兼容51系列单片机的C语言软件开发系统,它使用的开发环境接近于C语言并且集编辑、编译、仿真等于一体,编程界面与VC++界相似,与汇编语言相比,C语言在其可读性、可维护性、可移植性上等方面都比汇编语言有着十分明显的优势,KeilC51凭借着其简单易学,而且能够缩短单片机项目的开发周期提高编程者的工作效率,还可以在程序编写的关键位置嵌入汇编程序,使得KeilC51编写的程序执行效率接近于汇编程序,因此得以推广[1]。
图2-1KeilC51编程界面
2.2Proteus仿真软件
由英国Labcenterelectronics公司出品的软件Proteus,是一款实用性很好的EDAProteus工具软件。
它能对单片机及其外围电路构成的系统进行仿真,因此在单片机开发工作者和广大单片机爱好者中深受好评。
Proteus集成了诸多功能与一身,如电气原理图的绘制、程序代码的编译和单片机及其外围电路的协同仿真,PCB电路图的一键切换,使其在真正意义上具备了从基本概念到实际产品的完整设计能力。
Proteus在控制元件方面支持8051、8086、ARM、和AVR等处理器平台,并且在不断的添加新的处理器平台。
在编译方面它支持MATLAB、KeilC51和IAR等多种编译。
图2-2Proteus工作界面
2.3STC_ISP_V6.82E程序烧录软件
STC_ISP_V6.82E由STC公司研发,是专门针对51系列单片机设计的一款用于程序烧录的软件,通过STC_ISP_V6.82E可以很容易的将编译好的HEX文件烧录进51单片机。
通过选项窗口可以设置单片机型号、COM口、波特率、串口等参数,同时还可以作为串口调试工具,用于串口数据的收发调试。
图2-3STC_ISP_V6.82E调试界面
第3章硬件系统设计
3.1主控芯片STC89C52
STC89C52的特点是具有CMOS8位微处理器、低功耗、高性能,拥有8K采用DIP封装的Flash存储器,52系列的单片机可以全部兼容51系列单片机的引脚和指令,而它的制造工艺采用的是高密度非易失性存储器技术[2]。
STC89C52具有的最大优点是可以实现在线编写程序,在进行程序调试的时候,可以直接对带电的单片机进行程序烧录,完成程序的烧录后单片机可自动复位运行,芯片的复写次数可以达到一万次以上,对于单片机爱好者和开发者来说它是一款具有较高性价比的开发芯片。
图3-1STC89C52
P0口(39脚~32脚):
P0口为一个三态双向I/O口,可以作为通用的I/O口,也可作为数据和地址的分时复用口。
P0口有8个相同的电路:
P0口的特殊功能寄存器通过8个锁存器来实现,负载的驱动能力通过场效应管组成的组成驱动器来增加,作为输入引脚缓冲器的是三态门。
P1口(1脚~8脚):
P1口是一个准双向I/O接口,它与P0口在输出驱动部分的结构上有区别,它的输出驱动部分是由场效应管和内部的上拉电阻组成的。
当P1口为高电平时,可以直接提供输出电流驱动负载,而不需要在外部接上拉电阻。
P2口(21脚~28脚):
P2口是一个准双向I/O接口,它既可以作为普通的I/O口,也可以作为单片机外围扩展电路的高8位地址总线。
P2口的输出驱动与P0口相比多了一个反相器和输出模拟选择开关。
P3口(10脚~17脚):
P3口的输出驱动由场效应管和与非门组成,与P0、P1、P2口相比多了一个三态门。
P3口除了可以作为普通的准双向I/O接口外,每个引脚都具有第2备选功能。
P3口被作为普通I/O接口时,第二功能的输出线就应被设置为高电平,从而使得锁存器Q端的状态可以决定非门的输出。
此时,P3的作用是一个准双向口,其负载能力和工作方式与P1、P2口一样。
P3口选用第2功能时,锁存器Q端必须设置为高电平。
P3的第二功能,如表3-1所示:
表3-1P3口第2功能表
引脚
第二功能
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:
读外设控制信号输出端
VCC(40脚):
外接+5V电源。
GND(20脚):
接地。
XTAL1(19脚):
接外部晶振的一端。
在51单片机的内部,它是作为一个反相放大器的输入端,这个放大器构成了单片机的片内振荡器。
当单片机采用外部晶振时,该引脚作为外部振荡信号的输入端口。
XTAL2(18脚):
接外部晶振的另一端。
在51单片机的内部,它是作为一个反相放大器的输出端,当单片机采用外部晶振时,该引脚作为外部振荡信号的输入端口。
RST/VPD(9脚):
RST是单片机的复位信号输入端口,高电平时有效。
VPD作为备用电源。
当单片机处于运行状态时,在该引脚上通入大于2个机械周期的高电平,就可以实现单片机的复位操作,使单片机恢复到初始状态。
ALE/PROG(30脚):
地址锁存允许信号端。
需要访问外部存储器时,ALE在每个周期输出两次信号用于锁存P0发送的低8位地址数据。
在不需要访问外部存储器时,ALE产生的同样频率的正脉冲信号,可以作为对外输出的时钟或是用于定时。
PSEN(29脚):
外部程序存储器读取信号端口,引脚低电平时有效。
当单片机从外部读取程序存储器时,PSEN的信号在每个周期内两次有效,读取数据存储器时PSEN信号不会出现。
EA/VPP(31脚):
EA用于读取外部程序存储器的控制信号,低电平时有效。
当EA为高电平时,单片机只会读取单片机内部的程序存储器,当程序超过该范围时,单片机会自动跳转去执行外部程序存储器的程序[3]。
3.2矩阵键盘模块
时钟的校正和计算器数值、运算符的输入需要用到很多的按键,因此若是采用独立按键来编程,虽然程序的编写会变得相对简单,但是单片机的I/O口会被过多的占用,因此在本次设计中系统的输入功能使用矩阵键盘来实现。
矩阵键盘是由行线和列线交叉组成的,并在每一个交叉点上设置一个按键。
本设计只是实现简单的四则运算,所以4×4的矩阵键盘就能够满足设计较要求。
在实际电路的设计中为了有效地提高单片机I/O的利用率,往往都会采用这种行列式的矩阵键盘。
图3-2矩阵键盘
3.3蜂鸣器
蜂鸣器是一种一体化结构的电子讯响器,分为电磁式蜂鸣器和电压式蜂鸣器两种类型,电路设计中用字母“H”或“HA”表示,它采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。
图3-3蜂鸣器
3.4LCD显示模块
1602点阵型液晶作为一种显示液晶模块,能够分两行显示32个字符(即16×2=32),因此通常被使用者简称为1602液晶。
它可以用来显示一些简单的数字、字母、符号,但每个点阵都只能显示一个字符。
1602液晶的每个点阵之间存在一定的间隔,因此它不能够用来显示图片[4]。
图3-41602液晶
在LCD1602液晶模块中,D0~D7是液晶的8位双向数据输送口,R/W是液晶的读写功能选择端口,通过VL的调节可以改变1602液晶的显示对比度;E是液晶的使能端口;RS为液晶的功能寄存器选择端口,高电平时选择的是芯片内部的数据寄存器,低电平时选择的是芯片内部的指令寄存器。
图3-5、图3-6是1602液晶的读写操作时序图,它的工作模式,如下:
图3-51602液晶的写操作时序
当需要给1602写入指令控制其工作方式时:
需要先把1602液晶的寄存器选择端口(RS)设置为低电平,读写选择端口(R/W)设置为低电平,然后把数据从单片机发送到液晶的数据口D0~D7,最后给液晶的使能端口(E)一个高脉冲信号使数据输入内部芯片。
当需要给1602写入所需显示的数据时:
需要先把1602液晶的寄存器选择端口(RS)设置为高电平,读写选择端口(R/W)设置为低电平,然后把数据从单片机发送到液晶的数据口D0~D7,最后给液晶的使能端口(E)一个高脉冲信号使数据输入内部芯片。
此外,使用前还需对液晶进行初始化,对于是否使用背光灯、光标是否闪烁以及显示方式等进行设置。
图3-61602液晶的读操作时序
3.5DS18B20温度传感器
DS18B20作为一款应用广泛的温度传感器,它具有体积小,温度测量范围广,功耗低,性能好,抗干扰能力强等优点。
它的温度测量范围是-55~125℃,并且可以直接将测量的温度转化成数字信号输出。
DS18B20测量温度的分辨率为9~12位,相较于一般的热电偶传感器来说它的测量精度可以达到更高[5]。
图3-7DS12B20
在温度测量过程中,每进行一次初始化检测就可以从DS18B20中读取一次数据,在这个过程中,需要总线至少保持480us的低电平来确保复位脉冲的发送成功,接着释放总线,DS18B20进入到数据接收状态。
单总线的DS18B20需要由5K上拉电阻将其拉至高电平,当传感器探测到单片机I/O口输出的上升沿信号后,等待15~60us,DS18B20会发出一个60~240us低电平信号的存在脉冲信号。
图3-8DS18B20初始化
DS18B20的写时序有两种:
写1时序和写0时序。
DS18B20温度传感器总线控制器的逻辑1通过写1时序接收,逻辑0通过写0时序接收。
写时序的保持时间至少为60us,在每个写周期之间要存在至少1us的间隔时间。
当数据线被总线控制器从逻辑1拉低为逻辑0时,写时序开始。
此时总线控制器会产生一个写时序,这时需要把数据线拉至0,并且在写时序开始后保持15~30us,然后释放总线。
总线被释放后,5K的上拉电阻会将其拉高。
如果总控制器需要产生一个写0时序,就需要把数据线拉低并持续60~120us。
当总线控制器完成初始化写时序后,DS18B20会在15~60us内对数据线进行采样。
如果数据线上是高电平,就是写1。
如果数据线上是低电平,就是写0。
图3-9DS18B20工作时序图
3.6DS12C887时钟芯片
作为一款能够自动产生时间信息的时钟芯片DS12C887 ,其内部自带有锂电池,在外部掉电的情况下,内部的时间信息仍然可以保持10年左右的时间。
DS12C887采用复用总线接口,工作电压为+5V,工作温度为0℃~70℃,时间的表示方法有二进制数表示和BCD 码表示两种。
DS12C887自带的 128 字节的 RAM中,113 字节提供给用户使用,11 字节用于存储时间信息,剩余的4 字节用于存储芯片的控制信息。
图3-10DS12C887
3.7复位电路
单片机系统在启动后都需要通过复位电路,使系统的外围器件和单片机的存储器都恢复到初始状态,并从头开始重新执行程序。
当单片机系统出现“死机”、“程序跑飞”等现象时,按下复位键使RST引脚上加载至少持续两个机械周期的高电平,CPU就能够响应并将系统复位[6]。
图3-11复位电路
最常采用的复位方法是在RST引脚和+5V电源之间添加一个用于复位的机械按键。
当手动按下复位按键时,复位端RST就会被加载+5V的电压。
一般情况下人为按下按键的时间在一百毫秒左右,因此,完全可以满足系统复位的时间要求。
3.8晶振电路
晶振电路用于产生单片机工作所需的时钟控制信号,它被用作为51系列单片机内部各功能部件运行的基准,严格按照时序一步一步地进行工作。
晶振的频率会直接影响单片机的运行速度,晶振电路的稳定性也直接影响单片机系统的稳定性。
单片机的晶振电路设计有采用内部晶振和外接晶振两种方式[7]。
采用内部晶振方式,单片机内部的高增益反相放大器通过XTAL1、XTAL2外接反馈元件的外部晶振与电容组成并联的谐振回路构成一个自激振荡器。
振荡器的频率主要取决于晶振的振荡频率。
51系列的单片机晶振的振荡频率可以在1~12MHz的范围内选择,电容的选择范围是15~45pF,电容的大小会直接影响大振荡器的稳定性和晶振的起振速度。
采用外部晶振方式,外部的时钟信号通过XTAL2端直接接至内部时钟电路,这时内部反相放大器的输入端(XTAL1端)必须接地。
通常外接时钟信号为低于12MHz的方波信号[8]。
图3-12晶振电路
第4章软件系统设计
4.1总体设计
本系统的软件设计思想是采用大小循环嵌套的方式,大循环一直不停的扫描按键,用以确定功能键的选择,小循环用来实现具体的功能,功能1实现时钟显示,功能2实现温度测量,功能3实现计算器的四则运算,并在LCD上显示各个功能的运行结果。
系统总体框图如下:
图4-1系统总体框图
4.2子程序设计
4.2.11602液晶控制程序
1602液晶上电以后,需要对其内部芯片进行初始化后才能进行操作。
在初始化时,应当参考芯片的时序图,先将命令写入芯片内部的寄存器设置其工作方式及状态。
需要显示数据时,先要设置显示的坐标,然后发送显示的数据,LCD显示数据的更新通过刷新数据来实现[9]。
1602液晶的初始化、控制程序(如图4-2所示)和流程图(如图4-3所示)。
4.2.2矩阵按键扫描程序
4×4的矩阵按键采用的是4行4列的结构,每行每列都有一个I/O口与之对应,因此需要编写程序对每个I/O口进行查询,当检测到某个按键被按下时,就根据读到的I/O口的总线数据进行确定是哪一列被按下,进而具体确定是哪个键被按下,并返回该按键对应的值到主程序。
矩阵按键的扫描流程如图4-4所示[10]。
图4-2显示控制程序图4-3显示程序图
否
图4-4矩阵按键的扫描流程图
4.2.3DS18B20控制程序
在对DS18B20操作之前,首先要对它的存在脉冲进行检测,然后才能实现对器件的读/写操作,单片机将读取到的DS18B20数据处理后发送至1602液晶显示。
图4-5DS18B20控制流程图
4.2.4单片机中断系统
在程序执行过程中往往会有诸多突发事件需要单片机进行处理,这就使得单片机的中断功能就应运而生,52系列单片机有3种中断源触发方式,如表4-1所示。
单片机执行中断的顺序通过中断优先级来确定,如表4-2所示。
根据实际的设计需求用户可以自行设置单片机的中断优先级。
表4-1单片机中断使能的位描述
位
符号
描述
7
EA
总中断使能位
6
/
/
5
ET2
定时器2中断使能
4
ES
串口中断使能
3
ET1
定时器1中断使能
2
EX1
外部中断1使能
1
ET0
定时器0中断使能
0
EX0