基于单片机的LCD1602科学计算器设计.doc

上传人:xin****828 文档编号:6669960 上传时间:2020-03-02 格式:DOC 页数:53 大小:522.50KB
返回 下载 相关 举报
基于单片机的LCD1602科学计算器设计.doc_第1页
第1页 / 共53页
基于单片机的LCD1602科学计算器设计.doc_第2页
第2页 / 共53页
基于单片机的LCD1602科学计算器设计.doc_第3页
第3页 / 共53页
点击查看更多>>
资源描述
作 者: 学 号:系:电子工程与光电技术系专 业:电子信息工程 题 目:基于单片机的 液晶计算器设计 南 京 理 工 大 学 毕业设计(论文)评语 学生姓名: 班级、学号: 题 目: 基于单片机的液晶计算器设计 综合成绩: 指导者评语: 指导者(签字): 年 月 日毕业设计(论文)评语评阅者评语: 评阅者(签字): 年 月 日答辩委员会(小组)评语: 答辩委员会(小组)负责人(签字): 年 月 日毕业设计说明书(论文)中文摘要本设计是实现一个有四则运算及函数运算的多功能计算器。它的硬件部分包括:一个AT89C52单片机芯片,一块LCD1602液晶显示器,一个4*4的键盘,外加4个功能设置按键。AT89C52单片机为核心控制电路,LCD1602负责显示输入输出数据,利用4*4矩阵键盘加上一些功能键完成电路的键入操作部分。电路简单,功能齐全。软件部分采用C语言编写,实现了14位浮点数内的加、减、乘、除基本的四则运算,带有sin、cos、tan、exp、ln、lg、倒数、xy、sqrt、fmod 10个常用数学函数运算。这样一个简易的计算器实现了多功能,比较实用和方便。关键字 单片机 函数 C语言 显示 计算器 毕业设计说明书(论文)外文摘要Title LCD calculator design based on single chip microcomputer AbstractThis design is to achieve a four arithmetic operations and function multi-function calculator. Its hardware includes: a AT89C52 chip, a LCD1602 LCD display, a 4 * 4 keyboard, plus four function setting button. AT89C52 core control circuit, LCD1602 is responsible for displaying the input and output data, the use of 4 * 4 matrix keyboard function keys plus some typing part of the circuit is completed. Circuit is simple and functional. Software written using C language to achieve a floating point number within the 14 plus, subtract, multiply, and divide the four basic arithmetic, with a sin, cos, tan , exp ,ln ,lg , countdown ,x y , sqrt , fmod 10 commonly used mathematical functions. Such a simple calculator to achieve a multi-functional, it is practical and convenient.Keywords MCU Function The C language Display Calculator目 次1 绪论11.1 计算器的简介11.2 单片机的简介与发展趋势11.3 设计的目的与意义22 简易计算器的设计实现32.1 计算器系统模块32.2 核心控制器选择32.3 显示电路的设计选择32.4 键盘设计方案选择42.4.1 按键消抖方案选择42.5 本章小结43 硬件电路设计63.1 单片机介绍63.1.1 AT89C52管脚说明63.2 单片机最小系统73.2.1 复位电路83.2.2 时钟电路93.3 显示模块设计93.4 按键模块设计113.5 本章小结124 软件设计134.1 系统总设计流程134.2 按键程序流程设计144.3 LCD1602显示流程设计154.4 本章小结175 功能仿真及其结果185.1 软件简介185.1.1 KEIL软件简介185.1.2 PPOTUES ISIS简介185.2 仿真结果与操作说明185.2.1 系统总体仿真185.2.2 系统的操作说明195.3 加减乘除四则运算显示结果205.4 计算器扩展功能的实现225.4.1 三角函数的实现225.4.2 对数和指数函数的实现235.4.3 平方根与倒数以及余数的实现255.5 本章小结26结 论27致 谢28参 考 文 献29 1 绪论随着科技的日益更新,嵌入式系统与我们的生活愈发息息相关,一些能够使用单片机完成的工具也频繁出现于日常生活中,比如计算器。计算器的出现为我们带来许多便捷,如今运用我们所学知识,也能够做出简单的计算器。本文便是讲述了如何使用所学来设计一个计算器。1.1 计算器的简介简易计算器是一种生活中必不可少的计算工具,大生活中所用的简易计算器大多由控制器、运算器、存储器、显示屏等组成。一台简易计算器能够实现基本的加减乘除四则运算。除了结果显示这一功能之外,大多数计算器为了降低出错率和提高效率,都加入了错误提示和复位按键。计算器的出现使我们的生活效率更加!由于它的简单便捷,日常生活中的计算已经少不了它。1.2 单片机的简介与发展趋势单片机是把CPU和其他相关外设都高度集中在单个芯片上的微型计算机。通常芯片内包括CPU、ROM、RAM、并行I/O口、串行口、定时/计数器、中断控制系统、系统时钟及系统总线等1。单片机一词来源于“Single Chip Microcomputer”(SCM)。单片机由于它的高度集成,可以算是微型机的重要代表。从小的方面讲,一台单片机与一台计算机在功能方面大致相同。单片机主要有以下特点:(1) 性价比高。(2) 体积小、集成度高、抗干扰性好、可靠性较强。单片机内部高度集成,采用总线结构的方式使其具有很强的抗干扰性与可靠性。另外,由于体积小,适合大部分恶劣环境下操作,如强磁场环境,单片机就比较方便采取屏蔽措施。(3) 控制功能强。单片机有工业标准需求,单片机拥有丰富的转移指令系统,I/O口的逻辑操作以及位处理功能。单片机的处理速度和控制功能均好于一般微机。(4) 低功耗、低电压,广泛用于生产各类生活常用产品或者便携式产品。(5) 方便扩展,可以在单片机的基础上扩展各种规模的系统。单片机作为嵌入式计算机系统的核心,实时控制将成为它的主要发展方向。不断提高的控制性能,成本的降低,体积的减小以及可靠性和稳定性的提高,将逐步取代传统的纯电路的电子控制系统2。单片机技术的飞速发展,也极大地推动了嵌入式系统的发展。1.3 设计的目的与意义由于单片机特点的多样性,它已经在成为了工业科技领域一个重要的力量。本次设计的计算器虽然结构简单,但它却是生活中必不可少的工具,在日常计算中,它的地位不可取代。我们所学四年,现将知识运用到生活中的部分,这一点很有必要。本次设计需要系统的梳理单片机的知识,内部电路,接口电路和其他相关扩展方面的知识。同时,在选材时,也需要合理。一次简单的设计就是一个系统化的过程,这在平时的学习生活中是可遇不可求的。这次简易计算器的设计,使我掌握了单片机的理论知识,并且我也知道如何将理论与实际联系,知道如何用软件分析实际硬件电路。这次设计为我以后在这项工作方面打下了坚实的基础。2 简易计算器的设计实现简易计算器主要用于计算一般的加、减、乘除四则算数,虽功能简单,但它让然活跃在我们生活当中。简易计算器的使用不仅是的运算时间缩短,挺高了工作的效率,还大大减少了计算的出错率,给我们的生活带来便捷。如今,想要设计一款计算器有很多种方法,在了解计算器各部分组成之后,我们通过各种方案的对比,选择出最合适的一种方案。2.1 计算器系统模块我们已经知道计算器主要由核心控制器,键盘,显示器组成,它的系统框图如图2.1所示。我们可以根据设计需求选择各部分元器件。显示电路电源键盘核心控制器图2.1 计算器系统框图2.2 核心控制器选择方案一:选择专用计算器芯片做核心控制器,进行设计编程。运用这个芯片虽然在处理速度方面有不俗的表现,但同时成本也相对较高,并且本人不熟悉此芯片,还不足以用它来实现计算器的功能,对设计增加了难度,因此不可取。方案二:单片机作为核心控制器。由于单片机内部集成了运算器电路、控制器电路、存储器电路等,并且单片机是可编程器件,它成本低,技术成熟,运用广泛,编程操作简单。综上所述,核心控制器选择单片机。2.3 显示电路的设计选择方案一:选用数码管做显示。采用数码管显示,程序简单,同时它对外界环境要求低,显示很直观。但是由于它只能显示一些代码和数字,并且硬件电路复杂。这个局限性很不方便以后的扩展,因此数码管电路在本次设计中不可取。方案二:选用LCD1602显示,LCD1602显示效果好,与单片机硬件连接电路简单,而且它的编程指令简单易懂。能够显示丰富的字符,方便做扩展,并且成本低功耗低。相比于LED显示。综上所述,本次设计选择LCD1602作为显示模块。2.4 键盘设计方案选择方案一:选用独立键盘。在独立键盘中,一个按键需要连接一个相应I/O口。在按键数量不多时,这个方法简单易行,然而计算器需要使用的按键众多,显然用独立键盘会浪费较多I/O口,不可取。但是进行后期扩展时,会增加几个新的按键,此时,使用独立键盘,则十分便捷。方案二:选用矩阵键盘。矩阵键盘在需要多个按键时结构相对,编程方法足够成熟。比起独立键盘,矩阵键盘能够节约I/O口,本次设计需要用的按键较多,如果使用独立按键则需要至少16个I/O口。相对而言,独立键盘比较浪费I/O口。因此本次设计的输入选用矩阵键盘。这样做硬件电路相对简单,且方便日后扩展。综上所述,键盘输入部分选择矩阵键盘,而后期扩展时,选择独立键盘。2.4.1 按键消抖方案选择方案一:硬件消抖。硬件消抖主要通过外部电路来稳定按键消除按键抖动,比较常用的硬件消抖方法是在电路中加入RS触发器。RS触发器可以将有抖动的电压波形转换成正规的矩形波。这种方法在对按键较少的情况下可以使用,但本次设计按键需求多,RS触发器无疑增加了成本与功耗,也会使电路连接变复杂。方案二:软件消抖。软件消抖就是在按键闭合检测之后执行一个延时子程序,产生一个5ms10ms的延时,让前沿抖动之后再次检测按键的状态,如果按键依旧保持闭合时的电平状态,则肯定有按键按下。当检测到按键释放后,同样也要给一个5ms10ms的延时,等待后沿抖动消失后再转入到该键的处理程序中,执行后续操作。 在本次按键较多的情况下,我们采用软件消抖的方法。综上所述,本次设计采用软件消抖的方法。2.5 本章小结经过对各个模块方案的详细对比,我们最终选择单片机作为核心控制部分;矩阵键盘作为输入部分,独立键盘作为扩展部分按键,考虑案件数量以及电路复杂程度,选择软件消抖的方法,减少了按键出错率;LCD1602液晶作为显示器。这样合理使用了各个元器件,在能够达成目标的同时节约了成本。且所需元器件皆为本人所学,设计起来也方便快捷易出成果。3 硬件电路设计硬件电路主要分为单片机最小系统电路模块,键盘输入电路模块,LCD1602显示电路模块等。3.1 单片机介绍大家熟知的是51系列单片机,因此本次设计采用51系列单片机,为了配合仿真,最终采用AT89C52单片机。AT89C52与MCS-51系列单片机所用指令完全兼容。AT89C52是一种高性能,低电压并且带有8K字节FLASH只读存储器的CMOS8位微处理器。AT89C52是一种高效低功耗的单片机,凭借其高度的灵活性,低廉的价格,它广泛用于工业设计,它的引脚如图3.1所示。图3.1 单片机引脚3.1.1 AT89C52管脚说明(1)VCC:+5V电压。(2)GND:接地端口。(3)I/O接口:第一功能:P0、P1、P2、P3、P4,四个通用双向8位接口,可以通过程序控制,按字节输入/出,或者按位输入/出。第二功能:当CPU对片外存储器读/写操作时,P0,P2作为地址与数据总线,P3口的各位都具有第二功能。1)P0口在对片外数据数据操作时,作为地址和数据线使用。由于P0口的这个特点,需片外接一个8个锁存器。2)P1口是一个8位双向I/O口,它内部提供上拉电阻。P1口管脚写入高电平之后,内部上拉为高,此时可用作输入;当P1口被外部下拉为低电平时,由于内部上拉,将输出电流。P1口在FLASH编程和校验时将接收低8位地址。3)P2口为准双向I/O口,口对片外存储器操作时将输出高八位地址(A8A15)。4)P3口也可作为AT89C52的一些特殊功能口,如表3.2所示。表3.2 P3口的第二功能引脚名称作用P3.0RXD串行输入端口P3.1TXD串行输出端口P3.2外中断0P3.3外中断1P3.4T0定时器0外部输入P3.5T1定时器1外部输入P3.6外部数据存储器写选通P3.7外部数据存储器读选通RST:复位输入。ALE/PROG:为地址锁存控制输入端/编程脉冲,有两种功能。PSEN:程序存储器读选通输出。单片机从外部存储器取数时,将在PSEN输出低电平,选通ROM。EA/VPP:是访问程序存储器控制输入端/编程电压,有两种功能。XTAL1:作为振荡器的倒向放大器的输入及内部时钟工作电路的输入4。XTAL2:作为反向振荡器的输出。3.2 单片机最小系统单片机最小系统主要由单片机,晶振电路,复位电路组成,单片机正常工作需要依赖最小系统的支持。本次选择自带ROM的AT89C52单片机,省去了单片机没有自带ROM,还必须要接外部ROM扩展电路的麻烦。选择AT89C52单片机时,EA端口须接高电平(+5V)。对于需要使用片外存储器的单片机,EA必须接地。一般单片机最小系统如图3.3所示。图3.3 单片机的最小系统组成3.2.1 复位电路复位是单片机的初始化操作,其功能是把系统初始化。当系统由于非正常操作而处于死锁状态时,为恢复正常工作状态,也需要复位重启。RST引脚用于输入单片机的复位信号,RST复位高电平有效。在时钟电路工作后,在RST引脚应出现宽度不小于2个机器周期的高电平信号,单片机才会进入复位状态,此时,如果RST一直处于高电平状态,那么单片机也会一直处于复位状态。复位操作有自动复位和手动复位两种方式。自动复位是通过外部复位电路的电容上电来实现的,也称上电复位。按键电平复位是通过使复位端经电阻与Vcc电源接通而实现的,按键电平复位也称为开关复位。目前,一些结构简单的系统中,单片机都采用按键电平复位的方式,此方式方便快捷。本次设计便采用这种方式,其复位电路如图3.4。图3.4 复位电路3.2.2 时钟电路单片机的时钟电路用于产生工作所需要的时钟信号,主要是片内外振荡电路。单片机内部有一个复杂的同步时序电路。电路应在唯一的时钟信号控制下按时序进行工作以实现同步工作的方式。在AT89C52芯片内部有一个高增益反相放大器,它用来构成稳定振荡器。它的输入端为芯片引脚为XTAL1,输出端为引脚XTAL2。在芯片的外部跨接晶体振荡器和两个的微调电容,形成反馈电路,X1为晶振,构成了一个稳定的自激振荡器7。时钟电路如图3.5所示。图3.5 时钟电路3.3 显示模块设计LCD是一种工业型字符液晶,它能够显示32个字符(16列2行),工作电压为3.3V或5V,对比度可自行调节,LCD的内部内部含有复位电路,用来提供各种控制命令,如:清屏、字符闪烁、光标闪烁、显示移位等多种功能。由于LCD1602功耗低、体积小、显示多样,常用在微型仪表和低功耗应用中。市面上字符液晶绝大多数是基于HD44780液晶芯片,LCD1602控制原理也基于HD44780。LCD1602采用标准14脚(无背光)或16脚(有背光)接口,它的管脚如图3.6所示。图3.6 LCD的管脚LCD1602各个管脚说明如表3.7所示。表3.7 LCD各管脚说明编号引脚引脚说明编号引脚引脚说明1VSS接地9D2数据2VDD电源正极10D3数据3VL显示偏压11D4数据4RS数据/命令12D5数据5R/W读/写13D6数据6E使能信号14D7数据7D0数据15BLA背光源正极8D1数据16BLK背光源负极第1脚:VSS接地电源。第2脚:VDD接3.3V或5V正电源。第3脚:VL端可以用来调整液晶对比度,接正电源时对比度最弱,接地时对比度最高。第4脚:RS端为寄存器选择端口,高电平时为数据寄存器、低电平时则是指令寄存器。第5脚:R/W为读写信号端口,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据4。第6脚:E端口为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第714脚:D0D7为8位双向数据线。第15脚:背光正极。第16脚:背光负极。液晶与单片机的连接电路如图3.8所示。图3.8 LCD与单片机的链接图3.4 按键模块设计键盘有独立键盘和矩阵键盘。本次设计需要的按键较多,如果使用独立键盘会占用较多的I/O口。因此,本次输入键盘设计采用矩阵键盘。矩阵键盘的按键设置在键盘行列线交点上,行列线分别连接到按键开关两端。行线通过上拉电阻接到+5V的电源上。当没有键按下时,行线处于高电平的状态;而当有按键按下时,行线电平则由与此行线相连的列线电平决定。运用行列扫描法可以确定按键具体位置,从而得到按键数值。键盘部分的设计如图3.9所示。图3.9 矩阵按键输入如图3.9所示,按键输入采用4*4矩阵键盘,键盘接在单片机的P2口,可以看出16个按键共用8个I/O,相对较节约I/O口。本人在简易计算器的基础上还增加了一键多用的功能。键盘中除了包含“09”数字键,“+”“-”“”“”运算键以及“.”之外,还包括了三角函数,指数函数,开根,求余数,倒数等,为了实现这一个复用功能,需要进行按键的扩展。此时,则需要几个独立按键做扩展使用。独立按键的设计如图3.10所示。图3.10 独立复用按键由3.10图可知,四个独立按键各有功能,从左往右分别是:清除键,用于清楚所有数据;删除键,用来撤销错误输入;保存数据键,用来存储结果数据;计算器复用功能键,用来对矩阵键盘进行复用。3.5 本章小结本章主祝要介绍了计算器各个主要硬件模块,包括:单片机最小系统,显示模块,键盘电路,以及一些扩展方面的设计方案。4 软件设计软件设计部分主要介绍计算器个模块的软件设计流程。设计统一采用C语言编程,C语言功能强大,同时具有高级语言和汇编语言的特点,并且可以直接对硬件进行操作。C语言运算符和数据类型相当丰富,用C语言配合单片机来进行计算器设计相当便捷。4.1 系统总设计流程系统总流程图如图4.1所示。图4.1 系统运行总流程图如图4.1所示,系统主要主要由主程序、按键输入子程序、显示子程序、运算部分组成。主程序主要完成初始化功能;液晶主要负责显示输入数据和输出结果的工作;按键主要负责键入数据,进行数据运算。系统进入工作时首先进行初始化工作,之后系统将在循环以下这一过程:显示,按键扫描,键码处理,检测输入数据是否能够正确进行运算处理,如果数据正确则进行数据运算,反之,则返回到按键,重新扫描。4.2 按键程序流程设计按键模块的的子程序执行流程为:首先需要进行行列按键扫描,此时需要一个按键消抖的过程,然后确定按键位置,在进入对应键码内的数据进行处理。按键模块子程序流程图如图4.2所示。图4.2 按键扫描流程键盘扫描子程序,首先读出I/O口低四位,然后读出I/O口高四位,键值并显示缓存。然后将键如的值转换为ASCII码然后就可以软件来设置硬件按键各个键代表的内容。读键程序使用行列扫描法。流程图中的消除抖动所用就是软件消抖的方法。软件消抖所用到的延时函数如下:/*延时*/void delay(uchar z) uchar x,y; for(x=z;x0;x-) for(y=100;y0;y-);4.3 LCD1602显示流程设计当按键键入数值和结果显示时,都需要用到LCD1602作为显示屏,LCD1602显示流程如图4.3所示。图4.3 显示流程图由图4.3可以很清楚地看出LCD1602的显示流程。显示模块程序首先要对显示模块进行初始化,然后控制光标的位置。定义液晶显示的控制端口,用sbit指令完成;然后设置清屏、开关显示、归位、显示位置的首地址等等。相关的代码如下:/*lcd*/sbit lcdrs=P37; /LCD控制脚sbit lcdrw=P36;sbit lcden=P35; /*液晶初始化*/void init(void ) write_com(0x38); /模式:8位数据,两行,5*7字体 write_com(0x0c); /开显示,无光标 write_com(0x06); /向左增量移动 write_com(0x01); /清屏/*写命令*/void write_com(uchar com) lcdrs=0; lcdrw=0; lcden=0; P1=com; delay(5); /延时函数 lcden=1; delay(5); lcden=0;/*写数据*/void write_date(uchar date) lcdrs=1; lcdrw=0; lcden=0; P1=date; delay(5); lcden=1; delay(5); lcden=0; /*读AC 地址*/ void read_date(void)lcdrs=0;lcdrw=1;delay(5);P1=0xff;lcden=1;delay(5);state=P1;delay(5);lcden=0;delay(5);state=state&127; 4.4 本章小结本章主要介绍计算器各个模块详细的运行流程,包括系统流程图,按键程序流程图,LCD显示流程图等。计算器的程序主要包括以下模块: 读键程序、判断按键程序段、运算操作子程序等部分;LCD显示程序模块;主程序模块,对整个系统进行初始化。C语言模块化的特点使得这些程序模块条理清晰。与此同时,为了挺高整个系统的有效性,加入了复位按键,错误提示报警等。5 功能仿真及其结果根据各个模块介绍以及软件设计流程图,进行硬件仿真,从而达到计算器的基本功能,并且在此基础上进行功能扩展。5.1 软件简介5.1.1 KEIL软件简介KEIL C51是基于51系列单片机为内核的,由美国KEIL Software公司研制的一款智能、实用的开发系统软件。KEIL C51为80C51系列的单片机不但提供了C语言编译环境,而且也保留了汇编环境。uVision2是由KEIL Software公司研制的51系列兼容单片机C语言软件开发工具,uVision2的集成开发环境囊括了:汇编器、编译器、实时操作系统、调试器和项目管理器。uVision2可以为用户提供一个单一而又方便的开发环境。5.1.2 PPOTUES ISIS简介PROTUES软件是由英国Labcenter Electronics公司研发的EDA系统设计工具软件,它可以帮助设计者进行电路分析和仿真。该软件包含其它EDA工具软件的仿真功能,而且还可以仿真单片机和外围电路。PROTUES不仅是当今最好的单片机和外围电路仿真的工具软件,而且还提供设计、仿真数字电路和分析、模拟电路及模/数混合电路的平台,真正的实现了从概念到产品的完整设计。PROTUES可以仿真51系列、PIC和AVR等主流单片机。该软件可以直接在原理图的虚拟原型上进行编译,然后配合显示和输出可以看到仿真的结果。ISIS是一款操作智能、简便,可完成系统仿真的实用软件。5.2 仿真结果与操作说明5.2.1 系统总体仿真本系统以AT89C52单片机为核心,选用11.0592MHz的晶振,利用液晶和键盘来做计算器设计,应用范围广泛而且方便实用。通过Proteus仿真环境,keil编程环境的支持,用主程序初始化系统,其他程序模块化选择的方式,进行软件调试,当各个模块都调试成功之后,添加入主程序,最后完成计算器的设计。本设计应当达到一般计算器所具有的加、减、乘、除四则运算功能,并且在此基础上拥有一定的扩展。因此,本设计需要优化硬件电路的设计,减少串口的使用,合理的分配单片机硬件资源,在保证计算器功能正常实现的同时还需要保证计算器拥有一定的抗干扰性。根据模块需求以及计算器的工作流程基本确定计算器总体的仿真设计图,系统的总体仿真图如图5.1所示。图5.1 总体仿真图仿真图中的硬件分配:(1)P1口与P3.6、P3.7口:为输出端口,连接LCD1602的D0D7,显示数据。(2)P2口:为输入端口,与4*4矩阵键盘连接,实现计算器的按键输入。(3)P3.0P3.3口:连接4个独立按键,做计算器的扩展使用。整个计算器包括键盘电路与显示电路。运用C语言math.h函数库可以在软件方面实现四则运算,并通过KEIL软件编程生成hex文件,然后通过PROTEUS中单片机链接hex文件,从而使整个仿真系统工作。根据硬件仿真和软件语言编程,系统基本完成了简易计算器的功能,并且在此基础上进行了功能扩展。下面分别介绍所取得的研究成果。5.2.2 系统的操作说明(1) 开机默认LCD1602显示屏亮起并显示本人信息,做屏保使用,按清除键可清除信息做计算器使用,如图5.2所示。图5.2 开机显示(2)计算器:09和.为数字按键;“”“”“”“”为运算符号;C 是清除键,也做计算器复位使用;DEL是删除键,用于撤销上次键入的错误数据,可以连续按DEL进行连续撤销;M+键用于存储上次计算的数据和结果,按一次M+输出上次结果,按TS&S 后再按此键可以输出数据。如果以M+TS&SM+的顺序按下键盘,那么M+中的数据将会更新;TS&S键为复用键,先按下TS&S,再按下数字上标明的函数即可进行函数运算。(3)运算格式:(符号)A 运算符(符号)B格式中A、B是运算数据,可以是键入的数字,也可以是函数或者M+中的数据;符号即+、-号,可以随意添加减;如果本次计算没有按等号键而是继续按运算符,则结果会显示,成为下次运算的A运算符,通过这种按键方式可以进行连续运算。函数说明:Func (符号)C,Func为函数,符号为+、-,C只能是数字、M+或者是。函数主要包括:1)sin 正弦函数2)Cos 余弦函数3)tan 正切函数4)exp 以e为底的指数函数5)ln 自然对数值6)lg 以10为底的对数7)sqrt 平方根8)dao 倒数9) 圆周率,可以带加权10)度 角度输入11)xy x的y次方12)f% A/B的余数(双精度)5.3 加减乘除四则运算显示结果上面已经提到,在系统编程语句中加入C语言“math.h”库函数,使得数学计算能够很容易实现。图5.3 加法的实现如图5.3所示,数据计算时将两个数据分别列于LCD液晶屏的第一行和第二行,出结果时,液晶屏会在第一行显示结果。这样做的目的主要是为了在运算位数较多的数据时,显示更加直观。如图5.4所示,本次设计的显示方法相当直观。图5.4 减法的实现如图5.4所示,和加法一样,减法也能够实现,并且能够显示负数结果。计算结果10-6106以内以f%方式显示,超过范围以e%方式显示,保留有六位有效数字,但是计算结果范围不能超过10-381038。乘法与除法都能够通过相同的操作,进行计算。如图5.5和5.6所示。图5.5 乘法的实现图5.6 除法的实现如图5.5所示,除法已经可以实现,精确到小数点后5位。本次设计的计算器已经可以完成带有小数点数据的运算,小数点运算同样适用于加减法和乘法计算。5.4 计算器扩展功能的实现完成基本的四则运算之后,考虑扩展问题,简易计算器的扩展主要是面向科学计算器发展。因此,除了实现加减乘除四则运算,设计出能够完成一些如三角函数运算的计算器也是计算器设计的目的。本次设计的扩展部分上面已经提到,包括三角函数,指数函数,对数函数,sqrt 平方根,倒数等。经过仿真以及C语言代码编程,上述函数已经可以实现。当我们需要进行按键复用时,按下TS&S键,此时,液晶屏左下角会出现复用标志,如图5.7所示。图5.7按键复用标志按下TS&S复用键,屏幕左下角出现“S”标志,再按一次可以复用的函数按键,即可在原计算器基础上进行一些扩展运算。因为C语言强大的math.h库函数,使得三角函数可以很方便的执行。下面来介绍扩展部分的运算情况。5.4.1 三角函数的实现C语言math.h库函数也能够实现三角函数,需要注意的是输入的数据要注意的是角度数据。要运算三角函数要先按一下复用键,然后再输入三角函数,再输入数字,然后在按下复用键输入角度。我们以60角为例,来计算三角函数三角函数的运算。计算结果如图5.85.11所示。图5.8 sin60计算图5.9 cos60计算图5.10 tan60计算以上三个结果基本完成了计算器三角函数的实现,在每次运算结束时,可以按C键进行清零进行下一次运算。5.4.2 对数和指数函数的实现实现三角函数功能之后,再进行下一步的函数运算展示。下面就介绍对数函数在此设计中的实现。计算器已经可以完成“lg”、“ln”和“exp”函数的计算。图5.11 lg100的计算图5.12 ln的计算这里的就是一个数字,因为e,所以此程序可以运行,而当计算ln0时,程序便会报错,液晶会显示“error!”如图5.13所示。图5.13 ln0报错只要程序输入无法计算,计算器便都会报错,适用于整个计算器系统,这样做提高了运算效率。图5.14表示exp指数函数的计算。图5.14 exp函数计算5.4.3 平方根与倒数以及余数的实现平方根与倒数也都可以在该计算器中实现。如图5.15和5.16所示。图5.15 开根号计算开根号后数据为无穷小数时,保存到小数点后5位。图5.16显示了倒数的计算。图5.16 倒数计算除此之外,计算器还支持求余数计算,我们以6%5为例。计算结果如图5.17所示。图5.17 6%5余数计算由以上截图可知,本次设计的计算器已经可以完成大部分基本功能,扩展部分也基本能够达到要求。5.5 本章小结本章主要介绍了系统仿真功能以及结果展示,在完成基本四则运算以及带小数点计算功能的同时,扩展部分函数也基本能够实现。结 论本次设计是基于单片机的计算器设计,在完成基本的四则运算之后,在此基础进行了一定的功能扩展。计算器以矩阵键做数据输入,4个独立按键做多功能按键,LCD1602作为显示输出,AT89C52单片机作为系统核心进行控制。计算器能够实现14位以内的浮点数运算和1012位浮点数函数运算,具有撤销操、复位、连续计算、角度转换等功能。计算结果10-6106以内以f%方式显示,超过范围以e%方式显示,保留有六位有效数字,但是计算结果范围不能超过10-381038。本次毕业设计使我清楚的认识到查资料做对比的重要性,完善自己的设计需要经过很多次的修改,查阅相关资料之后会使得效果事半功倍。在完成此次的毕业设计之前,我需要知道计算器大致组成,并且需要了解一些硬软件设计相关概念。在进行硬件电路设计的时侯,需要明白系统需要达到什么标准和拥有的功能,从而根据所需选择合适的芯片,不能盲目的选择价格偏高,功能过剩的单片机,从降低成本考虑,能完成计算功能,并可以进行扩展的单片机芯片足矣。软件设计需要对单片机模块化设计有一个系统的了解,同时也需要对使用的单片机的内部结构以及接口电路有一个很好的了解,在进行编写LCD1602液晶相关代码之前,需要熟悉LCD1602的内部结构和一些常用的代码指令,要有一个清晰的思路。在调试阶段,需要严谨细心,仔细排错找问题,最终得出结果,完成设计。致 谢参 考 文 献1 黄惟公. 单片机原理与应用技术M. 西安:西安电子科技大学出版社,2007.2 三恒星科技. 单片机原理与应用实例M. 北京:电子工业出版社,2007.3 于志赣. 液显LCD1602模块的应用J. 机电技术,2009(3):21-23.4 于永. 单片机C语言实例精讲M. 北京:电子工业出版社, 2008.5 陆应华. 电子系统设计教程M. 北京:国防工业出版社, 2009.6 谭浩强. C程序设计教程M. 北京:清华大学出版社,2007.7 贾立新. 电子系统设计与实践M. 北京:清华大学出版社, 2007 .8 李建忠. 单片机原理及应用M. 西安:西安电子科技大学出版社,2007.9 范爱平. 电子电路实验与虚拟技术M. 济南:山东科学技术出版社, 2002.10 谢自美. 电子线路设计.实验.测试M. 武汉:华中科技大学出版社, 2001.11 王立欣. 电子技术实验与课程设计M. 哈尔滨:哈尔滨工业大学出版社, 2003.12 路勇. 电子电路实验与仿真M. 北京:清华大学出版社, 2003.13 吴建辉. CMOS模拟集成电路分析与设计M. 北京:电子工业出版社, 2004.14 陈金平. 电子系统设计M. 北京:电子工业出版社, 2007.15 徐爱军. 单片机原理实用教程M. 北京:电子工业出版社, 2009.16 姚福安. 电子电路设计与实践M. 山东:山东科学出版社, 2001.17 何立民. 单片机应用系统设计M. 北京:北京航空航天大学出版社, 1990.18 夏继强. 单片机实验与实践教程M. 北京:北京航空航天大学出版社, 2001.19 Kang,Sung-Mo/Leblebici,Yusuf. CMOS Digital Integrated Circuits Analysis and DesignM. McGraw-Hill College, 2002.20 Meehan Joanne,Muir Lindsey. SCM in Merseyside SMEs:Benefits and barriersJ. TQM Journal, 2008.21 Lee Jri.High-Speed Circuit Designs for Transmittersin Broad-band Data LinksJ. IEEE Journal of Solid-State Circuits, 2006(5):566-573. 源码仅供参考。#include reg52.h#include /包含atof(),字符串-实数#include /包含sprintf(),实数-字符串#include /包含strcpy(),字符串复制#include /数学函数头文件#define uchar unsigned char#define uint unsigned intuchar num;/*lcd*/sbit lcdrs=P37; /LCD控制脚sbit lcdrw=P36;sbit lcden=P35;bit form; /lcd显示方式切换uchar idata state; /lcd状态字存储/*计算器*/sbit reset=P30; /计算器复位sbit back=P31; /撤销上次键入键sbit save=P32; /存储键,存储有上次的结果和另外某次计算值bit eqsign; /按等号标志bit press; /键按标志bit savesign; /可存储结果标志bit sc; /复用标志uchar idata process30,proc; /记忆计算过程,以便错误恢复和撤销输入uchar idata continu=0; /连续计算运算符号存储uchar idata pai22; / 前有数据标志uchar idata ferror; /计算检错标志uchar idata ywei; /屏幕移位uchar idata count=0; /输入计数uchar idata count_num=0; /组号计数uchar idata result15; /计算结果立存,saveuchar idata saveresult15;/存储结果数组, sc+saveuchar idata jieguo15; /结果字符串uchar idata bdate214; /待计算字符串二维组uchar idata on_symbol; /运算符号uchar idata fsym2; /函数前符号uchar idata ssym2; /存储组前符号uchar idata bfun2; /计算值调用函数选择uchar idata futojiao2; /幅度 to 角度变换double idata date2; /计算值双精度变量组double idata resultdate; /双精度结果值sbit sfyong=P33; /计算器复用键/*函数声明*/*延时*/void delay(uchar z);/*lcd写命令*/void write_com(uchar com);/*lcd写数据*/void write_date(uchar date);/*lcd读状态*/void read_date(void);/*lcd写字符串*/void write_str(uchar *str);/*液晶初始化*/void init(void );/*移屏*/void write();/*复用提示开关*/void shift(void);/*键盘扫描*/uchar keyscan(void);/*计算器复位*/void fuwei();/*error处理*/void callerror(void);/*撤销键入*/void huifu(void);/*函数组前符号处理*/uchar funqian(void);/*运算符预处理*/void cullars(uchar);/*输出存储数据预处理*/char memory(void);/*按键功能主处理*/void process_date(uchar press_date);/*按键功能子处理*/void calculator(uchar press_date);/*/void write() for(num=0;num0;x-) for(y=100;y0;y-);/*写命令*/void write_com(uchar com) lcdrs=0; lcdrw=0; lcden=0; P1=com; delay(5); lcden=1; delay(5); lcden=0;/*写数据*/void write_date(uchar date) lcdrs=1; lcdrw=0; lcden=0; P1=date; delay(5); lcden=1; delay(5); lcden=0;/*读AC 地址*/void read_date(void) lcdrs=0; lcdrw=1; delay(5); P1=0xff; lcden=1;
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 其他分类 > 大学论文


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!