AT89C51单片机简易计算器的设计
基于单片机的科学计算器设计

摘要在现代科技迅猛发展的当今,计算器依然是人们日常生活中不可或缺的电子产品之一。
计算器始终在不断发展及完善之中,功能必将更加强大。
基于这样的理念,本设计采用AT89C51单片机作为主控芯片,使用C语言为系统进行编程,采用4*4矩阵键盘作为输入模块,输出模块采用LCD1602液晶显示,从而实现基于单片机的基本功能。
本设计重点说明以下几个方面内容:1.基于单片机的计算器所具备哪些基本功能,对矩阵键盘输入原理及液晶显示原理进行简单的阐述。
2.介绍系统的整体设计理念,展示系统设计的流程框图,并对功能模块的划分,及所选用的元器件性能参数进行详细说明。
3.对系统的每个功能模块的软硬件设计,进行详细说明。
关键词单片机,AT89C52,LCD1602液晶,矩阵键盘,C语言ABSTRACTIn the rapid development of modern science and technology today, the calculator is still one of the electronic products is an integral part of people's daily life. The calculator always among the continuous development and improvement, the function will certainly be more powerful. Based on this concept, the design uses AT89C51 microcontroller as the master chip, using the C programming language for the system, with 4 * 4 matrix keyboard as an input module, output module LCD1602 LCD display, in order to achieve the basic functions of the MCU.This design highlights the following aspects:1.microcontroller-based calculator with basic functions, the principle of a simple exposition of principle and LCD matrix keyboard input.2.describes the system's overall design concept, showing the flow diagram of the system design, the and function module framing, and optional Component performance parameters described in detail.3.of each functional module of the system hardware and software design in detail.Key words microcontroller AT89C52,LCD1602 LCD,matrix keyboard,C language目录摘要 (I)ABSTRACT .................................................................................................................................... I I 1 绪论 .. (1)1.1课题的研究背景及意义 (1)1.2本课题研究的主要内容 (2)2 设计任务及方案 (3)2.1设计任务 (3)2.2设计方案 (3)3 系统硬件设计 (4)3.1单片机最小硬件系统 (4)3.1.1主控芯片AT89C52单片机简介 (4)3.1.2复位电路 (9)3.1.3时钟电路 (10)3.2键盘接口电路 (10)3.3液晶显示电路 (11)4 系统软件设计 (15)4.1键盘扫描部分程序设计 (15)4.2运算部分程序设计 (15)4.3显示部分程序设计 (16)4.4主函数程序设计 (17)5仿真和调试 (19)5.1 KEIL系统概述 (19)5.2K EIL使用步骤 (19)5.3PROTEUS 7.1介绍 (20)5.4P ROTEUS 对于本设计的仿真步骤 (20)5.5仿真结果 (21)6 结论 (22)参考文献 (23)附录A:源程序 (24)附录B:系统总图 (34)致谢 (35)1 绪论1.1课题的研究背景及意义计算器一般由运算器,存储器,控制器,键盘,显示器,电源和一些外围设备及电子配件组成。
基于AT89C51的频率计设计

