收藏 分享(赏)

智能温度测量仪.doc

上传人:精品资料 文档编号:11069757 上传时间:2020-02-06 格式:DOC 页数:22 大小:150.44KB
下载 相关 举报
智能温度测量仪.doc_第1页
第1页 / 共22页
智能温度测量仪.doc_第2页
第2页 / 共22页
智能温度测量仪.doc_第3页
第3页 / 共22页
智能温度测量仪.doc_第4页
第4页 / 共22页
智能温度测量仪.doc_第5页
第5页 / 共22页
点击查看更多>>
资源描述

1、2.4.1 选择温度传感器器件 1本次设计用到电流型两线制集成温度传感器 AD590(0时为 0.2732mA) 。AD590 测量热力学温度、摄氏温度、两点温度差、多点最低温度、多点平均温度的具体电路,广泛应用于不同的温度控制场合。由于 AD590精度高、价格低、不需辅助电源、线性好,常用于测温和热电偶的冷端补偿。2.4.2 选择单片机器件单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。在大多情况下,理应选择性价比高的单片机及其它器件,但在某些特殊场合,当性能成为决定因素时,应以性能优先原则选择所需的单片机或其它器件。单片机一般分为51系列和52

2、系列,本次设计用到的是52系列即8051单片机。2.4.4 放大器的设计温度传感器的输出电压经过ISO100隔离放大(单增益)后,将输出电压送给测量放大器进行放大,以便放大后的输出电压和A/D转换器的量程相匹配。本设计中选用了AD521,它是美国AD公司生产的第二代单片集成精密仪表放大器。2.4.5 A/D 和 D/A 转换器设计 21若A/D转换器中带锁存器,可与单片机直连;若A/D片中不带锁存器,则在单片机与A/D之间要家锁存器,如74LS373等。图2 A/D转换与51单片机的接口3.1 系统总体原理框图I将集成温度传感器AD590(0时为0.2732mA)因温度变化,导致电流变化( 0

3、.001mA/) ,经OPA转换为电压变化输入ADC0804,输入电压Vin(0 5V之间)经过A/D转换之后,其值由8751处理,最后将其显示在D4, D3,D2,D1共四个七段显示器。其中包含了时钟显示电路。该温度测量仪可以实现温度的测量,数据的显示、储存以及日历时间的显示。图 6 ADC0804 引脚图 在使用时应注意以下几点:(1) 转换时序(2) 零点和满刻度调节。(3) 参考电压的调节(4) 接地II3.4 单片机及其扩展 I/O 的设计采用 TTL 电路扩展 I/O 口是一种最常见的微机 I/O 扩展手段。图 7 单片机与 I/O 接口原理图3.4.1 地址锁存器由于8051单片

4、机的PO口是分时复用的地址/数据总线,因此在进行程序存储器扩展时,必须用地址锁存器将地址信号从地址/数据总线中分离开来。74LS373是带三态缓冲输出的八D锁存器,将它的锁存控制端G直接与8031的锁存控制信号端ALE相连,在ALE下降沿进行地址锁存。3.4.2 程序存储器程序存储器的扩展包括三组总线的连接及地址译码等。MCS-51 系列单片机程序存储器可扩展 64KB。由于大规模的集成电路的扩展,单片存储器的存储容量越来越大,因此,在程序存储器芯片使用的数量上一般采用一片就够了。程序存储器的作用是存放单片机的执行程序,虽然现今的单片机具有片内的程序存储器,但是,当程序量超过单片机的片内程序存

5、储器时,将采用片外扩展程序存储器,通常采用 EPROM、E2PROM、Flash 存储器等芯片。3.4.3 数据存储器扩展扩展的数据存储器空间地址同外扩程序存储器一样,由P2口提供高8位地址,PO口为分时提供低8位地址和8为双向数据总线。由8031的RD (P3 .7 )和WR (P3.6)信号控制, ,而片外程序存储器EPROM的输出允许端( OE)由读选通信号PSEN控制即使与片外数据存储器RAM的读和写EPROM共处一地址空间,但由于控制信号即使用的数据传输指令不同,故不会发生总线冲突3.5 键盘和显示的设计键盘分为独立式键盘和矩阵式键盘。由于本设计中键的数量不是很多,所以在此我们选用独

