毕业设计(论文)-基于单片机的多功能计算器的设计与实现.docx_第1页
毕业设计(论文)-基于单片机的多功能计算器的设计与实现.docx_第2页
毕业设计(论文)-基于单片机的多功能计算器的设计与实现.docx_第3页
毕业设计(论文)-基于单片机的多功能计算器的设计与实现.docx_第4页
毕业设计(论文)-基于单片机的多功能计算器的设计与实现.docx_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

成都理工大学2016届学士学位论文(设计)基于单片机的多功能计算器的设计与实现作者姓名: 专业班级:电气5班 指导教师:摘 要单片机是计算机制造技术高速发展下所诞生的产物,它是嵌入式系统的控制核心,如今,它已被广泛的应用于国民经济建设、军工产品及家用电器之中,而计算器作为一种方便快捷的计算工具在生活中得到了普遍使用。本次设计的题目是基于单片机的多功能计算器的设计与实现,通过设计实现温度的测量、时钟的显示以及计算器的加、减、乘、除基本四则运算,并将数据发送到LCD上显示。系统设计采用SCT89C52单片机作为主要的控制元件,使用44矩阵键盘作为主要的输入设备,实现功能的选择以及数字和运算符的输入。关键词:单片机;计算器;矩阵键盘;LCD40The Design and Implementation of a Multifunction Calculator Based on Single Chip MicrocomputerAbstract:MCU is the rapid development of computer manufacturing technology at the birth of the product, which is the core of embedded systems, and now, it has been widely used in the national economy, military products and household appliances, among which as a convenient calculator quick calculation tool has been widely used in life.This topic is designed MCU multi-function calculator Design and Implementation, to achieve through the design temperature measurement, display of the clock and calculator to add, subtract, multiply, divide four basic operations, and sends data to the LCD display. SCT89C52 system design using microcontroller as the main control element, using a 44 matrix keyboard as the main input device, and implementation choices and digital operator input function.Keyword: MCU,Calculator,Matrix keyboard,LCD目 录第1章 绪论11.1 背景介绍11.2 设计目的11.3 设计要求11.4 方案的论证和选择11.4.1 方案一 采用PLC控制11.4.2 方案二 采用STC89C52控制21.4.3 方案的比较和选择21.5 设计思路21.6 系统总体模块图31.7 设计方案3第2章 开发软件简介42.1 Keil C51编程软件42.2 Proteus仿真软件42.3 STC_ISP_V6.82E程序烧录软件5第3章 硬件系统设计63.1 主控芯片STC89C5263.2 矩阵键盘模块83.3 蜂鸣器83.4 LCD显示模块93.5 DS18B20温度传感器103.6 DS12C887时钟芯片123.7 复位电路123.8 晶振电路13第4章 软件系统设计144.1 总体设计144.2 子程序设计144.2.1 1602液晶控制程序144.2.2 矩阵按键扫描程序144.2.3 DS18B20控制程序164.2.4 单片机中断系统164.2.5 DS12C887控制程序17第5章 Proteus仿真与设计185.1 系统仿真图185.2 开机界面和时钟仿真195.3 温度测量仿真205.4 计算功能仿真21第6章 系统功能测试246.1 系统实物图246.2 开机界面及时钟显示246.3 温度检测显示256.4 运算功能显示26结论29致谢30参考文献31附录1 电路原理图32附录2 PCB电路图33附录3 LCD1602显示字符表34附录4 LCD1602引脚说明35附录5 程序节选35成都理工大学2016届学士学位论文(设计)第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) 多功能计算器的按键包括数字键(09),四则运算符(+、/),复位键和等号共计16个按键,因此采用44的矩阵键盘和键盘扫描程序可以达到设计要求,而且电路和程序设计也相对简单;(3) 系统上电后LCD显示“Please Input:”,等待用户按下所需的功能键,当按下“7”键进入时钟界面LCD第一行显示日期,第二行显示时间;按下“8”键进入实时温度的测量界面,LCD的第一行显示“Temperature:”,第二行显示测量到的温度值;按下“9”键进入计算器功能,LCD第一行显示运算数字和运算符,第二行显示运算结果。1.6 系统总体模块图LCD液晶显示模块电源STC89C52主控芯片键盘模块DS18B20传感器DS12C887时钟模块图1-1 体统总体模块图1.7 设计方案经过反复考虑最终确定本次设计采用如下方案:(1) 采用STC89C52作为主控芯片;(2) 采用LCD1602液晶作为显示模块;(3) 采用DS12C887作为时钟模块;(4) 采用DS18B20作为温度测量模块;(5) 输入采用44的矩阵键盘;(6) 电源采用5v的稳压电源。 第2章 开发软件简介2.1 Keil C51编程软件美国Keil Software公司出品的Keil C51,是一款能够兼容51系列单片机的C语言软件开发系统,它使用的开发环境接近于C语言并且集编辑、编译、仿真等于一体,编程界面与VC+界相似,与汇编语言相比,C语言在其可读性、可维护性、可移植性上等方面都比汇编语言有着十分明显的优势,Keil C51凭借着其简单易学,而且能够缩短单片机项目的开发周期提高编程者的工作效率,还可以在程序编写的关键位置嵌入汇编程序,使得Keil C51编写的程序执行效率接近于汇编程序,因此得以推广1。图2-1 Keil C51编程界面2.2 Proteus仿真软件由英国Labcenter electronics公司出品的软件Proteus,是一款实用性很好的EDA Proteus工具软件。它能对单片机及其外围电路构成的系统进行仿真,因此在单片机开发工作者和广大单片机爱好者中深受好评。Proteus集成了诸多功能与一身,如电气原理图的绘制、程序代码的编译和单片机及其外围电路的协同仿真,PCB电路图的一键切换,使其在真正意义上具备了从基本概念到实际产品的完整设计能力。Proteus在控制元件方面支持8051、8086、ARM、和AVR等处理器平台,并且在不断的添加新的处理器平台。在编译方面它支持MATLAB、Keil C51和IAR等多种编译。图2-2 Proteus工作界面2.3 STC_ISP_V6.82E程序烧录软件STC_ISP_V6.82E由STC公司研发,是专门针对51系列单片机设计的一款用于程序烧录的软件,通过STC_ISP_V6.82E可以很容易的将编译好的HEX文件烧录进51单片机。通过选项窗口可以设置单片机型号、COM口、波特率、串口等参数,同时还可以作为串口调试工具,用于串口数据的收发调试。图2-3 STC_ISP_V6.82E调试界面第3章 硬件系统设计3.1 主控芯片STC89C52STC89C52的特点是具有CMOS8位微处理器、低功耗、高性能,拥有8K采用DIP封装的Flash存储器,52系列的单片机可以全部兼容51系列单片机的引脚和指令,而它的制造工艺采用的是高密度非易失性存储器技术2。STC89C52具有的最大优点是可以实现在线编写程序,在进行程序调试的时候,可以直接对带电的单片机进行程序烧录,完成程序的烧录后单片机可自动复位运行,芯片的复写次数可以达到一万次以上,对于单片机爱好者和开发者来说它是一款具有较高性价比的开发芯片。图3-1 STC89C52P0口(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-1 P3口第2功能表引脚第二功能P3.0RXD:串行输入口P3.1TXD:串行输出口P3.2INT0:外部中断0P3.3INT1:外部中断1P3.4T0:记时器0外部输入P3.5T1:记时器1外部输入P3.6WR:写外设控制信号输出端P3.7RD:读外设控制信号输出端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口会被过多的占用,因此在本次设计中系统的输入功能使用矩阵键盘来实现。矩阵键盘是由行线和列线交叉组成的,并在每一个交叉点上设置一个按键。本设计只是实现简单的四则运算,所以44的矩阵键盘就能够满足设计较要求。在实际电路的设计中为了有效地提高单片机I/O的利用率,往往都会采用这种行列式的矩阵键盘。图3-2 矩阵键盘3.3 蜂鸣器蜂鸣器是一种一体化结构的电子讯响器,分为电磁式蜂鸣器和电压式蜂鸣器两种类型,电路设计中用字母“H”或“HA”表示,它采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。图3-3 蜂鸣器3.4 LCD显示模块1602点阵型液晶作为一种显示液晶模块,能够分两行显示32个字符(即162=32),因此通常被使用者简称为1602液晶。它可以用来显示一些简单的数字、字母、符号,但每个点阵都只能显示一个字符。1602液晶的每个点阵之间存在一定的间隔,因此它不能够用来显示图片4。图3-4 1602液晶在LCD1602液晶模块中,D0D7是液晶的8位双向数据输送口,R/W是液晶的读写功能选择端口,通过VL的调节可以改变1602液晶的显示对比度;E是液晶的使能端口;RS为液晶的功能寄存器选择端口,高电平时选择的是芯片内部的数据寄存器,低电平时选择的是芯片内部的指令寄存器。图3-5、图3-6是1602液晶的读写操作时序图,它的工作模式,如下: 图3-5 1602液晶的写操作时序当需要给1602写入指令控制其工作方式时:需要先把1602液晶的寄存器选择端口(RS)设置为低电平,读写选择端口(R/W)设置为低电平,然后把数据从单片机发送到液晶的数据口D0D7,最后给液晶的使能端口(E)一个高脉冲信号使数据输入内部芯片。当需要给1602写入所需显示的数据时:需要先把1602液晶的寄存器选择端口(RS)设置为高电平,读写选择端口(R/W)设置为低电平,然后把数据从单片机发送到液晶的数据口D0D7,最后给液晶的使能端口(E)一个高脉冲信号使数据输入内部芯片。此外,使用前还需对液晶进行初始化,对于是否使用背光灯、光标是否闪烁以及显示方式等进行设置。图3-6 1602液晶的读操作时序3.5 DS18B20温度传感器DS18B20作为一款应用广泛的温度传感器,它具有体积小,温度测量范围广,功耗低,性能好,抗干扰能力强等优点。它的温度测量范围是-55125,并且可以直接将测量的温度转化成数字信号输出。DS18B20测量温度的分辨率为912位,相较于一般的热电偶传感器来说它的测量精度可以达到更高5。图3-7 DS12B20在温度测量过程中,每进行一次初始化检测就可以从DS18B20中读取一次数据,在这个过程中,需要总线至少保持480us的低电平来确保复位脉冲的发送成功,接着释放总线,DS18B20进入到数据接收状态。单总线的DS18B20需要由5K上拉电阻将其拉至高电平,当传感器探测到单片机I/O口输出的上升沿信号后,等待1560us,DS18B20会发出一个60240us低电平信号的存在脉冲信号。图3-8 DS18B20初始化DS18B20的写时序有两种:写1 时序和写0 时序。DS18B20温度传感器总线控制器的逻辑1通过写1时序接收,逻辑0通过写0时序接收。写时序的保持时间至少为60us,在每个写周期之间要存在至少1us的间隔时间。当数据线被总线控制器从逻辑1拉低为逻辑0时,写时序开始。此时总线控制器会产生一个写时序,这时需要把数据线拉至0,并且在写时序开始后保持1530us,然后释放总线。总线被释放后,5K的上拉电阻会将其拉高。如果总控制器需要产生一个写0时序,就需要把数据线拉低并持续60120us。当总线控制器完成初始化写时序后,DS18B20会在1560us内对数据线进行采样。如果数据线上是高电平,就是写1。如果数据线上是低电平,就是写0。图3-9 DS18B20工作时序图3.6 DS12C887时钟芯片作为一款能够自动产生时间信息的时钟芯片DS12C887,其内部自带有锂电池,在外部掉电的情况下,内部的时间信息仍然可以保持10年左右的时间。DS12C887采用复用总线接口,工作电压为+5V,工作温度为070,时间的表示方法有二进制数表示和BCD码表示两种。DS12C887自带的128字节的RAM中,113字节提供给用户使用,11字节用于存储时间信息,剩余的4字节用于存储芯片的控制信息。图3-10 DS12C8873.7 复位电路单片机系统在启动后都需要通过复位电路,使系统的外围器件和单片机的存储器都恢复到初始状态,并从头开始重新执行程序。当单片机系统出现“死机”、“程序跑飞”等现象时,按下复位键使RST引脚上加载至少持续两个机械周期的高电平,CPU就能够响应并将系统复位6。图3-11 复位电路最常采用的复位方法是在RST引脚和+5V电源之间添加一个用于复位的机械按键。当手动按下复位按键时,复位端RST就会被加载+5V的电压。一般情况下人为按下按键的时间在一百毫秒左右,因此,完全可以满足系统复位的时间要求。3.8 晶振电路晶振电路用于产生单片机工作所需的时钟控制信号,它被用作为51系列单片机内部各功能部件运行的基准,严格按照时序一步一步地进行工作。晶振的频率会直接影响单片机的运行速度,晶振电路的稳定性也直接影响单片机系统的稳定性。单片机的晶振电路设计有采用内部晶振和外接晶振两种方式7。采用内部晶振方式,单片机内部的高增益反相放大器通过XTAL1、XTAL2外接反馈元件的外部晶振与电容组成并联的谐振回路构成一个自激振荡器。振荡器的频率主要取决于晶振的振荡频率。51系列的单片机晶振的振荡频率可以在112MHz的范围内选择,电容的选择范围是1545pF,电容的大小会直接影响大振荡器的稳定性和晶振的起振速度。采用外部晶振方式,外部的时钟信号通过XTAL2端直接接至内部时钟电路,这时内部反相放大器的输入端(XTAL1端)必须接地。通常外接时钟信号为低于12MHz的方波信号8。图3-12 晶振电路第4章 软件系统设计4.1 总体设计本系统的软件设计思想是采用大小循环嵌套的方式,大循环一直不停的扫描按键,用以确定功能键的选择,小循环用来实现具体的功能,功能1实现时钟显示,功能2实现温度测量,功能3实现计算器的四则运算,并在LCD上显示各个功能的运行结果。系统总体框图如下:开始初始化功能选择显示时钟显示温度计算器图4-1 系统总体框图4.2 子程序设计4.2.1 1602液晶控制程序1602液晶上电以后,需要对其内部芯片进行初始化后才能进行操作。在初始化时,应当参考芯片的时序图,先将命令写入芯片内部的寄存器设置其工作方式及状态。需要显示数据时,先要设置显示的坐标,然后发送显示的数据,LCD显示数据的更新通过刷新数据来实现9。1602液晶的初始化、控制程序(如图4-2所示)和流程图(如图4-3所示)。4.2.2 矩阵按键扫描程序44的矩阵按键采用的是4行4列的结构,每行每列都有一个I/O口与之对应,因此需要编写程序对每个I/O口进行查询,当检测到某个按键被按下时,就根据读到的I/O口的总线数据进行确定是哪一列被按下,进而具体确定是哪个键被按下,并返回该按键对应的值到主程序。矩阵按键的扫描流程如图4-4所示10。开始初始化设置坐标发送数据显示图4-2 显示控制程序 图4-3 显示程序图否开始赋初值第四行按下第三行按下第二行按下第一行按下结束判断哪一列被按下确定哪个键被按下否否否图4-4 矩阵按键的扫描流程图4.2.3 DS18B20控制程序在对DS18B20操作之前,首先要对它的存在脉冲进行检测,然后才能实现对器件的读/写操作,单片机将读取到的DS18B20数据处理后发送至1602液晶显示。初始化存在脉冲检测读/写操作处理数据送显示图4-5 DS18B20控制流程图4.2.4 单片机中断系统在程序执行过程中往往会有诸多突发事件需要单片机进行处理,这就使得单片机的中断功能就应运而生,52系列单片机有3种中断源触发方式,如表4-1所示。单片机执行中断的顺序通过中断优先级来确定,如表4-2所示。根据实际的设计需求用户可以自行设置单片机的中断优先级。表4-1 单片机中断使能的位描述位符号描述7EA总中断使能位6/5ET2定时器2中断使能4ES串口中断使能3ET1定时器1中断使能2EX1外部中断1使能1ET0定时器0中断使能0EX0外部中断0使能中断是在执行当前程序的过程中跳转去执行其他的临时任务,为了保证中断程序执行完后能够回到中断出继续执行程序,就需要把原来的状态储存到相关寄存器中,当中断程序执行完后,在通过读取相关寄存器使单片机恢复到之前状态,此过程叫过现场恢复。在本次设计中使用了仅使用了1个定时器中断,所以不需要在程序中设置中断优先级,在使用定时器中断之前需要先将总中断(EA)打开,然后再打开定时器0(ET0),最后对定时器0中的寄存器(TH0、TL0)进行赋初值。表4-2 中断查询序列中断函数编号中断名称中断标志位中断使能位默认优先级0外部中断0IE0EX011T0中断TF0ET022外部中断1IE1EX133T1中断TF1ET144UART中断TI/RIES55T2中断TF2/EXF2ET264.2.5 DS12C887控制程序在使用DS12C887之前先要对其时间制式和计时方式进行设定,然后在从其内部读取相应数据,并通过编写程序对时钟进行校正。功能设置读取数据送显示校正时间开始图4-6 DS12C887控制流程图第5章 Proteus仿真与设计5.1 系统仿真图图5-1 系统仿真图Proteus可实现原理图的绘制和单片机及其外围电路的协同仿真,因此是一款功能十分强大的软件。本次设计用到的是它的仿真功能,系统的搭建使用了Component Mode元件库中的10K电阻(10WATT1K)、AT89S52单片机、DS18B20温度传感器、DS12C887时钟芯片、数字键盘(KEYPAD-SNALLCALC)、1602液晶(LM016L)、晶振(CRYSTAL)、电解电容(CAP-PELEC)、按键(BUTTON)、电容(CAP)、蜂鸣器(SOUND),Terminals Mode中的+5V电源(POWER)、接地(GROUND)。实际的I/O口分配,如表5-1所示,P0口用于连接10K的上拉电阻和1602液晶的D0D7数据读写口,DS12C887的连接,P2.2口用于连接DS18B20温度传感器,P2.3口用于连接蜂鸣器(SOUND),P3口用于连接数字键盘(KEYPAD-SNALLCALC),P3.4口用于连接1602液晶的使能端口(E),P3.5口用于连接1602液晶的数据/指令选择端口。表5-1 I/O口分配表I/O口功能P01602液晶D0D7P010K上拉电阻P0DS12C887P1.5DS12C887-ASP1.6DS12C887-RWP1.7DS12C887-RDP2.2DS18B20P2.3蜂鸣器P3.41602使能端P3.3DS12C887-IRQP3.51602数据/指令选择端5.2 开机界面和时钟仿真系统运行仿真后1602液晶显示“Please Input:”,等待指令输入。如图5-2所示。图5-2 开机界面仿真按下“7”键后系统进入到功能1时钟功能,1602液晶的第一行显示日期,第二行显示时间,如图5-3所示。功能键可以对时间进行设置,图5-4设置小时,图5-5设置分钟,图5-6设置秒钟。图5-3 时钟界面仿真图5-4 秒钟设定界面仿真图5-5 分钟设定界面仿真图5-6 时钟设定界面仿真5.3 温度测量仿真进入系统后,按下“8”键后系统进入到功能2温度测量功能,设定Proteus中DS12B20元件的温度,通过总线读取经过元件转化过后的数据,单片机把接收的数据处理后,送至1602液晶显示。测量温度如表5-2所示。图5-7 零下温度测量仿真图5-8 正值温度测量仿真表5-2 仿真温度测量表设定温度仿真测量温度-55.0-55.00-16.0-16.000.00.0024.024.0098.098.005.4 计算功能仿真 图5-9 加法运算仿真 图5-10 减法运算仿真 图5-11 乘法运算仿真 图5-12 除法运算仿真 图5-13 近似计算仿真 进入系统后,按下“9”进入到功能3计算器功能,可进行相应的四则运算,1602液晶的第一行用于显示参与运算的数字,第二行显示运算结果,运算结果如表5-2所示。图5-9为加法运算,在1602液晶的第一行先输入被加数“953” ,然后输入运算符“+”,再输入加数“268”,最后按下“=”,1602液晶的第二行显示结果“1221”。图5-10为减法运算,在1602液晶的第一行先输入被减数“203” ,然后输入运算符“-”,再输入减数“600”,最后按下“=”,1602液晶的第二行显示结果“-397”。图5-11为乘法运算,在1602液晶的第一行先输入被乘数“625” ,然后输入运算符“*”,再输入乘数“638”,最后按下“=”,1602液晶的第二行显示结果“398750”。图5-12为除法运算,在1602液晶的第一行先输入被除数“538” ,然后输入运算符“/”,再输入除数“52”,最后按下“=”,1602液晶的第二行显示结果“10.346”。图5-13为近似计算,在1602液晶的第一行先输入被除数“5” ,然后输入运算符“/”,再输入除数“99999”,最后按下“=”,当结果小于“0.000001”时,1602液晶的第二行显示结果“0”。计算如表5-3所示。表5-3 仿真四则运算表运算方法运算数一运算数二计算结果加法9532681221减法203600-397乘法625638398750除法5385210.346近似计算5999990当输入方式错误时,如单片机并未进行计算而直接按下“=”号键、连续多次按下符号键等情况时,系统会提示操作错误,在1602液晶会持续2秒显示“Error”(如图5-14所示),此后运算器自动恢复到初始状态,可重新开始进行新一轮的计算。图5-14 运算错误仿真第6章 系统功能测试6.1 系统实物图图6-1 系统实物图图6-1是本次设计所采用的实物,系统的搭建除了使用单片机最小系统外还扩充了部分外围电路,如44的矩阵键盘、LCD1602、DS18B20、DS12C887、蜂鸣器等。6.2 开机界面及时钟显示系统上电后,1602液晶显示“Please Input:”,等待操作指令。如图6-2所示。 图6-2 开机界面进入系统后按下矩阵键盘的“7”键,就可以进入到时钟功能,如图6-3所示。1602液晶分为两行显示,第一行显示日期,第二行用于显示时间。功能键可以对时间进行设置,图6-4设置小时,图6-5设置分钟,图6-6设置秒钟。图6-3 时钟界面图6-4 设定时钟界面图6-5 设定分钟界面图6-6 设定秒钟界面6.3 温度检测显示进入系统后按下矩阵键盘的“8”键,就可以进入温度测量功能,单片机将DS18B20温度测量传感器将测量到的温度数据,经过处理后发送至1602液晶的内部芯片,使液晶显示出对应的数字。图6-7 DS18B20室内温度测量图6-8 温度计室内温度测量在温度对比测量中,对冰激凌温度、冰水温度、室内温度、室外温度、热水温度分别进行了测量,图6-7为DS18B20测量室内温度24.63,图6-8为温度计测量的室内温度。具体的温度测量数据如表6-1所示。表6-1 温度测量数据表测量物DS18B20测量温度温度计测量温度冰激凌1.441.52冰水10.1310.07室内温度24.6324.65室外温度29.9429.86热水34.0034.216.4 运算功能显示 图6-9 加法运算 图6-10 减法运算 图6-11 乘法运算 图6-12 除法运算 图6-13 计算器的近似计算进入系统后按下矩阵键盘的“9”键,就可以进入到计算器功能,可以满足基本的加、减、乘、除四则运算,可实现复数的计算,除法计算的结果可以保留到小数点后三位,当运算结果小于0.00001,系统显现当前结果为0。图6-9为加法运算,在1602液晶的第一行先输入被加数“953” ,然后输入运算符“+”,再输入加数“268”,最后按下“=”,1602液晶的第二行显示结果“1221”。图6-10为减法运算,在1602液晶的第一行先输入被减数“203” ,然后输入运算符“-”,再输入减数“600”,最后按下“=”,1602液晶的第二行显示结果“-397”。图6-11为乘法运算,在1602液晶的第一行先输入被乘数“625” ,然后输入运算符“*”,再输入乘数“638”,最后按下“=”,1602液晶的第二行显示结果“398750”。图6-12为除法运算,在1602液晶的第一行先输入被除数“538” ,然后输入运算符“/”,再输入除数“52”,最后按下“=”,1602液晶的第二行显示结果“10.346”。图6-13为计算器的近似计算,在1602液晶的第一行先输入被除数“5” ,然后输入运算符“/”,再输入除数“99999”,最后按下“=”,当结果小于“0.000001”时,1602液晶的第二行显示结果“0”。计算结果如表6-2所示。表6-2 四则运算表计算方法运算数一运算数二计算结果加法9532681221减法203600-397乘法625638398750除法5385210.346近似计算5999990当输入方式错误时,如连续计算和连续多次按下符号键是,系统会发出错误提示,1602液晶会持续显示“Error”2秒(如图6-14所示),此后计算器恢复到初始状态,可以继续开始进行新一轮的计算。图6-14 运算错误提示结论我的设计题目是基于单片机的多功能计算器的设计与实现,对于初步接触单片机的新手来说这个设计题目是一个很大的考验。如何把课堂上所学到的理论知识与实际应用相结合,如何选择设计所需的元器件,如何搭建系统编写程序,这些都是需要考虑的。本次设计的主要任务为实现时钟的显示,温度的测量以及计算器功能,系统上电后会在1602液晶的第一行显示“Please Input:”,等待用户输入功能的选择指令,按下“7”键,系统进入时间显示功能,此时1602液晶的第一行显示日期,第二行显示时间;按下“8”键,系统进入温度测量功能,系统通过对DS18B20温度测量传感器的控制实现实时温度的测量,返回的测量值经过单片机处理后送至1602液晶显示,液晶模块的第一行显示“Temperature:”,第二行实现当前的测量温度,当温度大于零度时显示为负值,如“-1.65”,当温度大于零度时显示为正值,如“+25.12”;按下“9”键,系统进入计算器功能,可以实现基本的四则运算,1602液晶的第一行显示参与运算的数字可运算符,当按下等号键后单片机会根据选择的运算类型将输入的数值进行相应的运算,并将结果显示在液晶模块的第二行,当运算结果小于“0.000001”时,系统会认为计算结果为0,当出现操作错误时系统会发出错误提示,并在液晶的第一行显示“Error”,2秒后计算器恢复到初始状态,可以再次进行计算。在设计的过程中,遇到了很多的困难,例如输入数值在LCD上无法显示,时钟无法进行设定和校正,温度测量无法实现等等。最终通过在图书馆、网上查询相关资料,向老师和周围的同学朋友请教,不断的修改程序,下载调试。把遇到的问题逐一解决了,虽然有些问题处理的依旧不够完美,但是通过思考和努力问题解决,给自己带来了很大的成就感,在此过程中我学到了很多东西,例如LCD的显示技术、矩阵键盘的扫描、DS18B20温度传感器的使用、DS12C887时钟的设定等等。这些技术对于今后更加熟练的使用单片机和设计单片机开发项目有非常大的帮助。在设计的过程中也培养我思考、解决问题的能力和思路,对于以后的生活和工作必然会有很大帮助。致谢这次设计能够顺利的完成首先要感谢罗耀耀老师,在繁忙的教学任务下,依旧每周组织论文进度交流会,并对我的论文进行了悉心的指导,从论文题目的选取到总体框架的设计,再到论文章节的分配和撰写过程中语言的组织,他都做了仔细的批阅,使我的论文撰写工作得以顺利的进展。其次,在此向论文撰写期间给予我帮助和鼓励的老师、同学和家人致谢。参考文献1 孙淑霞等.C/C+程序设计教程(第3版)M.北京:电子工业出版社,20072 郭天祥.新概念51单片机C语言教程:入门、提高、开发、拓展全攻略M.北京:电子工业出版社,20093 方方等.单片微机原理及应用M. 北京:清华大学出版社,2007.4 宋雪松等.手把手教你学51单片机C语言版M.北京:清华大学出版社,20145 吴建平.传感器原理及其应用M.北京:机械工程出版社,20096 余孟尝.数字电子技术简明基础(第三版)M.北京:高等教育出版社,20077 秦曾煌.电工学简明教程M.北京:高等教育出版社,20068 李广弟等.单片机基础M.北京:航空航天出版社,2001.吗 9 王东峰等.单片机C语言应用100例M.北京:电子工业出版社,2009.10 李平等.单片机入门与开发M.北京:机械工业出版社,2008.11 Behzad Ra

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论