智能人体秤的系统设计.doc

上传人:laozhun 文档编号:2390770 上传时间:2023-02-17 格式:DOC 页数:40 大小:279KB
返回 下载 相关 举报
智能人体秤的系统设计.doc_第1页
第1页 / 共40页
智能人体秤的系统设计.doc_第2页
第2页 / 共40页
智能人体秤的系统设计.doc_第3页
第3页 / 共40页
智能人体秤的系统设计.doc_第4页
第4页 / 共40页
智能人体秤的系统设计.doc_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《智能人体秤的系统设计.doc》由会员分享,可在线阅读,更多相关《智能人体秤的系统设计.doc(40页珍藏版)》请在三一办公上搜索。

1、本科生毕业论文(设计)题目 基于单片机的智能人体电子秤的系统设计 姓名 学号 院系电气信息与自动化专业测控技术与仪器指导教师 职称 讲师 2011 年 月 日教务处制基于单片机的人体智能秤摘 要随着微电子技术的应用,市场上使用的传统称重工具已经满足不了人们的要求。为了改变传统称重工具在使用上存在的问题,在本设计中将智能化、自动化、人性化用在了电子秤重的控制系统中。本系统主要由单片机来控制,测量物体重量部分由称重传感器及A/D转换器组成,加上显示单元,此电子秤俱备了功能多、性能价格比高、功耗低、系统设计简单、使用方便直观、速度快、测量准确、自动化程度高等特点。本系统以AT89C52单片机为主控芯

2、片,外围附以称重电路、显示电路、A/D转换电路、键盘电路等构成智能称重系统电路板,从而实现自动称重系统的各种控制功能。主要通过LCD显示人体的体重,经键盘输入身高,结合身高与体重的关系来判别并显示人体的身材。可以说,此设计集称重、判别身材和时间显示一体,功能齐全可进行推广应用,所完成的电子秤很大程度上满足了应用需求。关键词:液晶显示;传感器;单片机目 录1 绪 论12 系统设计22.1 设计任务及要求22.1.1 任务22.1.2 要求22.1.3 说明22.2 总体设计方案22.2.1 设计思路22.2.2 方案论证与比较22.2.3 系统组成83 硬件电路的设计93.1 外部电路的设计93

3、.1.1 单片机控制系统93.1.2 单片机与转换器的接口电路93.1.3 液晶显示接口电路113.1.4 电源电路133.1.5 键盘与单片机接口电路134 软件设计154.1 主程序的设计154.1.1 系统主程序154.1.2 欢迎模块164.1.3 测量模块174.1.4 身材模块184.1.5 时间模块194.1.6 键盘模块205 系统测试215.1 测试使用的仿真软件215.2 测试215.3显示时间仿真215.4显示体重和身材的仿真226 总结23致 谢24参考文献25附录1 主电路图26附录2 源程序清单271 绪 论目前,随着社会的发展、生活水平不断提高,人们越来越关注自己

4、的身体健康。许多人由于工作的压力和不良的饮食习惯,使得身体健康每况愈下,疾病也随之而来,而在这些人群中,患有肥胖和营养不良的病人居多。为方便人们及时了解自己的体重是否超出或低于标准的体重,在许多公共场合都摆放了人体秤,商场、药店、马路旁等随处可见,给那些由于工作紧张没有时间到医院做定期体验的人们带来了方便。人体秤已不再是医院的专用医疗器械,已成为人们生活中不可缺少的一部分。普通人体秤测量身高和体重的结果都是直接用眼睛观看指针读取的,由于读数的方法各不相同、读数时光线有明有暗等多种原因,使得读取数据的误差过大。由于人体秤的使用非常普遍,解决这一问题显得尤为重要。近年来,随着科技不断进步,计算机已

5、渗透到各个领域,单片机已逐渐成为科学技术现代化的重要工具,正在不断地走向深入。单片机的应用已深入到人类的生活、生产等各种领域。在此基础上发展起来的由单片机控制的人体称,比普通人体称在耐用性、适用环境、读数的准确度等方面有了很大的提高。智能人体秤经济、实用,适合在广大工薪阶层推广。因此,以单片机为控制核心的人体秤,不但提高了读数的精确度,给人们以直观的效果,将身材标准与否一并显示,与普通人体秤的价格相差无几,逐渐取代传统的人体秤。2 系统设计2.1 设计任务及要求2.1.1 任务 设计一个人体智能秤,要求显示人体体重、显示时间、显示身材。2.1.2 要求 显示人体体重、身材以及显示时间。2.1.

