基于单片机的计算器的论文_第1页
基于单片机的计算器的论文_第2页
基于单片机的计算器的论文_第3页
基于单片机的计算器的论文_第4页
基于单片机的计算器的论文_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

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

文档简介

1、目录、系统设计 41.1 、功能介绍 41.1.1 、基本功能 41.2 、总体设计方案 41.2.1 、总体设计思路 41.2.2 、方案论证与比较 51.2.2.5 、键盘设计方案与选择 8、重要器件的知识介绍 102.1 、单片机的知识介绍 102.1.1 、单片机的主要性能 102.1.2 、单片机的功能特性描叙 102.1.3 、单片机的部结构方框图及芯片引脚图 112.1.4 、单片机各引脚功能说明 112.1.5 、单片机时钟电路 142.1.6 、单片机复位电路 152.1.7 、单片机下载口电路 15三、程序流程图 173.1 、程序清单 19产品使用说明 20设计体会 21

2、参考文献 23附录 1、元器件清单 23附录 2、系统原理图 25附录 3、程序清单 26致 65基于单片机的计算器电子工程专业学生 勾艳玲指导教师 曾实现摘要:本设计采用单片机作为控制芯片, 用 C语言对其进行编程实现, 输入由 4*4 矩阵 式键盘控制,输出采用人性化的 SBY12864K-ZK型液晶实现。该计算器为多功能计算器,在 未进行计算时, 它是一个万年历时钟, 并且带脑钟和星期显示, 所以数据均可随时进行校准, 校准数据采用的是独立式键盘, 是将 4*4 矩阵式键盘的一根线拉低, 然后读取与这根线交叉 的 4 根线的所处状态来判断按键是否被按下, 而这 4 个按键中只有 3 个按

3、键用于万年历的校 准和对脑钟的控制,另一个按键则用来切换进入计算模式。对于计算这个部分我采用的是矩阵键盘, 10 个数字键,一个小数点键,四个符号键,一个多功能键, 通过判别该多功能键连续按的次数来决定该键此时的命令。由于 C 语言库函数繁多, 所以我采用调用 C 语言库函数来解决多种运算类型, 这样编程更简单, 运行起来也更可靠。 关键字:单片机,点阵图形液晶,矩阵键盘,C语言库函数。Student majoring in NameTutor Name (小四 Times New Romar)Abstract : The design uses a single-chip microcomp

4、uter as thecontrol chip, usingC 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 b

5、rain 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 b

6、utton 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 identificat

7、ion 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-chi

8、p, dot-matrix graphic LCD, matrix keyboard, C language library function.引言说起计算器, 值得我们骄傲的是, 最早的计算工具诞生在中国。 中国古 代最早采用的一种计算工具叫筹策, 又被叫做算筹。 这种算筹多用竹子制成, 也 有用木头,兽骨充当材料的。约二百七十枚一束,放在布袋里可随身携带。直到 今天仍在使用的珠算盘, 是中国古代计算工具领域中的另一项发明, 明代时的珠 算盘已经与现代的珠算盘几乎相同。 17 世纪初,西方国家的计算工具有了较大 的发展,英国数学家纳皮尔发明的 纳皮尔算筹 ,英国牧师奥却德发明了圆柱型 对数计

9、算尺,这种计算尺不仅能做加减乘除、乘方、开方运算,甚至可以计算三 角函数, 指数函数和对数函数, 这些计算工具不仅带动了计算器的发展, 也为现 代计算器发展奠定了良好的基础,成为现代社会应用广泛的计算工具。一、系统设计1.1 、功能介绍1.1.1 、基本功能根据所学知识,自行设计一个计算器,要求自行设计供电电源,该计算器能 够实现加减乘除四则混合运算,能够实现连续计算。1.1.2 、扩展功能(1)、该计算器能够实现浮点数的运算。(2)、该计算器在不进行计算时能够当时钟用,并且该时钟可显示星期和日 历,同时能够修改其值。(3)、该计算器能够实现加减乘除以外的其他运算。1.2 、总体设计方案1.2

