毕业设计(论文)-温度计LED显示仪_18B20.doc_第1页
毕业设计(论文)-温度计LED显示仪_18B20.doc_第2页
毕业设计(论文)-温度计LED显示仪_18B20.doc_第3页
毕业设计(论文)-温度计LED显示仪_18B20.doc_第4页
毕业设计(论文)-温度计LED显示仪_18B20.doc_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

题 目: 专 业: 应用电子技术 班 级: 姓 名: 学 号: 同组同学: 目 录一 引言 (1)二 智能温度计的基本组成方框 (1)三 系统硬件组成 (2)(一) 温度传感器AD590及其应用 (2)(二) 放大器(3)(三) A/D转换器MC1443 (3)(四) LED显示器(4)(五) 系统核心单片机部分闪电存储器型器件AT89C51(5)(六) 其它(10)四 智能温度计的流程图 (10)五 系统主程序 (12)六 总结和体会(22)七 参考文献 (23)第 25 页 共 25 页 智能温度计设计江海职业技术学院 电子062 刘强摘要 本论文叙述了应用单片机AT89C51构成的智能温度计主要的功能、硬件的组成和软件的设计。该系统的功能是通过温度传感器对温度进行采集,然后通过A/D转换器MC14433进行模数转换,传给单片机进行处理,从而实现温度的实时显示。整个系统结构紧凑、简单可靠、操作灵活、功能强、性能价格比高,较好地满足了现代农业生产和科研的需要。关键词 单片机 温度传感器 A/D转换器 实时显示一、引言单片机自问世以来,性能不断提高和完善,其资源又能满足很多应用场合的需要,加之单片机具有集成度高、功能强、速度快、体积小、功耗低、使用方便、价格低廉等特点,因此,在工业控制、智能仪器仪表、数据采集和处理、通信系统、高级计算器、家用电器等领域的应用日益广泛,并且正在逐步取代现有的多片微机应用系统。单片机的潜力越来越被人们所重视。特别是当前用CMOS工艺制成的各种单片机,由于功耗低,使用的温度范围大,抗干扰能力强、能满足一些特殊要求的应用场合,更加扩大了单片机的应用范围,也进一步促使单片机性能的发展。而现在单片机在农业上也有了很多的应用。温度是日常生活、工业、医学、环境保护、化工、石油等领域最常遇到的一个物理量。测量温度的基本方法是使用温度计直接读取温度。最常见到的测量温度的工具是各种各样的温度计,例如,水银玻璃温度计,酒精温度计,热电偶或热电阻温度计等。它们常常以刻度的形式表示温度的高低,人们必须通过读取刻度值的多少来测量温度。利用单片机和温度传感器构成的电子式智能温度计就可以直接测量温度,得到温度的数字值,既简单方便,又直观准确。二、智能温度计的基本组成方框图11是智能温度计的基本组成方框。主要由温度传感器,放大器,A/D转换器,单片机控制,LED显示器,电源等组成。温度传感器是把温度转换成电压(或电流)的器件,温度传感器输出电压的大小随温度的高低变化而变化,电压值的变化范围从几个微伏到几个毫伏。不同的温度传感器,输出电压的范围也差别很大。放大器的主要功能是把微弱的温度电压信号放大到(02)伏或(05)伏的范围内,以便进行A/D转换。A/D转换器把放大后的模拟温度电压信号转换成对应的数字温度电压信号。单片机8051是智能温度计的控制核心,一方面控制A/D转换器实现模拟信号到数字信号的转换,另一方面将采集到的数字温度电压值,经过计算处理,得到相应的温度值,送到LED显示器以数字形式显示测量的温度。LED显示器用于显示测量温度的结果。 单 片 机 8951LED 显 示 器温度传感器放大器A/D转换器电 源图11 智能温度计方框图三、系统硬件组成 图12 测量摄氏()温度的电路原理。假定 :温度测量范围:0150。摄氏() 温度数字显示: 000.0 或112.8等,十进制小数点后一位。(一)、温度传感器AD590及其应用 AD590是美国模拟器件公司生产的单片集成两端感温电流源。它的主要特性如下:(1) 流过器件电流的微安数等于器件所处环境温度的热力学温度(开尔文)度数。即IT/T=1A/K式中的IT为流过器件(AD590)的电流,单位A,T为温度,单位为K。(2)AD590的测温范围为-55 -+150 。(3) AD590的电源电压范围为4V30V。电源电压从4V到6V变化,电流IT变化1A,相当于温度变化1K。AD590可以承受44V正相电压和20 V反相电压。因而器件反接也不会损坏器件。 (4) 输出电阻为710。(5) 精度高。 AD590在出厂以前已经校对,精度高。因为流过AD590的电流于热力学温度成正比,如两个电阻之和为K,温度变化1C,那么输出电压Vo变化为。但由于AD590的增益有偏差,电阻也有误差,调整的方法与对PN结温度传感器调整的方法相同。即,把AD590放于冰水混合物中,调整电位器,使Vo273.2mV。或在室温下,例如25条件下调整电位器使Vo273.225298.2(mV)。但这样调整只可以保证0 或25 附近有较高精度。 图中用电位器R1调零点,用R2调增益,方法如下:在0 oC时调整W1使输出Vo273.2mV。然后在100 时调W2使Vo373.2mV。然后反复多次,直至0 时Vo273.2mV,100 时Vo373.2mV为止。最后在室温下进行校验。例如,若室温为25,那么Vo应为298.2mV。0 和100 环境的产生方法:冰水混合物是0 的环境,沸水为100 环境。(二)、 放大器 放大器由运算放大器A组成,常用的芯片有:LF335,LF336,CA3140等,主要功能是把模拟的温度电压信号放大到A/D转换器要求的输入电压范围。A/D转换器MC14433要求,模拟输入电压的范围为:02V。W3的作用是抵消温度传感器AD590在摄氏0时产生的温度电压Vo273.2mV,使放大器A的输出电压为0.0V。放大器A的放大倍数选择为10,保证温度在0150范围内变化,而放大器的输出电压在01。50V的范围内。电位器W2用于调整放大器的放大倍数。(三)、 A/D转换器MC14433A/D转换器由双积分型3又1/2位A/D转换器MC14433来完成。因为温度的变化具有惯性,变化缓慢,MC14433的转换速度完全可以满足温度测量的要求。MC14433的方框图和引脚如图3所示,它是单片CMOSA/D转换器,它采用双积分原理实现A/D转换。因为转换后的数字量有三位十进制数,而最高位只能输出或,故称为又1/2位A/D转换器该电路需要外接积分电阻和电容,外接失调补偿电容C。该电路具有自动调零、自动极性转换功能,它精度高、功耗低、使用方便并能与微机或其他数字电路兼容。它广泛用于数字面板表、数字万用表、数字量具和遥控遥测系统。图13 MC14433的方框图和引脚引脚引线功能如下:G 被测电压VX和参考电压VR的模拟接地端VR 外接参考电压端(+2V或+200Mv)VX 被测电压输入端R1,R1/C1,C1 外接积分电阻R1和积分电容C1元件端。外接元件典型值:当量程为2V时,C = 0.1F,R = 470k;当量程为200mV时,C1 = 0.1F, R1 = 27kC01,C02 外接失调电容C0端。C0典型值为0.1FDU 数据显示控制端。当DU和EOC(引脚14)连接时,每次A/D转换都输出CLKI,CLKO 时钟振荡器外接电阻RC端, RC的典型值为470k,时钟频率随RC增加而下降VEE 模拟负输入端。典型值为-5VVSS 数字地,除CLKO端外所有输出端的低电平基准。当VSS与VAG相连(即数字地和模拟地相连)时,输出电压幅度为VAGVDD(0V+5V);当VSS与VEE(-5V)相连,输出电压幅度为VEEVDD(-5V+10V)。实际应用时一般是VSS与VAG相连EOC 转换结束控制端(输出)。每当一个A/D转换周期结束,EOC端输出一个宽度为时钟周期1/2宽度的正脉冲 过量程标志输出端。平时为高电平。当VXVR时(被测电压输入绝对值大于参考电压),端输出低电平DS1DS4 多路选通脉冲输出端,对应DS1千位,对应DS4个位。每个选通脉冲宽度为18个时钟脉冲,两个相邻脉冲之间间隔为2个时钟周期Q0Q3 BCD码数据输出线。其中为Q0最低位,Q3为最高位。当DS2 、DS3和 DS4选通期间,Q0Q3除了表示千位的0或1外,还表示了转换值的正负极性和欠量程还是过量程VDD 正电源端。典型值为+5VMC14433的外部连接电路尽管MC14433外部连接元件很少,为使其工作于最佳状态,也必须注意外部电路的连接和外接元件的选择,其实际连接电路如图1118所示。为了提高电源抗干扰的能力,正、负电源分别通过去耦电容0.047F、0.02F与VSS(VAG)相连。MC14433和单片机8051采用查询方式连接。MC14433的多路选通脉冲输出端和BCD码数据输出端Q0-Q7和单片机的P0口连接。EOC端和8051的/INT0连接,单片机8051通过不断查询/INT0端的状态,了解MC14433的每次A/D转换是否结束,在A/D转换结束后,经P0口读取A/D转换的结果,存入CPU内部的输入数据缓冲区。MC1403是高精度的基准源(2.5V),它的输出经10K可调电位器,调整到2.0V提供MC14433的基准电压。(四)、LED显示器 LED显示器由4位共阴极LED显示器组成,采用动态分时扫描方式。采用4位共阴极LED示器使为了保证温度超过100时,测量结果仍能保持在小数点后一位显示,例如:110.4,提高测量显示精度。 共阴极LED显示器的阳极和单片机CPU的P1口连接,显示段码由CPU通过P1口传送到LED显示器的阳极。位扫描码由单片机8051的P2口低四位输出,经同相驱动器传送到LED显示器的阴极,选通LED显示器的数位,P2.3,P2.2,P2.1,P2.0输出电平为0111时,选通左边的第一位数字,P2.3,P2.2,P2.1,P2.0输出电平为1011时,选通左边的第二位数字,P2.3,P2.2,P2.1,P2.0输出电平为1101时,选通左边的第三位数字,P2.3,P2.2,P2.1,P2.0输出电平为1110时,选通左边的第四位数字。(五)、系统核心单片机部分-闪电存储器型器件AT89C51 单片机AT89C51有内部RAM,可以作为各种数据区使用,内部闪电存储器存放智能温度计的控制程序。它的主要功能是控制MC14433,实现温度的数字值采集,完成温度的数字采集值到对应数字温度的转换计算,并把计算的数字温度转换相应的显示段码,控制LED显示器以动态扫描方式进行温度显示。 AT89系列单片机是ATMEL公司生产的。这是当前最新的一种电擦写8位单片机,与MCS-51系列完全兼容,有超强的加密功能,可完全替代87C51/52和8751/52。它物美价廉,深受用户欢迎。 与87C51相比,AT89系列的优越性在于,其片内闪电存储器的编程与擦除完全用电实现;数据不易挥发,可保存10年;编程/擦除速度快,全4K字节编程只需时3s,擦除时间约用10ms;AT89系列了实现在线编程;也可借助电话线进行远距离编程。AT89C51是一种低功耗、高性能内含4K字节闪电存储器(Flash Memory)的8位CMOS微控制器。这种器件系以ATMEL高密度不挥发存储技术制造,与工业标准MCS-51指令系统和引脚完全兼容。片内闪电存储器的程序代码或数据可在线写入,亦可通过常规的编程器编程。例如,MP-100这样一种经济型的编程器,它支持通用EPROM等各种存储器、PAL、GAL以及INTEL、ATMEL和PHILIPS等各公司的全系列51单片机的编程。ME5103和ME5105仿真器支持AT89系列所有器件的调试、仿真和编程。AT89C51具有下列主要性能:. 4KB可改编程序Flash存储器(可经受1,000次的写入/擦除周期).全静态工作:0Hz24MHz.三级程序存储器保密.128 X 8字节内部RAM.32条可编程I/O线.2个16位定时器/计数器.6个中断源.可编程串行通道.片内时钟振荡器另外,AT89C51是用静态逻辑来设计的,其工作频率可下降到0 Hz,并提供两种可用软件来选择的省电方式空闲方式(Idle Mode)和掉电方式(Power Down Mode)。在空闲方式中,CPU停止工作,而RAM、定时器/计数器、串行口和中断系统都继续工作。在掉电方式中,片内振荡器停止工作,由于时钟被“冻结”,使一切功能都暂停,只保存片内RAM中的内容,直到下一次硬件复位为止。(1)主电源引脚(a).Vcc 电源端(b).GND 接地端(2)外接晶体引脚XTAL1和XTAL2(a).XTAL1 接外部晶体的一个引脚。在单片机内部,它是构成片内振荡器的反相放大器的输入端。当采用外部振荡器时,该引脚接收振荡器的信号,既把此信号直接接到内部时钟发生器的输入端。(b).XTAL2 接外部晶体的另一个引脚。在单片机内部,它是上述振荡器的反相放大器的输出端。采用外部振荡器时,此引脚应悬浮不连接。(3).控制或与其它电源复用引脚RST、ALE/PROG、/PSEN和/EA/Vpp(a).RES 复位输入端。 当振荡器运行时,在该引脚上出现两个机器周期的高电平将使单片机复位。(b).ALE/PROG 当访问外部存储器时,ALE(地址锁存允许)的输出用于锁存地址的低位字节。即使不访问外部存储器,ALE端仍以不变的频率(此频率为振荡器频率的1/6)周期性地出现正脉冲信号。因此,它可用作对外输出的时钟,或用于定时目的。然而要注意的是:每当访问外部数据存储器时,将跳过一个ALE脉冲。在对Flash存储器编程期间,该引脚还用于输入编程脉冲(/PROG)。 如果需要的话,通过对专用寄存器(SFR)区中8EH单元的D0位置数,可禁止ALE操作。该位置数后,只有在执行一条MOVX或MOVC指令期间,ALE才会被激活。另外,该引脚会被微弱拉高,单片机执行外部程序时,该设定禁止ALE位无效。(c). /PSEN 程序存储允许(/PSEN)输出是外部程序存储器的读选通信号。当AT89C51/LV51由外部程序存储器取指令(或常数)时,每个机器周期两次/PSEN有效(既输出2个脉冲)。但在此期间内,每当访问外部数据存储器时,这两次有效的/PSEN信号将不出现。(d)./EA/Vpp 外部访问允许端。要使CPU只访问外部程序存储器(地址为0000HFFFFH),则/EA端必须保持低电平(接到GND端)。然而要注意的是,如果保密位LB1被编程,复位时在内部会锁存/EA端的状态。当/EA端保持高电平(接Vcc端)时,CPU则执行内部程序存储器中的程序。在Flash存储器编程期间,该引脚也用于施加12V的编程允许电源Vpp(如果选用12V编程)。(4)输入/输出引脚 P0.0 P0.7、P10.P1.7、P2.0 P2.7 和P3.0P3.7(a).P0端口(P0.0 P0.7) P0是一个8位漏极开路型双向I/O端口。作为输出口用时,每位能以吸收电流的方式驱动8个TTL输入,对端口写1时,又可作高阻抗输入端用。在访问外部程序和数据存储器时,它是分时多路转换的地址(低8位)/数据总线,在访问期间激活了内部的上拉电阻。在Flash编程时,P0端口接收指令字节;而在验证程序时,则输出指令字节。验证时,要求外接上拉电阻。(b).P1端口(P1.0 P1.7) P1是一个带有内部上拉电阻的8位双向I/O端口。P1的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。对端口写1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。作输入口时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。 在对Flash编程和程序验证时,P1接收低8位地址。(c).P2端口 (P2.0P2.7) P2是一个带有内部上拉电阻的8位双向I/O端口。P2的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。对端口写1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。P2作输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。在访问外部程序存储器和16位地址的外部数据存储器(如执行MOVX DPIR指令)时,P2送出高8位地址。在访问8位地址的外部数据存储器(如执行MOVX RI指令)时,P2口引脚上的内容(就是专用寄存器(SFR)区中P2寄存器的内容),在整个访问期间不会改变。在对Flash编程和程序验证期间,P2也接收高位地址和一些控制信号。(d).P3端口(P3.0P3.7) P3 是一个带有内部上拉电阻的8位双向I/O端口。P2的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。对端口写1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。P3作输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。 在AT89C51中,P3端口还用于一些专门功能,这些兼用功能见表1表 11 端口引脚 兼 用 功 能 P3.0RXD (串行输入口) P3.1TXD (串行输出口) P3.2/INT0 (外部中断0) P3.3/INT1 (外部中断1) P3.4T0 ( 定时器0的外部输入) P3.5T1 (定时器1的外部输入) P3.6/WR (外部数据存储器写选通) P3.7/RD (外部数据存储器读选通) 在对Flash编程和程序验证时,P3还接收一些控制信号。(5)Flash存储器的编程和程序校验:AT89C51单片机内部有一个4K字节的Flash PEROM。这个Flash存储阵列通常是处于已擦除状态(既存储单元的内容为FFH),随时可对它进行编程。编程接口可接收高电压(12V)或低电压(Vcc)的允许编程信号。低电压编程方式可很方便地对AT89C51内的用户系统进行编程;而高电压编程方式则可与通用的EPROM编程器兼容。AT89C51的程序存储器阵列是采用字节写入方式编程的,既每次写入一个字节。要对片内的PEROM程序存储器写入任何一个非空字节,都必须用片擦除方式将整个存储器的内容清除。(6) 对Flash存储器编程编程前,必须按照表2和图5建立好地址、数据和相应的控制信号。编程单元的地址加在P1端口和P2端口的P2.0P2.3(11位地址为0000H0FFFH),数据从P0端口输入。引脚P2.6、P2.7和P3.6、P3.7的电平选择见表2。/PSEN应保持低电平,而RST应保持高电平。/EA/VPP是编程电源的输入端,按要求加入编程电压。ALE/PROG端输入编程脉冲(应为负脉冲信号)。编程时,采用420 MHz的振荡器。对AT89C51编程的步骤如下:(a)在地址线上输入要编程单元的地址。(b)在数据线上输入要写入的数据字节。(c)激活相应的控制信号。(d)在采用高电压编程方式时,将/EA/VPP端的电压加到12V。(e)每对Flash存储阵列写入一个字节或每写入一个程序加密位,加一个ALE/PROG编程脉冲。改变编程单元的地址和要写入的数据,重复步骤ae,直到全部文件编程完毕。每个字节写入周期是自动定时的,通常不大于1.5ms。表 12 Flash编程方式(7)数据查询方式AT89C51单片机用数据查询方式来检测一个写周期是否结束。在一个写周期期间,如果想读出最后写入的哪个字,则读出数据的最高位(P0.7)是原来写入字节最高位的反码。写周期一旦完成后,有效的数据就会出现在所有输出端上,这时可开始下一个写周期。一个写周期开始后,可在任何时间开始进行数据查询。 图15 Flash编程 图 16 程序的校验图17 Flash编程和校验的波形(高电平编程方式)(8)准备就绪/忙信号字节编程的过程也可通过RDY/BSY输出信号来监视。在编程期间,当ALE变为高电平后,P3.4(RDY/BSY)端的电平被拉低,表示忙(正在编程)状态。编程完毕后,P3.4的电平变高表示就绪状态。(9)程序的校验 如果加密位LB1和LB2没有被编程,那么就可以对AT89C51内部已编好的程序进行校验。这时采用图6所示的引脚接法。程序存储器的地址仍由P1端口和P2端口的P2.0P2.3输入,数据由P0端口输入。P2.6、P2.7和P3.6、P3.7的电平见表1-4。/PSEN保持低电平,而ALE、/EA和RST保持高电平。校验时,在P0端口上要求外接约10K左右的上拉电阻。程序加密位不能直接校验。加密位的校验可通过观察它们的功能是否被允许来进行。Flash存储器编程和程序校验时的时序图见图17(高电平编程)和图18(低电压编程)。图 18 Flash编程和校验的波形(低电压编程方式)(六)、其它为增强系统在工作现场的抗干扰能力,在硬件设计方面采取了一系列措施,例如,信号的输入输出采用电平转换、光电隔离;正确配置接地系统,处理好共地信号;强电信号和弱电信号分开走线,传输线尽可能使用双绞线和屏蔽电缆;设置时钟监视电路,自动监视运行状态,出现故障自动处理,同时具有硬件自诊断功能,避免“死机”现象发生等等。四. 智能温度计的流程图在软件设计上,采用了良好的人机交互环境,可通过选择功能热键执行特定的程序,如任意设定检测参数值,选择显示方式和控制模式等,还可设置优先权直接进行人为干预以便达到灵活控制的目的,如果某一检测通道被键设置成关闭,那么不管此通道外部情况如何,系统均不作任何反应。为了提高系统的抗干扰能力,除硬件上采取了相应的措施外,在软件设计中也采取了若干措施,如在数据采集时采用数字滤波;采取指令冗余设计,在程序中适当地插入空操作指令,对一些重要的指令重写等等。从而有效地提高了系统运行的可靠性,使其检测控制工作及时准确、安全稳定,达到良好的环境模拟控制性能要求。图9是智能温度计的流程图。因为智能温度计的控制和计算相对简单,由该流程方框图可见,该主程序是循环线性结构。在初始化时,清除内部RAM,设定标志位和标志单元,设置堆栈指针,检测LED显示器工作是否正常等。它主要包括了下述一些子程序:(1)从A/D转换器MC14433读取温度数字电压子程序:查询A/D转换状态,一旦本次A/D转换结束,CPU将温度电压的BCD码数字值送到RAM中的输入缓冲区存放。(2)温度电压数字值到温度数字转换子程序;将缓冲区中的温度电压数字BCD码转换为实际的温度十进制数字。(3)温度数字到LED显示段码转换子程序:把温度十进制数字转换成相应的LED显示段码,存放在显示段码缓冲区供LED显示器显示传送子程序(4) LED显示段码到LED显示器显示传送和动态扫描子程序(5) BCD码加,减,乘,除子程序;(6) BCD码在缓冲器间传送子程序; 开始初始化,设堆栈指针,清除RAM缓冲区,初始化LED显示器,显示8888一秒,调用MC14433的A/D转换程序,对温度进行采样,送LED显示器,显示当前温度调用MC14433的A/D转换子程序,将温度的电压数字值存放到内部A/D输入数据缓冲区调用A/D输入数字值到数字温度转换子程序,将数字温度电压值转换为其相应的温度数字,存放到数字温度的缓冲区调用送LED显示器显示子程序,将数字温度缓冲区的内容变换为相应的LED显示段码,然后调用动态扫描子程序,将段码送LED显示器显示(7) 其它专用子程序;图 9 智能温度计的流程图四、 系统主程序系统主程序:ORG 0000HLJMP MAINORG 0013HLJMP SUBORG 0100HMAIN: MOV SP,#40HMOV A,#78HMOV R7,#09H MOVX A,DPTR MOV R0,A CLR C SUBB A,#34HJNC LOOP1 CLR C MOV A,R0 SUBB A,#3AHJC LOOPMOV A,R0ACALL TEMPLOOP:MOV DPTR,#EF00HMOV R1,#0F8HMOV A,#33HMOVX R1,AMOV A,R0MOVC A,A+DPTRDEC R1MOVX R1,AMOV A,R2INC R1MOVX R1,AINC R0MOV A,R2CLR CRRC AMOV R2,AMOV A,#00HMOV DPTR,#00F8HMOVX DPTR,AAJMP GO LOOP1: MOV P1,#8FHAJMP GOLOOP2: MOV P1,#0BFH GO : POP DPHPOP DPLPOP ACCPOP PSWRETIENDTEMP: MOV DPTR,TABLE MOV A,R0 MOV B,#04H CLR C MUL AB JNC NOO INC DPH NOO: MOVC A,A+DPTR MOV 80H,A INC DPTR MOVC A,DPTR MOV 81H,A AJMP LOOP ORG 0300HTAB: DB 3FH 06H 5BH 4FH 66H 6DH 7DH 07H 7FH 6FH 77H 83HMAIN:MOV 20H,#0 MOV 21H,#0 MOV R0,#3CH MOV R1,#12 LCALL CLEAR SETB PT0ML2: NOP NOP NOP MOV A,P1 CJNE A,#0FBH,ML3 AJMP MAIN ML3: MOV A,PIN1 INC A SUBB A,PIN3 CJNE A,#0,ML4 AJMP TEST0 ML4: JC TEST0 JNB E1,TEST0 AJMP COMPPTEST0:MOV PIN3,#0 MOV A,P1 CJNE A,#0FDH,TEST AJMP EXIT TEST:MOV A,P1 CJNE A,#0FFH,TEST1 EXIT:MOV R0,#79H MOV R1,#50H HEX: ACALL HEXASC MOV R2,#6 MOV R0,#5AH ACALL INI CLR FLAG3 SJMP HERECOMPP:AJMP COMPSECOO:JNB P1.5,SSECO AJMP SECOSSECO:AJMP SECMINII:JNB P1.5,MMINI AJMP MINIMMINI:AJMP MINHOURR:JNB P1.5,HHOUR AJMP HOURHHOUR:AJMP HOUTEST1:JNB P1.0,SETTTEST2:SETB EA JNB P1.4,EXIT JNB P1.5,DEAL AJMP TESTSETT:CLR EA MOV C,P1.4 MOV F0,C JNB P1.1,SECOO JNB P1.2,MINII JNB P1.3,HOURR AJMP TEST2 DEAL:SETB E1 JNB P1.4,OVER MOV R0,#49H MOV R1,#6 ACALL CLEAR MOV B,#3 MOV A,PIN1 MUL AB ADD A,R4 MOV PIN,A MOV A,PIN1 CJNE A,#4,AAA MOV PIN1,#0 MOV PIN2,#3EH MOV PIN,#3CH AAA: JNB P1.4,OVER JNB P1.1,SECOO JNB P1.2,MINII JNB P1.3,HOURR AJMP AAAOVER:SETB E2 INC PIN1 MOV R2,#6 MOV R0,#3AH MOV R1,PIN1 ACALL INI MOV R0,#49H MOV R2,#3 MOV R1,PINZIP: MOV A,R0 MOV R1,A INC R0 MOV A,R0 SWAP A ORL A,R1 MOV R1,A INC PIN INC R0 INC R1 DJNZ R2,ZIP AJMP EXITCOMP:MOV A,PIN2 CJNE A,#4AH,J AJMP OVRJ: MOV R0,PIN2 MOV R1,#7EH MOV R2,#3JJJ:MOV A,R0 ANL A,#0F0H SWAP A XRL A,R1 JNZ ENDD DEC R1 MOV A,R0 ANL A,#0FH XRL A,R1 JNZ ENDD DEC R1 DEC R0 DJNZ R2,JJJ SETB FLAG2 INC PIN3 AJMP TESTENDD:MOV A,PIN2 ADD A,#3 MOV PIN2,A AJMP COMPOVR: MOV PIN2,#3EH AJMP TESTHOUR:ACALL DELY MOV R0,#7EH JNB F0,SUB1 ACALL DAAD1 MOV A,R2 XRL A,#24H JNZ ML0 ACALL CLR0 AJMP ML0 MINI:ACALL DELY MOV R0,#7CH JNB F0,SUB1 ACALL DAAD1 MOV A,R2 XRL A,#60H JNZ ML0 ACALL CLR0 AJMP ML0 SECO:ACALL DELY MOV R0,#7AH JNB F0,SUB1 ACALL DAAD1 MOV A,R2 XRL A,#60H JNZ ML0 ACALL CLR0 ML0: MOV R0,#79H MOV R1,#50H ACALL HEXASC MOV R2,#6 MOV R0,#5AH ACALL INI AJMP SETTSUB1:SETB F0 ACALL SUB AJMP ML0 CLEAR:MOV R0,#0 INC R0 DJNZ R1,CLEAR RETHOU: ACALL DELY SETB E0 MOV R0,#4EH ACALL DAAD1 MOV A,R2 XRL A,#24H JNZ ML00 ACALL CLR0 AJMP ML00 MIN: ACALL DELY SETB E0 MOV R0,#4CH ACALL DAAD1 MOV A,R2 XRL A,#60H JNZ ML00 ACALL CLR0 AJMP ML00 SEC: ACALL DELY SETB E0 MOV R0,#4AH ACALL DAAD1 MOV A,R2 XRL A,#60H JNZ ML00 ACALL CLR0 ML00:MOV R0,#49H MOV R1,#30H ACALL HEXASC MOV R2,#6 MOV R0,#3AH MOV R1,PIN1 INC R1 ACALL INI AJMP AAADELY:MOV R1,#0FFHA1: MOV R2,#0FFHLOOP:NOP NOP NOP DJNZ R2,LOOP DJNZ R1,A1 RET PITO:PUSH PSW PUSH 0E0H PUSH DPH PUSH DPL SETB PSW.3 MOV A,P1 MOV TL0,#01H MOV TH0,#1FH CJNE A,#0FDH,SSS MOV TL0,#0EDH MOV TH0,#0FBH SSS: JNB P1.5,GETNUMDDD: MOV A,2FH DEC A MOV 2FH,A JNZ RET0 MOV 2FH,#10H MOV R0,#7AH ACALL DAAD1 MOV A,R2 XRL A,#60H JNZ RET0 ACALL CLR0 MOV R0,#7CH ACALL DAAD1 MOV A,R2 XRL A,#60H JNZ RET0 ACALL CLR0 MOV R0,#7EH ACALL DAAD1 MOV A,R2 XRL A,#24H JNZ RET0 ACALL CLR0RET0:SETB TR0 POP DPL POP DPH POP 0E0H POP PSW RETIGETNUM: JB FLAG1,EE MOV R1,#49H MOV R2,#6CO: MOV R1,#0 INC R1 DJNZ R2,CO SETB FLAG1EE: AJMP DDDDAAD1:MOV A,R0 DEC R0 SWAP A ORL A,R0 ADD A,#1

温馨提示

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

最新文档

评论

0/150

提交评论