基于单片机控制的简单计算器设计方案.doc_第1页
基于单片机控制的简单计算器设计方案.doc_第2页
基于单片机控制的简单计算器设计方案.doc_第3页
基于单片机控制的简单计算器设计方案.doc_第4页
基于单片机控制的简单计算器设计方案.doc_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

基于单片机控制的简单计算器设计方案第1章 绪 论单片机诞生于1971年,经历了SCM、MCU、SoC三大阶段,早期的SCM单片机都是8位或4位的。其中最成功的是INTEL的8051,此后在8051上发展出了MCS51系列MCU系统。基于这一系统的单片机系统直到现在还在广泛使用。随着工业控制领域要求的提高,开始出现了16位单片机,但因为性价比不理想并未得到很广泛的应用。90年代后随着消费电子产品大发展,单片机技术得到了巨大提高。随着INTEL i960系列特别是后来的ARM系列的广泛应用,32位单片机迅速取代16位单片机的高端地位,并且进入主流市场。而传统的8位单片机的性能也得到了飞速提高,处理能力比起80年代提高了数百倍。高端的32位Soc单片机主频已经超过300MHz,性能直追90年代中期的专用处理器,而普通的型号出厂价格跌落至1美元,最高端的型号也只有10美元。当代单片机系统已经不再只在裸机环境下开发和使用,大量专用的嵌入式操作系统被广泛应用在全系列的单片机上。而在作为掌上电脑和手机核心处理的高端单片机甚至可以直接使用专用的Windows和Linux操作系统。单片机作为计算机发展的一个重要分支领域,根据发展情况,从不同角度,单片机大致可以分为通用型/专用型、总线型/非总线型及工控型/家电型。通用型与专用型这是按单片机适用范围来区分的。例如,80C51是通用型单片机,它不是为某种专门用途设计的;专用型单片机是针对一类产品甚至某一个产品设计生产的,例如为了满足电子体温计的要求,在片内集成ADC接口等功能的温度测量控制电路线型这是按单片机是否提供并行总线来区分的。总线型单片机普遍设置有并行地址总线、 数据总线、控制总线,这些引脚用以扩展并行外围器件都可通过串行口与单片机连接,另外,许多单片机已把所需要的外围器件及外设接口集成一片内,因此在许多情况下可以不要并行扩展总线,大大减省封装成本和芯片体积,这类单片机称为非总线型单片机。现代人类生活中所用的几乎每件有电子器件的产品中都会集成有单片机。手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电子产品中都含有单片机。 汽车上一般配备40多片单片机,复杂的工业控制系统上甚至可能有数百片单片机在同时工作!单片机的数量远远超过PC机和其他计算机的总和。本设计采用80S52 芯片,实现了利用单片机进行了一个简单计算器设计。允许对输入数据进行加减乘除运算及LED 显示。第2章 设计方案2.1设计方案本系统选用AT89C51单片机为主控机。通过扩展必要的外围接口电路,实现对计算器的设计,具体设计如下:(1)由于设计的计算器要进行四则运算,为了得到较好的显示效果,经综合分析后,最后采用LCD 显示数据和结果。(2)采用键盘输入方式,键盘包括数字键(09)、符号键(+、-、)、清除键(onc)和等号键(=),故只需要16 个按键即可,设计中采用集成的计算键盘。(3)在执行过程中,开机显示零,等待键入数值,当键入数字,通过LCD显示出来,当键入+、-、*、/运算符,计算器在内部执行数值转换和存储,并等待再次键入数值,当再键入数值后将显示键入的数值,按等号就会在LCD上输出运算结果。(4)错误提示:当计算器执行过程中有错误时,会在LCD上显示相应的提示,如:当输入的数值或计算得到的结果大于计算器的表示范围时,计算器会在LCD上提示overflow;当除数为0时,计算器会在LCD上提示error。为了满足计算器的基本要求,可以基本的运算(加减乘除),数据归零和出错警告提示,我们采用基于单片机设计计算器,并用LED 数码管显示数据,4*4 的矩阵键盘实现数据输入。设计仿真和调试要用到Protues 、Keil等软件。 2.2模块设计一、系统模块图2-1 系统模块图二、算数运算流程图2-2 算数运算流程图三、系统总流程图2-3系统总流程图第3章 AT89C52单片机的简单介绍3.1 AT89C52单片机的简单介绍AT89C52 是美国 ATMEL 公司生产的低电压,高性能 CMOS 8 位单片机,片内含 8k bytes 的可反复擦写的只读程序存 储器(PEROM)和 256 bytes 的随机存取数据存储器(RAM),器件采用 ATMEL 公司的高密度、非易失性存储技术生产, 与标准 MCS-51 指令系统及 8052 产品引脚兼容,片内置通用 8 位中央处理器(CPU)和 Flash 存储单元,功能强大 AT89C52 单片机适合于许多较为复杂控制应用场合。3-1 AT89C52实物图3-2 AT89C52实物引脚图主要性能参数: 与 MCS-51 产品指令和引脚完全兼容 8k 字节可重擦写 Flash 闪速存储器1000 次擦写周期全静态操作:0Hz24MHz三级加密程序存储器2568 字节内部 RAM32 个可编程 IO 口线3 个 16 位定时计数器8 个中断源可编程串行 UART 通道 低功耗空闲和掉电模式 功能特性概述: AT89C52 提供以下标准功能:8k 字节 Flash 闪速存储器,256 字节内部 RAM,32 个 IO 口线,3 个 16 位定时计数器,一个 6 向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C52 可降至 0Hz 的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止 CPU 的工作,但允许 RAM,定时计数器,串行通信口及中断系统继续工作。掉电方式保存 RAM 中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。 AT89C51单片机引脚介绍:VCC: 供电电压。 GND:接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P0口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。 P3口也可作为AT89C51的一些特殊功能口:P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断0) P3.3 /INT1(外部中断1) P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输入) P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通) P3口同时为闪烁编程和编程校验接收一些控制信号。 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 /EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。3.2 MM94C22芯片介绍MM94C22是一个16位的译码器,44的键盘,在单片机系统中,是很常见的。一般都是占用一个单片机的8位接口。 对于这种输入设备,通常是由单片机来识别某行某列的按键是否按下,还需要延时消抖等等。为了节省单片机的IO接口,也可以使用外接芯片来驱动44的键盘。MM74C922,就是一块较好的44的键盘编码芯片。它能够自己独立地进行键盘检测、消抖,以8421码给出键值。它还能给出按键是否按下的标志,其数据线还具有三态输出的功能,便于进行总线连接3-3 MM94C22硬件图MM74C922引脚说明:(1) Y1Y4(脚1脚4):4*4键盘第一列至第四。(2) X1X4(脚11、10、8、7):4*4键盘第一行至第四行。(3) DOA DOD(Dataout AD,脚1417):按键之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对各按键的响应如下表所示:3.3 LED介绍发光二极管LED 是单片机应用系统中的一宗简单而常用的输出设备,其在系统中的主要作用是显示单片机的输出数据、状态等。因而作为典型的外围器件,LED 显示单元是反映系统输出和操作输入的有效器件。LED 具备数字接口可以方便的和大年纪系统连接;它的优点是价格低,寿命长,对电压电流的要求低及容易实现多路等,因而在单片机应用系统中获得了广泛的应用,所以在此设计中我首先选用了LED为基础的LCD作为显示器件。3-4 LCD引脚图下面是LCD的引脚功能介绍:第1脚:VSS为地电源第2脚:VDD接5V正电源第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第714脚:D0D7为8位双向数据线。3.4键盘模块介绍每个按键都有它的行值和列值,行值和列值的组合就是识别这个按键的编码。矩阵的行线和列线分别通过两并行接口和CPU通信。键盘的一端(列线)通过电阻接VCC,而接地是通过程序输出数字“0”实现的。键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么?还要消除按键在闭合或断开时的抖动。两个并行口中,一个输出扫描码,使按键逐行动态接地;另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。计算器输入数字和其他功能按键要用到很多按键,如果采用独立按键的方式,在这种情况下,编程会很简单,但是会占用大量的I/O 口资源,因此在很多情况下都不采用这种方式,而是采用矩阵键盘的方案。矩阵键盘采用四条I/O 线作为行线,四条I/O 线作为列线组成键盘,在行线和列线的每个交叉点上设置一个按键。这样键盘上按键的个数就为44个。这种行列式键盘结构能有效地提高单片机系统中I/O 口的利用率。矩阵键盘的工作原理:计算器的键盘布局如图1所示:一般有16个键组成,在单片机中正好可以用一个P口实现16个按键功能,这种形式在单片机系统中也最常用键盘电路:3-5键盘电路第4章 总体电路图介绍4.1 总体电路图根据设计方案要求以选择的器件设计出下面的电路图:4-1 单片机控制的简单计算器4.2各模块的简单介绍一、手动上电复位电路4-2手动复位电路当VCC上电时,C充电,在10K电阻上出现电压,使得单片机复位;几个毫秒后,C充满,10K电阻上电流降为0,电压也为0,使得单片机进入工作状态。工作期间,按下S,C放电。S松手,C又充电,在10K电阻上出现电压,使得单片机复位。几个毫秒后,单片机进入工作状态。二、内部时钟模式电路:当单片机工作于内部时钟模式的时候,只需在XTAL1和XTAL2引脚连接一个晶体振荡器或者陶瓷振荡器,并接两个电容后接地即可,在使用时对于电容的选择有一定的要求:当外接晶体振荡器的时候,电容值一般选择C1=C2=30+10pF或30-10pF;当外接陶瓷振荡器的时候,电容值一般选择C1=C2=40+10pF或40-10pF;三、键盘接口电路在本设计中,计算器输入键盘的4条行线、列线分别连接到MM74C922的X1-X4、Y1-Y4引脚,MM74C922的数据输出口与单片机的P2口相连,MM74C922的DA引脚经过一个非门连接到单片机的/INT0脚,当MM74C922检测到键盘输入时,DA产生高电平,与之相连的/INT0检测到低电平,给单片机一个中断,单片机从P2口的低四位读入键盘上按下的键的值。四、运算模块(单片机控制):MCS-51 单片机是在一块芯片中集成了CPU、RAM、ROM、定时器/计数器和多功能I/O等一台计算机所需要的基本功能部件。如果按功能划分,它由如下功能部件组成,即微处理器(CPU)、数据存储器(RAM)、程序存储器(ROM/EPROM)、并行I/O 口、串行口、定时器/计数器、中断系统及特殊功能寄存器(SFR)。单片机是靠程序运行的,并且可以修改。通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,通过使用单片机编写的程序可以实现高智能,高效率,以及高可靠性!因此我们采用单片机作为计算器的主要功能部件,可以很快地实现运算功能。第5章 软件介绍5.1 C51语言介绍本次实习运用C语言编程来对单片机进行静态显示的控制、信号的传输转换控制。C语言编程具有以下特点:1)C语言简洁、紧凑,使用方便、灵活。C语言程序比其他许多高级语言简练,源程序短,因此输入程序时工作量少.2)运算符丰富。共有34种。C把括号、赋值、逗号等都作为运算符处理。从而使C的运算类型极为丰富,可以实现其他高级语言难以实现的运算。3)数据结构类型丰富,C语言提供的数据类型有:整形、浮点型、字符型、数组类型、指针类型、结构体类型、共用体等。4)具有结构化的控制语句。5)语法限制不太严格,程序设计自由度大。6)C语言允许直接访问物理地址,能进行位(bit)操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作。因此有人把它称为中级语言。7)生成目标代码质量高,程序执行效率高。8)与汇编语言相比,用C语言写的程序可移植性好。5.2 Keil开发环境Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。一、Keil C51 的概述Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。下面详细介绍Keil C51开发系统各部分功能和使用。二、Keil C51单片机软件开发系统的整体结构C51的工具包非常丰富,其中uVision与Ishell分别是C51 for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及A51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。5.3 Protues软件的简介Protues软件是英国Labcenter electronics公司出版的EDA 工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。迄今为止是世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即将增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MATLAB等多种编译.功能特点:Proteus软件具有其它EDA工具软件(例:multisim)的功能。这些功能是:1原理布图2PCB自动或人工布线3SPICE电路仿真革命性的特点1互动的电路仿真用户甚至可以实时采用诸如RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。2仿真处理器及其外围电路可以仿真51系列、AVR、PIC、ARM、等常用主流单片机。还可以直接在基于原理图的虚拟原型上编程,再配合显示及输出,能看到运行后输入输出的效果。配合系统配置的虚拟逻辑分析仪、示波器等,Proteus建立了完备的电子设计开发环境。器件库超过27000种元器件,可方便地创建新元件;智能的器 件搜索:通过模糊搜索可以快速定位所需要的器件;智能化的连线功能:自动连线功能使连接导线简单快捷,大大缩短绘图时间;支持总线结构:使用总线器件和总线布线使电路设计简明清晰;可输出高质量图纸:通过个性化设置,可以生成印刷质量的BMP图纸,可以方便地供WORD、POWERPOINT等多种文档使用。仿真功能ProSPICE混合仿真:基于工业标准SPICE3F5,实现数字/模拟电路的混合仿真;超过27000个仿真器件:可以通过内部原型或使用厂家的SPICE文件自行设计仿真器件,Labcenter也在不断地发布新的仿真器件,还可导入第三方发布的仿真器件; 多样的激励源:包括直流、正弦、脉冲、分段线性脉冲、音频(使用wav文件)、指数信号、单频FM、数字时钟和码流,还支持文件形式的信号输入; 丰富的虚拟仪器:13种虚拟仪器,面板操作逼真,如示波器、逻辑分析仪、信号发生器、直流电压/电流表、交流电压/电流表、数字图案发生器、频率计/计数器、逻辑探头、虚拟终端、SPI调试器、I2C调试器等; 生动的仿真显示:用色点显示引脚的数字电平,导线以不同颜色表示其对地电压大小,结合动态器件(如电机、显示器件、按钮)的使用可以使仿真更加直观、生动; 高级图形仿真功能(ASF):基于图标的分析可以精确分析电路的多项指标,包括工作点、瞬态特性、频率特性、传输特性、噪声、失真、傅立叶频谱分析等,还可以进行一致性分析。5.4 各模块程序编程各模块程序编程:1、主函数设计:/*函数声明*/#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_com(char command);void check_BF();void clearLCD();void display(long a);void dealerror(); void dataoverflow();/*定义变量和数组*/long x=0,y=0,num=0;int operators,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)2、分块程序设计:(1)键盘输入检测程序设计:有键按下时,单片机响应外部中断0,转入外部中断0中断处理函数,在中断处理函数中完成对按键的判断,以进行下一步的程序处理。/*键值转化为键盘上按键值函数*/char translate(int keycode)switch(keycode)case 0:return 7;break;case 1:return 4;break;case 2:return 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 +;break; /*外部中断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-134217728) /当前数值是否超出限定范围display(num);elsedataoverflow();elseswitch(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)算术运算程序设计:/*算术运算函数*/void arithmetic()if (iny)switch(operators)case 1:x=x+y;num=x;if(num-134217728)display(num);elsedataoverflow();break;case 2:x=x-y;num=x;if(num-134217728)display(num);elsedataoverflow();break;case 3:x=x*y;num=x;if(num-134217728)display(num);elsedataoverflow();break;case 4:if (y=0)dealerror();elsex=x/y;num=x; if(num-134217728)display(num);elsedataoverflow();break;y=0;(3)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;i10;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(a0;i-)b=1;for(j=0;ji-1;j+)b=b*10;write_data(0x30+a/b);a=a%b;(4)错误处理及提示程序设计:/*除数为处理函数*/void dealerror()int i=0;clearLCD();for(i=0;i5;i+)write_data(errori);/*数值溢出处理函数*/void dataoverflow()int i=0;clearLCD();for(i=0;i8;i+)write_data(overflowi);结 论本设计是基于51系列单片机来进行的数字计算器系统设计,完成计算器的键盘输入,进行加、减、乘、除基本四则运算,并在LCD上显示相应的结果;设计电路采用AT89C52单片机为主要控制电路,利用MM74C922作为计算器4*4键盘的扫描IC读取键盘上的输入;显示采用字符LCD静态显示;软件方面使用C语言编程,并用PROTUES仿真。这次的设计较好的完成了以上需要的结果,对单片机功能有了基本的应用,译码器有了基本的了解,对于PROTUES画图及其仿真有恨得锻炼。参考文献1 边春元.C51单片机典型模块设计与应用M.北京:机械工业出版社,2008.42 彭伟.单片机语言程序设计实训100例M.北京:电子工业出版社,2009.63 常敏,王涵.51单片机应用程序开发与实践M.北京:电子工业出版社,2009.34 胡辉.单片机原理及应用设计M.北京:水利水电出版社,2005.75 赵建领.51系列单片机开发宝典M.北京:电子工业出版社,2007.46

温馨提示

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

最新文档

评论

0/150

提交评论