版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1简介1.1概述众所周知,单片机是一种集成电路芯片,它采用超大规模集成电路技术,集成了中央处理器CPU随机存储器RAM、只读存储器ROM、各种I/O端口和中断系统,具有数据处理能力的定时器/定时器。它是将显示驱动电路、脉宽调制电路、模拟多路复用器、A/D转换器等功能集成到硅片上而形成的小型完整的计算机系统。本设计要做的是单片机在简易计算器中最常见的应用。本简易计算器以AT89S52单片机为核心,可显示简易计算及时间,时间可手动设定;另外还可以显示当前日历,显示格式为年(四位)、月(两位)、日(两位)位)。设定时间、设定值、启动定时器、切换日历的位切换由外部中断实现。简单的计算器不仅可以进行简单
2、的计算,还可以显示时间。简易计算器的显示电路由LCD1602组成。制作这个设备的材料需要软件和硬件的支持。硬件方面,AT89C51单片机、晶振、电源、液晶屏LCD1602。1.2设计思路1、本项目的设计是一个简单的计算器,可以进行四次算术运算。为了获得更好的显示效果,采用LCD显示数据和结果;2、计算器部分:键盘包括数字键(0-9)、符号键(+、-、*、/)、清除键(ON/C)和等号(=),所以需要16个键。使用矩阵键盘;3、时间显示部分,年、月、日、时、分、秒、时间显示和计算器控制键分别设置,需要8个独立按键;3、执行程序:开机并显示零,等待输入数值,输入数字后在液晶显示屏上显示,当输入+、
3、-、*、/运算符时,计算器执行数值转换并存储在零件中,等待再次输入数值。显示输入的数值,按等号在LCD上输出运算结果;4 、错误提示:当单片机执行程序出现错误时, LCD上会显示相应的提示,如:当输入值或计算器得到的结果大于单片机的显示范围时计算器,计算器会在LCD上提示溢出;当除数为0时,计算器会在LCD上提示错误,显示“error”。2 单片机及其应用单片机是一种集成电路芯片,采用超大规模集成电路技术集成中央处理器CPU随机存储器RAM、只读存储器ROM、各种I/O端口和中断系统,具有数据处理能力的定时器/定时器。和其他功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路复用器、A/D转换
4、器等电路)集成在一个小而完整的硅芯片上的计算机系统中。图2. 1 AT89S522.1单片机简介单片机,简称单片机,是典型的嵌入式微控制器(Microcontroller Unit)。 MCU的缩写常用英文字母来表示单片机。单片机是由芯片上只有一个CPU的专用处理器发展而来的。最早的设计理念是通过将大量外围设备和 CPU 集成到一个芯片中,使计算机系统更小,更容易集成到复杂且体积关键的控制设备中。 INTEL 的 Z80 是第一款按照这种思路设计的处理器。此后,单片机和专用处理器的发展将分道扬镳。微控制器在程序上运行并且可以修改。不同的功能是通过不同的程序实现的,特别是一些特殊的、独特的功能。
5、这是其他设备需要付出很大努力才能实现的,而有些是很难通过大量努力实现的。如果用纯硬件完成一个不是很复杂的功能,比如美国1950年代开发的74系列,或者1960年代的CD4000系列,电路肯定是大PCB板!但如果使用1970年代在美国成功投放市场的一系列微控制器,结果就会大不相同!就因为单片机可以通过你写的程序实现高智能、高效率、高可靠性!单片机硬件特点:单片机集成度高。单片机包括CPU、4KB容量的ROM(无8031)、128B容量的RAM、2个16位定时器/计数器、4个8位并口、全双工串口。该系统结构简单,使用方便,模块化。2.2单片机应用目前,单片机已经渗透到我们生活的各个领域,在任何领域
6、几乎都很难找到单片机的踪迹。导弹导航装置,飞机上各种仪表的控制,计算机的网络通信和数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全系统,录像机,摄像机、自动洗衣机、程控玩具、电子宠物等的控制,都离不开单片机。更不用说自动控制领域的机器人、智能电表和医疗设备。因此,单片机的研究、开发和应用将造就一批计算机应用和智能控制方面的科学家和工程师。单片机广泛应用于仪器仪表、家用电器、医疗器械、航空航天、特种设备的智能化管理和过程控制。它们大致可以分为以下几类:(1)在智能仪器仪表中的应用(2)在工业控制中的应用(3)在家用电器中的应用(4)在计算机网络与通信领域
7、的应用(5)单片机在医疗器械领域的应用(6)在各种大电器中的模块化应用(7)单片机在汽车装备领域的应用此外,单片机在工商业、金融、科研、教育、国防、航天等领域有着非常广泛的用途。2.3 AT89S52单片机AT89S52 是一款具有 8K 系统内可编程闪存的低功耗、高性能 CMOS 8 位微控制器。它采用 Atmel 的高密度非易失性存储器技术制造,与工业 80C51 产品完全指令和引脚兼容。片上闪存内容在系统内对程序存储器进行编程,也适用于传统编程器。 AT89S52 在单芯片上,具有智能 8 位 CPU 和系统内可编程闪存,为许多嵌入式控制应用系统提供了高度灵活和超高效的解决方案。AT89
8、S52 具有以下标准功能:8k 字节 Flash、256 字节 RAM、32 位 I/O 线、看门狗定时器、2 个数据指针、 3个 16 位定时器/计数器、 1个 6 向量 2 级中断结构、全双工串口、晶振和时钟电路。此外,AT89S52 可低至 0Hz 静态逻辑操作,支持 2 种软件可选择的省电模式。在空闲模式下,CPU 停止工作,内容 RAM、定时器/计数器、串行端口和中断继续工作。在掉电保护模式下,RAM容量被保存,振荡器被冻结,单片机的所有工作都停止,直到下一次中断或硬件复位。主要性能:1.兼容MCS -51单片机产品8K字节系统可编程闪存3. 1000次擦除周期4、全静态运行: 0H
9、z33Hz5 、三级加密程序存储器6. 32条可编程I/O线7. 三个 16位定时器/计数器8. 八个中断源9.全双工UART串行通道10.低功耗空闲和掉电模式l1 、中断可以掉电唤醒l2 、看门狗定时器l3 、双数据指针l4 、掉电标识图2. 2 AT89S52引脚结构端口 P0:端口 P0 是一个 8 位开漏双向 I/O 端口。作为输出,每个位可以驱动 8 个 TTL 逻辑电平。当向 P0 端口写入“1”时,该引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0 端口也被复用为低 8 位地址/数据。在这种模式下,P0 有一个部分上拉电阻。在 Flash 编程时,端口 P0 也用于接收指令
10、字节;在程序验证期间,输出指令字节。对于程序验证,需要一个外部上拉电阻。端口 P1:端口 P1 是一个带有上拉电阻的 8 位双向 I/O 端口。 P1输出缓冲器可以驱动四个 TTL 逻辑电平。当P1端口写“1”时,一个上拉电阻将该端口拉高,此时可以作为输入端口使用。用作输入时,由于外部电阻,外部下拉的引脚会输出电流。另外,P1.0 和 P1.2 分别作为定时器/计数器 2 的外部计数输入(P1.0/T2)和定时器/计数器 2 的触发输入(P1.1/T2EX),如下图所示桌子。 .在闪存编程和验证期间,P1 端口接收低 8 位地址字节。引脚号次要功能P1.0 T2(定时器/计数器T2的外部计数输
11、入),时钟输出P1.1 T2EX(定时器/计数器T2捕获/重载触发信号和方向控制)P1.5 MOSI(用于系统编程)P1.6 MISO(用于系统编程)P1.7 SCK(用于系统编程)端口 P2:端口 P2 为 8 位双向 I/O 端口,带上拉电阻,P2 输出缓冲器可驱动 4 个 TTL 逻辑电平。当P2端口写“1”时,一个上拉电阻将该端口拉高,此时可以作为输入端口使用。用作输入时,由于外部电阻,外部下拉的引脚会输出电流。 16位地址访问外部程序存储器或读取外部数据存储器时(如执行MOVX DPTR),P2口发出高位8位地址。在此应用中,P2 端口使用强外部上拉致 1。当使用 8 位地址(如 M
12、OVX RI)访问外部数据存储器时,P2 端口输出 P2 锁存器的内容。在闪存编程和验证过程中,P2 端口还接收高 8 位地址字节和一些控制信号。端口 3:端口 3 是一个带上拉电阻的 8 位双向 I/O 端口, P2输出缓冲器可以驱动 4 个 TTL 逻辑电平。当P3端口写“1”时,一个上拉电阻会将端口拉高,此时可以作为输入端口使用。用作输入时,由于外部电阻,外部下拉的引脚会输出电流。 P3口也用作AT89S52的一个特殊功能(第二功能),如下表所示。在 Flash 编程和验证过程中,P3 端口也接收一些控制信号。针数秒功能:P3.0 RXD(串行输入)P3.1 TXD(串行输出)P3.2
13、INT0(外部中断 0)P3.3 INT0(外部中断 0)P3.4 T0(定时器0外部输入)P3.5 T1(定时器 1 外部输入)P3.6 WR(外部数据存储器写选通)P3.7 RD(外部数据存储器写选通)RST:复位输入。当晶振工作时,RST 引脚高电平 2 个机器周期将使单片机复位。看门狗定时器完成后,RST 引脚输出高电平,持续 96 个晶振周期。特殊寄存器 AUXR(地址 8EH)上的 DISRTO 位可以禁用此功能。在 DISRTO 的默认状态下,复位为高电平有效。ALE/PROG:地址锁存控制信号(ALE)用于在访问外部程序存储器时锁存低8位地址的输出脉冲。在闪存编程期间,该引脚
14、(PROG) 也用作编程输入脉冲。一般情况下,ALE以晶体振荡器六分之一的固定频率输出脉冲,可用作外部定时器或时钟。但是,需要强调的是,每次访问外部数据存储器时都会跳过 ALE 脉冲。如果需要,通过将地址 8EH 的 SFR 的第 0 位设置为“1”,ALE 操作将无效。该位为“1”时,ALE 仅在执行 MOVX 或 MOVC 指令时有效。否则,ALE 会被弱拉高。当微控制器处于外部执行模式时,该 ALE 使能标志(地址 8EH 处的 SFR 的位 0)的设置无效。 PSEN:外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。当AT89S52从外部程序存储器执行外部代码时, PSEN
15、每个机器周期被激活两次,当访问外部数据存储器时, PSEN不会被激活。EA/VPP :访问外部程序存储器控制信号。 EA必须连接到GND 以启用从0000H到FFFFH的外部程序存储器读取指令。为了执行部分程序指令, EA应该连接到VCC 。在闪存编程期间, EA还接收12伏VPP 。XTAL1 :振荡器反相放大器和部分时钟产生电路的输入端。XTAL2 :振荡器反相放大器的输出。3 LCD1602的原理及应用3.1 LCD1602简介LCD1602已经很常见了,我就不赘述了。市面上大部分字符液晶都是基于HD44780液晶芯片,控制原理完全一样。因此,HD44780编写的控制程序可以很容易地应用
16、于市场。大多数字符液晶显示器。字符型LCD通常有14脚线或16脚线LCD ,额外的2线是背光电源线VCC ( 15脚)和地线GND ( 16脚)。控制原理同14针。液晶显示器完全一样。3.2 LCD1602的引脚1602LCD采用标准14针(不带背光)或16针(带背光)接口。各管脚接口说明如表3.1所示:表3.1 LCD1602管脚说明编号象征引脚说明编号象征引脚说明1VSS电源地9D2数据2VDD正电源10D3数据3VL液晶偏压11D4数据4RS数据/命令选择12D5数据5读/写读/写选项13D6数据6乙使能信号14D7数据7D0数据15BLA背光正极8D1数据16黑色背光负极表 3.1:引
17、脚接口说明表引脚 1:VSS 为地电源。引脚 2:VDD 接 5V 正电源。3脚:VL为液晶显示器的对比度调节端。连接正电源时对比度最弱,接地时对比度最高。当对比度过高时,会产生“鬼影”。使用过程中可通过10K电位器调节对比度。4脚:RS为寄存器选择,高电平时选择数据寄存器,低电平时选择指令寄存器。5脚:R/W为读写信号线,读操作为高电平,写操作为低电平。当 RS 和 R/W 都为低时,可以写入命令或显示地址。当 RS 为低电平时,R/W 为高电平,可以读取忙信号。当 RS 为高时,R/W 为低。可以写入数据。引脚 6:E 端为使能端。当E端从高电平跳到低电平时,液晶模块执行指令。引脚 7 到
18、 14:D0 到 D7 是 8 位双向数据线。Pin 15:背光灯正极。第16脚:背光源负极。3.3 LCD1602指令1602液晶模组的控制器共有11条控制指令,如表3.2所示:表3. 2 LCD1602使用说明编号操作说明RS读/写D7D6D5D4D3D2D1D01清晰的显示00000000012光标返回000000001*3设置输入模式00000001ID小号4显示开/关控制0000001DC乙5光标或字符移位000001S/C右/左*6设置功能00001深度学习F*7设置字符生成内存地址0001字符生成内存地址8设置数据存储器地址001显示数据存储器地址9读取繁忙标志或地址01高炉柜台
19、地址10将数据写入 CGRAM 或 DDRAM)10要写入的数据11从 CGRAM 或 DDRAM 读取11读取数据内容表 3.2:控制命令列表1602液晶模块的读写操作、屏幕操作和光标操作都是通过指令编程实现的。 (注:1为高电平,0为低电平)命令1 :清除显示,命令代码为 01H,光标复位到地址 00H。命令2:光标复位,光标返回地址00H。命令 3:光标和显示模式设置 I/D:光标移动方向,高电平向右,低电平向左 S:屏幕上的所有文字是向左还是向右移动。高电平有效,低电平无效。命令 4:显示开关控制。 D:控制整体显示的开启和关闭,高电平表示开启,低电平表示关闭显示 C:控制光标开启和关
20、闭,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。命令5:光标或显示移位 S/C:电平高时移动显示的文字,电平低时移动光标。指令6:功能设置指令 DL:高电平时4位总线,低电平时8位总线 N:低电平时单行显示,高电平时双行显示 F:低电平时5x7点阵字符,5x10点阵级别高时显示矩阵字符。指令 7:字符发生器 RAM 地址设置。指令 8:DDRAM 地址设置。命令 9:读忙信号和光标地址 BF:是忙标志位,高电平表示忙,此时模块不能接收命令或数据,低电平表示不忙。指令 10:写入数据。指令11 :读取数据。兼容芯片时序表如下:表3.3 LCD1602基本操
21、作时序说明读取状态进入RS=L,R/W=H,E=H输出D0D7=状态字写命令进入RS=L,R/W=L,D0D7=指令码,E=高脉冲输出没有任何读取数据进入RS=H,R/W=H,E=H输出D0D7=数据写入数据进入RS=H,R/W=L,D0D7=数据,E=高脉冲输出没有任何LCD1602的RAM地址映射及标准字体表液晶显示模块是慢速显示设备,所以在执行每条命令之前,请确保模块的busy标志为低,表示不忙,否则命令无效。当要显示字符时,首先要输入显示字符地址,即告诉模块在哪里显示字符。图3.1显示了1602的部分显示地址。图3.1 LCD1602部分地址比如第二行第一个字符的地址是40H,那么直接
22、写40H可以将光标定位到第二行第一个字符的位置吗?这样不行,因为写显示地址时要求最高位D7为恒定高电平1,所以实际写入的数据应该是01000000B (40H)+10000000B(80H)=11000000B(C0H)。在液晶模组的初始化中,首先要设置它的显示模式。当液晶模组显示字符时,光标会自动向右移动,无需人工干预。在输入每条命令之前,需要判断液晶模块是否处于忙碌状态。1602液晶模组的字符生成存储器(CGROM)存储了160个不同的点阵字符图形,如表3.4所示,这些字符分别是:阿拉伯数字、英文字母的大小写、常用符号、日文假名等,每个字符都有一个固定的编码,比如大写英文字母“A”编码为0
23、1000001B(41H),当模块在地址41H显示点阵字符图形时,我们可以看到字母“A” .表3.4 CGROM 和CGRAM中字符码与字符图形的对应关系4 整体设计4.1设计方法本电路设计以AT89S52单片机为核心,利用晶振产生频率为1HZ的时钟脉冲信号,利用液晶屏LCD1602显示计算及其时间信息,控制液晶屏的显示LCD1602通过AT89S52单片机编程。显示计算和简单计算的信息在LCD1602上,可以通过切换按键来选择。外部键可用于设置或调整时间或计算信息。4.2硬件设计本系统以AT89S52单片机为核心,系统选用1个2兆赫晶振,使单片机具有合理的运行速度。启动电容 22 pF适用于
24、振荡器的频率、振荡器的稳定性和启动的快速性。复位电路是按键的高电平复位。4.2.1按键调节电路图4.1 独立按键S0为调秒按钮,按下S0时,秒加1; S1为分钟调整按钮,按下S1,分钟加1; S2键为调节,按下S2时加1; S3按钮是调整日期,当按下S3时,日期加1;按下 S4 时,月份加 1;按下 S4 时,月份加 1;按下 S5 时,年份加 1;按下S6时,显示时间;当按下 S7 时,显示计算。4.2.2 复位电路图4.2 复位电路51 MCU 被高电平复位。所以本设计采用上电复位和手动复位相结合的方式。4.2.3 LCD1602显示电路图4.3 显示部分本设计采用液晶屏LCD1602显示
25、输出数据,通过 D0-D7 引脚向 LCD 写入命令字或数据,使 LCD 实现不同的功能或显示相应的数据。4.2.4 电源电路图4.4 电源部分三端稳压集成电路LM 7805是指用于电压调节的集成电路。它只有三个引脚输出,即输入端、接地端和输出端。如图4.4所示,这是一个输出+ 5V直流电压的稳压电源电路。采用集成稳压器LM 7805,二极管D S1 起保护作用, C4为输出滤波电容。当输出电流较大时, LM 7805应加装散热片。在这种设计中,功率很小,没有使用。 78/79系列集成稳压IC中78或79后面的数字代表三端集成稳压电路的输出电压,如780 5表示输出电压为+5V 。4.2.5
26、键盘设计图4.5 矩阵键盘计算器使用很多键来输入数字和其他功能键。如果使用独立键,这种情况下编程会很简单,但是会占用大量的I/O口资源,所以很多情况下是没有必要的。这样就改用矩阵键盘方案了。矩阵键盘采用四根I/O线作为行线,四根I/O线作为列线组成键盘,在行列线的每个交叉点设置一个键。这样,键盘上的按键数为4*4。这种行列式键盘结构可以有效提高单片机系统中I/O端口的利用率。4.3软件设计电路软件设计采用C语言编写程序(具体程序见附件)。编程主要包括简单计算编程、按键编程、时间控制编程、 LCD1602液晶屏显示编程。4.4软件仿真硬件设计完成后,用软件进行仿真,以减少硬件制作时的误差,使之更
27、加准确。这次我使用Proteus软件模拟。图4.1 ,简易计算器的时间显示。如图 4.2 所示,简易计算器的计算显示。本次软件仿真后,仿真结果正常,可以顺利进行硬件生产。图4.6 时间显示图4.7 计算显示4.5硬件调试前期工作都是为了最后一步,也就是自己焊接,做成一个完整的对象。确保焊接无误后,再将之前编译好的程序烧录到单片机中进行最后的硬件调试。结束语AT89 S 52 , LCD1602及其4 * 4键盘的使用单片机简单计算的设计 在设计过程中,我通过网上查阅资料收集了有关单片机和LCD1602显示器的资料,图书馆。通过对这些资料的学习,我了解了单片机的基本结构以及单片机在生活和生产中的
28、作用。作用与液晶屏LCD1602的原理和使用有关。本设计完成的主要任务和任务如下:设计方案的理论研究、单片机的合理选型、硬件电路设计、电路板制作、元器件焊接、软件编写和调试编写。通过设计一个简单计算器的过程,掌握了单片机的基本原理和基本应用,对其各种硬件接口和软件设计方法有了一定的了解。通过绘制电路原理图和PCB图,深化Protel DXP的使用,电路仿真和电路板制作掌握了Proteus仿真软件的使用。本论文的设计是为了巩固之前所学的理论知识,加深理解,提高应用能力,提高发现、分析和解决问题的能力。从最初的选题、硬件设计、软件设计到最终仿真结果的出现,在一定程度上提高了对该专业的理解和兴趣。就
29、我而言,这对未来的就业有重大影响。至也很感谢学校和老师给我们提供了这样一个平台,可以提升我们的动手能力;感谢老师们的帮助和他们带给我的知识,让我能够完成这个毕业设计。同时,也感谢同学们对我的支持!参考1 田力.田清。戴方振。 51 单片机C语言编程。人民邮电. 2008 年:132-148 。2 仪和.例51单片机(C语言版)(第三版) .人民邮电 2010:374-392 。3 谭浩强. C 编程(第三版) 。清华大学。 2003:140-150 。4温子琪志峰。贤安生。林志谦。 _5 于希村.单片机原理与接口技术.中国电子科技大学。 2000:80-95 。.附录一、硬件电路原理图2. 软
30、件编程流程#include #define uchar 无符号字符#define uint 无符号整数位rs=P00;sbit rw=P01;位 e=P02;位 k0=P10;位 k1=P11;位 k2=P12;位 k3=P13;位 k4=P14;位 k5=P15;位 k6=P16;位 k7=P17;无符号字符码 digit =0123456789; /定义字符数组来显示数字无符号字符 s,m,h,day,month,year,count;无效 write_dat(uchar dat);无效写_(uchar);无效键扫描();/ *功能说明:显示代码,加0 x30,分别为 1 , 2 , 3
31、, + , 4 , 5 , 6 , - 等* * /uchar 码表1=1,2,3,0 x2b-0 x30, 4,5,6,0 x2d-0 x30, 7,8,9,0 x2a-0 x30, 0,0 x3d-0 x30,0 x01-0 x30,0 x2f-0 x30;uchar k=0,flag=0,num,fuhao,i;长 a,b,c;无效延迟(单位 z) 单位 x,y;对于(x=z;x0;x-)for(y=110;y0;y-);/ *功能作用:指定字符显示的实际地址 入口参数:x * /无效写入地址(无符号字符 x) write_(x|0 x80); /显示位置的确定方法指定为“80H+地址码
32、x”/ *功能功能:显示小时* /无效的显示小时() 无符号字符 i,j;i=h/10; /四舍五入得到十位数j=h%10; /取数字的余数运算写地址(0 x45); /写入显示地址,显示第2行第0列的十位数字write_dat(数字i); /将十位字符常量写入LCDwrite_dat(数字j); /将一位字符常量写入LCD/ *功能功能:显示分钟* /无效显示分钟() 无符号字符 i,j;我=米/10; /四舍五入得到十位数j=m%10; /取数字的余数运算写地址(0 x48); /写入显示地址,显示第2行第3列的十位数字write_dat(数字i); /将十位字符常量写入LCDwrite_
33、dat(数字j); /将一位字符常量写入LCD/*功能:显示秒数*/无效的 DisplaySecond() 无符号字符 i,j; i=s/10; /四舍五入得到十位数j=s%10; /取数字的余数运算写地址(0 x4b); /写入显示地址,显示第2行第6列的十位数字write_dat(数字i); /将十位字符常量写入LCDwrite_dat(数字j); /将一位字符常量写入LCD/*功能:显示年份*/无效显示年() 无符号字符 i,j;我=年/10; /四舍五入得到十位数j=年%10; /取每个数的余数操作写地址(0 x07); /写入显示地址,显示第2行第0列的十位数字write_dat(数
34、字i); /将十位字符常量写入LCDwrite_dat(数字j); /将一位字符常量写入LCD/* 功能:显示月份*/无效显示月() 无符号字符 i,j;我=月/10; /四舍五入得到十位数j=月%10; /取数字的余数运算写地址(0 x0a); /写入显示地址,显示第2行第3列的十位数字write_dat(数字i); /将十位字符常量写入LCDwrite_dat(数字j); /将一位字符常量写入LCD/*功能函数:显示日期*/无效显示日() 无符号字符 i,j; 我=天/10; /四舍五入得到十位数j=天%10; /取数字的余数运算写地址(0 x0d); /写入显示地址,在第2行第6列显示十
35、位数字write_dat(数字i); /将十位字符常量写入LCDwrite_dat(数字j); /将一位字符常量写入LCD无效键扫描2()如果(k0=0)延迟(5);如果(k0=0) s+; 如果(s=60)s=0; 如果(k1=0)延迟(5);如果(k1=0)m+;如果(米=60)米=0; 如果(k2=0)延迟(5);如果(k2=0)h+;如果(h=60)h=0; 如果(k3=0)延迟(5);如果(k3=0)天+;如果(天=30)天=0; 如果(k4=0)延迟(5);如果(k4=0)月+;如果(月=13)月=0; 如果(k5=0)延迟(5);如果(k5=0)年+;如果(年=99)年=0; 无
36、效键扫描() uchar 温度;P3=0 xfe;温度=P3;温度=温度&0 xf0;而(温度!= 0 xf0)延迟(5);温度=P3;温度=温度&0 xf0;而(温度!= 0 xf0)温度=P3;开关(温度) 案例 0 xee:num=0;休息;案例 0 xde:num=1;休息;案例 0 xbe:num=2;休息;案例 0 x7e:num=3;休息;而(温度!= 0 xf0)温度=P3;温度=温度&0 xf0; /* *当你按下 1,2,3 并松开时,执行以下语句* * /如果(数=0|数=1|数=2) 如果(标志=0)a=a*10+table1num;/如果符号键没有按下,则符号前的值为
37、a否则如果(标志=1)b=b*10+table1数量; /如果符号键被按下,符号后面的值为bif(k=1) /如果之前按了=号,再按一次按钮清屏,进行下一次计算k=0;写_(0 x01); else if(num=3) /判断按+标志=1;福好=1;i=table1数字; /显示按下的键write_dat(0 x30+i);P3=0 xfd;温度=P3;温度=温度&0 xf0;而(温度!= 0 xf0)延迟(5);温度=P3;温度=温度&0 xf0;而(温度!= 0 xf0)温度=P3;开关(温度) 案例 0 xed:num=4;休息;案例 0 xdd:num=5;休息;案例 0 xbd:nu
38、m=6;休息;案例 0 x7d:num=7;休息;而(温度!= 0 xf0)温度=P3; temp=temp&0 xf0; if(num=4|num=5|num=6) /判断是否按下4,5,6 if(k=1) k=0; write_(0 x01); if(flag=0) a=a*10+table1num; else if(flag=1) b=b*10+table1num; else if(num=7) flag=1; fuhao=2; i=table1num; /显示按下的键 write_dat(0 x30+i); P3=0 xfb;温度=P3;温度=温度&0 xf0;而(温度!= 0 xf0
39、)延迟(5);温度=P3;温度=温度&0 xf0;而(温度!= 0 xf0)温度=P3;开关(温度) / 案例 0 xeb:num=8;休息;案例 0 xdb:num=9;休息;案例 0 xbb:num=10;休息;案例 0 x7b:num=11;休息;而(温度!= 0 xf0)温度=P3;温度=温度&0 xf0; if(num=8|num=9|num=10) /判断是否按7,8,9 如果(k=1)k=0;写_(0 x01); 如果(标志=0)a=a*10+table1数量;否则如果(标志=1)b=b*10+table1数量; else if(num=11) /判断是否点击标志=1;福好=3;
40、 i=table1数字;write_dat(0 x30+i); P3=0 xf7;温度=P3;温度=温度&0 xf0;而(温度!= 0 xf0)延迟(5);温度=P3;温度=温度&0 xf0;而(温度!= 0 xf0)温度=P3;开关(温度) 案例 0 xe7:num=12; / 0键休息;案例 0 xd7:num=13; /=休息;案例 0 xb7:num=14; /清0键休息;案例 0 x77:num=15; /休息; 而(温度!= 0 xf0)温度=P3;温度=温度&0 xf0; 开关(数量)案例12: 如果(k=1)k=0; write_(0 x01); 如果(标志=0)a=a*10;
41、否则如果(标志=1)b=b*10;write_dat(0 x30); 休息;案例 13: /按下 = 键k=1;if(fuhao=1) /如果符号键为+,则执行+操作 write_(0 x80+0 x4f);写_(0 x04);c=a+b;而(c!= 0) write_dat(0 x30+c%10);c=c/10; write_dat(0 x3d);福好=0;a=0;b=0;标志=0; 如果(福豪=2) write_(0 x80+0 x4f);写_(0 x04);如果(a=b) c=ab;而(c!= 0) write_dat(0 x30+c%10);c=c/10; 否则如果(ab) c=ba;
42、而(c!= 0) write_dat(0 x30+c%10);c=c/10; write_dat(0 x2d);write_dat(0 x3d);a=0;b=0;flag=0;fuhao=0;if(fuhao=3) /如果符号键是* write_(0 x80+0 x4f);写_(0 x04);c=a*b;而(c!= 0) write_dat(0 x30+c%10);c=c/10; write_dat(0 x3d);a=0;b=0;flag=0;fuhao=0; if(fuhao=4) /如果符号键是/我=0;write_(0 x80+0 x4f);写_(0 x04);c=(long)(浮点数)a/b)*1000000); /结果保留6位小数而(c!= 0) write_dat(0 x30+c%10);c=c/10;我+;if(i=6) /显示六位小数后,显示write_dat(0 x2e); 如果(a/b=0)write_dat(0 x30); write_dat(0 x3d);a=0;b=0;flag=0;fuhao=0; 休息;案例 14: write_(0 x01);a=0;b=0;flag=0;fuhao=0;休息;案例 15:标志=1;富豪=4;write_dat(0 x30+table1num); 休息; /*led16
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024燃气输配网络建设项目代建合同书3篇
- 2024年车展场地租赁协议
- 2025年度信息安全保密管理合同3篇
- 教育之光:塑造未来
- 2025年度特色餐厅与旅行社文化体验合作框架协议3篇
- 专业化汽车配件供应及服务采购协议书版
- 2025年度智慧社区物业管理系统开发合同示范2篇
- 绿色金融产品开发协议
- 2024版人工智能语音助手开发合同(标的:语音识别技术)
- 2024新版房贷合同:个人住房贷款合同速览版
- 硬质合金烧-结工艺课件
- 贵州省贵阳市2021-2022学年苏教版四年级上册期末数学试卷(含答案)
- 新教材高中历史选择性必修一全册知识点总结
- 2017英语专业八级改错真题及答案持续更新部分详解文字答案校对版
- 室内蒸汽供热系统
- 小型塑料注射成型机液压系统设计
- 《干部廉政档案》2022年最新模板
- 高支模方案(专家论证定稿)
- 城投集团年度安全管理工作计划
- 美术课教案《线造型》
- 人民网删除稿件帖文申请登记表
评论
0/150
提交评论