10、.1 、总体设计思路本设计主要采用以下基本模块来实现, 控制器模块, 输入模块, 输出模块和 电源模块。通过对控制器进行编程。 使其对输入模块的信号进行处理计算, 然后通过输 出模块反馈给使用者以计算结果。1.2.2 、方案论证与比较1.2.2.1 、控制部分的设计方案论证与选择根据设计要求, 控制器主要用于红外信号的接收和辨认、 控制步进电机的动 作,控制显示步进电机的转速等。对于控制器的选择有以下二种方案。方案一:采用计算器专用芯片实现。 用计算器专用芯片进行设计并编程实现。 这种设计方案计算效率高、 速度快、 而且成本也相对较低, 是厂家做计算器的最 佳方案。但是本人对计算器专用芯片掌握

11、的不够, 还不足以实现设计计算器, 所 以这个方案不可去。方案二、用单片机实现。 由于单片机集成了运算器电路、 控制电路、存储器、 中断系统、定时器/计数器以及输入 / 输出口电路等, 所以用单片机设计控制电路 省去了很多分立元器件。由于单片机是可编程芯片, 并且它可以运用 C语言编写, 对于一些复杂的计算功能,可以调用 C 语言库函数。使编写程序变得非常简单。 所以该课题用单片机实现,不仅功能易于实现,而且精确度高,稳定性好,抗干 扰能力强。并且由于其成本低、体积小、技术成熟和功耗小等优点,且技术比较 成熟。性价比也相当高。 更重要的是本人经过几年的学习, 对单片机已有深刻的 理解,并且可以

12、灵活运用。综上所述,并通过各个方面综合比较为达到最佳效果。 我们采用方案二利用 单片机控制器。1.2.2.3 、显示电路的设计方案论证与选择方案一:数码管显示方案。 数码管显示使用两个四位一体动态数码管显示方 案,此设计电路如图 1-1 所示。采用动态数码管显示,具有程序简单, 对外界 环境要求低,易于维护,同时其精度比较高,精确可靠,操作简单。显示直观的且硬件设特点。但只能显示数字和一些代码, 不能显示汉字及一些常用的符号,计比较复杂。图 1-1 、两个四位一体数码电路图方案二:采用汉字图形点阵液晶显示器 RT12864显示方案。 RT12864M汉字 图形点阵液晶显示模块, 可显示汉字及图

13、形。 供电电源为 3.3V+5V(置升压电路, 无需负压 ) ,能采用并行和串行两种通信方式。并有光标显示、画面移位、自定 义字符、睡眠模式等功能。综上所叙, 12864的显示效果好、 功能齐全,所以我们选用 12864液晶显示其与单片机的接口电路如图 1-2 所示图 1-2 、 12864 与单片机的接口电路1.2.2.4 、单片机电源部分的设计方案论证与选择由于本次设计中单片机工作电源为 5V,所以需要稳压,对于 5V 电源这里有 以下两种方案。方案一:用固定式三端稳压器 7805。如图 1-5 , 7805 系列稳压器输出固定 的正电压 5V,输入端接电容 C1可以进一步滤除纹波 , 输

14、出端接电容 C2能改变负 载的瞬态影响 , 使电路稳定工作 C1、C2最好采用漏电流小的钽电容。 如果采用电解电容,则电容要比图中数值增加 110 倍+9VC10.1uFVin 7U8105 +5V12C2 +5V0.1uF-GND图图4 1固-3 、定固式定式三端稳稳压器压器方案二:用 7805 加一些外围器件。 虽然 7805 三端集成稳压管部有过流、 过热和安全区的保护电路, 但其输出仍有可能发生过压的危险。 因此本电路加了过 压保护电路,电路如图 1-4 所示,该电路由稳压管 VD3、电阻 R3和晶闸管 VS组 成。另外由于 7805的最大输出电流为 1.5A,可以通过在 7805的

15、1脚与 VT1的 基极相连, 7805C的 2 脚与 VT1的集电极相连,这样就可输出 1.6A2A的电流。 如需更大的电流,可再并联几个大功率三极管。0.022uFVD1VT1R210KC1R14702SB683VD21S18851S1885C4220u/25VVD3C25U178DN5V/1.6AR34.7K0.022uF20.022uFGND图 1-4 、图可5扩 流扩过流压保过护压的5V5稳V压稳电压源 电源综上所述, 方案一电路简单, 而且已符合本次设计的要求, 再加上第二种方 案所用元件较多,性能价格比不高,所以我们选择方案一1.2.2.5 、键盘设计方案与选择方案一:独立键盘。