6、立式键盘控制。在此电路中为8279扩展I/0控制的8位共阴极LED动态显示接口电路。由于所有8位段选线皆由一个I/0口控制,因此,在每一瞬间,8位LED会显示相同的字符。要想每位显示不同的字符,就必须采用扫描方法轮流点亮各位LED,记载每一瞬间只使某一位显示字符。在此瞬间,段选控制I/0口输出相应字符段选码(字型码),而位选则控制I/0口在该显示为送入选通电平(因为LED为共阴,故应送低电平),以保证该位显示相应字III符。如此轮流,使每位分时显示该位应显示字符。逐位轮流点亮各个LED,每一位停留lms,在10-20ms之内再一次点亮,重复不止,这样,利用人的视觉暂留好像六位LED同时点亮了。

7、在此仪器的设计中,LED显示器的显示方式采用的是动态显示方式。3.6 模拟信号输出部分设计3.6.1 信号输出部分总体设计系统经过数据采集、数据处理之后,获得被测对象的温度值,但在有些时候需要控制被控对象的温度,因此,要由单片机系统发出控制信号,进行系统控制。但是由8031输出的控制信号是数字信号,需将其经过数/模转变为模拟信号,再经功率放大,才能控制加热炉、热处理炉等。这一功能由一片DAC0832来完成,由于DAC0832是一种电流输出型D/A芯片,因此其后端接一片运算放大器构成反相输出电路以实现电压信号输出,然后再接入1片多路模拟开关CD4051,将输出扩展为8路。由上述可知,该部分具有8

8、路模拟信号输出能力。(1) D/A转换器选用DAC0832该芯片是8位分辨率的D/A集成芯片,与微处理机完全兼容,具有价格低廉、接口简单、转换控制容易等优点,主要有如下特点A)可单缓冲或双缓冲数字输入;B)只需在满量程下调整其线性度;C)低功耗,200mW;D)内部无参考电压源,须外接参考电压源;E)为电流输出型数模转换器,要获得模拟电压输出时,需外加转换电路;F)有5根控制线;图8 DAC0832的管脚功能Rf b 9CS1 WR12AGND 3DI 34 DI 25 DI 16 DI 07VREF 8DGND 10Vcc 20Iout2 11Iout1 12DI 713 DI 614DI

9、515 DI 4 16XFER17WR218ILE 19DAC0832IV第 4 章 时钟电路的设计4.3.2 LED 的段驱动芯片的选择LED的段驱动电路有很多种,在本设计中可以选择 BCD-7段锁存/译码/驱动器作为段驱动器。这类芯片的型号有 74LS47、74LS48、74LS247、74LS248 等。该类芯片具有锁存、译码、驱动的功能。即在输入端输入要显示字形的 BCD码,在输出端就可以得到具有一定驱动能力的 7段显示字形码。4.3.3 LED 的位驱动芯片的选择 14 LED位驱动较常用的芯片有 ULN2003A和 ULN2803。前者是具有 7个达林顿电路的集成芯片,后者是具有

10、8个达林顿电路的集成芯片。此种芯片集电极可以收集最大达500mA的电流,耐压为 30V,能驱动常规的 LED显示器。2803 芯片的电路原理和 2003完全相同,只是在结构上 2803比 2003多一路驱动器。在本次设计中选用 ULN2003作为位驱动电路,将该芯片的输入端管脚IN0,IN1,IN2,IN3 与单片机的 P1口或者 P3口连接,该芯片的输出端管脚OUT0,OUT1,OUT2,OUT3 与 LED显示器的 4个位码管脚 D1D4 相连接。ULN2003 的作用是接受来自单片机的位码输入信号,经过反相放大后输出,送到 LED显示器的位码管脚,完成对位码信号的反相和驱动的功能。4.3