6、3 说明(1)人体称重的范围定为10KG100KG,身高的范围为90CM190CM。(2)TJH-2C型称重传感器,额定负载为100KG,传感器电路采用的是单臂电桥,只有一个电阻应变片,与其它型号的相比而言价格便宜。2.2 总体设计方案2.2.1 设计思路通过TJH-2C重力传感器对称重信号进行采集,经INA126将称重模拟信号进行放大,通过8位的A/D转换器完成数据采集,再把模拟信号转换为数字信号输入MCU,由MCU完成一系列的运算,最后由LCD显示身材、体重和时间。2.2.2 方案论证与比较 (1)传感器模块方案一:本设计中需要测量的是人体的体重,没有具体的测量的范围,所以本系统中我采用T

7、JH-2C型称重传感器,它的测量范围是(0100kg),适合大多数的人群,如图2-1为传感器的原理图。图 2-1 TJH-2C传感器原理图称重传感器主要由弹性体、电阻应变片电缆线等组成,内部线路采用惠更斯电桥,当弹性体承受载荷产生变形时,输出信号电压由公式1。Eout=R2*R4/(R2+R4)*(R1/R1+R2/R2+R3/R3+R4/R4)*Ein (公式 1)称重传感器是影响人体称测量精度的关键部分。选用适当的传感器,用来感知被测量,当人体站到称盘上时,重力传给传感器,该传感器发生行变,从而使阻抗发生变化,电桥失去平衡,传感器输出一个变化的模拟信号。本系统中采用TJH-2C型称重传感器

8、,额定负载为200KG,传感器电路采用的是单臂电桥电路,只有一个电阻应变片,理想情况下,传感器输出信号、放大器输出信号、A/D转换输出信号、人体体重之间的关系基本成线性,放大器的理想放大倍数为327。 方案二:采用应变片式压力传感器压力传感器是现实中采用并使用的比较多的一种传感器,我们使用的压力传感器主要利用压电效应制造而成的,这种的传感器也称为压电传感器。应变片压力传感器原理如图2-2: 图 2-2 应变片压力传感器原理图 电阻应变片受力产生形变,使加在应变片电阻上的电压发生变化。这种应变片在受力时产生的阻值变化通常较小,一般这种应变片都组成应变片电桥,并通过后续的仪表放大器进行放大,在传输

9、给处理电路(通常是A/D转换和CPU)显示或执行机构。因为应变片产生的阻值变化小,所以在测量时,一旦超过量程的上限值就会损坏仪器,而测量人体体重的变化范围很光。显然,采用此方案不适合。方案选择:通过比较,认为本设计相对需要较稳定相对电路简单的传感器,这样可以省下一些时间,因此,选择了方案一。 (2)前端放大器的选择方案一:利用普通低温漂运算放大器构成多级放大器。普通低温漂运算放大器构成多级放大器会引入大量噪声。由于 A/D 转换器需要很高的精度,所以几毫伏的干扰信号就会直接影响最后的测量精度。所以,此中方案不宜采用。方案二:由高精度低漂移运算放大器构成差动放大器。差动放大器具有高输入阻抗,增益

10、高的特点,可以利用普通运放做成一个差放大器 ,如图2-3(OP07)。图2- 3 差动放大器原理图电阻 R1 、 R2 电容 C1 、 C2 、 C3 、 C4 用于滤除前级的噪声, C1 、 C2 为普通小电容,可以滤除高频干扰, C3 、 C4 为大的电解电容,主要用于滤除低频噪声。优点:输入级加入放大器,增大了输入阻抗,中间级为差动放大电路,滑动变阻器 R6 可以调节输出零点,最后一级可以用于微调放大倍数,使输出满足满量程要求。输出级为反向放大器,所以输出电阻不是很大,比较符合应用要求。 缺点:此电路要求 R3 、R4相等,误差将会影响输出精度,难度较大。实际测量,每一级运放都会引入较大