16、独立键盘为一端接地,另一端接 I/O 口,并且要接上拉 电阻。这种键盘的硬件都很容易实现, 但每一个按键就要用一个 I/O 口,非常的 浪费单片机的 I/O 口资源,不适合本次设计。方案二:4*4 矩阵式键盘。其电路图如图图 1-5 所示,这种键盘的硬件简单, 使用的 I/O 口也不多, 而且这种键盘的编程方法已很成熟。 所以本次设计采用这 种矩阵式键盘。其电路图如图1.2.3 、系统组成经过方案比较与论证, 最终确定的系统组成框图如图 1-6 所示。其中单片机作为主控设备对采集输入信号后并进行处理, 最后通过输出设备输出给使用者。该系统的结构框图如图。图 1-6 、系统组成方框图、重要器件的

17、知识介绍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编程

18、时, 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 口的管脚被外部

19、拉低,将输出电流。这是由于部上 拉的缘故。P2口当用于外部程序存储器或 16 位地址外部数据存储器进行存取时, P2 口输出地址的高八位。在给出地址“ 1”时,它利用部上拉优势,当对外部八 位地址数据存储器进行读写时, P2 口输出其特殊功能寄存器的容。 P2口在 FLASH 编程和校验时接收高八位地址信号和控制信号。P3口: P3口管脚是 8 个带部上拉电阻的双向 I/O 口,可接收输出 4 个 TTL 门电流。当 P3口写入“ 1”后,它们被部上拉为高电平, 并用作输入。 作为输入, 由于外部下拉为低电平, P3口将输出电流( ILL )这是由于上拉的缘故。 P3口也 可作为 AT89S5

20、2的一些特殊功能口,如表 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/PRO:G当访问外部存储器时, 地址锁存允许的输出电平用于锁存地址的 地位字节。在

21、 FLASH编程期间,此引脚用于输入编程脉冲。在平时, ALE端以不 变的频率周期输出正脉冲信号,此频率为振荡器频率的 1/6 。因此它可用作对外 部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时, 将跳过一个 ALE脉冲。如想禁止 ALE的输出可在 SFR8EH地址上置 0。此时, ALE 只有在执行 MOV,X MOVC指令是 ALE才起作用。另外,该引脚被略微拉高。如果 微处理器在外部执行状态 ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个 机器周期两次 /PSEN有效。但在访问外部数据存储器时,这两次有效的 /PSEN信

22、 号将不出现。/EA/VPP:当/EA 保持低电平时,则在此期间外部程序存储器 (0000H-FFFFH), 不管是否有部程序存储器。注意加密方式 1 时,/EA 将部锁定为 RESE;T 当 /EA 端保持高电平时,此间部程序存储器。在FLASH编程期间,此引脚也用于施加12V 编程电源( VPP)。XTAL1:反向振荡放大器的输入及部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。2.1.5 、单片机时钟电路时钟电路用于产生单片机工作所需要的时钟信号, 单片机本身就是一个复杂 的同步时序电路, 为了保证同步工作方式的实现, 电路应在唯一的时钟信号控制 下严格地按时序进行工作。在 MC

23、S-51芯片部有一个高增益反相放大器,其输入端为芯片引脚 X1,输出 端为引脚 X2,在芯片的外部跨接晶体振荡器和微调电容,形成反馈电路,就构 成了一个稳定的自激振荡器。 此电路采用 12MHz的石英晶体。时钟电路如下图 2-2:图 2-2 时钟电路2.1.6 、单片机复位电路复位是单片机的初始化操作,其主要功能是把 PC初始化为 0000H,使单片 机从 0000H单元开始执行程序。 除了进入系统的正常初始化之外, 当由于程序运 行出错或操作错误是系统处于死锁状态时, 为摆脱困境, 也需要按复位键以重新 启动。RST引脚是单片机复位信号的输入端,复位信号是高电平有效,其有效时间 应持续 24

24、个振荡周期(即 2 个机器周期)以上,若使用频率为 12MHz的晶振, 则复位信号持续时间应超过 4 s 才能完成复位操作。复位操作有上电自动复位 和按键手动复位两种方式。 上电自动复位是通过外部复位电路的电容充电来实现 的。按键电平复位是通过使复位端经电阻与 Vcc电源接通而实现的。 在本设计中 采用了按键电平复位方式,其复位电路如下图 2-3图 2-3 、复位电路2.1.7 、单片机下载口电路下载口电路以一块 74HC373芯片为主, 电路原理图如图 2-4 所示。由于电路 中只用了一片 74HC373所以完全可以把电路装在 DB25插针式并口插头部,这个 可以做到很小巧, 可以很方便的使