基于AT89C51的频率计设计第一章绪论;随着微电子技术和计算机技术的迅速发展,特别是单片;采用不同的测量原理,可以设计出不同结构的频率测量;通常能对频率和时间两种以上功能测量的数字化测量仪;1.1频率计的概述;数字频率计是计算机、通讯设备、音频视频等科研生产;本数字频率计将采用定时、计数的方法测量频率,采用;1.2频率计的主要性能;1.2.1.测试功能;它表明数字频率计所具备的全部测试第一章绪论随着微电子技术和计算机技术的迅速发展,特别是单片微机的出现和发展,使传统的电子测量仪器在原理、功能、精度及自动化水平等方面都发生了巨大的变化,形成一种完全突破传统概念的新一代测量仪器。
频率计广泛采用了高速集成电路和大规模集成电路,使仪器在小型化、耗电、可靠性等方面都发生了重大的变化。
对石英晶体振荡器,各种信号发生器,各种倍频和分频电路输出信号的频率需要测量;广播,电视,电讯,微电子技术等现代化的科学领域,更需要进行频率测量。
采用不同的测量原理,可以设计出不同结构的频率测量仪器,所以按测量原理来分,数字频率计可分为谐振式,比较式和计数式三类;按选用电路形式来分,它又可以分为模拟式和数字式两类。
通常能对频率和时间两种以上功能测量的数字化测量仪器,称为数字频率计,有时也称为通用计数器或电子计数器。
当前较多采用的是数字频率计。
计数式频率计是基于时间或频率的A/D转换原理,并依赖于数字计数技术发展起来的一类新型数字仪器。
与其他电子仪器一样,数字频率计也经历了电子管,晶体管和集成电路等几个阶段,其性能日臻完善,功能不断扩大,若配以适当的插件或传感器,还可以对多种电量和非电量进行测量。
1.1 频率计的概述数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。
它是一种用十进制数字显示被测信号频率的数字测量仪器。
它的基本功能是测量正弦信号,方波信号及其他各种单位时间内变化的物理量。
在进行模拟、数字电路的设计、安装、调试过程中,由于其使用十进制数显示,测量迅速,精确度高,显示直观,经常要用到频率计。
简易计算器设计说明书

摘要单片机的出现是计算机制造技术高速发展的产物,它是嵌入式控制系统的核心。
如今,它已广泛的应用到我们生活的各个领域,电子、科技、通信、汽车、工业等。
计算器的出现给我们的生活带来了巨大的便利,计算器在我们的生活中随处可见,也是我们日常生活中不可缺少的工具。
本设计是基于51系列单片机来进行的数字计算器系统设计,可以完成计算器的键盘输入,进行加、减、乘、除简单的基本四则运算,并在LCD上显示相应的结果。
设计电路采用AT89C51单片机为主要控制电路,利用按键作为计算器的键盘的输入。
显示采用字符LCD 静态显示。
软件方面使用C语言编程,并用PROTUES仿真。
单片微型计算机简称单片机。
它是在一块芯片上集成中央处理器(CPU)、随机存取存储器(RAM)、只读存储器(ROM)、定时/计数器及I/O接口电路等部件,构成一个完整的微型计算机。
它的特点是:高性能,高速度,体积小,价格低廉,稳定可靠,应用广泛。
单片机比专用处理器最适合应用于嵌入式系统,因此它得到了最多的应用。
本文介绍了单片机的产生发展、功能特点、应用开发等内容。
【关键词】简单计算器单片机 LCD 应用发展背景近年来,单片机以其体积小、价格廉、面向控制等独特优点,在各种工业控制、仪器仪表、设备、产品的自动化、智能化方面获得了广泛的应用。
与此同时,单片机应用系统的可靠性成为人们越来越关注的重要课题。
影响可靠性的因素是多方面的,如构成系统的元器件本身的可靠性、系统本身各部分之间的相互耦合因素等。
其中系统的抗干扰性能是系统可靠性的重要指标。
本设计采用80c51 芯片,实现了利用单片机进行了一个简单计算器设计。
允许对输入数据进行加减乘除运算及LCD 显示.如果设计对象是更为复杂的计算器系统,其实际原理与方法与本设计基本相同。
LCD液晶显示器是Liquid Crystal Display 的简称,LCD 的构造是在两片平行的玻璃基板当中放置液晶盒,下基板玻璃上设置TFT(薄膜晶体管),上基板玻璃上设置彩色滤光片,通过TFT上的信号与电压改变来控制液晶分子的转动方向,从而达到控制每个像素点偏振光出射与否而达到显示目的。
基于AT89C51单片机的计数器设计