11、.4 LED 驱动电路与单片机的连接 采用单片机的 P1口作为与 LED的输出接口,用 P1口的低四位作为 LED的段码输出信号,P1 口的高四位作为 LED位码的输出控制信号。硬件电路连接如图 1所示。RP是上拉电阻,作用是保证 LED可靠导通与截止,可以选择阻值为 8100的排电阻。该电路的工作原理是:当 P1口的低四位输出短码信号的 BCD码后,通过 74LS48芯片的锁存、译码和驱动作用,输出具有一定驱动能力的 7段字形码,由于 4-LED的段码输入管脚是并联在一起的,所以每一位 LED的段码输入管脚都能获得这个段码信号。若要控制在每一时刻只有一位 LED被点亮,必须靠位码信号在每一时

12、刻只有一位是“1” ,其他位全为“0” ,然后按时间顺序改变输出“1”的位置,控制在每一时刻只有一位 LED被点亮,达到动态显示的目的。4.4 按键电路设计与器件选择电子时钟应用系统工作时应具备两项基本功能,一是随时输入定时(闹钟)时间,二是随时对当前时间进行调整。要实现这一功能,可以接入键盘输入电路。V4.4.1 键盘结构的选择 在单片机组成的测控系统及智能化仪器中,用得最多的是非编码键盘。键盘结构又可以分为独立式键盘和行列式键盘(矩阵式)两类。本例只需要 4个按键,因此选择独立式键盘。电路由按键和 4个电阻组成,按键可以采用轻触开关,按键分别命名为 SET、ALM、+1 和 RET键,电阻

13、可以采用 5脚排电阻,阻值为 41k。4.4.2 键盘与单片机的接口电路设计 将键盘直接与单片机的 P3口连接,有 P3.2、P3.3 口线通过两个按键 SET、ALM 接入两个外部中断的请求信号 INT0、INT1;P3.0、P3.1 管脚作为 I/O口使用。四个按键功能的设计思路如下:(1) SET键功能设置当前时间。(2) ALM键功能设置定时(闹钟)时间。(3) +1调整键的功能分别对时间值的小时十位、分的十位、分的个位进行+1 调整,即该键每按下一次,对应的时间调整位+1。(4) RET确认键的功能确认。键盘的硬件电路设计只是完成 4个按键信号可靠输入,要想实现键盘的输入功能,还要靠

14、软件编程来具体实现。4.5 蜂鸣器电路的设计设计要求定时(闹钟)时间到时要有声音提醒信号产生,可选择一只蜂鸣器来实现这一功能。压电式蜂鸣器(H)作为三级管 VT的集电级负载,当 VT导通时,蜂鸣器发出鸣叫声音;VT 截止时,蜂鸣器不发声。R 是限流电阻。该电路的工作原理是:当 VT2的基极为低电平时,VT2 导通,dp 段被点亮,即“:”段与 LED数码管的第二位一起被点亮;当 VT2的基极为高点平时,VT2 截止,dp段熄灭。器件选择:R4=20、R5=100 ,VT2 选择 PNP型三级管 9012。至此,我们已经完成了电子时钟的功能,还需要有相应的软件配合,才能达到设计要求。4.6 电子

15、时钟应用程序设计进行应用软件设计时可采用模块化结构设计,其优点是:每个模块的程序结构简单,任务明确,易于编写、调试和修改;程序可读性好,便于功能扩充和版本升VI级;对于使用频繁的子程序可以建立子程序库,便于多个模块调用;便于分工合作,多个程序员同时进行程序的编写和调试工作,加快软件研制进度。4.6.1 电子时钟系统软件设计方案确定根据设计要求,首先要确定软件设计方案,即确定该软件应该完成哪些功能;其次是规划这些功能需要分成多少个功能模块,划分模块时应遵循下述原则:(1) 每个模块应具有独立的功能,能产生一个明确的结果。(2) 模块之间的控制参数应尽量简单,数据参数应尽量少。(3)模块长度适中,

