基于单片机控制的数字温度计.docx
- 文档编号:14907189
- 上传时间:2023-06-28
- 格式:DOCX
- 页数:27
- 大小:160.19KB
基于单片机控制的数字温度计.docx
《基于单片机控制的数字温度计.docx》由会员分享,可在线阅读,更多相关《基于单片机控制的数字温度计.docx(27页珍藏版)》请在冰点文库上搜索。
基于单片机控制的数字温度计
基于单片机控制的数字温度计
班级:
020851班
姓名:
方科星
学号:
02085089
1.选题意义
近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。
在实时检测和自动控制的单片机应用系统中,以单片机为核心的各种控制电路层出不穷,数字温度计就是单片机一方面的应用。
随着人们生活水平的提高,单片机的应用也越来越广泛,在日常生活中,与温度有关的也常见,例如:
烧开水的锅炉需要测温度、家庭用的电磁炉需要测温度等等;所以数字温度计也普遍存在于人们的生活当中,而本电路就是结合这种思路和参考一些资料所设计的电路,这种电路可以很方便的应用到我们的现实生活中,为人们带来便利。
本文主要从单片机的应用上来实现温度的测量及显示。
2.总体设计方案
2.1设计思路:
针对数字温度计的设计,首先要考虑的如何实现它,通过查略相关资料,我决定采用温度控制器DS18B20来实现,其内部有上下限报警电路,这样温度只要在所设定的上下温度界限内,就会在数码管中精确的显示出来,如果温度超过了所设定的温度界限,就发出报警声。
能够及时向温度监控人员发出温度超限信息。
便于温控人员及时的调整与控制。
另外此温度控制器操作简单,体积小,灵敏度高,精度高。
采用74LS164串入并出移位寄存器去驱动数码管。
此外,以89C51为中心的外围部分加入了掉电保护和报警电路。
采用89C51单片机对温度进行控制,不仅具有控制方便简单灵活等优点,而且可以大幅度提高被控温度的技术指标,从而能够大大提高产品的质量和数量。
采用传感器DS18B20的主要优点是采用数字化技术,能以数字形式直接输出被测温度值,具有测量误差小、抗干扰能力强、分辨力高、能够远程传输数据、带串行总线接口等优点,适配各种单片机和系统机。
为防止中途断电或其它事故被测数据丢失,本设计采用X5045作为存储电路保护所测的温度值,最后将所测温度值经数码管显示出来。
2.2总体设计方框图
图1总体设计方框图
3.电路单元模块设计
3.1驱动电路
本电路采用串行口显示,利用74LS164来驱动,四个共阳数码管显示,如图2所示。
74LS164是串行输入并行输出的移位寄存器,并带有清零端,其中Q0-Q7为并行输出端,MR为清零端,当它为零电平时使74LS164清零,A、B为串行输入端,CLK为时钟脉冲输入端,在脉冲的上升沿实现移位。
当CLK=0、MR=1时,74LS164保持原来的数据状态。
图中外接4片74LS164作为4位LED显示器的静态连接口,74LS164的低电平输出电流为8mA,可直接驱动共阳极LED。
采用软件译码向74LS164输出字型码,由于显示器是静态的主程序可不必扫描显示器。
从而节省很多的时间。
在该电路中,将输入端A、B连接在一起,作为串行数据的输入端,CLK为74LS164的时钟输入端,将所有清零端置“1”,显示电路利用软件清零。
图2显示电路
3.2蜂鸣报警电路
如图3所示,该电路利用晶体三极管的特性,将单片机的P3.7脚接NPN三极管的基极,根据其性质,当P3.7输出高电平时,三极管导通,从而驱动喇叭发出声音,否则蜂鸣器就不发声,在右图所师电路中,由软件编程控制当周围的温度超过所设定的温度时,三极管基极就为高电平,可以实现报警功能,反之P3.7保持低电平,三极管截止,蜂鸣器停止发声。
图3蜂鸣报警电路
3.3开关控制电路
如图4所示,四个开关按键分别为S1,S2,S3,S4。
其中S1为多功能键,软件编程查询法来判断,并执行相应的功能。
4个开关分别用于调整温度的上下限值,以及控制温度的输出。
其中S1为多功能键,第一次按下用于显示采集的温度,第二次按下则进行温度的上限调整,第三次按下进行温度的下限调整,第四次按下则进行采集温度的显示构成循环。
S2可以进行移位调整,第一次显示个位,第二次显示十位。
S3用于增加一个数,按下一次在原基础之上加1,这个值在0-9-0之间变化。
S4用于减少一个数,按下一次在原基础之上减1,这个值在9-0-9之间变化。
图4开关控制电路图5掉电保护电路
3.4掉电保护电路X5045
X5045是基于SPI总线的格式的具有看门狗、电压监控和数据存储的多功能芯片,这里所用的是它的数据存储的功能,读/写X5045有以下规则:
掉电保护电路如图5所示。
SCK由1变0时,从SO引脚读取1位数据;SCK由0变为1时,向SI引脚发送的1位数据被采样。
在任何以字节单位的读/写操作前,应先选中芯片,即复位CS;置位CS,则表示操作结束;为了防止误操作,每一次复位或置位时应复位SCK,写操作前应该读取状态寄存器,判断WIP为0时,在写使能允许命令后就可以写状态寄存器或向寄存器中写数据。
3.5温度传感器工作原理
DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等感温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。
DS18B20的性能特点如下:
■独特的单线接口仅需要一个端口引脚进行通信
■多个DS18B20可以并联在惟一的三线上,实现多点组网功能
表1DS18B20各管脚图
■可通过数据线供电,电压范围为3.0~5.5V
■温度以9或12位数字
■用户可定义的非易失性温度报警设置
■报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件,负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。
DS18B20采用3脚PR-35封装或8脚SOIC封装,其外形封装图如图3所示。
其各引脚的功能说明如表1所示。
DS18B20的内部结构图如图6所示,它有三个主要的数据部件:
(1)64位激光(aseredROM)
(2)温度灵敏元件
(3)非易失性温度告警触发器TH和TL。
器件从单线的通信线取得其电源,在信号线为高电平的时间周期内,能量贮存在内部的电容器中在单信号线为低电平的时间期内断开此电源。
直到信号线变为高电平重新接上寄生电容电源为止作为另一种可供选择的方法。
DS1820也可用外部5V电源供电。
图6DS1820外形封装图
序号
名称
引脚功能描述
1
GND
地信号
2
DQ
数据输入/输出引脚。
开漏单总线接口引脚。
当被用着在寄生电源下,也可以向器件提供电源。
3
VDD
可选择的VDD引脚。
当工作于寄生电源时,此引脚必须接地。
DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的EERAM。
高速暂存RAM的结构为8字节的存储器,结构表2所示。
头2个字节包含测得的温度信息,第3和第4字节TH和TL的拷贝,是易失的,每次上电复位时被刷新。
第5个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。
高速暂存RAM的第6、7、8字节保留未用,表现为全逻辑1。
第9字节读出前面所有8字节的CRC码,可用来检验数据,从而保证通信数据的正确性。
当符号位S=0时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位S=1时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制值勤。
DS18B20可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。
另一种是寄生电源供电方式。
单片机端口接单线总线,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个MOSFET管来完成对总线的上拉。
本次设计用的是电源供电方式。
3.6复位及时钟信号产生电路工作原理分析
本电路主要由12M晶振、30PF的瓷片电容、电阻、开关组成,电路如图7所示。
12M晶振和30PF的瓷片电容构成稳定的自激振荡器,产生时钟信号。
上电自动复位电路则由22uF电容和两个电阻构成。
加电瞬间电容通过充电实现正脉冲,用以复位。
手动复位则由开关和电阻组成。
按下开关之后就产生一个正脉冲,就可以实现复位。
本电路采用的是二者的组合。
图7复位及晶振电路原理图
4.流程图
图8主程序流图图9键盘扫描子程序
5.电路图
总体电路图
6.源程序
**************************************
TEMPEQU30H
TEMP1EQU40H
TEMP2EQU41H
COMEQU50H
COM1EQU51H
LED4EQU52H
LED3EQU53H
LED2EQU54H
LED1EQU55H
LED44EQU56H
LED33EQU57H
LED22EQU58H
LED11EQU59H
K1BITP1.1
K2BITP1.2
K3BITP1.3
K4BITP1.4
FMBITP3.7
;**************************************
ORG0000H
CLR00H
CLR01H
CLR02H
CLR03H
CLR04H
CLR05H
CLR06H
MOVDPTR,#TAB
MOVR7,#32
MOVR0,#50H
QINGLING:
MOV@R0,#00H
INCR0
DJNZR7,QINGLING
MAIN:
JB06H,MAIN1
LCALLW1820
ACALLDISP
ACALLBIJIAO1
AJMPMAIN2
MAIN1:
JB01H,UPSET
JNB02H,EE1
MOV63H,#10
MOV62H,LED2
MOV61H,LED3
MOV60H,LED4;
EE1:
JNB03H,EE2
MOV63H,LED1
MOV62H,#10
MOV61H,LED3
MOV60H,LED4
EE2:
JNB04H,EE3
MOV63H,LED1
MOV62H,LED2
MOV61H,#10
MOV60H,LED4
EE3:
JNB05H,EE4
MOV63H,LED1
MOV62H,LED2
MOV61H,LED3
MOV60H,#10
EE4:
MOVR0,#63H
ACALLDIS
ACALLDELAY300
MOVR0,#LED1
ACALLDIS
ACALLDELAY300
AJMPMAIN2
;**************************************
UPSET:
JNB02H,FF1MOV73H,#10
MOV72H,LED22
MOV71H,LED33
MOV70H,LED44
FF1:
JNB03H,FF2
MOV73H,LED11
MOV72H,#10
MOV71H,LED33
MOV70H,LED44
FF2:
JNB04H,FF3
MOV73H,LED11
MOV72H,LED22
MOV71H,#10
MOV70H,LED44
FF3:
JNB05H,FF4
MOV73H,LED11
MOV72H,LED22
MOV71H,LED33
MOV70H,#10
FF4:
MOVR0,#73H
ACALLDIS
ACALLDELAY300
MOVR0,#LED11
ACALLDIS
ACALLDELAY300
MAIN2:
JBK1,KEY1
ACALLDELAY10
JBK1,KEY1
SETBFM
JNBK1,$
CLRFM
INCCOM
MOVA,COM
CJNEA,#1,AA1
SETB00H
SETB06H
AA1:
CJNEA,#2,AA2
SETB01H
AA2:
CJNEA,#3,KEY1
MOVCOM,#00H
CLR00H
CLR01H
CLR06H
AA3:
AJMPMAIN
KEY1:
JNB00H,AA3
JBK2,KEY2
ACALLDELAY10
JBK2,KEY2
SETBFM
JNBK1,$
CLRFM
INCCOM1
MOVA,COM1
CJNEA,#1,BB1
SETB02H
CLR05H
BB1:
CJNEA,#2,BB2
SETB03H
CLR02H
BB2:
CJNEA,#3,BB3
SETB04H
CLR03H
BB3:
CJNEA,#4,KEY2
MOVCOM1,#00H
SETB05H
CLR04H
KEY2:
JBK3,KEY3
ACALLDELAY10
JBK3,KEY3
SETBFM
ACALLDELAY10
;JNBK1,$
CLRFM
ACALLDELAY10
JB01H,ONPLUS
JNB02H,CC1
INCLED1
MOVA,LED1
CJNEA,#10,CC4
MOVLED1,#00H
CC1:
JNB03H,CC2
INCLED2
MOVA,LED2
CJNEA,#10,CC4
MOVLED2,#00H
CC2:
JNB04H,CC3
INCLED3
MOVA,LED3
CJNEA,#10,CC4
MOVLED3,#00H
CC3:
JNB05H,CC4
INCLED4
MOVA,LED4
CJNEA,#10,CC4
MOVLED4,#00H
CC4:
AJMPKEY3
ONPLUS:
JNB02H,DD1
INCLED11
MOVA,LED11
CJNEA,#10,KEY3
MOVLED11,#00H
DD1:
JNB03H,DD2
INCLED22
MOVA,LED22
CJNEA,#10,KEY3
MOVLED22,#00H
DD2:
JNB04H,DD3
INCLED33
MOVA,LED33
CJNEA,#10,KEY3
MOVLED33,#00H
DD3:
JNB05H,KEY3
INCLED44
MOVA,LED44
CJNEA,#10,KEY3
MOVLED44,#00H
KEY3:
JBK4,KEY4
ACALLDELAY10
JBK4,KEY4
SETBFM
ACALLDELAY10
;JNBK1,$
CLRFM
ACALLDELAY10
JB01H,ONDEC
JNB02H,GG1
DECLED1
MOVA,LED1
CJNEA,#0FFH,KEY4
MOVLED1,#9
GG1:
JNB03H,CC2
DECLED2
MOVA,LED2
CJNEA,#0FFH,KEY4
MOVLED1,#9
GG2:
JNB04H,CC3
DECLED3
MOVA,LED1
CJNEA,#0FFH,KEY4
MOVLED1,#9
GG3:
JNB05H,CC4
DECLED4
MOVA,LED1
CJNEA,#0FFH,KEY4
MOVLED1,#9
KEY4:
AJMPMAIN
ONDEC:
JNB02H,HH1
DECLED11
MOVA,LED11
CJNEA,#0FFH,HH4
MOVLED1,#9
HH1:
JNB03H,HH2
DECLED22
MOVA,LED22
CJNEA,#0FFH,HH4
MOVLED1,#9
HH2:
JNB04H,HH3
DECLED33
MOVA,LED33
CJNEA,#0FFH,HH4
MOVLED1,#9
HH3:
JNB05H,HH4
DECLED44
MOVA,LED44
CJNEA,#0FFH,HH4
MOVLED1,#9
HH4:
AJMPMAIN
;***************************************
BIJIAO1:
MOVA,42H
CJNEA,LED1,BIJIAO2
MOVA,41H
CJNEA,LED2,BIJIAO2
MOVA,40H
CJNEA,LED3,BIJIAO2
MOVA,39H
CJNEA,LED4,BIJIAO2
CLRFM
AJMPBACK
BIJIAO2:
MOVA,42H
CJNEA,LED11,BACK
MOVA,41H
CJNEA,LED22,BACK
MOVA,40H
CJNEA,LED33,BACK
MOVA,39H
CJNEA,LED44,BACK
CLRFM
BACK:
RET
;**************************************
W1820:
LCALLRESET;ds18b20复位
MOVA,#0CCH;发SKIPROM命令
LCALLWRITE
MOVA,#44H
LCALLWRITE
LCALLDLY1S;延时
LCALLRESET
MOVA,#0CCH
LCALLWRITE
MOVA,#0BEH
LCALLWRITE
LCALLREAD;读出温度值1
MOVTEMP2,TEMP;温度低8位存放41H
LCALLREAD;读出温度值2
MOVTEMP1,TEMP;温度高8位存放在40H
;**************************开始数值转换
MOVA,41H
RRA
RRA
RRA;把D3位右移到D0
ANLA,#01H;除D0位,其他全部置零
MOVB,#5
MULAB;由于原D3位权值为0.5,故扩大10倍乘5后放十分位
MOV42H,A;十分位转换结束,送42H保存
NOP;设置断点,方便修改和查阅
MOVA,40H
ANLA,#0FH;把40H中高四位置零
RLA
RLA
RLA
RLA;40H左移4位
MOV40H,A;40H中低四位移到高四位,低四位为零
;***************************************
MOVA,41H
ANLA,#0F0H;把41H中小数点后的值全部置零
RRA
RRA
RRA
RRA;41H右移4位
MOV41H,A;把41H中高四位移到低四位,高四位置零
MOVA,40H
ORLA,41H;组成新的带符号无小数点的八位数字温度,最高位为符号位
MOV43H,A;暂存温度值,原41H的高4位做43H的低4位,原40H的低4位做43H的高4位
;***************************************
ANLA,#80;除最高位有效,其他置零
RRA
RRA
RRA
RRA
MOV44H,A;判断温度值的符号位,把结果放44H,44H中要只有0和8。
NOP
MOVA,43H;恢复带符号八位无小数点温度
ANLA,#7FH;屏蔽符号位
MOVB,#0AH
DIVAB;无符号温度值除以10
MOV40H,A;商送40H暂存
MOVA,B;余数通过A送41H保存
MOV41H,A;存个位十进制温度值
MOVA,40H
MOVB,#0AH
DIVAB;商作为被除数再除以10
MOV39H,A;商存入39H,存百位十进制温度值
MOVA,B;余数通过A送40H保存
MOV40H,A;存十位十进制温度值
RET
;************************;初始化,复位操作
RESET:
L0:
CLRP1.0
MOVR2,#120
L1:
NOP
DJNZR2,L1
SETBP1.0;主机发置位脉冲持续600us
MOVR2,#15
L4:
DJNZR2,L4;等待60us
CLRC
ORLC,P1.0;数据线应变低
JCL0;没准备好,重来
MOVR6,#24
L5:
ORLC,P1.0
JCL3;数据线变高初始化成功
DJNZR6,L5;数据线低电平可持续240us
SJMPL0;初始化失败,重来
L3:
MOVR2,#125
L2:
DJNZR2,L2;应答过程最少480us
RET
;***********************把从P1.0口数据读入寄存器
READ:
MOVR6,#8
RE1:
CLRP1.0
MOVR4,#4
LCALLDELAY4US;低电平持续4us
SETBP1.0;P1.0开始输入
RE2:
DJNZR4,RE2;等待12us
MOVC,P1.0
RRCA;按位读入
MOVR5,#15
RE3:
DJNZR5,RE3;保证读过程持续60us
DJNZR6,RE1
MOVTEMP,A
SETBP1.0
RET
把寄存器数据通过P1.0口送给DS18B20
WRITE:
MOVR3,#8
WR1:
SETBP1.0
MOVR4,#5
RRCA
CLRP1.0
WR2:
DJNZR4,WR2;数据线变低16us
MOVP1.0,C;命令字按位送
MOVR4,#15
WR3:
DJNZR4,WR3;保证整个写过程持续60us
DJNZR3,WR1
SETBP1.0
RET
DISP:
MOVDPTR,#TAB
MOVR0,#42H
DIS:
MOVR7,#4
DISP1:
MOVA,@R0
MOVCA,@A+DPTR
MOVSBUF,A
JNBTI,$
CLRTI
DECR0
DJNZR7,DISP1
RET
;***************************************
DELAY:
MOVR6,#255;延时
DEL2:
MOVR5,#255
DEL3:
NOP
NOP
DJNZR5,DEL3
DJNZR6,DEL2
RET
;*************10MS*********************
DELAY10:
MOVR7,#10H
DS1:
MOVR6,#0FFH
DS2:
DJNZR6,DS2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 控制 数字 温度计