11、噪声。对精度影响较大。方案 三 :采用专用仪表放大器,如: INA126,INA121等。以INA126为例如图2- 4。图2- 4 INA126放大器原理图此类芯片内部采用差动输入,共模抑制比高,差模输入阻抗大,增益高,精度也非常好,且外部接口简单。放大器增益G=5+80K/Rg ,通过改变Rg的大小来改变放大器的增益。 方案选择:综上所述,选择方案三比较适合本系统的要求。 (3)A/D模块方案一:双积分型 A/D转换器:如:ICL7135、ICL7109等。 双积分型 A/D转换器精度高,具有精确的差分输入,输入阻抗高,可自动调零,超量程信号,全部输出于TTL电平兼容。双积分型 A/D转换

12、器具有很强的抗干扰能力。对正负对称的工频干扰信号积分为零,所以对50HZ的工频干扰抑制能力较强,对高于工频干扰(例如噪声电压)已有良好的滤波作用。只要干扰电压的平均值为零,对输出就不产生影响。但是,双积分型A/D的转换速度太缓慢了,这样就无法满足要低功耗的要求,显然双积分型的A/D不适合于本系统的设计。方案二:逐次逼近型 A/D转换器,如:ADS7805、ADS7804等。 逐次逼近型 A/D转换,一般具有采样/保持功能。采样频率高, 功耗比较低,是理想的高速、高精度、省电型 A/D 转换器件。高精度逐次逼近型 A/D转换器一般都带有内部基准源和内部时钟,基于89C52构成的系统设计时仅需要外

13、接几个电阻、电容。方案选择:作为人体秤,系统对A/D的转换速度要求适中,精度上8位的A/D足以满足要求。另外逐次逼近行型A/D转换器,具有低廉的价格。综合的分析其优点和缺点,选择方案二。 (4)控制模块方案一:采用可编程逻辑器件CPLD作为控制器。CPLD可以实现各种复杂的逻辑功能、规模大、密度高、体积小、稳定性高、IO资源丰富、易于进行功能扩展。采用并行的输入输出方式,提高了系统的处理速度,适合作为大规模控制系统的控制核心。但本系统不需要复杂的逻辑功能,对数据的处理速度的要求也不是非常高,而且从使用及经济的角度考虑放弃此方案。方案二:采用凌阳公司的16位单片机,它是16位控制器,具有体积小、

14、驱动能力高、集成度高、易扩展、可靠性高、功耗低、结构简单、中断能力强等特点。处理速度高,尤其用于语音处理和识别等领域。但是当凌阳单片机应用语音处理和辨识时,由于其占用的CPU资源较多而使得凌阳单片机同时处理其他任务的速度和能力降低。方案三:采用使用Atmel 公司的AT89C52作为系统的的主控制器,AT89C52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89C52为嵌入式控制应用系

15、统提供高灵活、超有效的解决方案。方案选择:由于本设计要求不高,采用一般的AT89C52即可完成,所以选择方案三。 (5) 键盘模块方案一:采用独立式键盘,它是各键盘相互独立地接到单片机的I/O引脚,每一个按键需要占用单片机的一个I/O引脚,这是最简单的键盘结构。但有任何一个键按下时,与之相连的输入数据线即被置为逻辑0(低电平),而平时该数据线上保持为逻辑1(高电平),单片机程序中只要通过查询与键盘相连的I/O脚位即可方便地实现按键处理。不过,这种按键的缺点是按键多时,占用单片机的I/O口线资源。本系统是设计通过人体体重与身高的关系来判别人体健康的程度,所以只需09个数字键和一个复位键,显然占用

16、的I/O线资源太多了,在本系统中不适用。方案二:采用并列式键盘可以减少占用单片机I/O口的线资源,而在本系统的设计中采用并列式键盘4*4,只需要8根I/O口线,并且在键盘上分配很合理,可以设置09个键、一个复位键、小数点。虽然在软件上完成行列式键盘的扫描,编程相对而言很复杂,但这种行列式键盘的扫描程序已经有现成的程序可以借鉴,只需修改就可以使用。方案选择:综上分析,选择方案 二。 (6)显示模块方案一:采用LED示显示器在单片机应用系统中,通常使用LED数码管显示器来显示各种数字和字符,由于它有显示清晰、亮度高、使用电压低、寿命长的特点,所以使用非常广泛,但是本为要求显示中文,用LED使电路复