25、用。 为了稳定也可以芯片外围加一些电阻、 电 容等元件,具体电路网上有提供下载。光是做好下载线是不行的, S51系统的 ISP 下载方式还要求要下载程序单片机运行在最小化系统中。 只要把的相应引脚连接起来就可以对 S51进行 ISP 下载 了。要接的引线是 S51的 6,7,8,9,20,40 引脚。晶振可以在 3M24M间选用, 当 然是看你的目标板而选择。为了方便使用我们需要做一个下载头, 电路简单接线正确的话一般无需要调 整就可以正常使用,如有问题可以用软件中的 IspTest.exe( 下载线调试程序 ) 检查你的 74HC373芯片是否正常和你的电脑并口是否正常。图 2-4 、下载口

26、电路原理图三、程序流程图主程序流程图显示程序流程图3.1 、程序清单程序清单见附录 4产品使用说明该产品 16 个按键作为输入信号,液晶为显示器,按键功能如下图所示09为数字键,其中 03 有第二功能,一个小数点键,一个等号键,该键为 四功能键,四个运算符号键。通电后显示器显示万年历、 星期和脑钟, 此时按 0键可进行校时, 可看到时 钟已停,并且秒在闪烁,此时按 1 键可使秒加一,按 2 键可使秒减一,把秒设定 好后,再按 0 键,秒停止闪烁,分开始闪烁,此时按 1 键和 2 键同样可对分进行 修改,然后依次时、日、月、年、以及闹钟的秒、分、时进行修改,然后再按 键时钟恢复走时,万年历和闹钟

27、的校准就完成啦如果要使用计算器功能, 则直接按 3 键即可进入计算器模式, 等号键单键为 “=”,双键为清除,默认计算类型为加减乘除,若要进行其他类型的计算,则 可使用等号键三键, 然后选择运算类型进行运算, 此时符号键所对应的运算符号 也有相应的变化。 该计算器的计算功能可实现加减乘除、 正弦余弦正切余切、 反 正弦反余弦反正切反余切、平方、立方、 m的 k 次方( m和 k 均由键盘输入)、 e 为底的 m次方、自然对数、常用对数、开平方根。可谓功能齐全,操作简单,给 使用带来极大方便。设计体会在这次设计中使我对步进机有了更深的了解, 对单片机也有了更高成次的了 解,单片机的种类多,而型号

28、杂,也是我们学习中的困难,所以就 MCS51 系列 的产品来说, 就是一个典型的学习方法。 单片机编程是用汇编语言进行编程, 也 就需要我们对电路的分析, 然后总结, 查阅相关资料才能变成好的程序, 编程讲 究的是多动手写,自己写,用自己的思路,不怕写错,写错再改,懂得有新的思 想这样才能提高。在这次单片机应用系统设计中遇到到很大的困难, 主要原因是平时的知识掌 握的不够,通过查阅很多资料和类似的论文, 才做成的。 以前也做过不少单片机 设计,但面对这次设计,似乎也有一点束手五册了。在这次的设计中, 让我们发自心的明白了以下这几个道理。 其实,这几个道 理以前我们就懂,就知道,甚至每个人都知道

29、,但真正到了关键时间,我们还会 不会遵循它来办事就是一个问号啦。书读百遍,其义自现。三个臭皮匠胜过一个诸亮。团结就是力量。温故而知新。正因为我开始没有遵循这几个道理所以在设计中走了不少弯路,表现出来了我很多的不足之处,就因为这样我们才会在这次设计中有进步、 有发展,同时使 自己的能力得到进一步的提升。我将好好地记录下这次设计的点点滴滴,我想, 这不单是我的经历,更是我的一笔财富。参考文献1)广弟单片机原理及应用航天航空大学2008.22)新民微型计算机控制技术电子工业2008.53)梅丽凤单片机原理及接口技术清华大学2004.64)陪金C语言程序设计案例教程电子科技大学2008.15)戴佳 5