16、模块语句的长度通常在 20100 条的范围较合适。根据模块的划分原则,我们将该程序划分成七个模块,如图 9所。主程序模块数码管动态扫描模块当前时间计时模块输入闹钟时间模块当前时间调整模块蜂鸣器报警模块数制转换模块图 9 电子时钟软件设计的模块4.6.2 内存空间的分配一般在程序设计前应对内存进行合理的分配,这样既可以使得编程时心中有数,也可充分利用单片机内部 RAM有限的存储空间。电子时钟应用程序设计内存分配见表 14.6.3 电子时钟应用程序设计(1) 主程序的设计 主程序的内容一般包括:主程序的起始地址、中断服务程序的起始地址、有关内存单元及相关部件的初始化和一些子程序调用等。主程序设计框

17、图如图 10所示。VII本设计中,采用硬件定时和软件定时并用的方式,即用 T0溢出中断功能实现 10ms定时,通过软件延时程序实现 1ms的定时。程序清单见附录 A第 5 章 系统软件设计5.1 系统软件总体设计整个温度检测系统是在程序控制下工作的,该系统的软件全部采用汇编语言编写,以提高系统的快速性和实时性。其设计方法与硬件设计相对应,同样采用模块化的设计思想,将该部分设计划分为相应的程序模块,分别进行设计、编制和调试,最后通过主程序和中断处理程序将各程序模块连接起来。这样有利于程序修改和调试,增强了程序的可移植性。整个软件系统主要有以下几部分:主程序、数据采集、数据标度变换处理及键盘显示等

18、程序。结束语1.本设计所研制的多功能智能化温度测量仪是单片机控制的智能化仪表,它的主要特点如下:(1) 该仪表适用于-55+150温度范围的测量可以进行温度的实时显示。(2) 该仪表选用了集成温度传感器 AD590作为测温元件,该元件体积小,精度高重要的是它的价格低廉。这样该仪表的成本就低,可以大规模生产。(3) 该仪器可以进行温度的实时显示还有时间显示及报警功能并且使用方便。(4) 元器件经仔细挑选,抗干扰能力强。2.本设计存在的不足之处如下:本仪表只能进行一路测量,在需要进行多路测量时受到限制,因此应进一步完善以能进行多路测量。该仪表没有打印测量温度值可以在原有硬件电路上进行扩展,实现更多

19、的功能。3.可以从两方面考虑进行改进:1) 改变传感器。只需修改软件设计,硬件电路无需大的改动。2 采用黑体空腔理论进行测量。VIII参考文献1王迎旭 . 单片机原理与应用J.北京.机械工业出版社.20042.7 2徐科军 . 自动检测和仪表中的共性技术J.清华大学出版.2002 3张友德 . 单片微型机原理、应用与实验M.复旦大学出版社.2001 4孙涵芳,徐爱卿.单片机原理及应用M.北京航空航天大学出版社.19985 李艳萍 . 单片机及嵌入式系统应用M.高等教育出版社.2002 Education(Asia) 王晓明 .电动机6的单片机控制M.北京:北京航空航天大学出版社.2004参考程

20、序清单(1) 时钟电路主程序清单如下:ORG 0000H LJMP MAIN ;转主程序ORG 0003H ;外部中断 0 中断服务程序入口地址LJMP T0SEV ;转外部中断 0 中断服务程序ORG 000BH ;T0 定时中断服务程序入口地址LJMP INTB ;转 T0 定时中断服务程序ORG 0013H ;外部中断 1 中断服务程序入口地址LJMP INTB ; 转外部中断 1 中断服务程序 ORG 001BH ;T1 定时中断服务程序入口地址LJMP T1SEV ;转 T1 定时中断服务程序ORG 0030H ;设置主程序起始地址=0030HMAIN:MOV SP,#60H ;设置

