基于单片机设计的计算器毕业论文.doc_第1页
基于单片机设计的计算器毕业论文.doc_第2页
基于单片机设计的计算器毕业论文.doc_第3页
基于单片机设计的计算器毕业论文.doc_第4页
基于单片机设计的计算器毕业论文.doc_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

基于单片机设计的计算器毕业论文目 录摘要 I ABSTRACT II 第一章 引言11.1 选题的依据及课题的意义11.2 研究概况及发展趋势综述11.3 实验设计要求21.4.总体设计思路2第二章 设计方案论证与选择32.1 控制部分的设计方案论证与选择32.2 显示电路的设计方案论证与选择42.3 单片机电源部分的设计方案论证与选择62.4 键盘设计方案论证与选择82.5 单片机复位电路的设计方案论证与选择92.6 系统组成10第三章 重要器件的知识介绍113.1 单片机的知识介绍113.1.1单片机功能特性113.1.2单片机各引脚功能说明113.1.3单片机时钟电路133.1.4 LED提示电路143.21602液晶显示资料15第四章 计算器的软件编程164.1 程序设计思想164.2 4*5键盘扫描程序174.3 1602液晶显示程序18第五章 计算器使用说明19结 语20参考文献21致 谢22附录23南昌工程学院本科毕业设计(论文)第一章 引言单片机设计的计算器在人们的日常中是比较的常见的电子产品之一。其特点是携带方便与价格廉价,因此广泛运用于商业交易与生活实用中,可是它还在发展之中,以后必将出现功能更加强大的计算器,基于这样的理念,本次设计用单片机来设计一个六位数的计算器。1.1 选题的依据及课题的意义单片机也被称为微控制器(Microcontroller),是因为它最早被用在工业控制领域。单片机由芯片内仅有CPU的专用处理器发展而来。最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。通过编程可加深对C语言的理解及51单片机系列的硬件、及其指令,还有从硬件上了解单片机是如何扩展外部电路的。如:这次用到了1602液晶,掌握了1602的硬件原理后我们可以使其与单片机相连,通过对单片机的控制,给1602发出指令或数据。通过这次毕业设计可以学到一种学习方法,对于一块陌生的芯片,我们可通过提供给的芯片资料,了解其运作,然后达到运用的目的。1.2 研究概况及发展趋势综述单片机设计的计算器有输入单元(按键)运算单元(MCU)显示单元(LCD)三大部分组成,键盘执行数据采集以及操作的输入,MCU按照固化好的程序运算出结果送入LCD显示。早期的单片机都是8位或4位的。其中最成功的是INTEL的8031,因为简单可靠而性能不错获得了很大的好评。此后在8031上发展出了MCS51系列单片机系统。基于这一系统的单片机系统直到现在还在广泛使用。随着工业控制领域要求的提高,开始出现了16位单片机,但因为性价比不理想并未得到很广泛的应用。90年代后随着消费电子产品大发展,单片机技术得到了巨大的提高。随着INTEL i960系列特别是后来的ARM系列的广泛应用,32位单片机迅速取代16位单片机的高端地位,并且进入主流市场。目前,高端的32位单片机主频已经超过300MHz- 29 -性能直追90年代中期的专用处理器,而普通的型号出厂价格跌落至1美元,最高端的型号也只有10美元。当代单片机系统已经不再只在裸机环境下开发和使用,大量专用的嵌入式操作系统被广泛应用在全系列的单片机上。1.3实验设计要求根据设计要求,设计一个计算器,预计所能达到功能如下(1)该计算器能进行六位数的运算,即运算结果可从0到999999;(2)能进行加减乘除4种运算,精确到小数点后三位;(3)能对错误进行提示,比如被除数等于0,乘法运算结果大于999999等;(4)含有清除单个最低位数据和全部输入数据的功能;(5)能够实现加减乘除四则混合运算,能够实现连续计算,并能判断运算优先级;(6)进行正负数运算;1.4 总体设计思路设计主要采用以下基本模块来实现,控制器模块,输入模块,输出模块和电源模块。通过对控制器进行编程,使其对输入模块的信号进行处理计算,然后通过输出模块反馈给使用者以计算结果。该系统的结构框图如下图所示图1-1 系统组成方框图第二章 设计方案论证与选择2.1 控制部分的设计方案论证与选择方案一 采用单片机AT89S52芯片 AT89S52是一个低功耗,高性能CMOS 8位单片机,片内含8k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准 MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S52可为许多嵌入式控制应用系统提供高性价比的解决方案。AT89S52具有如下特点:40个引脚,8k Bytes Flash片内程序存储器,256 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。方案二 采用单片机AT89C52芯片AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的 Flash存储器可有效地降低开发成本。综上所述,AT89C51不支持ISP,只能采用昂贵的编程器来下程序.AT89S52支持ISP,可采用并口,用下载线,即可下程序,因此用AT89S52作为控制器,不仅功能易于实现,并且有其成本低、技术成熟和功耗小等优点,因此我们采用方案一。2.2 显示电路的设计方案论证与选择 方案一 采用LCD 1602型液晶显示(一) 基本特性a、显示特性 单5V电源电压,低功耗、长寿命、高可靠性 内置192种字符(160个57点阵和32个510点阵字符) 显示方式:SIN、半透、正显 驱动方式:1/16DUTY,1/5BIAS 视角方向:6点 背光方式:底部LED 通讯方式:4位或8位并口可选 标准的接口特性:适配MC51和M6800系列MPU的操作时序。b、物理特性如表2-1所示表2-1 物理特性外形尺寸80*36*14单位可视范围64.6(w)16.0(H)mm显示容量16字符二行点尺寸0.550.75mm点间距0.08mm(二)接口定义表 2-2接口定义管脚号符号功能1VSS电源地2VDD电源电压(+5V)3V0LCD驱动电压(可调)4RS寄存器选择输入端,输入MPU选择模块内部寄存器类型信号RS=0当MPU进行写模块操作,指向指令寄存器当MPU进行读操作,指向地址计数器;RS=1,无论MPU是读操作还是写操作,均指向数据寄存器5R/W读写控制输入端,输入MPU选择读/写操作信号:R/W=0 读操作;R/W=1 写操作6E使能信号输入端,入MPU选择读/写操作使能信号;读操作时,高电平有效;写操作时,下降沿有效7DB0数据输入/输出口,MPU与模块之间的数据传送通道4位通讯方式时,不使用DB078DB1数据输入/输出口,MPU与模块之间的数据传送通道9DB2数据输入/输出口,MPU与模块之间的数据传送通道10DB3数据输入/输出口,MPU与模块之间的数据传送通道11DB4数据输入/输出口,MPU与模块之间的数据传送通道12DB5数据输入/输出口,MPU与模块之间的数据传送通道13DB6数据输入/输出口,MPU与模块之间的数据传送通道14DB7数据输入/输出口,MPU与模块之间的数据传送通道15A背光灯正极16K背光灯负极LCD 1602液晶有16个引脚,它能显示32个字符,且硬件电路设计简单,显示美观。LCD 1602与单片机的接口电路如图2-1所示图2-1LCD 1602与单片机接口电路方案二 采用汉字图形点阵液晶显示器RT12864M显示方案 RT12864M汉字图形点阵液晶显示模块,可显示汉字及图形。供电电源为3.3V+5V(内置升压电路,无需负压),能采用并行和串行两种通信方式。并有光标显示、画面移位、自定义字符、睡眠模式等功能。其与单片机的接口电路如图2-2所示图2-2 12864与单片机的接口电路综上所叙,LCD 1602液晶的设计简单,且能满足设计要求,故我们选择LCD 1602液晶作为显示部分。2.3 单片机电源部分的设计方案论证与选择方案一 用固定式三端稳压器7805 三端稳压集成电路7805只有三条引脚输出,分别是输入端、接地端和输出端。它的样子象是普通的三极管。用7805组成稳压电源所需的外围元件极少,电路内部还有过流、过热及调整管的保护电路,使用起来可靠、方便,而且价格便宜。常见78系列的输入输出压差为7V,所以正常范围内12V是7805的输入电压上限。当电压再高时,虽然也可以继续稳压,但输出电流能力将受到很大影响。因此这里使用9V电池作为电源。如图2-3,7805系列稳压器输出固定的正电压5V,输入端接电容C1可以进一步滤除纹波,输出端接电容C2能改变负载的瞬态影响,使电路稳定工作C1、C2最好采用漏电流小的钽电容。如果采用电解电容,电容要比图中数值增加10倍。图2-3 固定式三端稳压器方案二 用7805加一些外围器件 虽然7805三端集成稳压管内部有过流、过热和安全区的保护电路,但其输出仍有可能发生过压的危险。因此本电路加了过压保护电路,电路如图2-4所示,该电路由稳压管VD3、电阻R3和晶闸管VS组成。图2-4可扩流过压保护5V稳压电源综上所述,方案一电路简单,而且已符合本次设计的要求,第二种方案所用元件较多,性价比不高,所以选择方案一。2.4键盘设计方案论证与选择方案一 通过PS2协义,用键盘同单片机相接,从而实现单片机与键盘通信现在PC机广泛采用的PS/2接口为miniDIN 6引脚的连接器。其引脚图为1数据线(DATA);2未用;3电源地(GND);4电源(+5 V);5时钟(CLK);6未用。其电路如图2-5所示图2-5键盘与单片机接口图由1-7图可知,使用键盘硬件结构比较简单,但键盘的体积太大。方案二 独立键盘独立键盘为一端接地,另一端接I/O口,并且要接上拉电阻。这种键盘的硬件都很容易实现,但每一个按键就要用一个I/O口,非常的浪费单片机的I/O口资源。方案三 自制编码键盘如图2-6是15个按键的编码键盘所示,这种键盘有编程简单,占用资源少,但其硬件比较复杂,要用很多的二极管,不是很理想。图2-6 自制15个按键的编码键盘电路图方案四 4*5矩阵式键盘其矩阵式键盘电路图如图2-7所示图2-7 4*5矩阵式键盘电路图综上所述,矩阵式键盘的硬件简单,使用的I/O口也不多,而且这种键盘的编程方法已很成熟。所以本次键盘部分采用这种矩阵式键盘。2.5单片机复位电路的设计方案论证与选择复位是单片机的初始化操作,其主要功能是把PC初始化为0000H,使单片机从0000H单元开始执行程序。除了进入系统的正常初始化之外,当由于程序运行出错或操作错误是系统处于死锁状态时,为摆脱困境,也需要按复位键以重新启动。RST引脚是单片机复位信号的输入端,复位信号是高电平有效,其有效时间应持续24个振荡周期(即2个机器周期)以上,若使用频率为11.0592MHz的晶振,则复位信号持续时间应超过4s才能完成复位操作。方案一 自动上电复位电路 通过外部复位电路的RC电路充放电来实现的。方案二 手动按键复位电路按键电平复位是通过使复位端经电阻与VCC电源接通而实现的。为了保证复位信号持续时间超过4s,从而实现复位功能,故选择电容为10F,R2的电阻为10k。其复位电路如下图2-8图2-8 复位电路综上所述,自动复位需去电再通电才能复位,而手动复位电路可以随时复位,尤其是程序跑飞时,只需按下键就可以复位。因此选择手动按键复位电路作为单片机复位电路。2.6 系统组成 经过方案最终论证与比较,最终确定的系统组成框图如图2-9 所示。其中单片机作为主控设备对采集输入信号后并进行处理,最后通过输出设备输出给使用者。该系统的结构框图如图2-9所示图2-9 第三章 重要器件的知识介绍3.1 单片机的知识介绍ATMEL公司生产的AT89S52型单片机是方便程序下载程序且好用,而且能够满足本设计的要求。3.1.1单片机功能特性(1)与MCS-51单片机产品兼容 (2)8K字节在系统可编程Flash存储器(3)1000次擦写周期(4)全静态操作:0Hz33MHz (5)三级加密程序存储器 (6)32个可编程I/O口线 (7)三个16位定时器/计数器 八个中断源 (8)全双工UART串行通道(9)低功耗空闲和掉电模式 (10)掉电后中断可唤醒 (11)看门狗定时器(12)双数据指针3.1.2 单片机各引脚功能说明AT89S52的功能引脚如图3-1所示图3-1 AT89S52的引脚图VCC:供电电压。GND:接地。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门流。当P1口的管脚第一次写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口也可作为AT89S52的一些特殊功能口,如表3-1所示表3-1 AT89S52的一些特殊功能口 管脚备选功能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(外部数据存储器读选通)ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令时才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次有效。但在访问外部数据存储器时,这两次信号将不出现。/VPP:当保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,将内部锁定为RESET;当端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。3.1.3 单片机时钟电路时钟电路产生单片机工作所需要的时钟信号,单片机本身就是一个复杂的同步时序电路,为了保证同步工作方式的实现,电路在唯一的时钟信号控制下严格地按时序进行工作。在MCS-51芯片内部有一个高增益反相放大器,其输入端为芯片引脚X1,输出端为引脚X2,在芯片的外部跨接晶体振荡器和微调电容,形成反馈电路,就构成了一个稳定的自激振荡器。 此时钟电路采用11.0592MHz的石英晶体,时钟电路如下图3-2图3-2 时钟电路3.1.4 LED提示电路 这个LED提示电路是用一个LED接单片机的一个引脚,在其引脚发出一个高电平导通。有三个功能:系统初始化时会闪烁、归零时会闪烁、shift功能键会闪烁。与单片机连接的电路原理图如图3-3所示图3-3 LED提示电路3.2 1602液晶显示资料控制器内部带有80*8位(80字节)的RAM缓冲区,对应关系如图3-4所示图3-4 RAM 地址映射图设置数据指针如表3-2表3-2 数据指针显示开/关及光标设置如表3-3表3-3 显示及光标设置指令码功能00111000设置16*2显示,5*7点阵,8为数据接口00001DCBD=1 开显示;C=1显示光标;B=1光标闪烁D=0关显示;C=0不显示光标;B=0不光标闪烁000001NSN=1 当读或写一个字符后地址指针加一,切光标加一N=0当读或写一个字符后地址指针减一,切光标减一S=1当读或写一个字符整屏显示左移(N=1)或右移(N=0)S=0 当写一个字符,整屏不移动其它设置如表3-4表3-4 其它设置指令码功能01H数据指针清零 所有显示清零02H数据指针清零10H光标左移 数据指针加114H光标右移 数据指针减118H屏幕左移 光标跟着左移 数据指针不变1CH屏幕右移 光标跟着左移 数据指针不变第四章 计算器的软件编程4.1主函数根据任务书的要求,让主程序一直保持在一个大循环中(一直保持键盘扫描),对相应的键值进行判断且处理,再接着键盘扫描。具体如程序流程图4-1图4-1 程序流程图4.2 4*5键盘扫描程序根据硬件的介绍,键盘是直接接到I/O口上的,这个键盘需要一个软件的消抖,可对键值按下时产生的脉冲进行相应的延时,键盘扫描程序在附录。其驱动程序流程图4-2如下所示图 4-2 驱动程序流程图4.3 1602液晶显示程序 根据第一章所介绍的1602液晶的相关资料,我编写了一个带双参数的函数(集合了写数据和写指令的函数)如下所示:void write(uchar date,uchar com) lcdrs=com;P0=date;delay(5);lcden=1;delay(5);lcden=0;第五章 计算器使用说明这个计算器的使用,跟平常所使用的普通计算器没多大的区别,只不过有些未知的因数在里面,毕竟没有进行相关的测试,只是一味的满足任务书上的要求。举个简单的例子,符号不能被删除,就是那个“C”键(键盘如图5-1),不能删除符号,但是你想改变符号,你可以直接按符号键。“shift”键,它有两个功能:一是输入负数,这个负数的输入方法是先输入该数的正整数部分,再按下“shift”键,这时信号灯会闪一下,接着在按下负号(这时这个数是不能被“C”键单个清除的);二是做为括号的输入,这个括号在前面第二章主程序中有提起,它是不包含括号运算功能的,只是为了让负数显示的更理想。还有一点是当按下“shift” 键时,想取消则再按一次。(注意:在使用“shift”键的功能时,当要按下第二个键时,应当停留个一阵子,以防键盘扫描程序扫描不到) 然后由于计算器可以进行连续的运算,为了适输入的式子是可以被检查的,所以有“左移”和“右移”两个键。 图5-1 键盘分布结 语在这次毕业设计中遇到到很大的困难,主要原因是平时的知识掌握的不够,通过查阅很多资料和类似的论文才加上刘老师的指导做成的。这次设计让我从硬件上了解单片机是如何扩展外部电路的。如:这次用到了1602液晶,掌握了1602的硬件原理后我们可以使其与单片机相连,通过对单片机的控制,给1602发出指令或数据。通过这次毕业设计可以学到一种学习方法,对于一块陌生的芯片,我们可通过提供给的芯片资料,了解其运作,然后达到运用的目的。对于这次的设计,让我们发自内心的明白了以下这几个道理。其实,这几个道理以前我们就懂,就知道,甚至每个人都知道,但真正到了关键时间,我们还会不会遵循它来办事就是一个问号啦。书读百遍,其义自现,三个臭皮匠胜过一个诸葛亮。正因为我开始没有遵循这几个道理所以在设计中走了不少弯路,表现出来了我很多的不足之处,就因为这样我们才会在这次毕业设计中有进步、有发展,同时使自己的能力得到进一步的提升。我将好好地记录下这次毕业设计的点点滴滴,我想这不单是我的经历,更是我的一笔财富。参考文献1、孙涵芳,徐爱卿编.MCS-51/96 系列单片机原理及应用.北京:北京航天航空大学出版社,1996 2、马崇良.单片微型计算机原理及应用.北京:中国纺织出版社,1996 3、睢丙东.单片机应用技术与实例.北京:电子工业出版社,2005 4、陈国先.PIC单片机原理与接口技术.北京: 电子工业出版社,2004 5、李全利,迟荣强.单片机原理及接口技术.北京:高等教育出版社,2004 6、沈红卫.基于单片机的智能系统设计与实现.北京:电子工业出版社,20057、ORIENT DISPLAY OF 16 CHAR AND 2 LINES DATASHEET(1602H.PDF)8、8-bit Microcontroller with 8K Bytes In-System Programmable FLASH DATASHEET (AT89S52.PDF) ATMEL公司致 谢本论文是在刘淑琴老师的悉心指导下完成的,刘淑琴老师的渊博学识和丰富经验给我留下了深刻的印象。从刘淑琴老师那里我学到的不仅是专业知识与实际问题科学解决的方法,更为重要的是勤奋和严谨治学的精神以及对学生的认真负责,刘老师的谆谆教诲使我受益匪浅,在此向刘老师表示衷心的感谢并致以崇高的敬意!感谢家人给予我学业上和生活上的支持与照顾。同时感谢给予我帮助的各位老师、同学以及朋友们!附录1 元器件清单 名称型号参数数量单片机AT89S521液晶1602液晶一块发光二极管LED1稳压管78051电阻若干晶振11.0592MHz19V电池1电解电容22f1电容104300.1f30pf2 2插座单片机插座40引脚2开关1按键普通按键21排针排座若干附录2 系统原理图附录3 程序#include#define uchar unsigned char#define uint unsigned intsbit fuwei=P26;sbit lcden=P32;sbit lcdrs=P33;sbit a=P35;char op10=0,0,0,0,0,0,0,0,0,0;/运算符号数组uchar code table=ERROR;double h10=0,0,0,0,0,0,0,0,0,0;/整数数组float hxiao10=0,0,0,0,0,0,0,0,0,0,yushu;/小数数组int i,c,error1,xflag,e,e_1,shift,jieguo_f,shuliang_f;uchar j;uchar temp,num,num1;void delay(uint z) /延时子程序 Zms uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);void q_init()fuwei=0;delay(100);fuwei=1;for(i=0;i10;i+)opi=0; hi=0; hxiaoi=0;xflag=0;c=1; /数字标志位i=0; e=0; /位数j=20;error1=0;/除数为零标志位e_1=0; shift=0; /功能键标志位jieguo_f=0;/结果保留标志为shuliang_f=0;/输给液晶字符的数量uchar keyscan() num=20;while(num=20) P1=0xfe; /第一排temp=P1; temp=temp&0xf0;if(a=0) delay(5);if(a=0)while(a=0);num=0;if(temp!=0xf0)delay(5);temp=P1;temp=temp&0xf0;if(temp!=0xf0)temp=P1;while(P1!=0xfe);switch(temp)case 0x7e:num=1;break;case 0xbe:num=2;break;case 0xde:num=3;break;case 0xee:num=4;break; P1=0xfd; /第二排 temp=P1; temp=temp&0xf0;if(a=0) delay(5);if(a=0)while(a=0);num=5;if(temp!=0xf0)delay(5);temp=P1;temp=temp&0xf0;if(temp!=0xf0)temp=P1;while(P1!=0xfd);switch(temp)case 0xed:num=9;break;case 0xdd:num=8;break;case 0xbd:num=7;break;case 0x7d:num=6;break;P1=0xfb; /第三排temp=P1;temp=temp&0xf0;if(a=0) delay(5);if(a=0)while(a=0);num=10; if(temp!=0xf0)delay(5);temp=P1;temp=temp&0xf0;if(temp!=0xf0)temp=P1;while(P1!=0xfb);switch(temp)case 0xeb:num=14;break;case 0xdb:num=13;break;case 0xbb:num=12;break;case 0x7b:num=11;break;P1=0xf7; /第四排temp=P1;temp=temp&0xf0;if(a=0) delay(5);if(a=0)while(a=0);num=15;if(temp!=0xf0)delay(5);temp=P1;temp=temp&0xf0;if(temp!=0xf0)temp=P1;while(P1!=0xf7);switch(temp)case 0xe7:num=19;break;case 0xd7:num=18;break;case 0xb7:num=17;break;case 0x77:num=16;break; return num;void write(uchar date,uchar com) /1602显示及写指令函数lcdrs=com;P0=date;delay(5);lcden=1;delay(5);lcden=0;void init() /1602液晶初始化函数delay(15);lcden=0;write(0x38,0);/设置16*2显示 5*7点阵 八位数据接口write(0x01,0);/清屏write(0x0f,0);/开光标 且闪烁write(0x06,0);/设置地址指针加一write(0x80,0);/写地址void error() /错误显示for(num1=0;num10) h1=(int)(hxiao0*1000);elseh1=0-(int)(hxiao0*1000);h3=h1;while(h1!=0)h2=(int)h1/10;write(h1-h2*10+48,1);h1=h2;if(h3=99)write(0,1);if(h30) /整数部分显示 h1=h0;elseh1=0-h0;if(h1=0)write(0,1);while(h1!=0)h2=(long)h1/10;write(h1-h2*10+48,1);h1=h2;if(h00)if(opi-1=12)hi-1=hi*hi-1; /乘法运算if(hxiaoi-1!=0)hxiaoi=(long)(hxiaoi-1*10)*hi;hxiaoi+1=(long)(hxiaoi/10);hxiaoi+2=(hxiaoi-hxiaoi+1*10)/10; /小数hi-1=hxiaoi+1+hi-1;hxiaoi-1=(hxiaoi-1*1000-(long)(hxiaoi-1*10)*100)/100;hxiaoi=(long)(hxiaoi-1*10)*hi;hxiaoi+1=(long)(hxiaoi/100);hxiaoi+2=(hxiaoi-hxiaoi+1*100)/100+hxiaoi+2; /小数hi-1=hxiaoi+1+hi-1;hxiaoi-1=(hxiaoi-1*100-(long)(hxiaoi-1*10)*10)/10;hxiaoi=(long)(hxiaoi-1*10)*hi;hxiaoi+1=(long)(hxiaoi/1000);hxiaoi+2=(hxiaoi-hxiaoi+1*1000)/1000+hxiaoi+2; /小数hi-1=hxiaoi+1+hi-1;hxiaoi-1=hxiaoi+2;hi

温馨提示

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

评论

0/150

提交评论