17、杂,所以不适合本系统。方案二:采用LCD液晶显示器液晶显示器有微功耗、体积小、显示内容丰富、模块化、接口电路简单等诸多优点,适合推广应用,而且有许多自带中文字库的芯片,适合本系统的设计。方案选择:综上分析,选用方案二。2.2.3 系统组成本系统主要采用称重传感器模块、滤波放大电路模块、模数转换电路模快、显示模块、键盘模块等部分组成。人体的体重信息由称重传感器转换成电信号,并通过测量电路进行滤波放大,由单片机控制A/D转换器完成数据采集,并由单片机完成运算、显示,人体智能秤系统框图如图2-5所示。 图 2-5 人体智能秤系统框图3 硬件电路的设计3.1 外部电路的设计3.1.1 单片机控制系统A

18、T89C52最小系统图,它是整个电路正常工作不可缺少的部分,其中引脚18和19接晶整电路,CRY=12MHZ;9引脚接复位电路,即可手动复位也可以上电复位;31引脚接电源,低电平输入为真,如图3-1所示。图3-1 单片机最小系统图3.1.2 单片机与转换器的接口电路A/D转换器是将模拟量转换为数字量的器件,它是模拟量与计算机之间的接口部分。逐次逼近法型A/D转换器的结构如图2,由N位逐次逼近寄存器、N位D/A转换器、比较器、N位输出缓冲器及逻辑控制电路构成。其工作原理为:把输入的模拟电压Vin作为目标值,用对分搜索的方法来逼近该值。当启动信号START有效后,时钟信号CLK通过控制逻辑电路使N

19、位寄存器的最高位置1,其余各位为0,此二进制代码经D/A转换器转换为电压V0,该值为满量程的一半。将V0与输入电压Vin作比较,如VinV0,则保留这一位;否则该位请0。然后,CLK再对次高位置1,并连同上一次转换结果进行D/A转换和比较,保留结果,重复以上过程直到比较完毕,发出转换结果信号EOC,并将N位寄存器中的转换结果送至输出缓冲器,如图3-2。 图3-2 逐次逼近型 A/D转换器的结构ADC0809与单片机接口电路图如图3-3所示。单片机的低8位的地址信号在ALE作用下锁存在74LS373中。74LS373输出的低3位信号分别加到ADC0809的通道选择端A、B、C,作为通道编码。单片

20、机的P2.7作为片选信号,与/WR进行或非操作得到一个正脉冲,加到ADC0809的ALE和START的引脚上。由于ALE和START连接在一起,因此ADC0809在锁存信道地址的同时也启动转换。在读取转换结果时,用单片机的读信号P2.4和P2.7引脚经或非门后产生的正脉冲作为OE信号,用以打开三态输出锁存器。显然,上诉操作时,P2.7应为低电平。ADC0809的EOC端经反相器连接到单片机的P2.5引脚,作为查询或中断信号。图 3-3 单片机与ADC0809接口电路3.1.3 液晶显示接口电路LCD是利用晶体材料的电光效应制作的一种被动式显示器。液晶本身并不发光,依靠电信号的控制使周围环境光在

21、显示部位反射或透射而得以显示。液晶显示器是一种体积小、重量轻、功耗低、被广泛应用的显示设备。在本系统中用LCD来显示称重人的身材,主要显示汉字。LCD显示的扫描方式是按行列式扫描,显示一个汉字是按左上、右上、左下、右下的顺序按列显示的。显示汉字前,首先要提取汉字的字模。一个汉字共32字节,为1616点阵,提取字模采用AEDK51机软件系统自带的字模提取软件,以A51的取模格式,并将其参数设定为:逆向取模、字节正序。将要显示的汉字字模存放在程序区内,需要显示时,给定特定的数据表地址即可。LCD复位信号通过反相器接到单片机的RESET上,上电或手动复位时将随单片机同时复位。由于复位后并行口输出高电