21、堆栈指针MOV A,#00HMOV 3OH,AMOV 31H,AMOV 32H,AMOV 33H,#0CHMOV 34H,AMOC 35H,AMOV 44H,#80H ;LED 位选择码MOV 45H,#40HMOV 46H,#20HIXMOV 47H,#10HCLR RS0CLR RS1 ;选择 0 组工作寄存器MOV R2,#0MOV R3,#0 ;设置时间初值=12:00MOV R4,#0MOV R5,#12MOV TMOD,#11H ;设置 T1、T0 的工作方式:定时器。工作方式 1MOV TH1,#3CHMOV TL1,#0B0H ;T1 计数初值 =3CB0HMOV TH0,#0

22、ECH ;T0 计数初值=EC78HMOV TL0,#78HMOV IP,#08H ;设置中断优先级MOV TCON,#50H ;启动定时器 T0、T1MOV IE,#8FH ;开中断LOP: MOV B,#10 ;将二进制数转换为十进制数(BCD 码) MOV A,33H ;并送到显示缓冲区 40H43HDIV ABMOV 40H,AMOV 41H,BMOV B,#10MOV A,32HDIV ABMOV 42H,AAA: MOV 43H,BSETB RS2CLR RS0A1: MOV R2,35H ;判断是否有定时时间CJNE R2,#0,NTMOV R2,34HCJNE R2,#0,NT

23、SJMP BBXNT: MOV A,35HCJNE A,33H,BB ;判断定时时间到否 MOV A,34HCJNE A,32H,BBCLR P3.7 ;时间到,发出报警SJMP LOPBB: SETB P3.7SJMP LOP(2) T0定时器中断服务程序清单如下:TOSEV: PUSH A ;LED 定时扫描程序PUSH PSW ;保护现场SETB RS1 ;RS1、RS0=11HSETB RS0 ;选择 3 组工作寄存器CLR TR0 ;停止 T0 定时器 MOV R2,#04H ;设置显示器位数MOV R0,#40H ;设置段码首地址MOV R1,#44H ;设置位码首地址GOON:

24、MOV A, R2 ;送显示位数到 ACJNE A,31H ,NOFLASH ;判断是闪烁位否,不是则转 NO、FLASHDJNZ 30H,FLASH ;是闪烁位则转移到 FLASH。NOFLASH: MOV A, R1 ;送位码地址到 A 累加器ADD A,R0 ;将段码和位码组成 8 位二进制数MOV P1,A ;输出段码、位码数据到 P1 口LCALL DELAY1 ;调延时子程序,延时 1msFLASH: INC R0 ;段码地址+1INC R1 ;位码地址+1DJNZ R2,GOON ;判断 4 位都显示完否;没完继续显示下一位MOV TH0,#0ECHMOV TL0,#78H ;重

25、置 T0 计数初值POP A ;恢复现场SETB ET0 ;允许 T0 中断SETB TR0 ;启动 T0 开始定时XISETB EA ;开中断 RETI ;中断返回DELAY1: MOV R3,#02H ;延时 1ms 子程序AGAIN: MOV R4,#0F8HDELAY: DJNZ R3,AGAINRET注意:在 T0 中断服务程序中,有调用了延时 1ms 子程序,因此,T0 中断服务程序有是延时1ms 子程序的主程序。(3) 中断服务程序如下:T1_SEV:MOV TH1,#3CH ;重置 T1 计数初值MOV TL1,#0B0HCLR EA ;关中断PUSH A ;保护现场PUSH

