基于单片机的lcd1602科学计算器设计_第1页
基于单片机的lcd1602科学计算器设计_第2页
基于单片机的lcd1602科学计算器设计_第3页
基于单片机的lcd1602科学计算器设计_第4页
基于单片机的lcd1602科学计算器设计_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

作者学号系电子工程与光电技术系专业电子信息工程题目基于单片机的液晶计算器设计南京理工大学毕业设计(论文)评语学生姓名班级、学号题目基于单片机的液晶计算器设计综合成绩指导者评语指导者签字年月日毕业设计(论文)评语评阅者评语评阅者签字年月日答辩委员会(小组)评语答辩委员会(小组)负责人签字年月日毕业设计说明书(论文)中文摘要本设计是实现一个有四则运算及函数运算的多功能计算器。它的硬件部分包括一个AT89C52单片机芯片,一块LCD1602液晶显示器,一个44的键盘,外加4个功能设置按键。AT89C52单片机为核心控制电路,LCD1602负责显示输入输出数据,利用44矩阵键盘加上一些功能键完成电路的键入操作部分。电路简单,功能齐全。软件部分采用C语言编写,实现了14位浮点数内的加、减、乘、除基本的四则运算,带有SIN、COS、TAN、EXP、LN、LG、倒数、XY、SQRT、FMOD10个常用数学函数运算。这样一个简易的计算器实现了多功能,比较实用和方便。关键字单片机函数C语言显示计算器毕业设计说明书(论文)外文摘要TITLELCDCALCULATORDESIGNBASEDONSINGLECHIPMICROCOMPUTERABSTRACTTHISDESIGNISTOACHIEVEAFOURARITHMETICOPERATIONSANDFUNCTIONMULTIFUNCTIONCALCULATORITSHARDWAREINCLUDESAAT89C52CHIP,ALCD1602LCDDISPLAY,A44KEYBOARD,PLUSFOURFUNCTIONSETTINGBUTTONAT89C52CORECONTROLCIRCUIT,LCD1602ISRESPONSIBLEFORDISPLAYINGTHEINPUTANDOUTPUTDATA,THEUSEOF44MATRIXKEYBOARDFUNCTIONKEYSPLUSSOMETYPINGPARTOFTHECIRCUITISCOMPLETEDCIRCUITISSIMPLEANDFUNCTIONALSOFTWAREWRITTENUSINGCLANGUAGETOACHIEVEAFLOATINGPOINTNUMBERWITHINTHE14PLUS,SUBTRACT,MULTIPLY,ANDDIVIDETHEFOURBASICARITHMETIC,WITHASIN,COS,TAN,EXP,LN,LG,COUNTDOWN,XY,SQRT,FMOD10COMMONLYUSEDMATHEMATICALFUNCTIONSSUCHASIMPLECALCULATORTOACHIEVEAMULTIFUNCTIONAL,ITISPRACTICALANDCONVENIENTKEYWORDSMCUFUNCTIONTHECLANGUAGEDISPLAYCALCULATOR目次1绪论111计算器的简介112单片机的简介与发展趋势113设计的目的与意义22简易计算器的设计实现321计算器系统模块322核心控制器选择323显示电路的设计选择324键盘设计方案选择4241按键消抖方案选择425本章小结43硬件电路设计631单片机介绍6311AT89C52管脚说明632单片机最小系统7321复位电路8322时钟电路933显示模块设计934按键模块设计1135本章小结124软件设计1341系统总设计流程1342按键程序流程设计1443LCD1602显示流程设计1544本章小结175功能仿真及其结果1851软件简介18511KEIL软件简介18512PPOTUESISIS简介1852仿真结果与操作说明18521系统总体仿真18522系统的操作说明1953加减乘除四则运算显示结果2054计算器扩展功能的实现22541三角函数的实现22542对数和指数函数的实现23543平方根与倒数以及余数的实现2555本章小结26结论27致谢28参考文献291绪论随着科技的日益更新,嵌入式系统与我们的生活愈发息息相关,一些能够使用单片机完成的工具也频繁出现于日常生活中,比如计算器。计算器的出现为我们带来许多便捷,如今运用我们所学知识,也能够做出简单的计算器。本文便是讲述了如何使用所学来设计一个计算器。11计算器的简介简易计算器是一种生活中必不可少的计算工具,大生活中所用的简易计算器大多由控制器、运算器、存储器、显示屏等组成。一台简易计算器能够实现基本的加减乘除四则运算。除了结果显示这一功能之外,大多数计算器为了降低出错率和提高效率,都加入了错误提示和复位按键。计算器的出现使我们的生活效率更加由于它的简单便捷,日常生活中的计算已经少不了它。12单片机的简介与发展趋势单片机是把CPU和其他相关外设都高度集中在单个芯片上的微型计算机。通常芯片内包括CPU、ROM、RAM、并行I/O口、串行口、定时/计数器、中断控制系统、系统时钟及系统总线等1。单片机一词来源于“SINGLECHIPMICROCOMPUTER”SCM。单片机由于它的高度集成,可以算是微型机的重要代表。从小的方面讲,一台单片机与一台计算机在功能方面大致相同。单片机主要有以下特点(1)性价比高。(2)体积小、集成度高、抗干扰性好、可靠性较强。单片机内部高度集成,采用总线结构的方式使其具有很强的抗干扰性与可靠性。另外,由于体积小,适合大部分恶劣环境下操作,如强磁场环境,单片机就比较方便采取屏蔽措施。(3)控制功能强。单片机有工业标准需求,单片机拥有丰富的转移指令系统,I/O口的逻辑操作以及位处理功能。单片机的处理速度和控制功能均好于一般微机。(4)低功耗、低电压,广泛用于生产各类生活常用产品或者便携式产品。(5)方便扩展,可以在单片机的基础上扩展各种规模的系统。单片机作为嵌入式计算机系统的核心,实时控制将成为它的主要发展方向。不断提高的控制性能,成本的降低,体积的减小以及可靠性和稳定性的提高,将逐步取代传统的纯电路的电子控制系统2。单片机技术的飞速发展,也极大地推动了嵌入式系统的发展。13设计的目的与意义由于单片机特点的多样性,它已经在成为了工业科技领域一个重要的力量。本次设计的计算器虽然结构简单,但它却是生活中必不可少的工具,在日常计算中,它的地位不可取代。我们所学四年,现将知识运用到生活中的部分,这一点很有必要。本次设计需要系统的梳理单片机的知识,内部电路,接口电路和其他相关扩展方面的知识。同时,在选材时,也需要合理。一次简单的设计就是一个系统化的过程,这在平时的学习生活中是可遇不可求的。这次简易计算器的设计,使我掌握了单片机的理论知识,并且我也知道如何将理论与实际联系,知道如何用软件分析实际硬件电路。这次设计为我以后在这项工作方面打下了坚实的基础。2简易计算器的设计实现简易计算器主要用于计算一般的加、减、乘除四则算数,虽功能简单,但它让然活跃在我们生活当中。简易计算器的使用不仅是的运算时间缩短,挺高了工作的效率,还大大减少了计算的出错率,给我们的生活带来便捷。如今,想要设计一款计算器有很多种方法,在了解计算器各部分组成之后,我们通过各种方案的对比,选择出最合适的一种方案。21计算器系统模块我们已经知道计算器主要由核心控制器,键盘,显示器组成,它的系统框图如图21所示。我们可以根据设计需求选择各部分元器件。图21计算器系统框图22核心控制器选择方案一选择专用计算器芯片做核心控制器,进行设计编程。运用这个芯片虽然在处理速度方面有不俗的表现,但同时成本也相对较高,并且本人不熟悉此芯片,还不足以用它来实现计算器的功能,对设计增加了难度,因此不可取。方案二单片机作为核心控制器。由于单片机内部集成了运算器电路、控制器电路、存储器电路等,并且单片机是可编程器件,它成本低,技术成熟,运用广泛,编程操作简单。综上所述,核心控制器选择单片机。23显示电路的设计选择方案一选用数码管做显示。采用数码管显示,程序简单,同时它对外界环境要求低,显示很直观。但是由于它只能显示一些代码和数字,并且硬件电路复杂。这个局限性很不方便以后的扩展,因此数码管电路在本次设计中不可取。电源核心控制器显示电路键盘方案二选用LCD1602显示,LCD1602显示效果好,与单片机硬件连接电路简单,而且它的编程指令简单易懂。能够显示丰富的字符,方便做扩展,并且成本低功耗低。相比于LED显示。综上所述,本次设计选择LCD1602作为显示模块。24键盘设计方案选择方案一选用独立键盘。在独立键盘中,一个按键需要连接一个相应I/O口。在按键数量不多时,这个方法简单易行,然而计算器需要使用的按键众多,显然用独立键盘会浪费较多I/O口,不可取。但是进行后期扩展时,会增加几个新的按键,此时,使用独立键盘,则十分便捷。方案二选用矩阵键盘。矩阵键盘在需要多个按键时结构相对,编程方法足够成熟。比起独立键盘,矩阵键盘能够节约I/O口,本次设计需要用的按键较多,如果使用独立按键则需要至少16个I/O口。相对而言,独立键盘比较浪费I/O口。因此本次设计的输入选用矩阵键盘。这样做硬件电路相对简单,且方便日后扩展。综上所述,键盘输入部分选择矩阵键盘,而后期扩展时,选择独立键盘。241按键消抖方案选择方案一硬件消抖。硬件消抖主要通过外部电路来稳定按键消除按键抖动,比较常用的硬件消抖方法是在电路中加入RS触发器。RS触发器可以将有抖动的电压波形转换成正规的矩形波。这种方法在对按键较少的情况下可以使用,但本次设计按键需求多,RS触发器无疑增加了成本与功耗,也会使电路连接变复杂。方案二软件消抖。软件消抖就是在按键闭合检测之后执行一个延时子程序,产生一个5MS10MS的延时,让前沿抖动之后再次检测按键的状态,如果按键依旧保持闭合时的电平状态,则肯定有按键按下。当检测到按键释放后,同样也要给一个5MS10MS的延时,等待后沿抖动消失后再转入到该键的处理程序中,执行后续操作。在本次按键较多的情况下,我们采用软件消抖的方法。综上所述,本次设计采用软件消抖的方法。25本章小结经过对各个模块方案的详细对比,我们最终选择单片机作为核心控制部分;矩阵键盘作为输入部分,独立键盘作为扩展部分按键,考虑案件数量以及电路复杂程度,选择软件消抖的方法,减少了按键出错率;LCD1602液晶作为显示器。这样合理使用了各个元器件,在能够达成目标的同时节约了成本。且所需元器件皆为本人所学,设计起来也方便快捷易出成果。3硬件电路设计硬件电路主要分为单片机最小系统电路模块,键盘输入电路模块,LCD1602显示电路模块等。31单片机介绍大家熟知的是51系列单片机,因此本次设计采用51系列单片机,为了配合仿真,最终采用AT89C52单片机。AT89C52与MCS51系列单片机所用指令完全兼容。AT89C52是一种高性能,低电压并且带有8K字节FLASH只读存储器的CMOS8位微处理器。AT89C52是一种高效低功耗的单片机,凭借其高度的灵活性,低廉的价格,它广泛用于工业设计,它的引脚如图31所示。图31单片机引脚311AT89C52管脚说明(1)VCC5V电压。(2)GND接地端口。(3)I/O接口第一功能P0、P1、P2、P3、P4,四个通用双向8位接口,可以通过程序控制,按字节输入/出,或者按位输入/出。第二功能当CPU对片外存储器读/写操作时,P0,P2作为地址与数据总线,P3口的各位都具有第二功能。1P0口在对片外数据数据操作时,作为地址和数据线使用。由于P0口的这个特点,需片外接一个8个锁存器。2P1口是一个8位双向I/O口,它内部提供上拉电阻。P1口管脚写入高电平之后,内部上拉为高,此时可用作输入;当P1口被外部下拉为低电平时,由于内部上拉,将输出电流。P1口在FLASH编程和校验时将接收低8位地址。3P2口为准双向I/O口,口对片外存储器操作时将输出高八位地址A8A15。4P3口也可作为AT89C52的一些特殊功能口,如表32所示。表32P3口的第二功能引脚名称作用P30RXD串行输入端口P31TXD串行输出端口P32INT0外中断0P331外中断1P34T0定时器0外部输入P35T1定时器1外部输入P36WR外部数据存储器写选通P37D外部数据存储器读选通RST复位输入。ALE/PROG为地址锁存控制输入端/编程脉冲,有两种功能。PSEN程序存储器读选通输出。单片机从外部存储器取数时,将在PSEN输出低电平,选通ROM。EA/VPP是访问程序存储器控制输入端/编程电压,有两种功能。XTAL1作为振荡器的倒向放大器的输入及内部时钟工作电路的输入4。XTAL2作为反向振荡器的输出。32单片机最小系统单片机最小系统主要由单片机,晶振电路,复位电路组成,单片机正常工作需要依赖最小系统的支持。本次选择自带ROM的AT89C52单片机,省去了单片机没有自带ROM,还必须要接外部ROM扩展电路的麻烦。选择AT89C52单片机时,EA端口须接高电平(5V)。对于需要使用片外存储器的单片机,EA必须接地。一般单片机最小系统如图33所示。图33单片机的最小系统组成321复位电路复位是单片机的初始化操作,其功能是把系统初始化。当系统由于非正常操作而处于死锁状态时,为恢复正常工作状态,也需要复位重启。RST引脚用于输入单片机的复位信号,RST复位高电平有效。在时钟电路工作后,在RST引脚应出现宽度不小于2个机器周期的高电平信号,单片机才会进入复位状态,此时,如果RST一直处于高电平状态,那么单片机也会一直处于复位状态。复位操作有自动复位和手动复位两种方式。自动复位是通过外部复位电路的电容上电来实现的,也称上电复位。按键电平复位是通过使复位端经电阻与VCC电源接通而实现的,按键电平复位也称为开关复位。目前,一些结构简单的系统中,单片机都采用按键电平复位的方式,此方式方便快捷。本次设计便采用这种方式,其复位电路如图34。图34复位电路322时钟电路单片机的时钟电路用于产生工作所需要的时钟信号,主要是片内外振荡电路。单片机内部有一个复杂的同步时序电路。电路应在唯一的时钟信号控制下按时序进行工作以实现同步工作的方式。在AT89C52芯片内部有一个高增益反相放大器,它用来构成稳定振荡器。它的输入端为芯片引脚为XTAL1,输出端为引脚XTAL2。在芯片的外部跨接晶体振荡器和两个的微调电容,形成反馈电路,X1为晶振,构成了一个稳定的自激振荡器7。时钟电路如图35所示。图35时钟电路33显示模块设计LCD是一种工业型字符液晶,它能够显示32个字符(16列2行),工作电压为33V或5V,对比度可自行调节,LCD的内部内部含有复位电路,用来提供各种控制命令,如清屏、字符闪烁、光标闪烁、显示移位等多种功能。由于LCD1602功耗低、体积小、显示多样,常用在微型仪表和低功耗应用中。市面上字符液晶绝大多数是基于HD44780液晶芯片,LCD1602控制原理也基于HD44780。LCD1602采用标准14脚(无背光)或16脚(有背光)接口,它的管脚如图36所示。图36LCD的管脚LCD1602各个管脚说明如表37所示。表37LCD各管脚说明编号引脚引脚说明编号引脚引脚说明1VSS接地9D2数据2VDD电源正极10D3数据3VL显示偏压11D4数据4RS数据/命令12D5数据5R/W读/写13D6数据6E使能信号14D7数据7D0数据15BLA背光源正极8D1数据16BLK背光源负极第1脚VSS接地电源。第2脚VDD接33V或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脚背光负极。液晶与单片机的连接电路如图38所示。图38LCD与单片机的链接图34按键模块设计键盘有独立键盘和矩阵键盘。本次设计需要的按键较多,如果使用独立键盘会占用较多的I/O口。因此,本次输入键盘设计采用矩阵键盘。矩阵键盘的按键设置在键盘行列线交点上,行列线分别连接到按键开关两端。行线通过上拉电阻接到5V的电源上。当没有键按下时,行线处于高电平的状态;而当有按键按下时,行线电平则由与此行线相连的列线电平决定。运用行列扫描法可以确定按键具体位置,从而得到按键数值。键盘部分的设计如图39所示。图39矩阵按键输入如图39所示,按键输入采用44矩阵键盘,键盘接在单片机的P2口,可以看出16个按键共用8个I/O,相对较节约I/O口。本人在简易计算器的基础上还增加了一键多用的功能。键盘中除了包含“09”数字键,“”“”“”“”运算键以及“”之外,还包括了三角函数,指数函数,开根,求余数,倒数等,为了实现这一个复用功能,需要进行按键的扩展。此时,则需要几个独立按键做扩展使用。独立按键的设计如图310所示。图310独立复用按键由310图可知,四个独立按键各有功能,从左往右分别是清除键,用于清楚所有数据;删除键,用来撤销错误输入;保存数据键,用来存储结果数据;计算器复用功能键,用来对矩阵键盘进行复用。35本章小结本章主祝要介绍了计算器各个主要硬件模块,包括单片机最小系统,显示模块,键盘电路,以及一些扩展方面的设计方案。4软件设计软件设计部分主要介绍计算器个模块的软件设计流程。设计统一采用C语言编程,C语言功能强大,同时具有高级语言和汇编语言的特点,并且可以直接对硬件进行操作。C语言运算符和数据类型相当丰富,用C语言配合单片机来进行计算器设计相当便捷。41系统总设计流程系统总流程图如图41所示。开始系统初始化显示初始化按键扫描键码处理输入计算格式正确运算处理Y显示返回报错N图41系统运行总流程图如图41所示,系统主要主要由主程序、按键输入子程序、显示子程序、运算部分组成。主程序主要完成初始化功能;液晶主要负责显示输入数据和输出结果的工作;按键主要负责键入数据,进行数据运算。系统进入工作时首先进行初始化工作,之后系统将在循环以下这一过程显示,按键扫描,键码处理,检测输入数据是否能够正确进行运算处理,如果数据正确则进行数据运算,反之,则返回到按键,重新扫描。42按键程序流程设计按键模块的的子程序执行流程为首先需要进行行列按键扫描,此时需要一个按键消抖的过程,然后确定按键位置,在进入对应键码内的数据进行处理。按键模块子程序流程图如图42所示。开始初始化显示参数输入列扫描信号列扫描信号移位读入行信号有键键入列扫描完返回按照行列计算键值得出键码按键消抖等待按键释放返回YNNY图42按键扫描流程键盘扫描子程序,首先读出I/O口低四位,然后读出I/O口高四位,键值并显示缓存。然后将键如的值转换为ASCII码然后就可以软件来设置硬件按键各个键代表的内容。读键程序使用行列扫描法。流程图中的消除抖动所用就是软件消抖的方法。软件消抖所用到的延时函数如下/延时/VOIDDELAYUCHARZUCHARX,YFORXZX0XFORY100Y0Y43LCD1602显示流程设计当按键键入数值和结果显示时,都需要用到LCD1602作为显示屏,LCD1602显示流程如图43所示。开始初始化显示参数关位显示取显示数据输出段码数据输出选通信号延时位选通信号移位指向下一个显示数据2位完成返回NY图43显示流程图由图43可以很清楚地看出LCD1602的显示流程。显示模块程序首先要对显示模块进行初始化,然后控制光标的位置。定义液晶显示的控制端口,用SBIT指令完成;然后设置清屏、开关显示、归位、显示位置的首地址等等。相关的代码如下/LCD/SBITLCDRSP37/LCD控制脚SBITLCDRWP36SBITLCDENP35/液晶初始化/VOIDINITVOIDWRITE_COM0X38/模式8位数据,两行,57字体WRITE_COM0X0C/开显示,无光标WRITE_COM0X06/向左增量移动WRITE_COM0X01/清屏/写命令/VOIDWRITE_COMUCHARCOMLCDRS0LCDRW0LCDEN0P1COMDELAY5/延时函数LCDEN1DELAY5LCDEN0/写数据/VOIDWRITE_DATEUCHARDATELCDRS1LCDRW0LCDEN0P1DATEDELAY5LCDEN1DELAY5LCDEN0/读AC地址/VOIDREAD_DATEVOIDLCDRS0LCDRW1DELAY5P10XFFLCDEN1DELAY5STATEP1DELAY5LCDEN0DELAY5STATESTATE44本章小结本章主要介绍计算器各个模块详细的运行流程,包括系统流程图,按键程序流程图,LCD显示流程图等。计算器的程序主要包括以下模块读键程序、判断按键程序段、运算操作子程序等部分;LCD显示程序模块;主程序模块,对整个系统进行初始化。C语言模块化的特点使得这些程序模块条理清晰。与此同时,为了挺高整个系统的有效性,加入了复位按键,错误提示报警等。5功能仿真及其结果根据各个模块介绍以及软件设计流程图,进行硬件仿真,从而达到计算器的基本功能,并且在此基础上进行功能扩展。51软件简介511KEIL软件简介KEILC51是基于51系列单片机为内核的,由美国KEILSOFTWARE公司研制的一款智能、实用的开发系统软件。KEILC51为80C51系列的单片机不但提供了C语言编译环境,而且也保留了汇编环境。UVISION2是由KEILSOFTWARE公司研制的51系列兼容单片机C语言软件开发工具,UVISION2的集成开发环境囊括了汇编器、编译器、实时操作系统、调试器和项目管理器。UVISION2可以为用户提供一个单一而又方便的开发环境。512PPOTUESISIS简介PROTUES软件是由英国LABCENTERELECTRONICS公司研发的EDA系统设计工具软件,它可以帮助设计者进行电路分析和仿真。该软件包含其它EDA工具软件的仿真功能,而且还可以仿真单片机和外围电路。PROTUES不仅是当今最好的单片机和外围电路仿真的工具软件,而且还提供设计、仿真数字电路和分析、模拟电路及模/数混合电路的平台,真正的实现了从概念到产品的完整设计。PROTUES可以仿真51系列、PIC和AVR等主流单片机。该软件可以直接在原理图的虚拟原型上进行编译,然后配合显示和输出可以看到仿真的结果。ISIS是一款操作智能、简便,可完成系统仿真的实用软件。52仿真结果与操作说明521系统总体仿真本系统以AT89C52单片机为核心,选用110592MHZ的晶振,利用液晶和键盘来做计算器设计,应用范围广泛而且方便实用。通过PROTEUS仿真环境,KEIL编程环境的支持,用主程序初始化系统,其他程序模块化选择的方式,进行软件调试,当各个模块都调试成功之后,添加入主程序,最后完成计算器的设计。本设计应当达到一般计算器所具有的加、减、乘、除四则运算功能,并且在此基础上拥有一定的扩展。因此,本设计需要优化硬件电路的设计,减少串口的使用,合理的分配单片机硬件资源,在保证计算器功能正常实现的同时还需要保证计算器拥有一定的抗干扰性。根据模块需求以及计算器的工作流程基本确定计算器总体的仿真设计图,系统的总体仿真图如图51所示。图51总体仿真图仿真图中的硬件分配(1)P1口与P36、P37口为输出端口,连接LCD1602的D0D7,显示数据。(2)P2口为输入端口,与44矩阵键盘连接,实现计算器的按键输入。(3)P30P33口连接4个独立按键,做计算器的扩展使用。整个计算器包括键盘电路与显示电路。运用C语言MATHH函数库可以在软件方面实现四则运算,并通过KEIL软件编程生成HEX文件,然后通过PROTEUS中单片机链接HEX文件,从而使整个仿真系统工作。根据硬件仿真和软件语言编程,系统基本完成了简易计算器的功能,并且在此基础上进行了功能扩展。下面分别介绍所取得的研究成果。522系统的操作说明(1)开机默认LCD1602显示屏亮起并显示本人信息,做屏保使用,按清除键可清除信息做计算器使用,如图52所示。图52开机显示(2)计算器09和为数字按键;“”“”“”“”为运算符号;C是清除键,也做计算器复位使用;DEL是删除键,用于撤销上次键入的错误数据,可以连续按DEL进行连续撤销;M键用于存储上次计算的数据和结果,按一次M输出上次结果,按TS/LCD/SBITLCDRSP37/LCD控制脚SBITLCDRWP36SBITLCDENP35BITFORM/LCD显示方式切换UCHARIDATASTATE/LCD状态字存储/计算器/SBITRESETP30/计算器复位SBITBACKP31/撤销上次键入键SBITSAVEP32/存储键,存储有上次的结果和另外某次计算值BITEQSIGN/按等号标志BITPRESS/键按标志BITSAVESIGN/可存储结果标志BITSC/复用标志UCHARIDATAPROCESS30,PROC/记忆计算过程,以便错误恢复和撤销输入UCHARIDATACONTINU0/连续计算运算符号存储UCHARIDATAPAI22/前有数据标志UCHARIDATAFERROR/计算检错标志UCHARIDATAYWEI/屏幕移位UCHARIDATACOUNT0/输入计数UCHARIDATACOUNT_NUM0/组号计数UCHARIDATARESULT15/计算结果立存,SAVEUCHARIDATASAVERESULT15/存储结果数组,SCSAVEUCHARIDATAJIEGUO15/结果字符串UCHARIDATABDATE214/待计算字符串二维组UCHARIDATAON_SYMBOL/运算符号UCHARIDATAFSYM2/函数前符号UCHARIDATASSYM2/存储组前符号UCHARIDATABFUN2/计算值调用函数选择UCHARIDATAFUTOJIAO2/幅度TO角度变换DOUBLEIDATADATE2/计算值双精度变量组DOUBLEIDATARESULTDATE/双精度结果值SBITSFYONGP33/计算器复用键/函数声明/延时/VOIDDELAYUCHARZ/LCD写命令/VOIDWRITE_COMUCHARCOM/LCD写数据/VOIDWRITE_DATEUCHARDATE/LCD读状态/VOIDREAD_DATEVOID/LCD写字符串/VOIDWRITE_STRUCHARSTR/液晶初始化/VOIDINITVOID/移屏/VOIDWRITE/复用提示开关/VOIDSHIFTVOID/键盘扫描/UCHARKEYSCANVOID/计算器复位/VOIDFUWEI/ERROR处理/VOIDCALLERRORVOID/撤销键入/VOIDHUIFUVOID/函数组前符号处理/UCHARFUNQIANVOID/运算符预处理/VOIDCULLARSUCHAR/输出存储数据预处理/CHARMEMORYVOID/按键功能主处理/VOIDPROCESS_DATEUCHARPRESS_DATE/按键功能子处理/VOIDCALCULATORUCHARPRESS_DATE/VOIDWRITEFORNUM0NUM0XFORY100Y0Y/写命令/VOIDWRITE_COMUCHARCOMLCDRS0LCDRW0LCDEN0P1COMDELAY5LCDEN1DELAY5LCDEN0/写数据/VOIDWRITE_DATEUCHARDATELCDRS1LCDRW0LCDEN0P1DATEDELAY5LCDEN1DELAY5LCDEN0/读AC地址/VOIDREAD_DATEVOIDLCDRS0LCDRW1DELAY5P10XFFLCDEN1DELAY5STATEP1DELAY5LCDEN0DELAY5STATESTATE/写字符串/VOIDWRITE_STRUCHARSTRUCHARIDATAIFORI0STRI0IWRITE_DATESTRI/液晶初始化/VOIDINITVOIDWRITE_COM0X38/模式8位数据,两行,57字体WRITE_COM0X0C/开显示,无光标WRITE_COM0X06/向左增量移动WRITE_COM0X01/清屏/复用提示开关/VOIDSHIFTVOIDIFSC1READ_DATE/读状态WRITE_COM0XC0/显示复用提示,左下角SWRITE_DATESWRITE_COMSTATE0X80/光标还回原来位置ELSEREAD_DATEWRITE_COM0XC0/关闭复用提示WRITE_DATEWRITE_COMSTATE0X80RETURN/键盘扫描/UCHARKEYSCANVOID/按行扫描,有键按下则返回键符号,否则返回NULLUCHARIDATAKEY0,KEY1,KEYMENT0P20XFE/行1KEY0P2KEY0KEY0KEY1KEY0IFKEY00XF0DELAY5/键抖动处理P20XFEKEY0P2KEY0KEY0IFKEY0KEY1SWITCHKEY0CASE0XE0KEYMENT7BREAKCASE0XD0KEYMENT8BREAKCASE0XB0KEYMENT9BREAKCASE0X70KEYMENT0XFDBREAK/0XFD除号在1602液晶中的代码WHILEKEY00XF0/键释放处理KEY0P2KEY0KEY0PRESS1/键按标志置1RETURNKEYMENTP20XFD/行2KEY0P2KEY0KEY0KEY1KEY0IFKEY00XF0DELAY5P20XFDKEY0P2KEY0KEY0IFKEY0KEY1SWITCHKEY0CASE0XE0KEYMENT4BREAKCASE0XD0KEYMENT5BREAKCASE0XB0KEYMENT6BREAKCASE0X70KEYMENTBREAKWHILEKEY00XF0KEY0P2KEY0KEY0PRESS1RETURNKEYMENTP20XFB/行3KEY0P2KEY0KEY0KEY1KEY0IFKEY00XF0DELAY5P20XFBKEY0P2KEY0KEY0IFKEY0KEY1SWITCHKEY0CASE0XE0KEYMENT1BREAKCASE0XD0KEYMENT2BREAKCASE0XB0KEYMENT3BREAKCASE0X70KEYMENTBREAKWHILEKEY00XF0KEY0P2KEY0KEY0PRESS1RETURNKEYMENTP20XF7/行4KEY0P2KEY0KEY0KEY1KEY0IFKEY00XF0DELAY5P20XF7KEY0P2KEY0KEY0IFKEY0KEY1SWITCHKEY0CASE0XE0KEYMENTBREAKCASE0XD0KEYMENT0BREAKCASE0XB0KEYMENTBREAKCASE0X70KEYMENTBREAKWHILEKEY00XF0KEY0P2KEY0KEY0PRESS1RETURNKEYMENTIFRESET0/复位键KEYMENTPRESS1WHILERESET0/键释放RETURNKEYMENTELSEIFBACK0/撤销前次输入KEYMENTCPRESS1WHILEBACK0SHIFTRETURNKEYMENTELSEIFSAVE0/储存数据键DELAY5IFSAVE0IFSC0/输出前次计算结果键KEYMENTMPRESS1WHILESAVE0RETURNKEYMENTELSE/更新存储的数据或输出存储的数据KEYMENTNPRESS1SC0SHIFTWHILESAVE0RETURNKEYMENTELSEIFSFYONG0/计算器时为复用功能键DELAY5IFSFYONG0KEYMENTHPRESS1WHILESFYONG0RETURNKEYMENTRETURN0ELSERETURN0/无键按下返回NULL/计算器复位/VOIDFUWEIUCHARIDATAJ,IWRITE_COM0X0F/LCD设置WRITE_COM0X01WRITE_COM0X80RESULTDATE0FORI0I0X42/第二组有输入且FERROR2,则进行连续计算PRESS1/模拟按键和M;将本次的计算结果作为下一次计算的第一组PROCESS_DATEPRESS1PROCESS_DATEMFERROR1/恢复现场,避免变化IFCONTINU|CONTINUPROCESSPROCHPROCPROCESSPROCCONTINUPROCELSEPROCESSPROCCONTINUPROC/恢复连续计算过程IFCONTINUWRITE_STR“F“ELSEWRITE_DATEWRITE_DATECONTINU/将用与连续计算的运算符号取出YWEI0SAVESIGN0COUNT_NUM1/组标志加1COUNT0/输入计数清零ON_SYMBOLCONTINU/运算符号调用WRITE_COM0XC2RETURN/输出存储数据预处理/CHARMEMORYVOIDIFBDATECOUNT_NUM0|BDATECOUNT_NUM0BDATECOUNT_NUM00BDATECOUNT_NUM10COUNT0IFBDATECOUNT_NUM00CALLERRORHUIFURETURN1/错误输入方式处理RETURN0/按键功能主处理/VOIDPROCESS_DATEUCHARPRESS_DATEIFFORM0WRITE_COM0X0FFORM1/显示方式切换光标闪烁IFEQSIGN1/

温馨提示

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

评论

0/150

提交评论