《单片机多点温度测量.doc》由会员分享,可在线阅读,更多相关《单片机多点温度测量.doc(21页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、河北建筑工程学院单片机课程设计报告题目名称: 多路数字温度测量系统设计 系: 电气工程系 专 业: 电气工程及其自动化 班 级: 电控072 学 号: 学生姓名: 朱立娜 指导教师: 龚志广 职 称: 讲师 2011年 1 月 6 日目录 一、摘要.3二、总体方案设计 3 三、系统硬件设计.4四、系统软件设计7五、结论 20六、参考文献20题目:多路数字温度测量系统设计(一)摘要本课题AT89C51单片机系统为核心,能对多点的温度进行实时巡检。DS18B20是一种可组网的高精度数字式温度传感器,由于其具有单总线的独特优点,可以使用户轻松地组建起传感器网络,并可使多点温度测量电路变得简单、可靠。
2、本文结合实际使用经验,介绍了DS18B20数字温度传感器在单片机下的硬件连接及软件编程,并给出了软件流程图。(二)总体方案设计(1)方案的阐述与特点:本设计方案以DS18B20为传感器、AT89C51单片机为控制核心组成多点温度测试系统,该系统包括传感器电路、键盘与显示电路、串口通信电路组成。采用美国Dallas半导体公司推出的数字温度传感器DS18B20,属于新一代适配微处理器的智能温度传感器。它具有独特的单总线接口,仅需要占用一个通用I/O端口即可完成与微处理器的通信。全部传感元件及转换电路集成在形如一只三极管的集成电路内。1、本方案系统框图为:本设计运用主从分布式思想,由一位上位机(pc
3、微型计算机),下位机(单片机)多点温度数据采集,组成两级分布式多点温度测量的巡回检测系统。该系统采用RS-232串行通讯标准,通过上位机(PC)控制下位机(单片机)进行现场温度采集。温度值既可以送回主控PC进行数据处理,由显示器显示。也可以由下位机单独工作,实时显示当前各点的温度值,对各点进行控制。下位机采用的是单片机基于数字温度传感器DS18B20的系统。DS18B20利用单总线的特点可以方便的实现多点温度的测量,轻松地组建传感器网络,系统的抗干扰性好、设计灵活、方便,而且适合于在恶劣的环境下进行现场温度测量。2、它有如下特点:(1)独特的单线接口,既可通过串行口线,也可通过其它I/O口线与
4、微机接口,无需变换其他电路,直接输出被测温度值;(2)多点能力使分布式温度检测应用得以简化;(3)不需要外部元件;(4)既可用数据线供电,也可采用外部电源供电;(5)不需备份电源;(6)测量范围为-55125,固有测温分辨率为0.5;(7)通过编程可实现912位的数字读数方式;(8)用户可定义非易失性的温度告警设置;(9)警告搜索命令能识别和寻址温度在编定的极限之外的器件(温度警告情况);(10)应用范围包括恒温控制、工业系统、消费类产品、温度计或任何热敏系统。以上特性使得DS18B20非常适用于构建高精度、多点温度测量系统。根据DS18B20以上特点,此方案实现本课题较好。(三)硬件设计本课
5、题的整个系统是由单片机、显示电路、键盘电路、驱动电路、串口通信等构成。1、温度传感器DS18B20的连线图:2、单片机系统设计本课题运用Intel公司的8051进行系统控制,运用到了复位电路、时钟电路、串口、I/O口。1)常用的上电复位且开关复位电路如下2)时钟电路如下图左侧部分:89c51单片机串口主要有两个数据缓冲寄存器SBUF和一个输入移位寄存器组成,其内部还有一个串行控制寄存器SCON和一个波特率发生器。接收缓冲器与发送缓冲器占用同一个地址99H,其名称亦同样为SBUF。3)单片机连线图4)显示电路设计本课题用四个LED数码管,具体连接如下图(图中为六个LED,连线时只用四个):5)键
6、盘电路设计其原理图如下:本课题使用行列扫描方式,在单片机的P1口上连接上4*4的键盘,单片机扫描键盘,如果有键按下,单片机会根据键码执行相应的程序,使整个系统的功能更加完善。6)报警电路设计为了实现多点温度检测报警系统,本课题采用AT89C51单片机作为主控制器,采用扫描的方式对多点DS18B20温度传感器获取对应该位置的温度值,经处理后通过串口可以立即发送到上位机,如温度不在设定的范围内,给出报警信号。系统总体硬件电路图如下所示:7)通信模块设计PC机与单片机的串行通信接口电路如图所示(四)软件设计1、软件实现系统软件设计主要包括系统程序和流程图,根据整个系统的要求,完成温度的测量与控制必须
7、经过以下几个步骤:单片机接受传感器的温度信号,并通过MAX7219驱动显示出来,单片机扫描键盘,接受控制信号,并将温度显示出来,若温度不在范围内则发出报警。1)系统主程序流程图温度测量程序流图2)键盘程序设计根据本课题的系统要求,采用4*4的键盘电路结构,P1.0- P1.3接四条行线,P1.4-P1.7接四条列线,整个系统的功能可以利用16个按键将系统完善化、系统化,对于键盘各键的功能如下图所示:系统程序;*;常数定义;*TMEL EQU 0E0H ;20ms,定时器0时间常数TMEH EQU 0B1HTMEPHEAD EQU 36H;*;工作内存定义;*BITST DATA 20HTIME
8、ISOK BIT BITST.1TEMPONEOK BIT BITST.2TEMPL DATA 26HTEMPH DATA 27HTEMPHC DATA 28HTEMPLC DATA 29H;*; 引脚定义;* TEMPDIN BIT P3.7;*; 中断向量区;*ORG 000HLJMP START ORG 00BH LJMP T0IT;*;系统初始化;* ORG 100HSTART: MOV SP,#60HCLSMEM: MOV R0,#20H MOV R1,#60HCLSMEM1: MOV R0,#00H INC R0 DJNZ R1,CLSMEM1 MOV TMOD,#B MOV TH
9、0,#TIMEL MOV TL0,#TIMEH SJMP INITERROR: NOP LJMP START NOPINIT: NOP SETB ET0 SETB TR0 SETB EA MOV PSW,#00H CLR TEMPONEOK LJMP MAIN;*; 定时器0中断服务程序;*T0IT: PUSH PSW MOV PSW,#10H MOV TH0,#TIMEH MOV TL0,#TIMEL INC R7 CJNE R7,#32H,T0ITI MOV R7,#00H SETB TIMEISOKTOIT1: POP PSW RETI;*; 主程序;*MAIN: LCALL DISP1
10、 JNB TIME1SOK,MAIN CLR TIME1SOKJNB TEMPONEOK,MAIN2LCALL READTEMP1LCALL CONVTEMPLCALL DISPBCDLCALL DISP1 MAIN2: LCALL READTEMPSETB TEMPONEOKLJMP MAIN;*;*;子程序区;*; RESET DS18B20;*INITDS1820: SETB TEMPDINNOP NOPCLR TEMPDINMOV R6,#0A0HDJNZ R6,$MOV R6,#0A0H DJNZ R6,$ SETB TEMPDIN MOV R6,#32H DJNZ R6,$ MOV
11、 R6,#3CHLOOP1820: MOV C,TEMPDINJC INITDS1820OUTDJNZ R6,LOOP1820MOV R6,#064HDJNZ R6,$SJMP INITDS1820RET;INITDS1820OUT: SETB TEMPDINRET; *; 读DS18B20的程序,从DS18B20中读出一个字节的数据; *READDS1820: MOV R7,#08HSETB TEMPDINNOPNOPREADDS1820LOOP: CLR TEMPDINNOPNOPNOPSETB TEMPDINMOV R6,#07HDJNZ R6,$MOV C,TEMPDINMOV R6,
12、#3CHDJNZ R6,$RRC ASETB TEMPDINDJNZ R7,READDS1820LOOPMOV R6,#3CHDJNZ R6,$RET; *; 写DS18B20的程序,从DS18B20中写一个字节的数据; *WRITEDS1820: MOV R7,#08HSETB TEMPDINNOPNOPWRITEDS1820LOP: CLR TEMPDINMOV R6,#07HDJNZ R6,$RRC AMOV TEMPDIN,CMOV R6,#34HDJNZ R6,$SETB TENPDINDJNZ R7,WRITEDS1820LOPRET; *; READ TEMP; *READTEM
13、P: LCALL INITEDS1820MOV A,#0CCHLCALL WRITEDS1820MOV R6,#34HDJNZ R6,$MOV A,#44HLCALL WRITEDS1820MOV R6,#34HDJNZ R6,$RETREADTEMP1: LCALL INITDS1820MOV A,#0CCHLCALL WRITEDS1820MOV R6,#34HDJNZ R6,$MOV A,#0BEHLCALL WRITEDS1820MOV R6,#34HDJNZ R6,$MOV R5,#09HMOV R0,#TEMPHEADMOV B,#00HREADTEMP2: LCALL READD
14、S1820MOV R0,AINC R0READTEMP21: LCALL CRC8CALDJNZ R5,READTEMP2MOV A,BJNZ READTEMPOUTMOV A,TEMPHEAD+0MOV TEMPL,AMOV A,TEMPHEAD+1MOV TEMPH,AREADTEMPOUT: RET; *; 处理温度BCD码子程序; *CONVTEAMP: MOV A,TEMPHANL A,#80HJZ TEMPC1CLR CMOV A,TEMPLCPL AADD A,#01HMOV TEMPL,AMOV A,TEMPHCPL AADDC A,#00HMOV TEMPH,AMOV TEM
15、PHC,#0BHSJMP TEMPCHTEMPC1: MOV TEMPHC,#0AHTEMPC11: MOV A,TEMPHCSWAP AMOV TEMPHC,AMOV A,TEMPLANL A,#0FHMOV DPTR,#TEMPDOTTABMOVC A,A+DPTRMOV TEMPLC,AMOV A,TEMPLANL A,#0F0HSWAP AMOV TEMPL,AMOV A,TEMPHANL A,#0FHSWAP AORL A,TEMPLLCALL HEX2BCD1MOV TEMPL,AANL A,#0F0HSWAP AORL A,TEMPHCMOV TEMPHC,AMOV A,TEMP
16、LANL A,#0FHSWAP AORL A,TEMPLCMOV TEMPLC,AMOV A,R7JZ TEMPC12ANL A,#0FHSWAP AMOV R7,AMOV A,TEMPHCANL A,#0FHORL A,R7MOV TEMPHC,ATEMPC12: RET; *; 小数部分码表; *TEMPDOTTAB: DB 00H, 01H, 01H, 02H, 03H, 03H, 04H,04H,05H,06HDB 06H,07H,08H,09H,09H; *; 显示区BCD码温度值刷新子程序; *DISPBCD: MOV A,TEMPLCANL A,#0FHMOV 70H,AMOV
17、A,TEMPLCSWAP AANL A,#0FHMOV 71H,AMOV A,TEMPHCANL A,#0FHMOV 72H,AMOV A,TEMPHCSWAP AANL A,#0FHMOV 73H,AMOV A,TEMPHCANL A,#0F0HCJNZ A,#010H,DISPBCD0SJMP DISPBCD2DISPBCD0: MOV A,TEMPHC ANL A,#0FH JNZ DISPBCD2 MOV A,TEMPHC SWAP AANL A,#0FHMOV 73H,#0AHMOV 72H,ADISPBCD2: RET; *; 显示子程序; *; 显示数据在70H73H单元内,用4
18、位LED共阳数码管显示,P1口输出段码数据,;P3口作扫描控制,每个LED数码管亮1ms时间再逐位循环。DISP1: MOV R1,#70H MOV R5,#0FEHPLAY: MOV P1,#0FFH MOV A,R5 MOV P3,A MOV A,R1 MOV DPTR,#TAB MOVC A,A+DPTR MOV P1,A MOV A,R5 JB ACC.1,LOOP5 CLR P1.7LOOP5: LCALL DLIMS INC R1 MOV A,R5 JNB ACC.3,ENDOUT RL A MOV R5,A AJMP PLAYENDOUT: MOV P1,#0FEH MOV P3
19、,#0FEHRETTAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,0BFH;共阳段码表 “0” “1” “2” “3” “4” “5” “6” “7” “8” “9” “不亮” “” DL1MS: MOV R6,#14HDL1: MOV R7,#19HDL2: DJNZ R7,DL2 DJNZ R6,DL1 RET; *; 单字节十六进制转BCD; *HEX2BCD1: MOV B,#064H DIV AB MOV R7,A MOV A,#0AH XCH A,B DIV AB SWAP A ORL A,B RET; *; Ca
20、lculate CRC8 Values. Uses The CCITT8 Polynomial,Expressed As; X8+X5+X4+1; *CRC8CAL: PUSH ACCMOV R7,#08HCRC8LOOP1: XRL A,BRRC AMOV A,BJNC CRC8LOOP2XRL A,#18HCRC8LOOP2: RRC AMOV B,APOP ACCRR APUSH ACCDJNZ R7,CRC8LOOP1POP ACCRETEND (五)结论1、课题总结本课题主要是实现对温度进行多点同时测量并准确显示。整个系统由单片机控制,要能够接受传感器的数据并显示出来,可以从键盘输入
21、命令,系统根据命令选择对应的传感器,并由驱动电路驱动温度显示,对异常情况进行报警。2、心得通过这次课程的设计,将课本的知识实际应用,摆脱考试的局限,锻炼自己的解决问题的能力,独立思考能力。本课题使我熟悉了单片机设计原则,对51系列单片机内部构造、与其它芯片的接口技术及其工作情况有了更进一步了解,虽然是很简单的运用,但比为了考试而瞬时记忆的知识牢固多了,工作需要独立解决问题的的能力,还是希望多一些这样的机会。(六)参考文献1周慈航著单片机程序设计基础M北京:北京航空航天大学出版社,20032方佩敏编著智能化集成温度传感器原理与应用M北京:电子工业出版社,20023张毅刚主编单片机原理及应用M北京:高等教育出版社,20084李道玲,李玲,朱艳编著传感器电路分析与设计M武汉:武汉大学出版社,20035刘笃人,韩保军编著。传感器及应用技术M西安:西安电子科技大学出版社,20036陈小忠等,单片机接口技术实用子程序北京:人民邮电出版社,20057李群芳编著 ,单片机原理、接口及应用嵌入式系统计数基础北京:清华大学出版社 数字温度及设计电路原理图
限制150内