22、平,LCD处于选中状态,此时LCD将输出内部状态字,将会影响数据总线上的数据传输。所以外接一个反相器,如图3-4。图3-4 LCD显示接口电路图3.1.4 电源电路电源采用的是9V交流电压电源输入,5V直流电压输出,稳压二极管VD2串接在7805的2引脚与地之间,可使输出电压得到提高,输出电压为稳压管输出电压与VD2输出电压之和。VD1是输出保护二极管,一旦输出电压低于VD2稳压值时,VD1导通,将输出电流旁路,保护7805稳压管输出级不被损坏,如图3-5所示。图3-5 电源电路图3.1.5 键盘与单片机接口电路矩阵式键盘采用并列式结构,按键设置在行列的交点上如图3-6。矩阵式键盘的行线通过电

23、阻接+5V,当键盘上没有键闭合时,所有的行线与列线是断开的,行线均呈高电平。当键盘上某一键闭合时,该键所对应的行线与列线短接。此时该行线的电平将由被短接的行线电平所决定。将行线接至单片机的输入接口,列线接至单片机的输出接口。首先使所有的列线为低电平,然后读行线状态,若行线均为高电平,则没有键按下;若读出的行线状态不全为高电平,则可以断定有键按下。 先让Y0这一列为低电平,其余行线为高电平,读行线状态,如行线状态不全为“1”,则说明所按键在该列,否则不在该列。然后让Y1列为低电平,其他列为高电平,判断Y1列有无键盘按下。图3-6 键盘原理图采用4*4的键盘进行控制的,当相应的按键被按下时,哪个键

24、的就会被接通,通过数据线输入MCU进行计算,控制等,如图3-7。图 3-7 键盘与单片机的接口图4 软件设计4.1 主程序的设计4.1.1 系统主程序 智能称的开发和设计中的主要包括主程序的设计,显示程序设计和键盘程序的设计,A/D转换程序的设计和数据处理的设计。通过对程序进行初始化后,进入操作系统显示“欢迎”,判断是否有人称重,如果没有人使用返回等待,有人称重就进行测量并在LCD上显示人体的重量,并判断出人的身材,结束后进返回初始程序再次等待,如图4-1。图 4-1 主程序流程图4.1.2 欢迎模块本模块主要是通过对LCD的初始化设置后,通过提取固定字的字模,将相应的字显示在LCD上。然后,

25、启动ADC0809对重力传感器进行数据采样,当采样值小于10kg时,低于人体秤的下限值,说明无人站上,返回到继续等待状态;当采样值大于10kg,说明有人站上,进入下测量模块,如图4-2。图4-2 人体秤重流程图判断是否有人称重子程序:ZHONGLI:YALI:MOVDPTR,#ADCS;重力入口地址MOVX DPTR,AJB P2.0,$MOVX A,DPTR ;采集重力值CLR CSUBB A,#0AH ;将测量值与10比较,小于10则继续JCYALI ;测量,大于10则返回,说明有人称重RET4.1.3 测量模块有人站上后,启动ADC0809进行模数转换。模数转换有中断和查询两种转换方法,

26、本系统采用查询方法。压力传感器接IN0通道,位移传感接IN1通道,启动A/D程序如下:MOVDPTR,#ADCS;通道口地址MOVXDPTR,A首先采集重力传感器的值,将16次采集数据去掉一个最大数、一个最小数求得平均值存入ADVAL单中,并在LCD第0位至第2位按从低位到高位的顺序显示重力值。然后采集位移传感器的值,采集数据、求平均值与重力传感器的方法都相同,唯一不同的是显示部分,在LCD的第5位至第7位按从低位到高位的顺序显示身高值。子程序流程图如图4-3,图4-4示。最后将测得的体重值存入ADVAL1中,身高值存入SURM中,以便在判断身材子程序中使用。 图4-3数据采样子程序 图4-4

27、 显示子程序4.1.4 身材模块身高、体重测量完毕后,进入判断身材模块。本模块的设计思想如下:将身高和体重分别存入程序中,HIGH为身高表,WEIGH为体重表,身高表与体重表中数据是一一对应的关系。首先在身高表中查找与测量身高值(SURM)相等的数值,记录下测量的身高值在表中的地址。然后根据记录的地址到体重表查找对应的体重,找到后与测量体重值(ADVAL1)相比较。若测量的体重值与表内的标准值相等,则显示“正常”,若小于标准值,则显示“偏胖”,若大于标准值,显示“偏瘦”,显示身材结果由LCD液晶显示,如图4-5。图4-5 判断身材流程图4.1.5 时间模块在人体秤上设计显示时间的程序,通过计时