26、B PUSH PSWCLR RS1CLR RS0 ;选择 0 区工作寄存器INC R2 ;中断次数加 1CJNE R2,#0AH,EN ;判断中断 10 次否,否则转 ENMOV R2,#0 ;T1 中断 10 次的累计时间为 1s,计数寄存器 R2清零INC R3 ;秒计时单元 R3+1CJNE R3,#3CH,EN ;判断 R3=60s 否,否则转 ENMOV R3,#0 ;60s 时间到。R3=0INC R4 ;分计时单元 R4+1MOV 32H,R4 ;分值送 32H 单元CJNE R4,#3CH,EN ;判断 R4=60min 否,否则转 ENMOV R4,#0 ;60min 时间到

27、,R4=0MOV 32H,R4 ;分值送 32H 单元INC R5 ;小时单元 R5+1MOV 33H,R5 ;小时值送 33HCJNE R5,#18H,EN ;判断 R5=24h 否,否则转 EN 标号地址XIIMOV R5,#0 ;24h 时间到。R5=0MOV 33H,R5 ;小时值送 33H 单元EN: POP PSW ;恢复现场POP BPOP ASETB EA ;开中断RET1 ;中断返回(4)键盘接收子程序1)设置当前时间程序如下:INTA: SETB P3.0 ;输入键值前,先将 P3.0、P3.1 置 1SETB P3.0CLR TR1 ;T1 停止定时CLR ET1 ;T1

28、 禁止中断CLR EX0 ;INT0 禁止中断CLR EX1 ;INT1 禁止中断SETB EA ;开中断SETB ET0 ;允许 T0 中断SETB PT0PUSH A ;保护现场PUSH BPUSH PSWMOV 31H,#04H ;(31H)=04H(LED 的位数)MOV 29H,#00H ;(29H)=00HLP0: JB P3.0,NEXT0 ;判断 P3.0 键(+1 键)按下否,否则转 NEXT0LCALL DELAY1 ;有键按下,延迟 1msJB P3.0,LP0 ;判断是否松开,否则转 LP0LP1: JNB P3.0,LP1 ;等待键松开INC 29H ;键松开后, (

29、29H)+1MOV 30H,#1HSJMP LO1 ;转 LO1 标号地址NEXT0: JB P3.1,L1 ;判断 P3.1 是否按下,否则转 L1XIIILCALL DELAY1 ;有键按下,延迟 1msJB P3.1,NEXT0 ;是否松开,否则转 NEXT0LD1: JNB P3.1,LD1 ;是否松开,否则转 LD1MOV 29H,#0MOV 30H,#1DJNZ 31H,LO1SJMP LLLO1: MOV A,31HCJNE A,#04H,LO2 ;是时针的十位吗否则转 LO2MOV A,29HCJNE A,#03H,LA1 ;十位大于 3 吗?否则转 LA1 MOV 29H,

30、#00H ;是的,清 0LA1: MOV 40H,29H ;(29H )(40H)SJMP L1 ;转 L1LO2: MOV A,31HCJNE A,#03H,LO3 ;是时针的个位吗?否则转 LO3MOV A,40HCJNE A,#4,LA2MOV 29H, #0SJMP LA2A1: MOV A,29HCJNE A,#0AH ,LA2 ;判断是否大于 9,否则转 LA2MOV 29H, #00H ;(29H)清零LA2: MOV 41H,29H ;(29H )(41H)SJMP L1 ;转到 L1LO3: MOV A,31HCJNE A,#02H,LO4 ;是分针的十位吗?否则转 LA3M

31、OV A,29HCJNE A,#06H,LA3 ;大于 6 吗?否则转 LA4MOV 29H, #00H ;(29H)清零LA3: MOV 42H,29H ;(29H)(42H)SJMP L1 ;转 L1XIVLO4: MOV A,29H CJNE A,#0AH ,LA4 ;分针个位大于 9 吗?否则转 LA4MOV 29H, #00H ;(29H)LA4: MOV 43H,29H ;(29H)(43H)L1: MOV A,31HCJNE A,#00H,LP0 ;31H=0 则返回,否则转 LP0LL: MOV A,40H ;将输入的当前时间值 BCD 码转换为二进制数MOV B,#10MUL

