基于单片机的简易计算器设计.doc

上传人:知****量 文档编号:12108040 上传时间:2022-04-23 格式:DOC 页数:35 大小:1.34MB
返回 下载 相关 举报
基于单片机的简易计算器设计.doc_第1页
第1页 / 共35页
基于单片机的简易计算器设计.doc_第2页
第2页 / 共35页
点击查看更多>>
资源描述

《基于单片机的简易计算器设计.doc》由会员分享,可在线阅读,更多相关《基于单片机的简易计算器设计.doc(35页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、- -目录引言1第一章设计原理及要求21.1 设计方案确实定21.2 系统的设计方案21.3 系统的设计要求2第二章硬件模块设计42.1 单片机AT89C5142.1.1 AT89C51芯片的特点52.1.2 管脚说明52.1.3 振荡器特性72.1.4 芯片擦除72.2 键盘控制模块72.2.1 矩阵键盘的工作原理82.2.2 键盘电路主要器件介绍82.3 LCD显示模块102.3.1 显示电路112.3.2 LCD1602主要技术参数112.3.3 引脚功能说明112.4 运算模块单片机控制12第三章软件设计143.1 功能介绍143.2系统流程图143.3 程序16第四章系统调试174.

2、1软件介绍174.1.1 Keil uVision2仿真软件简介174.1.2 protues简介174.2 软件调试184.2.1 软件分析及常见故障194.2.2 仿真结果演示204.3 硬件调试21完毕语23参考文献24附录25致36- - word.zl- -引言计算工具最早诞生于中国,中国古代最早采用的一种计算工具叫筹策,也被叫做算筹。这种算筹多用竹子制成,也有用木头,兽骨充当材料的,约二百七十枚一束,放在布袋里可随身携带。另外直到今天仍在使用的珠算盘,是中国古代计算工具领域中的另一项创造,明代时的珠算盘已经与现代的珠算盘几乎一样。17世纪初,西方国家的计算工具有了较大的开展,英国数

3、学家纳皮尔创造的“纳皮尔算筹,英国牧师奥却德创造了圆柱型对数计算尺,这种计算尺不仅能做加、减、乘、除、乘方和开方运算,甚至可以计算三角函数、指数函数和对数函数。这些计算工具不仅带动了计算器的开展,也为现代计算器开展奠定了良好的根底,成为现代社会应用广泛的计算工具。1642年,年仅19岁的法国伟大科学家帕斯卡引用算盘的原理,创造了第一部机械式计算器,在他的计算器中有一些互相联锁的齿轮,一个转过十位的齿轮会使另一个齿轮转过一位,人们可以像拨盘那样,把数字拨进去,计算结果就会出现在另一个窗口中,但是它只能做加减运算。1694年,莱布尼兹在德国将其改良成可以进展乘除的计算。此后,一直到20世纪50年代

4、末才有电子计算器的出现。第一章 设计原理及要求1.1 设计方案确实定本设计是以单片机AT89C51为核心的简易计算器设计,要通过芯片AT89C51实现计算器程序运行来完成加、减、乘和除的简单计算功能。本设计运算模块由AT89C51实现,数据输入模块由4*4矩阵键盘电路实现,输出数据模块由LCD显示电路实现,再外加一个时钟电路和一个复位电路完成整个简易计算器的设计。1.2 系统的设计方案本设计由以下几局部组成:AT89C51单片机系统运算模块、键盘电路、显示电路、时钟电路和复位电路构成,计算器系统框图如图1-1所示。图1-1 计算器系统框图1.3 系统的设计要求为了更好地实现系统的功能,硬件电路

5、的设计应该遵循以下原那么:1、优化硬件电路采用软件设计与硬件设计相结合的方法。尽管采用软件来实现硬件系统的功能时,也许响应的时间会比单纯使用硬件时长,而且还要占用微处理器MCU的时间;但是,用软件实现硬件的功能可以简化硬件构造,提高电路的可靠性。所以,在设计本系统的时候,在满足可靠性和实时性的前提下,尽可能地通过软件来实现硬件功能。2、可靠性及抗干扰设计根据可靠性设计理论,系统所用芯片数量越少,系统的平均无故障时间越长。而且,所用芯片数量越少,地址和数据总线在电路板上受干扰的可能性也就越小。因此,系统的设计思想是在满足功能的情况下争取较少数量的芯片。3、灵活的功能扩展功能扩展是否灵活是衡量一个

6、系统优劣的重要指标之一。一次设计往往不能完全考虑到系统的各个方面,系统需要不断完善以及进展功能升级。进展功能扩展时,应该在原有设计的根底上,通过修改软件程序和少量硬件完成。对于本系统而言,就是要求在系统硬件不变的情况下,能够通过修改软件程序,完成功能的升级和扩展。根据提出的系统设计方案,结合以上三条原那么,确定了系统硬件的设计。计算器主要由以下一些功能模块组成:非编码键盘模块、运算模块单片机部和LCD液晶显示模块等。该系统的硬件设计采用了模块化的设计方法。AT89C51单片机、LCD液晶显示屏显示电路和键盘电路是整个电路的核心,它们能实现系统的功能要求。简易计算器主要包括:键盘电路、运算电路和

7、输出显示电路。第二章 硬件模块设计在本设计中主要用到的硬件:单片机AT89C51、液晶显示屏LCD1602 、4*4矩阵键盘。单片机AT89C51的硬件资源分配:(1)P3口:作为输入口,与键盘连接,实现数据的输入;(2)P0、P2口:作为输出口P2口为高位,P0口为低位,控制LCD液晶显示屏显示数据的结果;(3)P1口和局部P3口:作为液晶显示屏LCD1602显示输出。2.1 单片机AT89C51本设计所用单片机采用AT89C51单片机,它兼容于MCS51系列单片机,而且具有1000次可擦写的FLASHMEMORY,方便于系统的开发以及参数的修改。尽管它是8位机,但它的处理精度完全满足系统的

8、设计要求。该种单片机的最高频率可到达24MHz。在12MHz时,其处理速度完全到达设计要求,AT89C51的实物图及引脚图如图2-1所示。图2-1 单片机AT89C51实物图及引脚图2.1.1 AT89C51芯片的特点AT89C51是一种带4K字节闪烁可编程可擦除只读存储器FPEROMFalsh Programmable and Erasable Read Only Memory的低电压,高性能CMOS8位微处理器,俗称单片机,他的特点如下:1、与MCS-51 兼容 2、1000写/擦循环3、4K字节可编程闪烁存储器4、数据保存时间:10年5、全静态工作:0Hz-24Hz6、三级程序存储器锁定

9、7、128*8位部RAM8、32可编程I/O线9、两个16位定时器/计数器10、5个中断源 11、可编程串行通道12、低功耗的闲置和掉电模式13、片振荡器和时钟电路2.1.2 管脚说明VCC:供电电压。GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P0口的管脚第一次写“1时,被定义为高阻输入。P0口能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FLASH编程时,P0 口作为原码输入口,当FLASH进展校验时,P0口输出原码,此时P0口外部必须被拉高。P1口:P1口是一个部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门

10、电流。P1口管脚写入“1后,被部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。P2口:P2口是一个部提供上拉电阻的8位双向I/O口,P2口缓冲器可接收和输出4个TTL门电流,当P2口被写“1时,其管脚被部上拉电阻拉高,且作为输入。当作为输出时,P2口的管脚被外部拉低,将输出电流,这是由于部上拉的缘故。当P2口用于外部程序存储器或16位地址外部数据存储器进展存取时,P2口输出地址的高八位。在给出地址“1时,它利用部上拉优势,当对外部八位地址数据存储器进展读写时,P2口输出其特殊功能存放器的容。P2口在FLA

11、SH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带部上拉电阻的双向I/O口,可接收和输出4个TTL门电流。当P3口写入“1后,它们被部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流ILL,这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口。P3口管脚备选功能如下:P3.0 RXD串行输入口P3.1 TXD串行输出口P3.2 /INT0外部中断0P3.3 /INT1外部中断1P3.4 T0记时器0外部输入P3.5 T1记时器1外部输入P3.6 /WR外部数据存储器写选通P3.7 /RD外部数据存储器读选通P3口同时为闪烁编程和编程校

12、验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想制止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX时ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE制止,置位无效。/PSEN:外部程序

13、存储器的选通信号。在由外部程序存储器取值期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,那么在此期间只管外部程序存储器0000H-FFFFH,不管是否有部程序存储器,注意加密方式1时,/EA将部锁定为RESET;当/EA端保持高电平时,此时只管部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源VPP。XTAL1:反向振荡放大器的输入及部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。2.1.3 振荡器特性XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片振荡

14、器。晶体振荡和瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。输入至部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的上下电平要求的宽度。2.1.4 芯片擦除整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写“1且在任何非空存储字节被重复编程以前,该操作必须被执行。此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下表示静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停顿工作。但RAM、定时器、计数器、串口和中断系统仍在工作。在掉电模式下,保存

15、RAM的容并且冻结振荡器,制止所用其他芯片功能,直到下一个硬件复位为止。2.2 键盘控制模块计算器输入数字和其他功能按键要用到很多按键,如果采用独立按键的方式,在这种情况下,编程会很简单,但是会占用大量的I/O 口资源,因此在很多情况下都不采用这种方式,而是采用矩阵键盘的方案。矩阵键盘采用四条I/O 线作为行线,四条I/O 线作为列线组成键盘,在行线和列线的每个穿插点上设置一个按键。这样键盘上按键的个数就为44个。这种行列式键盘构造能有效地提高单片机系统中I/O 口的利用率。2.2.1 矩阵键盘的工作原理键盘可分为两类:编码键盘和非编码键盘。编码键盘是较多按键20个以上和专用驱动芯片的组合;当

16、按下某个按键时,它能够处理按键抖动、连击等问题,直接输出按键的编码,无需系统软件干预。通用计算机使用的键盘就是编码键盘。在智能仪器中,使用并行接口芯片8279或串行接口HD7279均可以组成编码键盘,同时还可以兼顾数码管的显示驱动,其相关的接口电路和接口软件均可在芯片资料中得到。当系统功能比拟复杂,按键数量很多时,采用编码键盘可以简化软件设计。而非编码键盘本钱低廉。从简易和本钱角度出发,本设计选用的是非编码键盘。如图2-2所示。一般由16个键组成,在单片机中正好可以用一个P口实现16个按键功能,这种形式在单片机系统中也最常用。其矩阵图所对应的仿真图如图2-3所示。图2-2 矩阵键盘部电路图 图

17、2-3矩阵键盘布局图2.2.2 键盘电路主要器件介绍为了进一步节省单片机I/O口资源,我们在设计中使用了MM74C922芯片。MM74C922是一款4*4键盘扫描IC,它可检测到与之相连的4*4键盘的按键输入,并通过数据输出口将按键相应的编码输出。其引脚图如图2-4所示。图2-4 MM74C922芯片引脚图MM74C922引脚说明:(1) Y1-Y4脚1-脚4:4*4键盘第一列至第四列。(2) X1-X4脚11、10、8、7:4*4键盘第一行至第四行。(3) DOA- DODDataout A-D,脚14-17:按键之BCD码输出,其中DOA为LSB,DOD为MSB。(4) VCC脚18:电源

18、脚,+3V至+15V(5) GND脚9:接地管脚(6) OSCOscillator,脚5:键盘扫描电路之频率所需外加电容的引脚。(7) KBMKeyboard Mask,脚6:部消除开关弹跳电路所外加电容的引脚。(8) OEOutput Enable,脚13:芯片使能脚,接低电位可使芯片使能。(9) DAData Available,脚12:数据有效输出脚。任一按键按下时,此脚位会输出高电位,按键释放后此脚又会恢复为低电位。如图2-5所示,在本设计中,计算器输入键盘的4条行线、4条列线分别连接到MM74C922的X1-X4、Y1-Y4引脚,MM74C922的数据输出口与单片机的P2口相连,MM

19、74C922的DA引脚经过一个非门连接到单片机的/INT0脚,当MM74C922检测到键盘输入时,DA产生高电平,与之相连的/INT0检测到低电平,给单片机一个中断,单片机从P2口的低四位读入键盘上按下的按键值。图2-5 键盘接口电路图2.3 LCD显示模块本设计采用LCD液晶显示器来显示输入输出数据。通过D0-D7引脚向LCD写指令字或写数据以使LCD实现不同的功能或显示相应数据。LCD引脚图如图2-6所示。图2-6 LCD1602 引脚图LCD分为带背光和不带背光两种,基控制器大局部为HD44780,带背光的比不带背光的厚,在实际使用中是否带背光并无多大差异,两者尺寸差异如图2-7所示。图

20、2-7 LCD背光和不带背光的尺寸比照图2.3.1 显示电路当系统需要显示少量数据时,采用LCD液晶显示屏进展显示是一种经济实用的方法。P1口作为液晶显示的数据端口,P3.4-P3.6口作为其控制端口,控制LCD液晶显示屏显示输出数据。显示电路图如图2-8所示。图2-8 LCD液晶显示电路2.3.2 LCD1602主要技术参数显示容量:162个字符芯片工作电压:4.55.5V工作电流:2.0mA(5.0V)模块最正确工作电压:5.0V字符尺寸:2.954.35(WH)mm2.3.3 引脚功能说明LCD采用标准的14脚无背光或16脚带背光接口,各引脚接口说明如表2-1所示。表2-1 引脚接口说明

21、表编号符号引脚说明编号符号引脚说明1VSS电源地9D2数据2VDD电源正极10D3数据3VL液晶显示偏压11D4数据4RS数据/命令选择12D5数据5R/W读/写选择13D6数据6E使能信号14D7数据7D0数据15BLA背光源正极8D1数据16BLK背光源负极第1脚:VSS为地电源。第2脚:VDD接5V正电源。第3脚:VL为液晶显示器比照度调整端,接正电源时比照度最弱,接地时比照度最高,比照度过高时会产生“鬼影,使用时可以通过一个10K的电位器调整比照度。第4脚:RS为存放器选择,高电平时选择数据存放器,低电平时选择指令存放器。第5脚:R/W为读写信号线,高电平时进展读操作,低电平时进展写操

22、作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第714脚:D0D7为8位双向数据线。第15脚:背光源正极。第16脚:背光源负极。2.4 运算模块单片机控制AT89C51单片机是在一块芯片中集成了CPU、RAM、ROM、定时器/计数器和多功能I/O等一台计算机所需要的根本功能部件。如果按功能划分,它由如下功能部件组成,即微处理器CPU、数据存储器RAM、程序存储器ROM/EPROM、并行I/O 口、串行口、定时器/计数器、中断系

23、统及特殊功能存放器SFR。单片机是靠程序运行的,并且可以修改。通过不同的程序实现不同的功能,尤其是一些特殊的功能,通过使用单片机编写的程序可以实现高智能、高效率以及高可靠性!因此我们采用单片机作为计算器的主要功能部件,可以很快地实现运算功能。另外系统还包括时钟电路和复位电路。第三章 软件设计3.1 功能介绍实际运用中人们熟悉的计算器,其功能主要如下:1、键盘输入;2、显示数值;3、加、减、乘、除四那么运算;4、对错误输入和输出的控制及提示。3.2系统流程图在软件设计中程序分别要完成键盘输入检测、LCD初始化及显示、算术运算和错误处理及输出等功能。对主程序进展初始化,其他的程序选择模块式的方式。

24、首先对每个模块进展调试,当模块调试成功后,逐一地参加主程序中,最后完成整个软件局部的设计。系统流程图如图3-1所示。开场初始化参数初始化LCD显示有键输入?读取键码LCD显示数字键清零键功能键状态清零输入数值数值送显示缓冲YN根据上次功能键和输入的数据计算结果结果送显示缓冲本次功能键图3-1 系统流程图3.3 程序本设计程序采用C语言编程,程序分为多个模块,由主程序、键值转换和LCD系列程序等模块组成。具体程序见附录。第四章 系统调试4.1软件介绍4.1.1 Keil uVision2仿真软件简介Keil uVision2是德国Keil公司开发的基于Windows平台的单片机集成开发环境,它包

25、含一个高效的编译器、一个工程管理器和一个MAKE工具。其中Keil C51是一种专门为单片机设计的高效率C语言编译器,符合ANSI标准,生成的程序代码运行速度极高,所需要的存储器空间极小,完全可以与汇编语言媲美。Keil uVision2的界面如图4-1所示,Keil uVision2允许同时翻开、浏览多个源文件。图4-1 Keil uVision2的界面4.1.2 protues简介protues软件是英国Labcenter electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国推

26、广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。它是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年已经增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLA

27、B等多种编译器,界面图如图4-2所示。图4-2 protues界面图4.2 软件调试4.2.1 软件分析及常见故障在此次设计中使用Keil uVision2和Proteus软件仿真,其中使用Keil uVision2软件汇编源程序,使用Proteus软件对硬件电路进展模拟。正确连接电路图,使其能按照题目要求及设计初衷正常工作。从库里正确拾取元器件,认真合理地连线,做到不缺件,不缺线,选取适宜的元件参考值,使其能正常工作。通过编译,连接程序。使其生成.hex文件,并连入连好的Proteus图中。测试该计算器是否能正常工作。假设不能,首先要检查有没有漏掉元器件,元器件是否都连接好。其次,要看元件各

28、引脚是否都连接正确,有无接反的。最后要看元件的参考值是否选择合理,电源电压是否能带动元器件正常工作。常见故障:1、逻辑错误:它是由设计错误或加工过程中的工艺性错误所造成的。这类错误包括错线、开路、短路等。2、元器件失效:有两方面的原因:一是器件本身已损坏或性能不符合要求;二是组装错误造成元件失效,如电解电容、集成电路安装方向错误等。3、可靠性差:因其可靠性差的原因很多,如金属化孔、接插件接触不良会造成系统时好时坏,经不起振动;走线和布局不合理也会引起系统可靠性差。4、电源故障:假设样机有电源故障,那么加电后很容易造成器件损坏。电源故障包括电压值不符合设计要求,电源引线和插座不对,功率缺乏,负载

29、能力差等。调试方法:包括多级调试和联机调试。在调试过程中要针对可能出现的故障认真分析,直至检查出原因并排除。本次硬件调试过程中,对所出现的问题进展了认真的分析和改正,最后能够很好的到达设计要求的效果。系统仿真图如图4-3所示。图4-3 系统仿真图4.2.2 仿真结果演示下面以加、减、乘和除分别做仿真演示:1加法:以258和825作为加数和被加数运算,结果为1083。加法仿真结果图如图4-4所示。图4-4 加法仿真结果图2减法:以7654321和1234567作为被减数和减数运算,结果为6419754。减法仿真结果图如图4-5所示。图4-5 减法仿真结果图3乘法:以694和123作为乘数和被乘数

30、运算,结果为85362。乘法结果仿真图如图4-6所示。图4-6 乘法结果仿真图4除法:以1250和5作为被除数和除数运算,结果为250。除法结果仿真图如图4-7所示。图4-7 除法结果仿真图由以上四种运算结果可知软件仿真均正确,没有显示错误。4.3 硬件调试在protues里面把硬件图画好,把所有元器件的参数都设置好,程序在keil里面生成.hex文件,然后在 protues里单片机芯片中导入此文件,运行一切正常后开场准备焊接硬件。在焊接硬件过程中首先得准备好所有必备的东西,比方所需元器件和焊接所用工具等。在焊接前应先在面包板上把硬件插好调试,接通电源看能否显示出结果,如果元器件都是好的并且结

31、果可以显示出,就可以焊接了。如果显示不出来再检查各个器件是否有损坏,并用万用表挨个检查,直至一切显示正常再焊接。在焊接时要注意相邻焊点不能粘在一起,连接线不能太长,并且注意焊点的虚焊、假焊。在使用电烙铁时温度不能太高也不能太低,一般在350度左右,温度太低容易形成冷焊点,太高那么会烧坏电路板。电路板焊接好以后首先测试一下各个元器件是否正常,焊点有无虚焊、连焊、假焊等现象,检查没有问题以后接通电源查看LCD显示是否正常,如果一切显示没有问题把硬件妥善保管,防止不小心损坏。硬件电路实物图如图4-8所示。图4-8 硬件电路实物图完毕语通过这次简易计算器的设计,很大程度的提高了我的理解力和动手能力,也

32、拓宽了知识面。在图书馆和网上查阅资料使我了解了更多的资料,也方便了我们以后的使用。在查询的资料中让我对单片机有了更深入的了解,能把学到的知识用活,而不只局限于理论方面。在硬件制作过程中,当我把硬件都焊好以后接通电源LCD怎么都不显示数字并且在很短的时间就会发热,我查了焊接点和仿真图都没有问题,接着仔细查找了LCD显示器各个管脚,发现两个电压管脚接反了,但在仿真时没出现问题,而在实物中出现了问题,是由于仿真元件都是理想化的,各个问题在实物中根据实际情况就会出现。编程时,充分使用了构造化的思想。这样一来,因为语句较少,程序调试也比拟方便,功能模块可以逐一地调试,充分表达了构造化编程的优势。当每个模

33、块都完成时,将其功能互相整合就完成了整体的设计。经历了从最初的不了解设计容到最后做出仿真结果的过程使我从根本上提高了对专业的认识及兴趣,对于我们工科学生来说,学习了这些对我们以后工作有重大的影响。很感学校和教师给我们提供了这样的平台,能使我们的动手能力增强。感教师对我们提供的帮助。参考文献1 裴岩、利民单片机系统综合设计与实践J.大学出版.2003.12 国林.C语言程序设计J.大学.2001.93 郭天祥.新概念51单片机C语言程序J.电子工业.2009.14 LED与LCD显示器的区别. wenku.baidu./view/57ea20eb172ded630b1cb62b.html5基于单

34、片机简易计算器的设计.wenku.baidu./view/06c710ff910ef12d2af9e742.html6 基于单片机的简易计算器设计.doc88./p-.html7 计算器模拟系统设计. .doc88./p-.html8 计算器设计报告.doc88./p-.html9 基于单片机的计算器.doc88./p-.html10 AT89C51单片机简介.hbfydz./xxyd/103.htm11 Keil uVision2仿真软件的使用说明Vision2集成开发环境wenku.baidu./view/75ad363e5727a5e9856a61e7.html12 44矩阵键盘计算器设

35、计wenku.baidu./view/b1ac2d92daef5ef7ba0d3c65.html13Henderson D. Calibration of fast sampling o scilloscopes. Meas SciTechnol.1990.114 Barry Ross. Hands-On Guide to Oscilloscopes, McGraw-Hill.1994,615 13 V. A. Krukov, R. V. Udovichenko.Debugging DVM ProgramsJ. Programming and puting Software,May.2001附

36、录#include#include#define uchar unsigned char#define uint unsigned intchar translate(int keycode);void arithmetic();void init_LCM();void write_data(char ddata);void write_(char mand);void check_BF();void clearLCD();void display(long a);void dealerror(); void dataoverflow();long x=0,y=0,num=0;int oper

37、ators,input,iny=0;char key;char error5=error;char overflow8=overflow;sbit EN=P34;sbit R_W=P35;sbit RS=P36;main() EA=1;EX0=1;IT0=1; P2=0xff;display(0);init_LCM();write_data(0x30);while(1)/*键值转化为键盘上按键值函数*/char translate(int keycode)switch(keycode)case 0:return 7;break;case 1:return 4;break;case 2:retu

38、rn 1;break;case 3:return c;break;case 4:return 8;break;case 5:return 5;break;case 6:return 2;break;case 7:return 0;break;case 8:return 9;break;case 9:return 6;break;case 10:return 3;break;case 11:return =;break;case 12:return /;break;case 13:return *;break;case 14:return -;break;case 15:return +;bre

39、ak; /*外部中断0处理函数*/void INT_0(void) interrupt 0 using 0key=translate(P2&0x0f);if(key=0) /判断按下的键是否为数值num=num*10+(key-0);if (operators0)y=num;iny=1;elsex=num;if(num-1000000000) /当前数值是否超出限定围display(num);elsedataoverflow();elseswitch(key)case c:x=0;y=0;num=0;iny=0;operators=0;display(num);break;case =:ari

40、thmetic();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;/*算术运算函数*/void arithmetic

41、()if (iny)switch(operators)case 1:x=x+y;num=x;if(num-100000000)display(num);elsedataoverflow();break;case 2:x=x-y;num=x;if(num-100000000)display(num);elsedataoverflow();break;case 3:x=x*y;num=x;if(num-100000000)display(num);elsedataoverflow();break; case 4:if (y=0)dealerror();elsex=x/y;num=x; if(num-100000000)display(num);elsedataoverflow();break;y=0;/*LCD初始化函数*/void init_LCM()write_(0x30);write_(0x30);write_(0x30);write_(0x38);write_(0x08);write_(0x01);write_(0x06);write_(0x0e);/*LCD写数据函数*/void write_data(char ddata)RS=1;/*写指令*/R_W=0;EN=1;/*使

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术总结

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com