基于AT89C51单片机的计数器设计单片机(Microcontroller)是一种集成了微处理器、存储器和各种输入输出功能的芯片,广泛应用于嵌入式系统中。
AT89C51单片机是英特尔公司生产的一款典型的8位微控制器,其具有强大的功能和灵活的设计特性,被广泛应用于工业控制、汽车电子、消费类电子产品等领域。
在众多应用中,计数器是一种常见的电子器件,被广泛应用于各种领域,比如工业控制、实验测量、智能家居等。
基于AT89C51单片机的计数器设计,可以实现对信号的计数和显示,具有较高的稳定性和可靠性。
本文将介绍基于AT89C51单片机的计数器设计。
首先介绍AT89C51单片机的基本特性和引脚布局,然后讨论计数器的原理和设计思路,最后给出具体的设计方案和实现步骤。
一、AT89C51单片机的基本特性和引脚布局AT89C51是一款高性能、低功耗的8位CMOS微控制器,其主要特性包括:1. 内置4KB闪存程序存储器,用于存储用户程序;2. 128字节RAM,用于存储临时数据和寄存器;3. 32个通用I/O引脚,用于连接外部器件和传感器;4. 完整的串行通信接口(UART),用于与外部设备进行通信;5. 定时器/计数器和PWM输出,用于实现各种定时和计数功能;6. 多种工作模式选择,包括被动低功耗模式和中断工作模式。
AT89C51单片机的引脚布局如下图所示:(图片)P0、P1、P2和P3是AT89C51单片机的四个通用I/O端口,分别具有8个引脚,用于连接外部设备和传感器。
X1和X2是晶体振荡器的输入和输出端,用于提供时钟信号。
RESET 是复位端,用于复位单片机。
EA和PSEN是扩展ROM控制端和程序存储器的读取端,用于外接ROM和实现程序存储。
ALE/PROG是地址锁存器的输入,用于地址总线的多路选择。
RXD 和TXD是串行通信接口的接收和发送端口,用于与外部设备进行通信。
二、计数器的原理和设计思路计数器是一种常用的数字电路,用于对输入信号进行计数和显示。
单片机课程设计报告(简易计算器).

简易计算器摘要:计算器是人们的日常生活中是最常见的电子产品之一,它应用极广、发展迅猛,并且不断出现着拥有更加强大功能的计算器。
为了解和研究计算器,本次课设设计制作了一个简易计算器,能够在十四位的计算范围内进行“+”、“-”、“*”、“/”的基本运算,能进行负数以及小数点后两位的精确结果显示。
该计算器以AT89C51单片机芯片作为核心。
采用LCD1602工业字符液晶进行显示。
完成的计算器经过检验能够完整的实现预设功能,各种细节完善,具有很高的使用价值。
关键词:单片机;简易计算器;AT89C51;LCD1602Simple CalculatorAbstract:Calculator is People's Daily life is one of the most common electronic products, used very wide, developing rapidly, and constantly appear more powerful function with have calculators. In order to understand and study calculator, this class set design made a simple calculator, can the calculation in within 14 "+" and "-" and "*", "/" the basic computing, can carry out negative and two decimal places accurate results are shown. This calculator with AT89C51 chips as the core. Using liquid LCD1602 industrial characters displayed. Complete calculator after inspection can complete realization, various details preset functions to perfect, have high use value.Keywords:MCU; Simple calculator;AT89C51;LCD1602目录中文摘要............................................................1英文摘要............................................................2单片机课程设计......................................................4 1 课程设计任务.....................................................41.1 主要功能设计................................................41.2 任务目的....................................................42 整体设计方案......................................................42.1 方案论证....................................................42.2 系统框图....................................................53 硬件电路的设计...................................................63.1 计算机Protel总图............................................63.2 显示电路设计方案............................................93.3 键盘设计方案................................................93.4 复位电路设计...............................................103.5 晶振电路设计...............................................104 控制软件设计....................................................114.1 程序时序总图...............................................114.2 液晶显示软件设计...........................................124.3 键盘输入软件设计...........................................134.4 计算函数设置...............................................155 系统调试........................................................185.1 硬件调试...................................................185.2 软件调试...................................................18 参考文献...........................................................20 个人小结...........................................................21 附录...............................................................24 附录1..........................................................24 附录2..........................................................251课程设计任务1.1 主要功能设计以AT89C51单片机芯片为核心来制作一个简易计算器,外部由4*4矩阵键盘和一个LCD1602工业字符型液晶显示屏构成,内部由一块AT89C51单片机构成,通过软件编程可实现简单加减乘除。
简易计算器课程设计

