1、数字式温度计设计说明书学习情境三数字式温度计制作与调试说明书电子1034班组别:07组员:高腾 郑东发 2012年3月8日 目 录1、设计课题(3)二、设计要求(3) 2.1基本技术要求(3) 2.2工作形式(3)三、总体设计思路(3) 3.1功能性能要求(3) 3.2总体框图(4)四、设计实现(4) 4.1硬件模块(4) 1)模块说明(5) 2)原理图(6) 3)PCB图(6)4.2软件模块(6) 1)流程图及各个模块说明(9) 2)程序清单(14)五、调试过程(14) 5.1试验时间及方法(14) 5.2需要设备(15) 5.3调试记录(15) 5.4存在的不足(15)6、实训小结 (15
2、) 一、设计课题 利用相关软硬件实现可直接观测的数字式温度计二、设计要求1. 基本技术要求开发完成一个简易的数字式温度计。1) 要求以51单片机为主控制器,以数字式温度传感器DS18B20为传感元件,以LED数码管作为显示器件实时显示测量温度(十进制数)。数字式温度计测温范围在55125,误差在0.5以内。温度测量间隔时间选择12s。2) 要求完成硬件的设计与制作、软件的设计与制作、系统联调;完成开发过程中涉及的所有技术文档;最后进行成果演示(要求用PPT)。3) 通过键盘扩展(行列式或独立式按键),实现温度上下限值的设定及温度报警功能。4) 对温度采样值实现数字滤波(可自行选择算法)。5)
3、通过硬件或软件方法实现时间显示。6) 用PPT演示设计成果,包括设计思路、设计实现、调试结果及存在不足等,时间为20分钟,以小组为单位。2. 工作形式 以工作小组的形式完成本次设计。工作小组由2人构成。 三、总体设计思路1. 功能性能要求: 数字式温度计测温范围在55125,误差在0.5以内。温度测量间隔时间选择12s, 通过键盘扩展(行列式或独立式按键),有温度上下限值及温度报警功能。2. 总体框图:4、设计实现(1)硬件模块 1.模块说明: 按照任务书上的要求确定系统主要有三个模块组成:主控制器,显示模块,测温模块 1)主控制器: 单片机AT89C51具有低电压和小体积等特点,两个端口刚好
4、满足系统的设计需要很适合便携手持式产品的设计使用。 2)显示模块: 采用共阳四位LED数码管,用三极管做驱动 3)测温模块: DS18B20温度传感器是智能温度传感器,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现912位的数字值读数方式。2.原理图3.PCB图 (2)软件模块1.流程图及各个模块说明1)软件流程图 2)2)各模块流程图3)读出温度子程序流程图4)显示数据刷新子程序流程图5)计算温度子程序流程6)温度转换命令子程序流程图 2、程序清单;*; 常数定义;* TIMEL EQU 0E0H ;20MS,定时器 0 时间常数 TIMEH EQU 0B1H ; TEMPHEA
5、D EQU 36H ;*; 工作内存定义;* BITST DATA 20H TIME1SOK BIT BITST.1 TEMPONEOK BIT BITST.2 TEMPL DATA 26H TEMPH DATA 27H TEMPHC DATA 28H TEMPLC DATA 29H;*; 引脚定义;*; TEMPDIN BIT P3.7 ;*;*;子程序区;*; RESET DS18B20;*INITDS1820: SETB TEMPDIN ; NOP ; NOP ; CLR TEMPDIN ; MOV R6, #0A0H ; DELAY 480us DJNZ R6, $ MOV R6, #
6、0A0H DJNZ R6, $ ; SETB TEMPDIN ; MOV R6, #32H ; DELAY 70us DJNZ R6, $ ; MOV R6,#3CHLOOP1820: MOV C, TEMPDIN ; JC INITDS1820OUT ; DJNZ R6,LOOP1820 MOV R6, #064H ; DELAY 200us DJNZ R6, $ ; SJMP INITDS1820 ; RET ;INITDS1820OUT: SETB TEMPDIN ; RET ;*; 读DS18B20的程序, 从DS18B20中读出一个字节的数据;*READDS1820: MOV R7,
7、 #08H ; SETB TEMPDIN ; NOP ; NOP ;READDS1820LOOP: CLR TEMPDIN ; NOP ; NOP ; NOP ; SETB TEMPDIN ; MOV R6, #07H ; DELAY 15us DJNZ R6, $ ; MOV C, TEMPDIN ; MOV R6, #3CH ; DELAY 120us DJNZ R6, $ ; RRC A ; SETB TEMPDIN ; DJNZ R7, READDS1820LOOP ; MOV R6, #3CH ; DELAY 120us DJNZ R6, $ ; RET ;*; 写DS18B20的程
8、序, 从DS18B20中写一个字节的数据;*WRITEDS1820: MOV R7, #08H ; SETB TEMPDIN ; NOP ; NOP ;WRITEDS1820LOP: CLR TEMPDIN ; MOV R6, #07H ; DELAY 15us DJNZ R6, $ ; RRC A ; MOV TEMPDIN, C ; MOV R6, #34H ; DELAY 104us DJNZ R6, $ ; SETB TEMPDIN ; DJNZ R7, WRITEDS1820LOP ; RET ;*; READ TEMP;*READTEMP: LCALL INITDS1820 ; M
9、OV A, #0CCH ; LCALL WRITEDS1820 ; SKIP ROM MOV R6, #34H ; DELAY 104us DJNZ R6, $ ; MOV A, #44H ; LCALL WRITEDS1820 ; START CONVERSION MOV R6, #34H ; DELAY 104us DJNZ R6, $ ; RET ;READTEMP1: LCALL INITDS1820 ; MOV A, #0CCH ; LCALL WRITEDS1820 ; SKIP ROM MOV R6, #34H ; DELAY 104us DJNZ R6, $ ; MOV A,
10、#0BEH ; LCALL WRITEDS1820 ; SCRATCHPAD MOV R6, #34H ; DELAY 104us DJNZ R6, $ ; MOV R5, #09H ; MOV R0, #TEMPHEAD ; MOV B,#00HREADTEMP2: LCALL READDS1820 ; MOV R0, A ; INC R0 ;READTEMP21: LCALL CRC8CAL ; DJNZ R5, READTEMP2 ; MOV A, B ; JNZ READTEMPOUT ; MOV A, TEMPHEAD + 0 ; MOV TEMPL, A ; MOV A, TEMP
11、HEAD + 1 ; MOV TEMPH, A ;READTEMPOUT: RET ;*; 处理温度 BCD 码子程序;*CONVTEMP: MOV A, TEMPH ; ANL A, #80H ; JZ TEMPC1 ; CLR C ; MOV A, TEMPL ; CPL A ; ADD A, #01H ; MOV TEMPL, A ; MOV A, TEMPH ; - CPL A ; ADDC A, #00H ; MOV TEMPH, A ; TEMPHC HI = 符号位 MOV TEMPHC, #0BH ; SJMP TEMPC11 ;TEMPC1: MOV TEMPHC, #0AH
12、 ; +TEMPC11: MOV A,TEMPHC SWAP A MOV TEMPHC,A MOV A, TEMPL ; ANL A, #0FH ; 乘 0.0625 MOV DPTR, #TEMPDOTTAB ; MOVC A, A + DPTR ; MOV TEMPLC, A ; TEMPLC LOW = 小数部分 BCD; MOV A, TEMPL ; 整数部分 ANL A, #0F0H ; SWAP A ; MOV TEMPL, A ; MOV A, TEMPH ; ANL A, #0FH ; SWAP A ; ORL A, TEMPL ; LCALL HEX2BCD1 ; MOV T
13、EMPL, A ; ANL A, #0F0H ; SWAP A ; ORL A, TEMPHC ; TEMPHC LOW = 十位数 BCD MOV TEMPHC, A ; MOV A, TEMPL ; ANL A, #0FH ; SWAP A ; TEMPLC HI = 个位数 BCD ORL A, TEMPLC ; MOV TEMPLC, A ; MOV A, R7 ; JZ TEMPC12 ; ANL A, #0FH ; SWAP A ; MOV R7, A ; MOV A, TEMPHC ; TEMPHC HI = 百位数 BCD ANL A, #0FH ; ORL A, R7 ; M
14、OV TEMPHC, A ;TEMPC12: RET ;*; 小数部分码表;*TEMPDOTTAB: DB 00H, 01H, 01H, 02H, 03H, 03H, 04H, 04H, 05H, 06H DB 06H, 07H, 08H, 08H, 09H, 09H;*; 单字节 16 进制转 BCD;*HEX2BCD1: MOV B, #064H ; 16 进制 - BCD DIV AB ; B = A % 100 MOV R7, A ; R7 = 百位数 MOV A, #0AH ; XCH A, B ; DIV AB ; B = A % B SWAP A ; ORL A, B ; RET
15、 ;*; Calculate CRC-8 Values. Uses The CCITT-8 Polynomial, Expressed As; X8 + X5 + X4 + 1;*CRC8CAL: PUSH ACC ; MOV R7, #08H ; Number Bits In ByteCRC8LOOP1: XRL A, B ; Calculate CRC RRC A ; Move To Carry MOV A, B ; Get The Last CRC Value JNC CRC8LOOP2 ; Skip If Data = 0 XRL A, #18H ; Update The CRC Va
16、lueCRC8LOOP2: RRC A ; Position The New CRC MOV B, A ; Store The New CRC POP ACC ; Get The Remaining Bits RR A ; Position The Next Bit PUSH ACC ; Save The Remaining Bits DJNZ R7, CRC8LOOP1 ; Repeat For 8 Bits POP ACC ; RET 五、调试过程 1、试验时间及方法 试验时间:2.26-3.8 方法:先万用表检查硬件连接是否正常,正负极电源是否短路,硬件没问题后。再在程序中测试软件,没问
17、题后再把硬件和软件连接起来一起调试,先测试显示部分,没问题后再全部调试,直至没问题为止。 2、需要设备 万用表,仿真器 3、调试记录 3.5号检查硬件电路,发现短路,最后将可疑部位重新点焊后排除故障。 3.7号联调,程序与硬件不融合,显示有问题,经过一系列改动后显示正常。 4、存在的不足 硬件:由于硬件电路焊接上的不完美,显示时存在一定的误差,且因为修改的问题导致电路板不太干净。 软件: 设计时考虑不够周到。六、实训小结 为期四周的实训眨眼就结束了,在这说长不长,说短也不短的日子里,我曾因为玩手机和电脑被老师批评过,也曾和同学努力攻关技术难关并为所获得的成果而兴奋不已,在这段时间里我和组员郑东发学会了如何相互配合,相对合理的利用自己以及对方的时间来达成实训要求,一句话,没有付出就没有收获,除了实训时所学到的技术,这也会对我们产生弥足深远的影响。
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2