基于单片机的测温系统设计.docx
《基于单片机的测温系统设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的测温系统设计.docx(30页珍藏版)》请在冰豆网上搜索。
![基于单片机的测温系统设计.docx](https://file1.bdocx.com/fileroot1/2022-11/26/eb42d0cf-b257-4393-9a03-4f91d142e923/eb42d0cf-b257-4393-9a03-4f91d142e9231.gif)
基于单片机的测温系统设计
毕业设计说明书
论文题目
基于单片机的测温系统设计
学号
姓名
指导教师
职称
办学点
教学班
200年月日
2016年11月1日
摘要
随着现代信息技术的飞速发展和传统工业改造的逐步实现,温度自动检测和显示系统在很多领域得到广泛应用。
人们在温度检测的准确度、便捷、快速等方面有着越来越高的要求。
而传统的温度传感器已经不能满足人们的需求,其渐渐被新型的温度传感器所代替。
本文设计并制作了一个简易温度计。
本设计采用了单片机AT89S51和温度传感器DS18B20组成了温度自动测控系统,可根据实际需要任意设定温度值,并进行自动控制。
在此设计中利用了AT89S51单片机作为主控制器件,DS18B20作为测温传感器通过LED数码管串口传送数据,实现温度显示。
通过DS18B20直接读取被测温度值,进行数据转换,能够设置温度上下限来设置报警温度。
并且在到达报警温度后,系统会自动报警。
本文设计是从测温电路、主控电路、报警电路等几个方面来分析说明的。
该器件可直接向单片机传输数字信号,便于单片机处理及控制。
另外,该温度计还能直接采用测温器件测量温度。
从而简化数据传输与处理过程。
此设计的优点主要体现在可操作性强,结构基础简单,拥有很大的扩展空间等。
关键词:
单片机;温度传感器;温度计;报警;
摘要1
2.1数字温度计设计方案论证2
2.1.1方案一2
2.1.2方案二2
2.2系统总体设计2
2.3系统模块4
2.3.1主控制器4
2.3.2显示电路5
2.3.3温度传感器5
2.3.4报警温度调整按键6
第3章硬件设计7
3.1测温和控制电路7
3.2显示控制电路10
4.1主程序流程图13
4.2读出温度子程序14
4.3温度转换命令子程序14
4.4计算温度子程序14
4.5显示数据刷新子程序14
4.6按键扫描处理子程序15
参考文献19
附录1源程序20
第1章概述
1.1课程设计的意义
本次课程设计是在我们学过单片机后的一次实习,可增加我们的动手能力。
特别是对
单片机的系统设计有很大帮助。
本课程设计由两个人共同完成,在锻炼了自己的同时也增强
了自己的团队意识和团队合作精神。
1.2设计的任务和要求
1、基本范围-50℃-110℃
2、精度误差小于0.5℃
3、LED数码直读显示
4、可以任意设定温度的上下限报警功能
第2章系统总体方案及硬件设计
2.1数字温度计设计方案论证
2.1.1方案一
由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温
度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,其中还涉及到电阻与温度的对应值的计算,感温电路比较麻烦。
而且在对采集的信号进行放大时容易受温度的影响出现较大的偏差。
2.1.2方案二
进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常
容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,电路简单,精度高,软硬件都以实现,而且使用单片机的接口便于系统的再扩展,满足设计要求。
从以上两种方案,很容易看出,采用方案二,电路比较简单,费用较低,可靠性高,软件设计也比较简单,故采用了方案二。
2.2系统总体设计
温度计电路设计总体设计方框图如图2.2-1所示,控制器采用单片机AT89S51,温度传感器采用DS18B20,用3位LED数码管以串口传送数据实现温度显示。
图2.2-1总体设计方框图
图2.2-2系统仿真图
2.3系统模块
系统由单片机最小系统、显示电路、按键、温度传感器等组成。
2.3.1主控制器
单片机AT89S51具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电
路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。
晶振采用12MHZ。
复位电路采用上电加按钮复位。
图2.3.1-1晶振电路
图2.3.1-2复位电路
2.3.2显示电路
显示电路采用4位共阴极LED数码管,P0口由上拉电阻提高驱动能力,作为段码输出并作为数码管的驱动。
P2口的低四位作为数码管的位选端。
采用动态扫描的方式显示。
图2.3.2数码管显示电路
2.3.3温度传感器
DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感
器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过
简单的编程实现9~12位的数字值读数方式。
DS18B20的性能特点如下:
1、独特的单线接口仅需要一个端口引脚进行通信;
2、多个DS18B20可以并联在惟一的三线上,实现多点组网功能
3、无须外部器件;
4、可通过数据线供电,电压范围为3.0~5.5V;
5、零待机功耗;
6、温度以9或12位数字;
7、用户可定义报警设置;
8、报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;
9、负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作;
DS18B20可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。
另一种是寄生电源供电方式,如图4所示单片机端口接单线
总线,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个MOSFET管来完成对总线的上拉。
当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为10us。
采用寄生电源供电方式时VDD端接地。
由于单线制只有一根线,因此发送接口必须是三态的。
图2.3.3温度传感器与单片机的连接
2.3.4报警温度调整按键
本系统设计三个按键,采用查询方式,一个用于选择切换设置报警温度和当前温度,另外两个分别用于设置报警温度的加和减。
均采用软件消抖。
图2.3.4按键电路
第3章硬件设计
3.1测温和控制电路
(1)测温
测温使用的DS18B20是典型的应用单总线技术的器件。
独特的一线接口,只需要一条口线通信 多点能力,简化了分布式温度传感应用 无需外部元件 可用数据总线供电,电压范围为3.0V至5.5V 无需备用电源 测量温度范围为-55°C至+125℃。
华氏相当于是-67°F到257华氏度 -10°C至+85°C范围内精度为±0.5°C
温度传感器可编程的分辨率为9~12位温度转换为12位数字格式最大值为750毫秒用户可定义的非易失性温度报警设置 应用范围包括恒温控制,工业系统,消费电子产品温度计,或任何热敏感系统描述该DS18B20的数字温度计提供9至12位(可编程设备温度读数。
信息被发送到/从DS18B20通过1线接口,所以中央微处理器与DS18B20只有一个一条口线连接。
为读写以及温度转换可以从数据线本身获得能量,不需要外接电源。
因为每一个DS18B20的包含一个独特的序号,多个ds18b20s可以同时存在于一条总线。
这使得温度传感器放置在许多不同的地方。
它的用途很多,包括空调环境控制,感测建筑物内温设备或机器,并进行过程监测和控制。
设备(主机或从机)通过一个漏极开路或三态端口,连接至该数据线,这样允许设备在不发送数据时释放数据总线,以便总线被其它设备所使用。
单总线端口为漏极开路,其内部等效电路如图1所示。
单总线要求外接一个约5k的上拉电阻;这样,单总线的闲置状态为高电平。
不管什么原因,如果传输过程需要暂时挂起,且要求传输过程还能够继续的话,则总线必须处于空闲状态。
位传输之间的恢复时间没有限制,只要总线在恢复期间处于空闲状态(高电平)。
如果总线保持低电平超过480μs,总线上的所有器件将复位。
另外,在寄生方式供电时,为了保证单总线器件在某些工作状态下(如温度转换期间、EEPROM写入等)具有足够的电源电流,必须在总线上提供强上拉[1]。
(2)控制
AT89S51是一个低功耗,高性能CMOS8位单片机,片内含4kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。
AT89S51具有如下特点:
40个引脚,4kBytesFlash片内程序存储器,128bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。
此外,AT89S51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。
空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。
同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。
主要功能特性:
·兼容MCS-51指令系统
·4k可反复擦写(>1000次)ISPFlashROM
·32个双向I/O口
·4.5-5.5V工作电压
·2个16位可编程定时/计数器
·时钟频率0-33MHz
·全双工UART串行中断口线
·128x8bit内部RAM
·2个外部中断源
·低功耗空闲和省电模式
·中断唤醒省电模式
·3级加密位
·看门狗(WDT)电路
·软件设置空闲和省电功能
·灵活的ISP字节和分页编程
·双数据寄存器指针
引脚功能说明
VCCT:
电源电压
GND:
地
P0口:
P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口;作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端用。
在访问外部数据存储器或者程序存储器时,这组口线分时转换地址(低8位)和数据总线复用;在访问期间激活内部上拉电阻。
在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时要求外接上拉电阻
P1口:
P1是一个带内部上拉电阻的8位双向I/O口;P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路,对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口;作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低会输出一个电流。
Flash编程和程序校验期间,P1接收低8位地址
P2口:
P2口是一个带有内部上拉电阻的8位双向I/O口;P2的输出缓冲级可驱动个(吸收或输出电流)4个TTL逻辑门电路,对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口;作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低会输出一个电流。
在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX
@DPTR指令)时,P2口送出高8位地址数据;在访问8位地址的外部数据存储器(如执行MOVX@RI)时,P2口线上的内容(即特殊功能寄存器(SFR)区中的R2寄存器的内容),在整个访问期间不改变;Flash编程或校验时,P2亦接收高位地址和其它控制信号。
P3口:
P3口是一个带有内部上拉电阻的8位双向I/O口;P2的输出缓冲级可驱动个(吸收或输出电流)4个TTL逻辑门电路,对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口;作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低会输出一个电流。
P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能;如下表2-1所示:
表2.1
端口引脚
第二功能
P3.0
RXD(串行输入口)
P3.1
TXD(串行输出口)
P3.2
(外中断0)
P3.3
(外中断1)
P3.4
T0(定时/计数器0)
P3.5
T1(定时/计数器1)
P3.6
(外部数据存储器写选通)
P3.7
(外部数据存储器读选通)
P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。
RST:
复位输入;当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位
ALE/PROG:
当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节;即使不访问外部存储器,ALE仍以时钟振荡频率的1/6输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的;要注意的是,每当访问外部数据存储器时将跳过一个ALE脉冲。
如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作,该位置位后,只有一条MOVX和MOVC指令ALE才会被激活,此外该引脚会被微弱拉高,单片机执行外部程序时,应该置ALE无效。
EA/VPP:
外部访问允许;欲使CPU仅访问外部程学存储器(地址为0000HFFFFH),EA端必须保持低电平(接地)。
需要注意的是,如果加密位LB1被编程,复位时内部会锁存EA端的状态[3]。
如EA端为高电平(接Vcc端),CPU则执行内部程序存储器中的指令。
Flash
存储编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。
XTML1:
振荡器反相放大器的及内部时钟发生器的输入端。
XTML2:
振荡器反相放大器的输出端。
图2.1测温和控制电路
3.2显示控制电路
HD7279是一片具有串行接口的,可同时驱动8位共阴式数码管(或64只独立LED)的智能显示驱动芯片,该芯片同时还可联接多达64键的键盘矩阵,单片即可完成LED显示、键盘接口的全部功能。
HD7279A内部含有译码器,可直接接受BCD码或16进制码,并同时具有2种译码方式,此外,还具有多种控制命令,如消隐、闪烁、左移、右移、段寻址等。
HD7279A具有片选信号,可方便地实现多于8位的显示或多于64键的键盘接口。
HD7279与单片机仅需4条接口线,其中CS为片选信号。
当MCU访问HD7279时,应将片选端置为低电平。
DATA为串行数据/输出端,当向HD7279发送数据时,DATA为输入端;当HD7279A输出键盘代码时,DATA为输出端。
其特点为:
-串行接口,无需外围元件可直接驱动LED
-各位独立控制译码/不译码及消隐和闪烁属性
-(循环)左移/(循环)右移指令
-具有段寻址指令,方便控制独立LED
-64键键盘控制器,内含去抖动电路
-有DIP和SOIC两种封装形式供选择
图2.2显示控制电路
3.3声光报警电路
555集成定时器是一种模拟和数字电路相混合的集成电路。
它结构简单,使用灵活,用途十分广泛,可以组成多种波形发生器、多谐振荡器、定时延时电路、双稳触发电路、报警电路、检测电路、频率变换电路等。
555含有两个比较器A1、A2,其中5端为电压控制端,通过外接一个参考电源,可以改变上、下触发电位值,不用时,可通过一个0.01μF旁路电容接地。
4端为触发器复位端,不用时应接高电平。
总之,555相当于一个可用模拟电压来控制翻转的R-S触发器。
图2.5就是用555构成的多谐振荡电路,产生的振荡脉冲信号经过三极管放大后驱动扬声器报警,由单片机的P1.5端口输出高电平发出报警。
555定时器的电路原理图及管脚排列图分别如图2.3和2.4所示。
图2.5报警电路
第4章系统软件算法分析
系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,
显示数据刷新子程序,按键扫描处理子程序等。
4.1主程序流程图
主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,
温度测量每1s进行一次。
这样可以在一秒之内测量一次被测温度,其程序流程见图3.1所
示。
图3.1主程序流程图
4.2读出温度子程序
读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。
其程序流程图如图3.2示
4.3温度转换命令子程序
温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为
750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。
温度转换命令子程序流程图如上图,图3.3所示
图3.2读温度流程图
4.4计算温度子程序
计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,
其程序流程图如图3.4所示。
4.5显示数据刷新子程序
显示数据刷新子程序主要是对分离后的温度显示数据进行刷新操作,当标志位位为1
时将符号显示位移入第一位。
程序流程图如图3.5。
图3.4计算温度流程图图3.5显示数据刷新流程图
4.6按键扫描处理子程序
按键采用扫描查询方式,设置标志位,当标志位为1时,显示设置温度,否则显示当前温度。
如下图3.6示。
图3.6按键扫描处理子程序
第5章实验仿真
进入protuse后,连接好电路,并将程序下载进去。
将DS18B20的改为0.1,数码管显示温度与传感器的温度相同。
图4-1温度显示仿真
当按下SET键一次时,进入温度报警上线调节,此时显示软件设置的温度报警上线,按ADD或DEC分别对报警温度进行加一或减一。
当再次按下SET键时,进入温度报警下线调节,此时显示软件设置的温度报警下线,按ADD或DEC分别对报警温度进行加一或减一
图4-2温度调试仿真
当第三次按下SET键时,退出温度报警线设置。
显示当前温度。
总结
通过本次课程设计,我掌握了很多实践知识,并在老师和同学们的帮助下对单片机的原理及应用有了进一步的了解和认识,也对温度报警器的工作原理有了进一步的掌握。
本次课程设计使我深深的懂得了理论与实际相结合的重要性,二者缺一不可,只有把所学的理论知识与实践两者结合起来,从实践中得出结论,才能对自己的动手能力和思考能力有所提高。
整个设计过程并不顺利,其中很多知识已经淡忘,还有很多新的东西没能及时掌握,所以在本次设计过程中不断地学习、复习,受益匪浅,也使我对单片机的运用有了进一步的了解和掌握,也为今后的学习生活和工作打下良好的基础。
参考文献
[1]单片机典型外围器件及应用实例北京人民邮电出版社,2006
[2]张友德,赵志英,徐时亮.单片微机原理应用与实验[M].上海:
复旦大学出版社,2000.
[3]蔡美琴,张为民,沈新群,张荣娟.MCS-51系列单片机系统及其应用[M].北京:
高等教育出版社,1992.
附录1源程序
数字温度计程序清单
S1OK EQU5FH
TEMPUTER EQU39H
TEMPHEQU5EH
TEMPL EQU5DH
MS50 EQU5CH
SIGN EQU5BH
S1BITP1.0
S2BITP1.1
S3BITP1.2
S4BITP1.3
ORG0000H
LJMPMAIN
ORG000BH
LJMP TOIT
ORG0030H
MAIN:
MOVSP,#60H
MOVTMOD,#01H
MOVTH0,#3CH
MOVTL0,#0B0H
SETBET0
SETBTR0
SETBEA
MOVTEMPH,#30
MOVTEMPL,#9
MOVTEMPUTER,#15;温度最始值
MOVS1OK,#00H
MOVSIGN,#00H
MOV38H,#0BH
MOV37H,#0CH
MOV36H,#0BH
ACALLDISP
ACALLT1S
;主程序
START:
JBS1,NET1
ACALLT12MS
JBS1,NET1
JNBS1,$
INCSIGN
MOVA,SIGN
CJNEA,#1,TIAO
ACALLTIAOTL
TIAO:
CJNEA,#2,NET1
MOVSIGN,#0
ACALLTIAOTH
;
NET1:
MOVA,S1OK
CJNEA,#1,START
MOVA,TEMPUTER
SUBBA,TEMPH
JNBACC.7,ALEM
MOVA,TEMPUTER
SUBBA,TEMPL
JBACC.7,ALEM
SETBP2.1
ACALLWENDU
ACALLDISP
MOVS1OK,#00H
AJMPSTART
ALEM:
MOV36H,#0CH
MOV37H,#0CH
MOV38H,#0CH
CLRP2.1
ACALLDISP
ACALLT1S
LCALLWENDU
LCALLDISP
MOVS1OK,#00H
SJMPSTART
TIAOTL:
MOV50H,TEMPUTER
MOV37H,TEMPL
ACALLBIN_BCD
ACALLDISP
ACALLT12MS
ACALLT12MS
ACALLT12MS
ACALLT12MS
MOV36H,#0AH
MOV37H,#0AH
MOV38H,#0AH
ACALLDISP
ACALLT12MS
ACALLT12MS
ACALLT12MS
ACALLT12MS
JBS2,ADD1
ACALLT12MS
JBS2,ADD1
JNBS2,$
INCTEMPL
MOVA,TEMPL
CJNEA,#100,ADD1
MOVTEMPL,#0
ADD1:
JBS3,ADD
ACALLT12MS
JBS3,ADD2
JNBS3,$
DECTEMPL
MOVA,TEMPL
CJNEA,#00,ADD2
MOVTEMPL,#100
ADD2:
JBS4,TIAOTL
ACALLT12MS
JBS4,TIAOTL
JNBS4,$
MOVTEMPUTER,50H
LJMPSTART
;高位调整:
TIAOTH:
MOV50H,TEMPUTER
MOV37H,TEMPH
ACALL BIN_BCD
ACALL DISP