山东大学控制科学与工程学院课程设计报告书课程设计名称:简易计算器班级:测控一班学号:201000171202姓名:魏凯峰一、电路工作原理该电路主要由以下几部分组成,1、51系列单片机最小系统板,由AT89C51单片机,复位电路,晶振电路(晶振频率是11.0592MHZ),这部分是控制中心,晶振电路可产生程序运行所需要的时钟频率。
2、显示部分,由8位共阴数码管和两个74HC573锁存器、排阻(1K)组成,74HC573锁存器用于动态显示数据,也有驱动显示作用,排阻是限流作用。
3、按键部分,由20位独立键盘组成,按矩阵形式连接,用到9个IO口。
原理:键盘作为数字输入,矩阵键盘的工作原理是当某个键按下时,其两端的IO口电平变化,程序中通过相应位的与或运算,就可以判断出是哪个按键被按下,单片机中的程序不断读取键盘的输入并实时显示在数码管上,数码管用段位选不断切换显示,如当位选为高电平时即为点亮,然后再输入相应的数字段码(该电路中用的是共阴极数码管的字码),这样数码管上便可以显示相应数字。
锁存器中的LE口就是段位选口,高电平有效,数码管中的A、B......G、DP是数码管中的每一段,只要某个字母为高电平,则该段二极管就会被点亮(共阴极)。
在同时显示多个数字时要利用到动态显示,视觉动态显示主要就是利用人眼的视觉感来设计的,一般来说如果显示的频率过慢,则会有断断续续的显示;如果显示的频率加快,则人眼就分辨不出这种视觉残余!二、程序简要说明从主函数开始,先是定义一些变量,然后是调用显示函数displaypro(0),先显示0,然后进入一个大循环while(1),在循环里面先检测键盘keyscan(),并把检测值赋给K,然后是段位选循环8次检测,然后用switch(k)函数来执行键盘操作,k的值从0到9表示输入数字0到9,10到13表示加减乘除,17、15分别表示十六进制和二进制,16表示小数点,14表示正负号,18表示清除,19是等于号。
基于单片机的多功能计算器设计

电子信息工程专业综合课程设计任务书摘要:单片机的出现是计算机制造技术高速发展的产物,它是嵌入式控制系统的核心,如今,它已广泛的应用到我们生活中的各个领域,电子、科技、通信、汽车、工业等。
我们这次设计的多功能科学计算器也是利用AT89C51单片机制作而成。
该计算器设计是采用C语言编写,实现了六位数范围内的加、减、乘、除基本的四则运算,此外该计算器除了具备基本的计算功能以外还具有计时和倒计时的功能,也就是说该计算器具有两个工作模式,计算模式和计时模式,而计时模式里又包含正计时和倒计时的功能,这样一个简易的计算器实现了多功能,比较实用和方便。
该设计电路是采用AT89C51单片机为主要控制电路,然后使用74LS245缓冲驱动电路驱动六位LED数码管显示数据,利用加上4×4矩阵键盘完成电路的实际操作。
电路比较简单,但是很实用方便。
关键字:AT89C51 多功能74LS245 LED 矩阵键盘目录1.方案论证与选择 (4)1.1输入模块 (4)1.2显示模块: (5)2.其他硬件电路模块功能介绍: (6)2.1驱动模块 (6)2.2主控制模块 (7)2.3操作模块 (8)3.软件设计 (9)3.1主功能计算器部分 (9)3.2计时和倒计时部分 (9)3.3功能按键 (9)3.4软件流程图 (9)4硬件设计 (11)4.1电路工作框图 (11)4.2 硬件电路图 (12)4.3引脚锁定 (12)5.电路测试结果 (12)5.1代码提示信息 (12)5.2模式转换电路图 (13)5.3错误提示电路图 (14)5.4正常计算结果显示图 (14)6.该设计电路的改进思想 (15)7.小结 (15)8.参考文献 (16)附录(程序清单) (16)基于单片机的多功能计算器设计1.方案论证与选择1.1输入模块方案一:采用独立式按键作为输入模块,其特点:直接用I/O口构成单个按键电路,接口电路配置灵活、按键识别和软件结构简单,但是当键数较多时,占用I/O口较多,比较浪费资源;其原理图如图1所示:图1 独立的功能按键方案二:采用矩阵式键盘作为输入电路,其特点:电路和软件稍复杂,但相比之下,当键数越多时越节约I/O口,比较节省资源。
基于AT89c51单片机的出租车计费器设计