28、器计时秒钟的,当秒钟累加到59时,会通过MCU来判断,从而确定秒钟的溢出到分钟还是继续累加秒钟的工作。分钟与时钟的工作原理和秒钟的原理一样,只是溢出到的目的不同如图4-6。图4-6 显示时间流程图4.1.6 键盘模块扫描键盘并初始化,读取键盘上按下的键并判断是数字键还是功能键,如果按下的是数字键转到数字处理程序并显示相应的数字,如果按下的是功能键转到功能处理程序并显示最终的处理结果,然后返回键盘读取,如图4-7。图4-7 键盘扫描流程图6 总结在基于单片机的人体智能秤的设计当中,基本完成了设计任务书中的基本要求。在调试的实验中能够在允许的误差范围内显示人体的体重。通过此次设计对单片机有了深刻的

29、认识,能够对它进行一些基本的控制,在设计当中,对一些芯片也有了深刻的认识,能够运用这些芯片设计电路。毕业设计是专科学习阶段一次非常难得的理论与实际相结合的机会,通过这次比较完整的人体智能秤的设计,我摆脱了单纯的理论知识学习状态,和实际设计的结合锻炼了我的综合运用所学的专业基础知识,解决实际工程问题的能力,同时也提高我查阅文献资料、集成手册以及电脑制图等其他专业能力水平,而且通过对整体的掌控,对局部的取舍,以及对细节的斟酌处理,都使我的能力得到了锻炼,经验得到了丰富,并且意志品质力,抗压能力及耐力也都得到了不同程度的提升。虽然毕业设计内容繁多,过程繁琐,但我的收获却更加丰富。各种系统的适用条件,

30、各种芯片的选择,各种电路的设计,我都是随着设计的不断深入而不断学习并学会应用的,和老师的沟通交流更使我茅塞顿开。致 谢本论文是在导师凌泽明老师的悉心指导下完成的没有导师的指引,没有父母和朋友的帮助和支持,我在大学的学术成长肯定会大打折扣。当我打完毕业论文的最后一个字符,涌上心头的不是长途跋涉后抵达终点的欣喜,而是源自心底的诚挚谢意。论文工作的每一步工作都得到了凌老师的无微不至的关怀,在关键的时候导师为我指点迷津在此,我以这朴素的语言来表达我对凌老师衷心的感谢和崇高的敬意。参考文献1郑欢.单片机原理与应用技术.北京:高等教育出版社,2004.112张玮,马乐惠.电子技术基础.西安:西安电子科技大

31、学出版社,2006.93单片机实训.北京:高等教育出版社,2003.44许海平.微机原理与接口.北京:高等教育出版社,2004.75孙涵芳.单片机原理及应用(修订版).北京:北京航空航天大学出版社,1996年6何立民. 单片机应用技术选编(1)-(8).北京:北京航空航天大学出版社,20027 维普期刊:8 超星图书馆:附录1 主电路图附录2 源程序清单 键盘扫描程序 DBUF EQU 30H TEMP EQU 40H YJ EQU 50H ;结果存放 YJ1 EQU 51H ;中间结果存放 GONG EQU 52H ;功能键存放 DIN BIT 0B0H CLK BIT 0B1H ORG 0

32、0HSTART: MOV R3, #0 ;初始化显示为空 MOV GONG, #0 MOV 30H, #10H MOV 31H, #10H MOV 32H, #10H MOV 33H, #10H MOV 34H, #10HMLOOP: CALL DISP ;PAN调显示子程序WAIT: CALL TESTKEY ;判断有无按键 J Z WAIT CALL GETKEY ;读键 INC R3 ;按键个数 CJNE A, #0, NEXT1 ;判断是否数字键 LJMP E1 ;转数字键处理NEXT1: CJNE A, #1, NEXT2 LJMP E1NEXT2: CJNE A, #2, NEXT