30、1 单片机 C语言应用程序设计实例精讲 电子工业 2006.46)谭浩强 C程序设计清华大学附录 1、元器件清单名称型号参数数量单片机AT89S522液晶SBY12864Z-ZK3一块双 12V 变压器1发光二极管LED3二极管IN40018三极管9013,90144,8稳压管78051排阻10K*81电阻若干晶振11.0592MHz1下载口1电源接口1电解电容100f1470f4电容1040.1 f43030pf4插座单片机插座40 引脚,2所存器插座24 引脚1开关1按键普通按键12排针排座若干附录 2、系统原理图原理图附录 3、程序清单#include #include #include

31、 #include #define uchar unsigned char#define uint unsigned int#define ulong unsigned longsbit 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,d

32、fen,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;/ 定义显示缓冲区 /codeuchar table=0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x2e;cod

33、euchartable1=0xc8,0xd5,0xd2,0xbb,0xb6,0xfe,0xc8,0xfd,0xcb,0xc4,0xce,0xe5 ,0xc1,0xf9;/ 日六 /codeuchartable2=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

34、 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; /将

35、PSB置 18BIT 数据并口 /_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;

36、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

37、(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

38、()/ 先判断 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; / if(P1&0xf0)!=0xf0) /delay(100); /if(P1&0xf0)!=0xf0) /scancode=0xfe; /行全为 0有键按下延时去抖动 判是否真的有键按下 诼行扫描while(scancode&0x10)!=0)P1=scancod

39、e;if(P1&0xf0)!=0xf0) /本行有键按下tmpcode=(P1&0xf0)|0x0f;/ 返回特征字节码 , 为 1 的位即对应于行和列return(scancode)+(tmpcode);else scancode=(scancode1)|0x01; /行扫描码左移一位无键按下 , 返回值为 0return(0); /disjia()com0=0x83;lcdH=0xbc;lcdL=0xd3;display();com0+; lcdH=0xb7;lcdL=0xa8;display();com0=0x87;disjian()com0=0x83;lcdH=0xbc;lcdL=0x

40、f5;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/1000

41、000000%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(tabl

42、edisbufi);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

43、*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=a

44、cos(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; /平方 /m 的 k 次方 /case 2:ds=m*m*m;break; /立方 /case 3:ds=1;for(i=0;ik;i+)ds=ds*m;brea

45、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;

46、if(dsds0)if(ds1000)ds0=ds*1000000;jishu();disbuf9=disbuf8;disbuf8=disbuf7;disbuf7=disbuf6;disbuf6=disbuf5;disbuf5=disbuf4;disbuf4=10;elseif(ds10000)ds0=ds*100000;jishu();disbuf9=disbuf8;disbuf8=disb uf7;disbuf7=disbuf6;disbuf6=disbuf5;disbuf5=10;elseif(ds100000)ds0=ds*10000;jishu();disbuf9=disbuf8;d

47、isbuf8=disb uf7;disbuf7=disbuf6;disbuf6=10;elseif(ds1000000)ds0=ds*1000;jishu();disbuf9=disbuf8;disbuf8=disb uf7;disbuf7=10;elseif(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=0xb

48、0;if(flag1)cc+;com0+;p=0;k=k*10+p;display();aa=0;break;case0x21:lcdH=0xa3;lcdL=0xb1;if(flag1)cc+;com0+;p=1;k=k*10+p;display();aa=0;break;case0x41:lcdH=0xa3;lcdL=0xb2;if(flag1)cc+;com0+;p=2;k=k*10+p;display();aa=0;break;case0x81:lcdH=0xa3;lcdL=0xb3;if(flag1)cc+;com0+;p=3;k=k*10+p;display();aa=0;break

49、;case0x12:lcdH=0xa3;lcdL=0xb4;if(flag1)cc+;com0+;p=4;k=k*10+p;display();aa=0;break;case0x22:lcdH=0xa3;lcdL=0xb5;if(flag1)cc+;com0+;p=5;k=k*10+p;display();aa=0;break;case0x42:lcdH=0xa3;lcdL=0xb6;if(flag1)cc+;com0+;p=6;k=k*10+p;display();aa=0;break;case0x82:lcdH=0xa3;lcdL=0xb7;if(flag1)cc+;com0+;p=7;k=k*10+p;display();aa=0;break;case0x14:lcdH=0xa3;lcdL=0xb8;if(flag1)cc+;com0+;p=8;k=k*10+p;display();aa=0;break;case0x24:lcdH=0xa3;lcdL=0xb9;if(flag1)cc+

温馨提示

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

评论

0/150

提交评论