嘉 兴 学 院学 报 J o u r n a l o f J i a x i n g U n i v e r s i t y
第2 5 卷第3 期2 0 1 3 年5 月 V o 1 . 2 5 N o . 3 2 0 1 3 . 5
基于 A T 8 9 c 5 1 单片机的出租车计费器设计
功 能.
关键 词 :AT 8 9 c 5 1单 片机 ;I S D 2 5 6 0 ;L E D数 码 管 ; 出租 车 ;计 费
中 图分 类 号 :TN7 9 文 献 标 识 码 :A . 文 章 编 号 :1 0 0 8 —6 7 8 1 ( 2 0 1 3 ) 0 3 —0 1 1 0 —0 4
宝清人, 嘉兴 学 院机 电工 程 学 院 讲 师 , 研 究 方 向 为 电 气 工程 及 其 自动 化. 网络 出 版时 间 : 2 0 1 3 —0 4 —1 0 1 7 : 0 8 网络 出 版地 址 : h t t p : / / www. c n k i . n e t / k c ms / d e t a i l / 3 3 . 1 2 7 3 . Z . 2 0 1 3 0 4 1 0 . 1 7 0 8 . 0 1 4 . h t ml
出租 车计 费器发 展 已经历 了 4个 阶段 ,从传 统 的机械 式到 半 电子式 、再从 集 成 电路式 到 目前 的单 片机 系统 设计 的 出租车计 费器 . 1 3
单 片机是一 种可 通过 编程 控制 的微 处理 器 ,基 于单 片机设 计 的 出租车计 费器 不仅 可方 便地 用 软件 代替 硬件 ,降 低成本 ,具 备一 般计 费器 的计 算里 程 和显 示 总 金 额 的功 能 ,还 具 备 了掉 电保 持 , 白天 、
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
AT89C51单片机简易计算器的设计单片机的出现是计算机制造技术高速发展的产物,它是嵌入式控制系统的核心,如今,它已广泛的应用到我们生活的各个领域,电子、科技、通信、汽车、工业等。
本设计是基于51系列单片机来进行的数字计算器系统设计,可以完成计算器的键盘输入,进行加、减、乘、除六位数范围内的基本四则运算,并在LCD上显示相应的结果。
设计电路采用AT89C51单片机为主要控制电路,利用MM74C922作为计算器4*4键盘的扫描IC读取键盘上的输入。
显示采用字符LCD静态显示。
软件方面使用C语言编程,并用PROTUES仿真。
一、总体设计根据功能和指标要求,本系统选用MCS-51系列单片机为主控机。
通过扩展必要的外围接口电路,实现对计算器的设计。
具体设计如下:(1)由于要设计的是简单的计算器,可以进行四则运算,为了得到较好的显示效果,采用LCD 显示数据和结果。
(2)另外键盘包括数字键(0~9)、符号键(+、-、×、÷)、清除键和等号键,故只需要16 个按键即可,设计中采用集成的计算键盘。
(3)执行过程:开机显示零,等待键入数值,当键入数字,通过LCD显示出来,当键入+、-、*、/运算符,计算器在内部执行数值转换和存储,并等待再次键入数值,当再键入数值后将显示键入的数值,按等号就会在LCD上输出运算结果。
(4)错误提示:当计算器执行过程中有错误时,会在LCD上显示相应的提示,如:当输入的数值或计算得到的结果大于计算器的表示范围时,计算器会在LCD上提示溢出;当除数为0时,计算器会在LCD 上提示错误。
系统模块图:二、硬件设计(一)、总体硬件设计本设计选用AT89C51单片机为主控单元。
显示部分:采用LCD 静态显示。
按键部分:采用4*4键盘;利用MM74C922为4*4的键盘扫描IC,读取输入的键值。
总体设计效果如下图:(二)、键盘接口电路计算器输入数字和其他功能按键要用到很多按键,如果采用独立按键的方式,在这种情况下,编程会很简单,但是会占用大量的I/O 口资源,因此在很多情况下都不采用这种方式,而是采用矩阵键盘的方案。
矩阵键盘采用四条I/O 线作为行线,四条I/O 线作为列线组成键盘,在行线和列线的每个交叉点上设置一个按键。
这样键盘上按键的个数就为4×4个。
这种行列式键盘结构能有效地提高单片机系统中I/O 口的利用率。
矩阵键盘的工作原理:计算器的键盘布局如图2所示:一般有16个键组成,在单片机中正好可以用一个P口实现16个按键功能,这种形式在单片机系统中也最常用。
图 2 矩阵键盘布局图矩阵键盘内部电路图如图3所示:为了进一步节省单片机I/O口资源,我们在设计中使用了MM74C922芯片。
MM74C922是一款4*4键盘扫描IC,它可检测到与之相连的4*4键盘的按键输入,并通过数据输出口将按键相应的编码输出。
其引脚图如图4所示:图4 MM94C22硬件图MM74C922引脚说明:(1) Y1~Y4(脚1~脚4):44键盘第一列至第四。
(2) X1~X4(脚11、10、8、7):44键盘第一行至第四行。
(3) DOA~ DOD(Dataout A~D,脚14~17):按键之BCD码输出,其中DOA为LSB,DOD为MSB。
(4) VCC(脚18):电源脚,+3V~+15V。
ab126计算公式大全(5) GND(脚9):接地管脚。
新艺图库(6) OSC(Oscillator,脚5):键盘扫描电路之频率所需外加电容的连引脚。
(7) KBM(Keyboard Mask,脚6):内部消除开关弹跳电路所外加电容的引脚。
(8) OE(Output Enable,脚13):芯片致能脚,接低电位可使芯片致能。
(9) DA(Data Available,脚12):数据有效输出脚。
任一按键按下时,此脚位会输出高电位,按键释放后此脚又会恢复为低电位。
MM74C922对各按键的响应如下表所示:如下图5所示,在本设计中,计算器输入键盘的4条行线、列线分别连接到MM74C922的X1-X4、Y1-Y4引脚,MM74C922的数据输出口与单片机的P2口相连,MM74C922的DA引脚经过一个非门连接到单片机的/INT0脚,当MM74C922检测到键盘输入时,DA产生高电平,与之相连的/INT0检测到低电平,给单片机一个中断,单片机从P2口的低四位读入键盘上按下的键的值。
图5 键盘接口电路图(三)、LCD显示模块本设计采用LCD液晶显示器来显示输出数据。
通过D0-D7引脚向LCD写指令字或写数据以使LCD实现不同的功能或显示相应数据。
图6 LCD 模块(四)运算模块(单片机控制)MCS-51 单片机是在一块芯片中集成了CPU、RAM、ROM、定时器/计数器和多功能I/O等一台计算机所需要的基本功能部件。
如果按功能划分,它由如下功能部件组成,即微处理器(CPU)、数据存储器(RAM)、程序存储器(ROM/EPROM)、并行I/O 口、串行口、定时器/计数器、中断系统及特殊功能寄存器(SFR)。
单片机是靠程序运行的,并且可以修改。
通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,通过使用单片机编写的程序可以实现高智能,高效率,以及高可靠性!因此我们采用单片机作为计算器的主要功能部件,可以很快地实现运算功能。
三、软件设计现实生活中人们熟知的计算器,其功能主要如下:1、键盘输入;2、数值显示;3、加、减、乘、除四则运算;4、对错误的控制及提示;针对上述功能,计算器软件程序要完成以下模块的设计:1、键盘输入检测模块2、LCD显示模块;3、算术运算模块4、错误处理及提示模块。
系统总流程图开始初始化参数初始化LCD 显示有键输入?读取键码LCD 显示数字键清零键功能键状态清零输入数值 数值送显示缓冲YN等待数值输入结果送显示缓冲根据上次功能键和输入的数据计算结果本次功能键?等待数值输入 结果送显示缓冲 等待数值输入结果送显示缓冲分块程序设计1、键盘输入检测程序设计有键按下时,单片机响应外部中断0,转入外部中断0中断处理函数,在中断处理函数中完成对按键的判断,以进行下一步的程序处理。
/***********外部中断0处理函数*************/void INT_0(void) interrupt 0 using 0{key=translate(P2&0x0f);if(key<='9'&&key>='0') //判断按下的键是否为数值{num=num*10+(key-'0');if (operators>0){y=num;iny=1;}elsex=num;if(num<134217728&&num>-134217728) //当前数值是否超出限定范围{display(num);}elsedataoverflow();}else{switch(key){case'c':x=0;y=0;num=0;iny=0;operators=0;display(num);break;case'=':arithmetic();iny=0;operators=0;num=0;break;case'+':if (operators)arithmetic();operators=1;num=0;break;case'-':if (operators)arithmetic();operators=2;num=0;break;case'*':if (operators)arithmetic();operators=3;num=0;break;case'/':if (operators)arithmetic();operators=4;num=0;break;}}}2、LCD显示程序设计利用LCD静态显示,通过程序向LCD写指令字或数据使LCD完成不同功能或显示相应数据。
/**************LCD初始化函数*************/void init_LCM(){write_com(0x30);write_com(0x30);write_com(0x30);write_com(0x38);write_com(0x08);write_com(0x01);write_com(0x06);write_com(0x0e);}/***********LCD写数据函数*************/ void write_data(char ddata){RS=1;/*写指令*/R_W=0;EN=1;/*使能信号开*/P1=ddata;/*将数据送入p1口*/EN=0;/*使能信号关*/check_BF();}/***********LCD写指令函数*************/ void write_com(char command){RS=0;/*写指令*/R_W=0;EN=1;/*使能信号开*/P1=command;/*将数据送入p1口*/EN=0;/*使能信号关*/check_BF();}/************LCD检查忙碌函数***********/ void check_BF(){char i,x=0x80;P1=0xff;while(x&0x80){RS=0;R_W=1;EN=1;x=P1;EN=0;for (i=0;i<10;i++);}EN=0;/*关闭使能信号*/}/**********LCD清屏函数**********/ void clearLCD(){write_com(0x01);}/**********LCD显示函数**********/ void display(long a){long temp,b,c=-1;int lenth=1,i,j;clearLCD();if(a<0){a=a*c;write_data('-');}temp=a;while((temp=temp/10)!=0){lenth++;}for(i=lenth;i>0;i--){b=1;for(j=0;j<i-1;j++){b=b*10;}write_data(0x30+a/b);a=a%b;}}3、算术运算程序设计4、 错误处理及提示程序设计/**********除数为处理函数**********/void dealerror(){int i=0;clearLCD();for (i=0;i<5;i++)write_data(error[i]);}/*********数值溢出处理函数**********/ 开始运算符是?加 乘 减除 除数为0?运算结果溢出? 错误信息送显示缓冲数值送显示缓冲YY N Nvoid dataoverflow(){int i=0;clearLCD();for(i=0;i<8;i++)write_data(overflow[i]);}四、联机调试在联机调试的过程中,一开始没有做数值溢出方面的控制,导致LCD显示的输入数据或计算结果与实际不相符。