毕业设计(论文)-基于单片机的计算器设计.docx_第1页
毕业设计(论文)-基于单片机的计算器设计.docx_第2页
毕业设计(论文)-基于单片机的计算器设计.docx_第3页
毕业设计(论文)-基于单片机的计算器设计.docx_第4页
毕业设计(论文)-基于单片机的计算器设计.docx_第5页
免费预览已结束,剩余34页可下载查看

下载本文档

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

文档简介

目录一、系统设计31.1、功能介绍31.1.1、基本功能31.2、总体设计方案31.2.1、总体设计思路31.2.2、方案论证与比较31.2.2.5、键盘设计方案与选择5二、重要器件的知识介绍62.1、单片机的知识介绍62.1.1、单片机的主要性能72.1.2、单片机的功能特性描叙72.1.3、单片机的内部结构方框图及芯片引脚图82.1.4、单片机各引脚功能说明82.1.5、单片机时钟电路102.1.6、单片机复位电路102.1.7、单片机下载口电路11三、程序流程图123.1、程序清单14产品使用说明14设计体会16参考文献16附录1、元器件清单17附录2、系统原理图18附录3、程序清单18致 谢38基于单片机的计算器电子工程专业学生 指导教师 摘要:本设计采用单片机作为控制芯片,用c语言对其进行编程实现,输入由4*4矩阵式键盘控制,输出采用人性化的sby12864k-zk型液晶实现。该计算器为多功能计算器,在未进行计算时,它是一个万年历时钟,并且带脑钟和星期显示,所以数据均可随时进行校准,校准数据采用的是独立式键盘,是将4*4矩阵式键盘的一根线拉低,然后读取与这根线交叉的4根线的所处状态来判断按键是否被按下,而这4个按键中只有3个按键用于万年历的校准和对脑钟的控制,另一个按键则用来切换进入计算模式。对于计算这个部分我采用的是矩阵键盘,10个数字键,一个小数点键,四个符号键,一个多功能键,通过判别该多功能键连续按的次数来决定该键此时的命令。由于c语言库函数繁多,所以我采用调用c语言库函数来解决多种运算类型,这样编程更简单,运行起来也更可靠。关键字:单片机,点阵图形液晶,矩阵键盘,c语言库函数。student majoring in name tutor name(小四times new romar)abstract: the design uses a single-chip microcomputer as the control chip, using c programming language of its input from 4 * 4 matrix keyboard control, the output of the use of human sby12864k-zk-type liquid crystal to achieve. multi-function calculator for the calculator, before the calculation, it is a calendar clock and bell and weeks with the brain showed that there may at any time calibration data, calibration data is used in stand-alone keyboard, is a 4 * 4 matrix keyboard down one line, and then read with the root of the cross-line 4-line state to determine which button has been pressed, which is only four keys for the three calendar button calibration and the control of the brain clock, and the other button is used to switch into the mode of calculation. for this part of the calculation i used the keyboard matrix, 10 numeric keys, a decimal point key, four symbol keys, a multi-function keys, multi-function through the identification of the row by the number of keys to determine the order of the key at this time. c language library function as a result of many, so i used to call c language library function to solve a wide range of operator types, such programming is much simpler, it is also more reliable. keywords: single-chip, dot-matrix graphic lcd, matrix keyboard, c language library function.引言说起计算器,值得我们骄傲的是,最早的计算工具诞生在中国。中国古代最早采用的一种计算工具叫筹策,又被叫做算筹。这种算筹多用竹子制成,也有用木头,兽骨充当材料的。约二百七十枚一束,放在布袋里可随身携带。直到今天仍在使用的珠算盘,是中国古代计算工具领域中的另一项发明,明代时的珠算盘已经与现代的珠算盘几乎相同。17世纪初,西方国家的计算工具有了较大的发展,英国数学家纳皮尔发明的纳皮尔算筹,英国牧师奥却德发明了圆柱型对数计算尺,这种计算尺不仅能做加减乘除、乘方、开方运算,甚至可以计算三角函数,指数函数和对数函数,这些计算工具不仅带动了计算器的发展,也为现代计算器发展奠定了良好的基础,成为现代社会应用广泛的计算工具。一、系统设计1.1、功能介绍1.1.1、基本功能根据所学知识,自行设计一个计算器,要求自行设计供电电源,该计算器能够实现加减乘除四则混合运算,能够实现连续计算。1.1.2、扩展功能(1)、该计算器能够实现浮点数的运算。(2)、该计算器在不进行计算时能够当时钟用,并且该时钟可显示星期和日历,同时能够修改其值。(3)、该计算器能够实现加减乘除以外的其他运算。1.2、总体设计方案1.2.1、总体设计思路本设计主要采用以下基本模块来实现,控制器模块,输入模块,输出模块和电源模块。通过对控制器进行编程。使其对输入模块的信号进行处理计算,然后通过输出模块反馈给使用者以计算结果。1.2.2、方案论证与比较1.2.2.1、控制部分的设计方案论证与选择根据设计要求,控制器主要用于红外信号的接收和辨认、控制步进电机的动作,控制显示步进电机的转速等。对于控制器的选择有以下二种方案。方案一:采用计算器专用芯片实现。用计算器专用芯片进行设计并编程实现。这种设计方案计算效率高、速度快、而且成本也相对较低,是厂家做计算器的最佳方案。但是本人对计算器专用芯片掌握的不够,还不足以实现设计计算器,所以这个方案不可去。方案二、用单片机实现。由于单片机集成了运算器电路、控制电路、存储器、中断系统、定时器/计数器以及输入/输出口电路等,所以用单片机设计控制电路省去了很多分立元器件。由于单片机是可编程芯片,并且它可以运用c语言编写,对于一些复杂的计算功能,可以调用c语言库函数。使编写程序变得非常简单。所以该课题用单片机实现,不仅功能易于实现,而且精确度高,稳定性好,抗干扰能力强。并且由于其成本低、体积小、技术成熟和功耗小等优点,且技术比较成熟。性价比也相当高。更重要的是本人经过几年的学习,对单片机已有深刻的理解,并且可以灵活运用。综上所述,并通过各个方面综合比较为达到最佳效果。我们采用方案二利用单片机控制器。1.2.2.3、显示电路的设计方案论证与选择方案一:数码管显示方案。数码管显示使用两个四位一体动态数码管显示方案,此设计电路如图1-1所示。采用动态数码管显示,具有程序简单, 对外界环境要求低,易于维护,同时其精度比较高,精确可靠,操作简单。显示直观的特点。但只能显示数字和一些代码,不能显示汉字及一些常用的符号,且硬件设计比较复杂。图1-1、两个四位一体数码电路图方案二:采用汉字图形点阵液晶显示器rt12864显示方案。rt12864m汉字图形点阵液晶显示模块,可显示汉字及图形。供电电源为3.3v+5v(内置升压电路,无需负压),能采用并行和串行两种通信方式。并有光标显示、画面移位、自定义字符、睡眠模式等功能。综上所叙,12864的显示效果好、功能齐全,所以我们选用12864液晶显示。其与单片机的接口电路如图1-2所示。图1-2、12864与单片机的接口电路1.2.2.4、单片机电源部分的设计方案论证与选择由于本次设计中单片机工作电源为5v,所以需要稳压,对于5v电源这里有以下两种方案。方案一:用固定式三端稳压器7805。如图1-5,7805系列稳压器输出固定的正电压5v,输入端接电容c1可以进一步滤除纹波,输出端接电容c2能改变负载的瞬态影响,使电路稳定工作c1、c2最好采用漏电流小的钽电容。如果采用电解电容,则电容要比图中数值增加10倍。图1-3、固定式三端稳压器方案二:用7805加一些外围器件。虽然7805三端集成稳压管内部有过流、过热和安全区的保护电路,但其输出仍有可能发生过压的危险。因此本电路加了过压保护电路,电路如图1-4所示,该电路由稳压管vd3、电阻r3和晶闸管vs组成。另外由于7805的最大输出电流为1.5a,可以通过在7805的1脚与vt1的基极相连,7805的2脚与vt1的集电极相连,这样就可输出1.6a2a的电流。如需更大的电流,可再并联几个大功率三极管。图1-4、可扩流过压保护5v稳压电源综上所述,方案一电路简单,而且已符合本次设计的要求,再加上第二种方案所用元件较多,性能价格比不高,所以我们选择方案一。1.2.2.5、键盘设计方案与选择方案一:独立键盘。独立键盘为一端接地,另一端接i/o口,并且要接上拉电阻。这种键盘的硬件都很容易实现,但每一个按键就要用一个i/o口,非常的浪费单片机的i/o口资源,不适合本次设计。方案二:4*4矩阵式键盘。其电路图如图图1-5所示,这种键盘的硬件简单,使用的i/o口也不多,而且这种键盘的编程方法已很成熟。所以本次设计采用这种矩阵式键盘。其电路图如图图1-5、4*4矩阵式键盘电路图1.2.3、系统组成经过方案比较与论证,最终确定的系统组成框图如图1-6所示。其中单片机作为主控设备对采集输入信号后并进行处理,最后通过输出设备输出给使用者。,该系统的结构框图如图。图1-6、系统组成方框图二、重要器件的知识介绍2.1、单片机的知识介绍由于atmel公司生产的at89s52型单片机是即便于下载又好用,而且能够满足本设计的要求。所以我选择at89s52型单片机。2.1.1、单片机的主要性能2.1.2、单片机的功能特性描叙 2.1.3、单片机的内部结构方框图及芯片引脚图图2-1、单片机的内部结构方框图及2.1.4、单片机各引脚功能说明vcc:供电电压。gnd:接地。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所示。 表2.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(外部数据存储器读选通)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:来自反向振荡器的输出。2.1.5、单片机时钟电路时钟电路用于产生单片机工作所需要的时钟信号,单片机本身就是一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地按时序进行工作。在mcs-51芯片内部有一个高增益反相放大器,其输入端为芯片引脚x1,输出端为引脚x2,在芯片的外部跨接晶体振荡器和微调电容,形成反馈电路,就构成了一个稳定的自激振荡器。 此电路采用12mhz的石英晶体。时钟电路如下图2-2: 图2-2时钟电路2.1.6、单片机复位电路复位是单片机的初始化操作,其主要功能是把pc初始化为0000h,使单片机从0000h单元开始执行程序。除了进入系统的正常初始化之外,当由于程序运行出错或操作错误是系统处于死锁状态时,为摆脱困境,也需要按复位键以重新启动。rst引脚是单片机复位信号的输入端,复位信号是高电平有效,其有效时间应持续24个振荡周期(即2个机器周期)以上,若使用频率为12mhz的晶振,则复位信号持续时间应超过4s才能完成复位操作。复位操作有上电自动复位和按键手动复位两种方式。上电自动复位是通过外部复位电路的电容充电来实现的。按键电平复位是通过使复位端经电阻与vcc电源接通而实现的。在本设计中采用了按键电平复位方式,其复位电路如下图2-3。图2-3、复位电路2.1.7、单片机下载口电路下载口电路以一块74hc373芯片为主,电路原理图如图2-4所示。由于电路中只用了一片74hc373所以完全可以把电路装在db25插针式并口插头内部,这个可以做到很小巧,可以很方便的使用。为了稳定也可以芯片外围加一些电阻、电容等元件,具体电路网上有提供下载。光是做好下载线是不行的,s51系统的isp下载方式还要求要下载程序单片机运行在最小化系统中。只要把的相应引脚连接起来就可以对s51进行isp下载了。要接的引线是s51的6,7,8,9,20,40引脚。晶振可以在3m24m间选用,当然是看你的目标板而选择。为了方便使用我们需要做一个下载头,电路简单接线正确的话一般无需要调整就可以正常使用,如有问题可以用软件中的isptest.exe(下载线调试程序) 检查你的74hc373芯片是否正常和你的电脑并口是否正常。图2-4、下载口电路原理图三、程序流程图主程序流程图显示程序流程图键扫程序流程图3.1、程序清单程序清单见附录4。产品使用说明该产品16个按键作为输入信号,液晶为显示器,按键功能如下图所示。09为数字键,其中03有第二功能,一个小数点键,一个等号键,该键为四功能键,四个运算符号键。通电后显示器显示万年历、星期和脑钟,此时按0键可进行校时,可看到时钟已停,并且秒在闪烁,此时按1键可使秒加一,按2键可使秒减一,把秒设定好后,再按0键,秒停止闪烁,分开始闪烁,此时按1键和2键同样可对分进行修改,然后依次时、日、月、年、以及闹钟的秒、分、时进行修改,然后再按0键时钟恢复走时,万年历和闹钟的校准就完成啦。如果要使用计算器功能,则直接按3键即可进入计算器模式,等号键单键为“=”,双键为清除,默认计算类型为加减乘除,若要进行其他类型的计算,则可使用等号键三键,然后选择运算类型进行运算,此时符号键所对应的运算符号也有相应的变化。该计算器的计算功能可实现加减乘除、正弦余弦正切余切、反正弦反余弦反正切反余切、平方、立方、m的k次方(m和k均由键盘输入)、e为底的m次方、自然对数、常用对数、开平方根。可谓功能齐全,操作简单,给使用带来极大方便。设计体会在这次设计中使我对步进机有了更深的了解,对单片机也有了更高成次的了解,单片机的种类多,而型号杂,也是我们学习中的困难,所以就mcs51系列的产品来说,就是一个典型的学习方法。单片机编程是用汇编语言进行编程,也就需要我们对电路的分析,然后总结,查阅相关资料才能变成好的程序,编程讲究的是多动手写,自己写,用自己的思路,不怕写错,写错再改,懂得有新的思想这样才能提高。在这次单片机应用系统设计中遇到到很大的困难,主要原因是平时的知识掌握的不够,通过查阅很多资料和类似的论文,才做成的。以前也做过不少单片机设计,但面对这次设计,似乎也有一点束手五册了。在这次的设计中,让我们发自内心的明白了以下这几个道理。其实,这几个道理以前我们就懂,就知道,甚至每个人都知道,但真正到了关键时间,我们还会不会遵循它来办事就是一个问号啦。书读百遍,其义自现。三个臭皮匠胜过一个诸葛亮。团结就是力量。温故而知新。正因为我开始没有遵循这几个道理所以在设计中走了不少弯路,表现出来了我很多的不足之处,就因为这样我们才会在这次设计中有进步、有发展,同时使自己的能力得到进一步的提升。我将好好地记录下这次设计的点点滴滴,我想,这不单是我的经历,更是我的一笔财富。参考文献(1) 李广弟 单片机原理及应用 北京航天航空大学出版社 2008.2(2) 潘新民 微型计算机控制技术 电子工业出版社 2008.5(3) 梅丽凤 单片机原理及接口技术 清华大学出版社 2004.6(4) 李陪金 c语言程序设计案例教程 西安电子科技大学出版社 2008.1(5) 戴佳 51单片机c语言应用程序设计实例精讲 电子工业出版社 2006.4(6) 谭浩强 c程序设计 清华大学出版社附录1、元器件清单 名称型号参数数量单片机at89s522液晶sby12864z-zk3一块双12v变压器1发光二极管led3二极管in40018三极管9013,90144,8稳压管78051排阻10k*81电阻若干晶振11.0592mhz1下载口1电源接口1电解电容100f470f14电容104300.1f30pf4 4插座单片机插座所存器插座40引脚,24引脚21开关1按键普通按键12排针排座若干附录2、系统原理图原理图附录3、程序清单#include #include #include #include #define uchar unsigned char#define uint unsigned int#define ulong unsigned long sbit rs=p20;sbit rw=p21;sbit en=p22;sbit psb=p23;sbit ret=p25;sbit rd=p37; sbit s=p10;sbit s1=p14;sbit s2=p15;sbit s3=p16;sbit s4=p17;uchar count,s1num;unsigned int nin,ss;char yue,re,qi,shi,fen,miao;uchar dshi,dfen,dmiao,ling,aa,t1,p;uchar command,data0,data1,data2,com0,j,l;unsigned char command,data1,data2,com0,bb,bb0,aa,cc,i,yun;/uchar lcdh,lcdl,key; float ds,m,k;ulong ds0;bit flag,flag1,flag2,flag3,flag4;uchar disbuf9=0; /定义显示缓冲区/uchar code table=0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x2e;uchar code table1=0xc8,0xd5,0xd2,0xbb,0xb6,0xfe,0xc8,0xfd,0xcb,0xc4,0xce,0xe5,0xc1,0xf9;/日六/uchar code table2=0x32,0x30,0x30,0x39,0xc4,0xea,0x30,0x35,0xd4,0xc2,0x30,0x31,0xc8,0xd5; /年月日/uchar code table4=0xd0,0xc7,0xc6,0xda,0xc1,0xf9; /星期六/uchar code tabping=32,29,32,31,32,31,32,32,31,32,31,32;uchar code tabrun=32,30,32,31,32,31,32,32,31,32,31,32;uchar code xing1=3,6,0,3,5,1,3,6,2,4,0,2;uchar code xing2=4,0,0,3,5,1,3,6,2,4,0,2;uchar xing12=0;uchar tab12=0; /延时/void delay(uint ms) /延时250usuchar i;while(ms-)for(i=0;i125;i+);/lcd初始化/void lcd_int()ret=0;delay(3);ret=1;_nop_();psb=1; /将psb置1,通信方式为8bit数据并口/_nop_();/写指令程序/void write_command(uchar command)delay(3);rs=0;rw=0;p0=command;en=1;_nop_();_nop_();en=0;/写数据程序/void write_data(uchar data0) delay(3);rs=1;rw=0;p0=data0;en=1;_nop_();_nop_();en=0;/lcd功能设置/void lcd_set()command=0x30; /基本指令集/write_command(command);command=0x01;write_command(command);command=0x06;write_command(command);command=0x0c;write_command(command);/清屏程序/void clear_lcd ()command=0x01;write_command(command);command=0x34;write_command(command);command=0x30;write_command(command);void display()command=com0;write_command(command);data2=lcdh;write_data(data2);data1=lcdl;write_data(data1);void display1(uchar y, uchar x, uchar *p) switch (y) case 1:write_command(0x7f+x); break; /液晶第一行case 2:write_command(0x8f+x); break; /0x90+(x-1)case 3:write_command(0x87+x);break;case 4:write_command(0x97+x);break;default:break;while(*p) write_data(*p+); void xiaoshu()/先判断k是否为小数,如果k为小数,就将k转化为小数/uchar i;uint mg=1;if(flag1)for(i=0;icc;i+)mg*=10;k=k/(mg*1.0);cc=0;flag1=0; /键扫描程序/uchar keyscan()uchar scancode,tmpcode; p1=0xf0; / 行全为0 if(p1&0xf0)!=0xf0) /有键按下 delay(100); /延时去抖动 if(p1&0xf0)!=0xf0) /判是否真的有键按下 scancode=0xfe; /诼行扫描 while(scancode&0x10)!=0) p1=scancode; if(p1&0xf0)!=0xf0) /本行有键按下 tmpcode=(p1&0xf0)|0x0f; /返回特征字节码,为1的位即对应于行和列 return(scancode)+(tmpcode); else scancode=(scancode1)|0x01; /行扫描码左移一位 return(0); /无键按下,返回值为0disjia()com0=0x83;lcdh=0xbc;lcdl=0xd3;display();com0+; lcdh=0xb7;lcdl=0xa8;display();com0=0x87;disjian()com0=0x83;lcdh=0xbc;lcdl=0xf5;display();com0+; lcdh=0xb7;lcdl=0xa8;display();com0=0x87;discheng()com0=0x83;lcdh=0xb3;lcdl=0xcb;display();com0+; lcdh=0xb7;lcdl=0xa8;display();com0=0x87;dischu()com0=0x83;lcdh=0xb3;lcdl=0xfd;display();com0+; lcdh=0xb7;lcdl=0xa8;display();com0=0x87;void jishu()/把ds0处理后放入显示缓冲区中/disbuf0=ds0/1000000000%10;disbuf1=ds0/100000000%10;disbuf2=ds0/10000000%10;disbuf3=ds0/1000000%10;disbuf4=ds0/100000%10;disbuf5=ds0/10000%10;disbuf6=ds0/1000%10;disbuf7=ds0/100%10;disbuf8=ds0/10%10;disbuf9=ds0%10;void disds()uchar i;com0=0x98;for(i=0;i10;i+)if(i%2=0) com0+;write_command(com0); write_data(tabledisbufi);flag=0;com0=0x88;lcdh=0x20;lcdl=0x20;for(i=0;i16;i+) display();com0+;com0=0x87; zhixing()/计算/xiaoshu();if(bb0=1)switch (bb)case 1:ds=m+k;m=ds;k=0;break;case 2:ds=m-k;m=ds;k=0;break;case 3:ds=m*k;m=ds;k=0;break;case 4:ds=m/k;m=ds;k=0;break;default:break; else if(bb0=2) switch (bb)case 1:m=m*3.1415926536;m=m/180.0;ds=sin(m);break; case 2:m=m*3.1415926536;m=m/180.0;ds=cos(m);break; case 3:m=m*3.1415926536;m=m/180.0;ds=tan(m);break; case 4:m=m*3.1415926536;m=m/180.0;ds=1.0/tan(m);break; default:break; else if(bb0=3) switch (bb)case 1:ds=asin(m);ds=ds*180.0;ds=ds/3.1415926536;break; case 2:ds=acos(m);ds=ds*180.0;ds=ds/3.1415926536;break; case 3:ds=atan(m);ds=ds*180.0;ds=ds/3.1415926536;break; case 4:ds=1.0/atan(m);ds=ds*180.0;ds=ds/3.1415926536;break; default:break; else if(bb0=4) switch (bb)case 1:ds=m*m;break; /平方/case 2:ds=m*m*m;break; /立方/case 3:ds=1;for(i=0;ik;i+)ds=ds*m;break; /m的k次方/case 4:ds=exp(m);break; /e的m次方/default:break; else if(bb0=5) switch (bb)case 1:ds=log(m);break; /自然对数/case 2:ds=log10(m);break; /常用对数/case 3:ds=sqrt(m);break; /开方/default:break; if(ds4294967295)clear_lcd();display1(1,3,得数大于);display1(2,2,二的三十二次方);display1(4,2,请你按复位键);delay(65000);ds0=ds;if(dsds0) if(ds1000) ds0=ds*1000000;jishu();disbuf9=disbuf8;disbuf8=disbuf7;disbuf7=disbuf6;disbuf6=disbuf5;disbuf5=disbuf4;disbuf4=10;else if(ds10000)ds0=ds*100000;jishu();disbuf9=disbuf8;disbuf8=disbuf7;disbuf7=disbuf6;disbuf6=disbuf5;disbuf5=10;else if(ds100000)ds0=ds*10000;jishu();disbuf9=disbuf8;disbuf8=disbuf7;disbuf7=disbuf6;disbuf6=10;else if(ds1000000)ds0=ds*1000;jishu();disbuf9=disbuf8;disbuf8=disbuf7;disbuf7=10;else if(ds2)yun=0;jiemian1();break;default:break; void set()ds=0;m=0;k=0;bb=0;cc=0;flag1=0;/键功能程序/void keyproc(uchar key)key=keyscan();switch (key) case 0x11:lcdh=0xa3;lcdl=0xb0;if(flag1)cc+; com0+;p=0;k=k*10+p;display();aa=0;break;case 0x21:lcdh=0xa3;lcdl=0xb1;if(flag1)cc+; com0+;p=1;k=k*10+p;display();aa=0;break; case 0x41:lcdh=0xa3;lcdl=0xb2;if(flag1)cc+; com0+;p=2;k=k*10+p;display();aa=0;break;case 0x81:lcdh=0xa3;lcdl=0xb3;if(flag1)cc+; com0+;p=3;k=k*10+p;display();aa=0;break; case 0x12:lcdh=0xa3;lcdl=0xb4;if(flag1)cc+; com0+;p=4;k=k*10+p;display();aa=0;break;case 0x22:lcdh=0xa3;lcdl=0xb5;if(flag1)cc+; com0+;p=5;k=k*10+p;display();aa=0;break;case 0x42:lcdh=0xa3;lcdl=0xb6;if(flag1)cc+; com0+;p=6;k=k*10+p;display();aa=0;break; case 0x82:lcdh=0xa3;lcdl=0xb7;if(flag1)cc+; com0+;p=7;k=k*10+p;display();aa=0;break; case 0x14:lcdh=0xa3;lcdl=0xb8;if(flag1)cc+; com0+;p=8;k=k*10+p;display();aa=0;break; case 0x24:lcdh=0xa3;lcdl=0xb9;if(flag1)cc+; com0+;p=9;k=k*10+p;display();aa=0;break;case 0x44:lcdh=0xa3;lcdl=0xae;com0+;flag1=1;display();aa=0;break; /清除 / case 0x84:aa+;if(a

温馨提示

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

评论

0/150

提交评论