33、3 LJMP E1NEXT3: CJNE A, #3, NEXT4 LJMP E1NEXT4: CJNE A, #4, NEXT5 LJMP E1NEXT5: CJNE A, #5, NEXT6 LJMP E1NEXT6: CJNE A, #6, NEXT7 LJMP E1NEXT7: CJNE A, #7, NEXT8 LJMP E1NEXT8: CJNE A, #8, NEXT9 LJMP E1NEXT9: CJNE A, #9, NEXT10 LJMP E1NEXT10: CJNE A, #10, NEXT11 ;判断是否功能键 LJMP E2 ;转功能键处理NEXT11: CJNE A

34、, #11, NEXT12 LJMP E2NEXT12: CJNE A, #12, NEXT13 LJMP E2NEXT13: CJNE A, #13, NEXT14 LJMP E2NEXT14: CJNE A, #14, NEXT15 LJMP E2NEXT15: CJNE A, #15, NEXT16 LJMP E2NEXT16 CJNE A, #16, NEXT1 LJMP E2E2: CJNE A, #10, N21 ;判断功能键 LJMP JIA ;“”N21: CJNE A, #11, N22 LJMP JIAN ;“”N22: CJNE A, #12, N23 LJMP CHEN

35、G ;“*”N23: CJNE A, #13, N24 LJMP CHU ;“/”N24: CJNE A, #0, N25 LJMP FIRST ;首次按功能键N25: LJMP DEN ;“=”N4: LJMP E2FIRST: MOV YJ, R4 ;输入值送结果 MOV R3, #0 ;按键次数清零 LJMP DISP1 ;结果处理JIA: MOV A, YJ ;上次结果送累加器 ADD A, R4 ;上次结果加输入值 JB CY, N4 ;溢出 MOV YJ, A ;存本次结果 MOV R3, #0 ;按键次数清零 LJMP DISP1JIAN: MOV A, YJ SUBB A, R

36、4 ;上次结果减输入值 JB CY, N4 ;负数溢出 MOV YJ, A MOV R3,#0 LJMP DISP1CHENG: MOV A, YJ MOV B, A MOV A, R4 MUL AB ;上次结果乘输入值 JB OV, N4 ;溢出 MOV YJ, A LJMP DISP1CHU: MOV A, R4 MOV B, A MOV A, YJ DIV AB ;上次结果除输入值 MOV YJ, A MOV R3, #0 LJMP DISP1DEN: MOV R3, #0 LJMP DISP1DISP1: MOV B, #10 MOV A, YJ ;结果送累加器 DIV AB ;结果除

37、10 MOV YJ1, A ;暂存“商” MOV A, B ;取个位数 MOV 34H, A ;个位数送显示缓存 MOV A, YJ1 JZ DISP11 ;结果是否为一位数 MOV B, #10 MOV A, YJ1 DIV AB MOV YJ1, A MOV A, B MOV 33H, A ;十位送显示缓存 MOV A, YJ1 JZ DISP11 ;结果是否为二位数 MOV 32H, A ;百位数送显示缓存DISP11: LJMP MLOOPDISP: MOV R0, #DBUF ;显示子程序 MOV R1, #TEMP+4 MOV R2, #5DP10: MOV DPTR, #SEGT

38、AB MOV A, R0 MOVC A, A+DPTR MOV R1, A INC R0 DEC R1 DJNZ R2, DP10 MOV R0, #TEMP MOV R1 , #5DP12: MOV R2, #8 MOV A, R0DP13: RLC A MOV DIN, C CLR CLK SETB CLK DJNZ R2, DP13 INC R0 DJNZ R1, DP12 RETSEGTAB: DB 3FH,06H,5BH,4FH,66H,6DH ;段码定义 DB 7DH,07H,7FH,6FH,77H,7CH DB 39H,5EH,79H,71H,00H,40HTESTKEY: MOV P1, #0FH ;读入键状态 MOV A, P1 CPL A ANL A, #0FH ;高四位不用 RETKEYTABLE:DB 0DEH,0EDH,0DDH,0BDH ;键码定义 DB 0EBH,0DBH,0BBH,0E7H DB 0D7H,0B7H,07EH,07DH DB 07BH,077H,0BEH,0EEHGETKEY: ;读键子程序 MOV R6, #10 ACALL DELAY MOV P1, #0FH MOV A, P1 CJNE A, 0FH,K12 LJMP MLOOPK12: MOV B, A MOV

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号