收藏 分销(赏)

单片机多点温度测量.doc

上传人:二*** 文档编号:4513409 上传时间:2024-09-26 格式:DOC 页数:23 大小:297KB
下载 相关 举报
单片机多点温度测量.doc_第1页
第1页 / 共23页
本文档共23页,全文阅读请下载到手机保存,查看更方便
资源描述
- - 建筑工程学院 单片机课程设计报告 题目名称: 多路数字温度测量系统设计 系: 电气工程系 专 业: 电气工程及其自动化 班 级: 电控072 学 号: 2007308203 学生: 朱立娜 指导教师: 龚志广 职 称: 讲师 2011年 1 月 6 日 目录 一、摘要……………………………….3 二、总体方案设计……………………3 三、系统硬件设计…………………….4 四、系统软件设计……………………7 五、结论………………………………20 六、参考文献…………………………20 题目:多路数字温度测量系统设计 〔一〕摘要 本课题AT89C51单片机系统为核心,能对多点的温度进展实时巡检。DS18B20是一种可组网的高精度数字式温度传感器,由于其具有单总线的独特优点,可以使用户轻松地组建起传感器网络,并可使多点温度测量电路变得简单、可靠。本文结合实际使用经历,介绍了DS18B20数字温度传感器在单片机下的硬件连接及软件编程,并给出了软件流程图。 〔二〕总体方案设计 〔1〕方案的阐述与特点: 本设计方案以DS18B20为传感器、AT89C51单片机为控制核心组成多点温度测试系统,该系统包括传感器电路、键盘与显示电路、串口通信电路组成。采用美国Dallas半导体公司推出的数字温度传感器DS18B20,属于新一代适配微处理器的智能温度传感器。它具有独特的单总线接口,仅需要占用一个通用I/O端口即可完成与微处理器的通信。全部传感元件及转换电路集成在形如一只三极管的集成电路。 1、本方案系统框图为: 本设计运用主从分布式思想,由一位上位机〔pc微型计算机〕,下位机〔单片机〕多点温度数据采集,组成两级分布式多点温度测量的巡回检测系统。该系统采用RS-232串行通讯标准,通过上位机〔PC〕控制下位机〔单片机〕进展现场温度采集。温度值既可以送回主控PC进展数据处理,由显示器显示。也可以由下位机单独工作,实时显示当前各点的温度值,对各点进展控制。 下位机采用的是单片机基于数字温度传感器DS18B20的系统。DS18B20利用单总线的特点可以方便的实现多点温度的测量,轻松地组建传感器网络,系统的抗干扰性好、设计灵活、方便,而且适合于在恶劣的环境下进展现场温度测量。 2、它有如下特点: 〔1〕独特的单线接口,既可通过串行口线,也可通过其它I/O口线与微机接口,无需变换其他电路,直接输出被测温度值; 〔2〕多点能力使分布式温度检测应用得以简化; 〔3〕不需要外部元件; 〔4〕既可用数据线供电,也可采用外部电源供电; 〔5〕不需备份电源; 〔6〕测量围为-55~125,固有测温分辨率为0.5; 〔7〕通过编程可实现9~12位的数字读数方式; 〔8〕用户可定义非易失性的温度告警设置; 〔9〕警告搜索命令能识别和寻址温度在编定的极限之外的器件〔温度警告情况〕; 〔10〕应用围包括恒温控制、工业系统、消费类产品、温度计或任何热敏系统。 以上特性使得DS18B20非常适用于构建高精度、多点温度测量系统。 根据DS18B20以上特点,此方案实现本课题较好。 〔三〕硬件设计 本课题的整个系统是由单片机、显示电路、键盘电路、驱动电路、串口通信等构成。 1、温度传感器DS18B20的连线图: 2、单片机系统设计 本课题运用Intel公司的8051进展系统控制,运用到了复位电路、时钟电路、串口、I/O口。 1)常用的上电复位且开关复位电路如下 2〕时钟电路如下列图左侧局部: 89c51单片机串口主要有两个数据缓冲存放器SBUF和一个输入移位存放器组成,其部还有一个串行控制存放器SCON和一个波特率发生器。接收缓冲器与发送缓冲器占用同一个地址99H,其名称亦同样为SBUF。 3)单片机连线图 4〕显示电路设计 本课题用四个LED数码管,具体连接如下列图〔图中为六个LED,连线时只用四个〕: 5〕键盘电路设计 其原理图如下: 本课题使用行列扫描方式,在单片机的P1口上连接上4*4的键盘,单片机扫描键盘,如果有键按下,单片时机根据键码执行相应的程序,使整个系统的功能更加完善。 6〕报警电路设计 为了实现多点温度检测报警系统,本课题采用AT89C51单片机作为主控制器,采用扫描的方式对多点DS18B20温度传感器获取对应该位置的温度值,经处理后通过串口可以立即发送到上位机,如温度不在设定的围,给出报警信号。系统总体硬件电路图如下所示: 7)通信模块设计 PC机与单片机的串行通信接口电路如下图 〔四〕软件设计 1、软件实现 系统软件设计主要包括系统程序和流程图,根据整个系统的要求,完成温度的测量与控制必须经过以下几个步骤:单片机承受传感器的温度信号,并通过MAX7219驱动显示出来,单片机扫描键盘,承受控制信号,并将温度显示出来,假设温度不在围那么发出报警。 1〕系统主程序流程图 温度测量程序流图 2〕键盘程序设计 根据本课题的系统要求,采用4*4的键盘电路构造,P1.0- P1.3接四条行线,P1.4-P1.7接四条列线,整个系统的功能可以利用16个按键将系统完善化、系统化,对于键盘各键的功能如下列图所示: 系统程序 ;**************************************************************** ;常数定义 ;**************************************************************** TMEL EQU 0E0H ;20ms,定时器0时间常数 TMEH EQU 0B1H TMEPHEAD EQU 36H ;**************************************************************** ;工作存定义 ;**************************************************************** BITST DATA 20H TIMEISOK BIT BITST.1 TEMPONEOK BIT BITST.2 TEMPL DATA 26H TEMPH DATA 27H TEMPHC DATA 28H TEMPLC DATA 29H ;**************************************************************** ; 引脚定义 ;**************************************************************** TEMPDIN BIT P3.7 ;**************************************************************** ; 中断向量区 ;**************************************************************** ORG 000H LJMP START ORG 00BH LJMP T0IT ;**************************************************************** ;系统初始化 ;**************************************************************** ORG 100H START: MOV SP,#60H CLSMEM: MOV R0,#20H MOV R1,#60H CLSMEM1: MOV R0,#00H INC R0 DJNZ R1,CLSMEM1 MOV TMOD,#00100001B MOV TH0,#TIMEL MOV TL0,#TIMEH SJMP INIT ERROR: NOP LJMP START NOP INIT: 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 TIMEISOK TOIT1: POP PSW RETI ;**************************************************************** ; 主程序 ;**************************************************************** MAIN: LCALL DISP1 JNB TIME1SOK,MAIN CLR TIME1SOK JNB TEMPONEOK,MAIN2 LCALL READTEMP1 LCALL CONVTEMP LCALL DISPBCD LCALL DISP1 MAIN2: LCALL READTEMP SETB TEMPONEOK LJMP MAIN ;**************************************************************** ;**************************************************************** ;子程序区 ;**************************************************************** ; RESET DS18B20 ;**************************************************************** INITDS1820: SETB TEMPDIN NOP NOP CLR TEMPDIN MOV R6,#0A0H DJNZ R6,$ MOV R6,#0A0H DJNZ R6,$ SETB TEMPDIN MOV R6,#32H DJNZ R6,$ MOV R6,#3CH LOOP1820: MOV C,TEMPDIN JC INITDS1820OUT DJNZ R6,LOOP1820 MOV R6,#064H DJNZ R6,$ SJMP INITDS1820 RET ; INITDS1820OUT: SETB TEMPDIN RET ; **************************************************************** ; 读DS18B20的程序,从DS18B20中读出一个字节的数据 ; **************************************************************** READDS1820: MOV R7,#08H SETB TEMPDIN NOP NOP READDS1820LOOP: CLR TEMPDIN NOP NOP NOP SETB TEMPDIN MOV R6,#07H DJNZ R6,$ MOV C,TEMPDIN MOV R6,#3CH DJNZ R6,$ RRC A SETB TEMPDIN DJNZ R7,READDS1820LOOP MOV R6,#3CH DJNZ R6,$ RET ; **************************************************************** ; 写DS18B20的程序,从DS18B20中写一个字节的数据 ; **************************************************************** WRITEDS1820: MOV R7,#08H SETB TEMPDIN NOP NOP WRITEDS1820LOP: CLR TEMPDIN MOV R6,#07H DJNZ R6,$ RRC A MOV TEMPDIN,C MOV R6,#34H DJNZ R6,$ SETB TENPDIN DJNZ R7,WRITEDS1820LOP RET ; **************************************************************** ; READ TEMP ; **************************************************************** READTEMP: LCALL INITEDS1820 MOV A,#0CCH LCALL WRITEDS1820 MOV R6,#34H DJNZ R6,$ MOV A,#44H LCALL WRITEDS1820 MOV R6,#34H DJNZ R6,$ RET READTEMP1: LCALL INITDS1820 MOV A,#0CCH LCALL WRITEDS1820 MOV R6,#34H DJNZ R6,$ MOV A,#0BEH LCALL WRITEDS1820 MOV R6,#34H DJNZ R6,$ MOV R5,#09H MOV R0,#TEMPHEAD MOV B,#00H READTEMP2: 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,TEMPHEAD+1 MOV TEMPH,A READTEMPOUT: RET ; **************************************************************** ; 处理温度BCD码子程序 ; **************************************************************** CONVTEAMP: 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 MOV TEMPHC,#0BH SJMP TEMPCH TEMPC1: MOV TEMPHC,#0AH TEMPC11: MOV A,TEMPHC SWAP A MOV TEMPHC,A MOV A,TEMPL ANL A,#0FH MOV DPTR,#TEMPDOTTAB MOVC A,A+DPTR MOV TEMPLC,A 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 TEMPL,A ANL A,#0F0H SWAP A ORL A,TEMPHC MOV TEMPHC,A MOV A,TEMPL ANL A,#0FH SWAP A ORL A,TEMPLC MOV TEMPLC,A MOV A,R7 JZ TEMPC12 ANL A,#0FH SWAP A MOV R7,A MOV A,TEMPHC ANL A,#0FH ORL A,R7 MOV TEMPHC,A TEMPC12: RET ; **************************************************************** ; 小数局部码表 ; **************************************************************** TEMPDOTTAB: DB 00H, 01H, 01H, 02H, 03H, 03H, 04H,04H,05H,06H DB 06H,07H,08H,09H,09H ; **************************************************************** ; 显示区BCD码温度值刷新子程序 ; **************************************************************** DISPBCD: MOV A,TEMPLC ANL A,#0FH MOV 70H,A MOV A,TEMPLC SWAP A ANL A,#0FH MOV 71H,A MOV A,TEMPHC ANL A,#0FH MOV 72H,A MOV A,TEMPHC SWAP A ANL A,#0FH MOV 73H,A MOV A,TEMPHC ANL A,#0F0H CJNZ A,#010H,DISPBCD0 SJMP DISPBCD2 DISPBCD0: MOV A,TEMPHC ANL A,#0FH JNZ DISPBCD2 MOV A,TEMPHC SWAP A ANL A,#0FH MOV 73H,#0AH MOV 72H,A DISPBCD2: RET ; *************************************************************** ; 显示子程序 ; **************************************************************** ; 显示数据在70H—73H单元,用4位LED共阳数码管显示,P1口输出段码数据,;P3口作扫描控制,每个LED数码管亮1ms时间再逐位循环。 DISP1: MOV R1,#70H MOV R5,#0FEH PLAY: 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 ACC.1,LOOP5 CLR P1.7 LOOP5: LCALL DLIMS INC R1 MOV A,R5 JNB ACC.3,ENDOUT RL A MOV R5,A AJMP PLAY ENDOUT: MOV P1,#0FEH MOV P3,#0FEH RET TAB: 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,#14H DL1: MOV R7,#19H DL2: 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 ; **************************************************************** ; Calculate CRC—8 Values. Uses The CCITT—8 Polynomial,Expressed As ; X^8+X^5+X^4+1 ; **************************************************************** CRC8CAL: PUSH ACC MOV R7,#08H CRC8LOOP1: XRL A,B RRC A MOV A,B JNC CRC8LOOP2 XRL A,#18H CRC8LOOP2: RRC A MOV B,A POP ACC RR A PUSH ACC DJNZ R7,CRC8LOOP1 POP ACC RET END 〔五〕结论 1、课题总结 本课题主要是实现对温度进展多点同时测量并准确显示。整个系统由单片机控制,要能够承受传感器的数据并显示出来,可以从键盘输入命令,系统根据命令选择对应的传感器,并由驱动电路驱动温度显示,对异常情况进展报警。 2、心得 通过这次课程的设计,将课本的知识实际应用,摆脱考试的局限,锻炼自己的解决问题的能力,独立思考能力。本课题使我熟悉了单片机设计原那么,对51系列单片机部构造、与其它芯片的接口技术及其工作情况有了更进一步了解,虽然是很简单的运用,但比为了考试而瞬时记忆的知识结实多了,工作需要独立解决问题的的能力,还是希望多一些这样的时机。 〔六〕参考文献 [1]周慈航著·单片机程序设计根底[M]·:航空航天大学,2003 [2]方佩敏编著·智能化集成温度传感器原理与应用[M]·:电子工业,2002 [3]毅刚主编·单片机原理及应用[M]·:高等教育,2021 [4]道玲,玲,朱艳编著·传感器电路分析与设计[M]·:大学,2003 [5]笃人,保军编著。传感器及应用技术[M]·:电子科技大学,2003 [6]小忠等,单片机接口技术实用子程序·:人民邮电,2005 [7]群芳编著 ,单片机原理、接口及应用—嵌入式系统计数根底·:清华大学 数字温度及设计电路原理图 - word.zl
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服