32、 ABADD A,41HMOV 33H, AMOV A,42HMOV B,#10MUL ABADD A,43HMOV 32H, APUSH PSWCLR RS0CLR RS1MOV R4,32H ;将当前时间置入 R4、R5 寄存器MOV R5,33HPOP PSW ;恢复现场POP PSW POP BPOP AMOV TH1,#3CH ;重置 T1 计数初值MOV TL1,#0B0HSETB TR1 ;启动 T1 定时器SETB ET1 ;开中断SETB PT1SETB EX0SETB EX1XVCLR TR0MOV TH0,#0FFHMOV TL0,#00HSETB TR0SETB XT0

33、RETI ;中断返回2)设置定时(闹钟)时间程序清单如下:INTB: SETB P3.0 ;输入键值前,先将 P3.0、P3.1 置 1SETB P3.1CLR EX0 ;关 INT0、INT1 中断CLR EX1SETB EASETB ET0SETB ET1SETB PT0PUSH A ;保护现场PUSH BPUSH PSWMOV 31H, #04H ;(31H)=04H MOV 29H, #00H ;(29H)=00HLPOB: JB P3.0,NEXTB ;判断 P3.0 键,无键按下则转 NEXTBLCALL DELAY1 ;有键按下,延迟 1msJB P3.0,LP0 ;判断是否松开

34、,否则转 LP0LP1B: JNB P3.0,LP1B ;判断是否松开,否则再判断INC 29H ;P3.0 松开后, (29H )+1MOV 30H, #1HSJMP LO1BNEXTB: JB P3.1,L1B ;判断 P3.1 是否按下,否则转 NEXT0LCALL DELAY1 ;有键按下,延迟 1msJB P3.1,NEXTB ;是否松开?否则转 LP0LD1B: JNB P3.1,LD1BMOV 29H, #0 ;是否松开?否则转 LD1,再判断XVIMOV 30H, #1DJNZ 31H,LO1B ;是, (31)1SJMP LLBLO1B: MOV A,31HCJNE A,#0

35、4H,LO2B ;是时针的十位吗?否则转 LO2MOV A,29HCJNE A,#03H,LA1B ;十位大于 3 吗?否则转 LA1MOV 29H, #00H ;是的,清 0LA1B: MOV 40H, 29H ;(29H)(40H)SJMP L1B ;转 L1LO2B: MOV A,31HCJNE A,#03H,LO3B ;是时针的个位吗?否则转 LO3MOV A,40HCJNE A,#2,A1BMOV A,29HCJNE A,#4,LA2BMOV 29H, #0SJMP LA2BA1B: MOV A,29HCJNE A,#0AH ,LA2B ;是否大于 9?否则转 LA2MOV 29H,

36、 #00H ;(29H)清零LA2B: MOV 41H,29H ;(29H)(41H)SJMP L1B ;转到 L1LO3B: MOV A,31HCJNE A,#02H,LO4B ;是分针的十位吗?否则转 LO4MOV A, 29HCJNE A,#06H ,LA3B ;大于 6 吗?否则转 LA3MOV 29H,#00H ;(29H)清零 LA3B: MOV 42H, 29H ;(29H)(42H)SJMP L1B ;转 L1LO4B: MOV A, 29HCJNE A,#0AH,LA4B ;分针个位大于 9 吗?否则转 LA4XVIIMOV 29H,#00H ;(29)清零LA4B: MOV

37、 43H,29H ;(29H)(43H)L1B: MOV A,31HCJNE A,#00H,LP0B ;31H=0 返回否则转 LP0LLB: MOV A,40H ;将输入的闹钟时间值 BCD 码转换为二进制数MOV B,#10MUL ABADD A,41HMOV 35H,AMOV A,42HMOV B,#10MUL ABADD A,43HMOV 34H,APOP PSW ;恢复现场POP BPOP ACLR TR0MOV TH0,#0FFHMOV TL0,#00HSETB TR0SETB EX1SETB EX0SETB ET0 SETB EA ;开中断RETI ;中断返回END(5) 温度显

38、示程序清单如下:ORG 00HANL P1,#0F0H ;清除显示器START: MOVX R0,A ;令 ADC0804 开始转换XVIIIWAIT: JB P2.0,ADC ;检测 ADC0804 转换完成否?CALL DISP ;调用显示子程序JMP WALTADC: MOVX A,R0 ;将转换好的数据送入累加器CALL L1 ;调用十进制转换子程序MOV R1,#0FFH ;显示延时DISP1: CALL DISP ;调用显示子程序DJNZ R1,DISP1JMP STARTL1: CLR C ;C=0MOV R5,#00H ;十进制转换的低位寄存器MOV R4,#00H ;十进制转

39、换的高位寄存器MOV R3,#08H ;作为十进制调整,调整的次数NEXT: RLC A ;将取入值转换十进制MOV R2,A ;暂存于 R2MOV A,R5 ;R5 乘 2 加 CADDC A,R5DA A ;做十进制调整MOV R5,A ;结果存回 R5MOV A,R4 ;R4 乘 2 加 CADDC A,R4MOV R4,A ;做十进制调整MOV A,R2 ;结果存回 R4DJNZ R3,NEXT ;做十进制调整结束否?MOV R7,#02 ;称 2 两次,即乘 4L2: MOV A,R5 ADD A,R5 ;R5 乘 2DA A ;做十进制调整MOV R5,A ;存入 R5MOV A,

40、R4 ADDC A,R4 ;R4 乘 2DA A ;做十进制调整XIXMOV R4,A ;存回 R4DJNZ R7,L2 ;乘 4 完成否?RETDISP: MOV A,R5ANL A,#0FH ;取低 4 位,即 D1 的值ORL A,#10H ;令 D1 使能+D1 值MOV P1,A ;显示 D1CALL DELAYMOV A,R5CALL DELAYMOV A,R5ANL A,#0F0H ;取高 4 位,即 D2 的值SWAP A ;高低 4 位交换ORL A,#20H ;令 D2 使能+D2 值MOV P1,A ;显示 D2CALL DELAYMOV A,R4ANL A,#0FH ;

41、取低 4 位,即 D3 的值ORL A,#40H ;令 D3 使能+D3 值MOV P1,A ;显示 D3CALL DELAYMOV A,R4ANL A,#0F0H ;取高 4 位,即 D4 的值SWAP A ;高低 4 位交换ORL A,#80H ;令 D4 使能+D4 值MOV P1,A ;显示 D4CALL DELAYCLR ARETDELAY: MOV R6,#10 ;5 毫秒D1: MOV R7,#248DJNZ R7,$XXDJNZ R6,D1RET END附录 2 XXISER10 P011P112 P213P314 P43P54 P65P76CLK12 CLK215PL1Q7

42、9Q7 774ALS16512345678J2 U?BELLC222pFC?CAPC122pF Y112MDPY1234567abcd89e10c bade dp11 dp12LD2DPYDPY1234567abcd89e10c bade dp11 dp12LD1DPYQ?NPNR?RES2 R31k R210kR?RES2R?RES2R?RES2R?RES2D?PHOTOS?SW-PBS1S2S3S4S5Vbat 1X1 2X2 3CS5 SDA6SCL7DS1302 CRY232768DIG0DIG2DIG3DIG4DIG5DIG6DIG7DINCLKDOUTCSGNDVDDISETSEG DPSEGgSEGfSEGeSEGdSEGcSEGbSEGaDIG1GND0123456789101114161718

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报