应用单片机设计智能温度采集与控制系统说明书.docx
《应用单片机设计智能温度采集与控制系统说明书.docx》由会员分享,可在线阅读,更多相关《应用单片机设计智能温度采集与控制系统说明书.docx(27页珍藏版)》请在冰豆网上搜索。
![应用单片机设计智能温度采集与控制系统说明书.docx](https://file1.bdocx.com/fileroot1/2023-1/2/0e9fc0c9-2a05-4fc7-b20b-d5d8d1328521/0e9fc0c9-2a05-4fc7-b20b-d5d8d13285211.gif)
应用单片机设计智能温度采集与控制系统说明书
专业课程实习
应用单片机设计智能温度采集与控制系统
学院:
机械控制与工程学院
专业名称:
机械设计制造及其自动化
班级:
机械08-3班
小组成员:
指导教师:
代宣军、孙宝富
完成日期:
2011年12月25日
一、目标分析以及系统总体方案的确定
题目要求是应用单片机设计智能温度采集和控制,以及温度每变化一度,显示数据要更新一次。
由此可知设计的内容是温度采集显示控制系统,控制对象是温度。
温度控制在日常生活及工业领域应用相当广泛,比如温室、水池、发酵缸、电源等场所的温度控制。
而以往温度控制是由人工完成的而且不够重视。
其实在很多场所温度都需要实时监控以防止发生意外,针对此问题,本系统设计的目的是实现一种可连续高精度调温的温度控制系统,它应用广泛,功能强大,小巧美观,便于携带,是一款既实用又廉价的控制系统。
本设计是对温度进行实时监测与控制,设计的温度控制系统实现了基本的温度控制功能:
当温度低于设定下限温度时,系统自动启动加热继电器加温,使温度上升,同时绿灯亮。
当温度上升到下限温度以上时,停止加温;当温度高于设定上限温度时,系统自动启动风扇降温,使温度下降,同时红灯亮。
当温度下降到上限温度以下时,停止降温。
温度在上下限温度之间时,执行机构不执行。
一个四位数码管即时显示温度,温度每变化一度数码管数据就更新一次。
经过分析根据测温电路的不同可以得到以下两种设计方案:
方案一:
测温电路使用热敏电阻之类的器件利用其感温效应,将被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,然后在显示电路上将被测温度显示出来。
这种设计需要用到A/D转换电路,感温电路比较麻烦。
方案二:
考虑使用温度传感器。
结合单片机电路设计,采用一只DS18B20温度传感器,直接读取被测温度值,之后进行转换,依次完成设计要求。
比较以上两种方案,很容易看出,采用方案二,电路比较简单,软件设计容易实现。
所以本设计采用方案二。
系统的总体控制方案如下图所示:
它由三部分组成:
1)控制部分主芯片采用单片机AT89S52;2)显示部分采用4位LED数码管以动态扫描方式实现温度显示;3)温度采集部分采用DS18B20温度传感器。
1-1系统的总体控制方案
二、温度采集部分的选择
温度采集部分选用DS18B20。
DS18B20温度传感器是美国DALLS半导体公司推出的一种改进型智能温度传感器,与传统的热敏电阻测温元件相比,它能直接读出被测温度。
这一部分主要完成对温度信号的采集和转换工作,由DS18B20数字温度传感器及其单片机的接口部分组成。
数字温度传感器DS18B20把采集到的温度通过数据引脚传到单片机的P1.0口,单片机接受温度并存储。
(1)DS18B20的性能特点如下:
1)独特的单线接口仅需要一个端口引脚进行通信;
2)多个DS18B20可以并联在唯一的三线上,实现多点组网功能;
3)无须外部器件;
4)可通过数据线供电,电压范围为3.0-5.5V;
5)零待机功耗;
6)温度以3位数字显示;
7)用户可定义报警设置;
8)报警搜索命令识别并标志超过限定温度(温度报警条件)的器件;
9)负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。
(2)DS18B20的内部结构
DS18B20采用3脚PR-35封装,如图2-1所示;DS18B20的内部结构,如图2-2所示。
2-1DS18B20封装
2-2DS18B20的内部结构
2-1DS18B20封装的引脚定义:
1)DQ为数字信号输入/输出端
2)GND为电源地
3)VDD为外接供电电源输入端(在寄生电源接线方式时接地)
2-2DS18B20内部结构主要由四部分组成:
1)64位光刻ROM。
开始8位的是产品类型的编码,接着是每个器件的唯一的序号,共有48位,最后8位是前56位的CRC校验码,这也是DS18B20可以采用一线进行通信的原因。
2)非挥发的温度报警触发器TH和TL,可通过软件写入用户报警上下限值。
3)高速暂存存储,可以设置DS18B20温度转换的精度。
4)CRC的产生
(3)DS18B20的工作原理
DS18B20工作时序
根据DS18B20的通讯协议,主机控制DS18B20完成温度转换必须经过三个步骤:
(1)每次读写之前都必须要对DS18B20进行复位;
(2)复位成功后发送一条ROM指令;
(3)最后发送RAM指令,这样才能对DS18B20进行预定的操作。
复位要求主机CPU将数据线下拉500微秒,然后释放,DS18B20收到信号后等待15-60微秒左右后发出60-240微秒的存在低脉冲,主CPU收到此信号表示复位成功,其工作时序包括初始时序、写时序和读时序,具体工作方法如图2-3、2-4、2-5所示。
1)初始化时序
图2-3初始化时序
总线上的所有传输过程都是以初始化开始的,主机响应应答脉冲。
应答脉冲使主机知道,总线上有从机设备,且准备就绪。
主机输出低电平,保持低电平时间至少480us,已产生复位脉冲。
接着主机释放总线,4.7K
上拉电阻将总线拉高,延时15-60us,并进入接受模式,以产生低电平应答脉冲,若为低电平,再延时60-240us
2)写时序
图2-4写时序
写时序包括写0时序和写1时序。
所有写时序至少需要60us,且在2次独立写时序之间至少需要1us的恢复时间,都是以总线拉低开始。
写1时序,主机输出低电平,延时2us,然后释放总线,延时60us。
写0时序,主机输出低电平,延时60us,然后释放总线,延时2us。
3)读时序
图2-5读时序
总线器件仅在主机发出读时序时才向主机传输数据,所以,在主机发出读数据命令后,必须马上产生读时序,以便从机能够传输数据。
所有读时序至少需要60us,且在2次独立写时序之间至少需要1us的恢复时间。
每次读时序都由主机发起,至少拉低总线1us。
主机在读时序期间必须释放总线,并且在时序起始后的15us之内采样总线状态。
主机输出低电平时延时2us,然后主机转入输入模式延时12us,然后读取总线当前电平,然后延时50us。
三、显示电路的选择
显示电路采用4位一体共阴极LED数码管,从P0口送数,P2口扫描。
四、单片机系统的设计
(1)硬件设计
1)晶振电路
单片机XTAL1,XTAL2分别接30PF的电容,中间再并个12MHz的晶振,形成单片机的晶振电路。
如下图:
2)复位电路
3)EA引脚接VCC
复位后,首先执行片内程序存储器的程序,当PC值超过内部程序存储器空间时,后面的自动转到外部空间取指令执行。
4)P1.5,P1.6,P1.7引脚接下载器电路,如下图所示:
电路中加个电容,用于防止掉电保护。
5)P3.5,P3.6,P3.7分别接按钮S1,S2,S3。
如下图所示:
S1按钮用于手动操作进入上下限温度设置界面;S2按钮用于上限温度设置;S3按钮用于下限温度设置。
6)P1.1,P1.2引脚用于接警报指示灯。
如下图所示:
P1.1用于接绿色指示灯,表示温度低于下限温度,加热执行机构开始工作,直到绿灯熄灭。
P1.2用于接红色指示灯,表示温度高于上限温度,风扇执行机构开始工作,直到红灯熄灭。
由于各种原因,执行机构略,仅用红绿灯进行警报。
7)P1.0接温度传感器电路,如下图:
8)P0接口接8个820
上拉电阻,同时分别接四位一体LED灯的a,b,c,d,e,f,g,dp引脚。
具体接法见原理图。
9)P2接口中P2.0、P2.1、P2.2、P2.3分别接到显示电路的4.7K电阻上,P2.5接蜂鸣器电路,其它悬空。
具体接法见原理图。
10)VCC接电源,VSS接地。
11)硬件设计的原理图如下:
12)系统的PCB印刷电路板图如下:
(2)软件设计
1)软件设计的相关流程图
主程序流程图温度显示子程序
初始化上限温度设置初始化下限温度设置
温度设置下限值设置上限值设置
温度处理子程序报警程序
温度转换
2)软件设计的程序
ORG0000H
LJMPMAIN
ORG000BH
LJMPZD_SUB
ORG0100H
N_TAB:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,00H,40H
T00EQU40H;个位
T01EQU41H
T02EQU42H
T03EQU43H
EXAEQU50H;上限个位
EXBEQU51H
EXCEQU52H
EXDEQU53H
EI0EQU54H;下限个位
EI1EQU55H
EI2EQU56H
EI3EQU57H
SEXEQU58H;上限数
SEIEQU59H;下限数
MAXEQU5AH;最大上限温度值
MINEQU5BH;最小下限温度值
TELEQU60H;温度低位
TEHEQU70H;温度高位
TELCEQU72H
TEHCEQU73H
SSETBIT00H
UPBIT01H;上限加
DOWNBIT02H;下限加
D1SBIT03H
FABIT04H
D1820BITP1.0
MAIN:
MOVSP,#80H;系统程序初始化
MOVP0,#00H
MOVP1,#0FFH
MOVP2,#0FFH
MOVA,#00H
MOVT00,A
MOVT01,A
MOVT02,A
MOVT03,A
MOVMAX,#01111101B
MOVMIN,#11001001B
MOVSEX,#01111101B
MOVSEI,#11001001B
SETBSSET
SETBUP
SETBDOWN
CLRD1S
CLRFA
MOVR7,#20
MOVTMOD,#01H
MOVTL0,#0B0H
MOVTH0,#3CH
MOVIE,#82H
SETBTR0
MLOOP:
LCALLDISP_SUB;调用温度显示子程序
LCALLKEY_SUB;调用键盘扫描子程序
JBSSET,MNEST0;设置键按下时,即SSET为0转移,否则顺序执行
LCALLTS_SUB;调用温度设置子程序
MNEST0:
JNBFA,MNEXT1;调用温度上下限设置键子程序
JNBD1S,MLOOP;不是1S转移,按键去抖动法
CLRD1S
LCALLRT_SUB;调用读温度子程序
LCALLBJ_SUB;调用报警子程序
LCALLTZS_SUB;调用温度计算处理子程序
MNEXT1:
SETBFA
LCALLZH_SUB;调用温度转变子程序
LJMPMLOOP
TZS_SUB:
MOVA,THE;温度计算处理子程序
ANLA,#80H
JZTZS1
CLRC
MOVA,TEL
CPLA
ADDA,#01H
MOVTEL,A
MOVA,TEH
CPLA
ADDCA,#00H
MOVTEH,A
MOVT03,#0BH
SJMPTZS2
TZS1:
MOVT03,#0AH
TZS2:
MOVA,TEL
ANLA,#0F0H
SWAPA
MOVTEL,A
MOVA,TEH
ANLA,#0FH
SWAPA
ORLA,TEL
MOVB,#64H
DIVAB
MOVT02,A
MOVA,#0AH
XCHA,B
DIVAB
MOVT01,A
MOVT00,B
TZRET:
RET
ZH_SUB:
;温度转变子程序
LCALLRST_SUB;调用DS18B20复位程序
MOVA,#0CCH;发跳过ROM命令
LCALLWRITE_SUB;调用写一个字节程序
MOVA,#44H;发温度转变命令
LCALLWRITE_SUB;写命令字
NOP
RET
RT_SUB:
;读温度子程序
LCALLRST_SUB;复位DS18B20
MOVA,#0CCH;发跳过ROM命令
LCALLWRITE_SUB;写命令字
MOVA,#0BEH;发读ROM命令
LCALLWRITE_SUB;写命令字
RT1:
LCALLREAD8_SUB;调用读DS18B20RAM内容
NOP
NOP
LCALLRST_SUB
MOVA,#0CCH
LCALLWRITE_SUB
MOVA,#0BEH
LCALLWRITE_SUB
LCALLREAD16_SUB
RTRET:
RET
READ8_SUB:
;读DS18B20RAM内容
CLREA
SETBD1820
MOVR6,#8
RE1:
CLRD1820
MOVR4,#2
NOP
SETBD1820
RE2:
DJNZR4,RE2
MOVC,D1820
RRCA
MOVR5,#32
RE3:
DJNZR5,RE3
DJNZR6,RE1
MOVTEL,A
SETBD1820
SETBEA
RET
READ16_SUB:
CLREA
SETBD1820
MOVR6,#16
RE4:
CLRD1820
MOVR4,#2
NOP
SETBD1820
RE5:
DJNZR4,RE5
MOVC,D1820
RRCA
MOVR5,#32
RE6:
DJNZR5,RE6
DJNZR6,RE4
MOVTEH,A
SETBD1820
SETBEA
RET
JCRC_SUB:
PUSHACC
MOVR6,#08H
CRC1:
XRLA,B
RRCA
MOVA,B
JNCCRC2
XRLA,#18H
CRC2:
RRCA
MOVB,A
POPACC
RRA
PUSHACC
DJNZR6,CRC1
POPACC
RET
WRITE_SUB:
;写一个字节程序
CLREA
MOVR3,#8
WRLOOP1:
SETBD1820
MOVR4,#8
RRCA
CLRD1820
WRLOOP2:
DJNZR4,WRLOOP2
MOVD1820,C
MOVR4,#32H
WRLOOP3:
DJNZR4,WRLOOP3
DJNZR3,WRLOOP1
SETBD1820
SETBEA
RET
RST_SUB:
;DS18B20复位程序
CLREA
RST0:
CLRD1820
MOVR2,#200
RST1:
CLRD1820
DJNZR2,RST1
SETBD1820
MOVR2,#32
RST4:
DJNZR2,RST4
CLRC
JBD1820,RST0
MOVR6,#80
RST5:
JBD1820,RST3
DJNZR6,RST5
LJMPRST0
RST3:
MOVR2,#242
RST2:
DJNZR2,RST2
SETBEA
RET
DISP_SUB:
;温度显示子程序
PUSHACC
MOVDPTR,#N_TAB
MOVA,T02
CJNEA,#0,DISP_3
MOVA,T01
CJNEA,#0,DISP_20
MOVT01,T03
MOVT02,#0AH
MOVT03,#0AH
LJMPDISP_3
DISP_20:
MOVT02,T03
MOVT03,#0AH
DISP_3:
MOVA,T03
MOVCA,@A+DPTR
MOVP0,A
CLRP2.0
SETBP2.1
SETBP2.2
SETBP2.3
LCALLDEL_SUB
LCALLDEL_SUB
DISP_2:
MOVA,T02
MOVCA,@A+DPTR
MOVP0,A
SETBP2.0
CLRP2.1
SETBP2.2
SETBP2.3
LCALLDEL_SUB
LCALLDEL_SUB
DISP_1:
MOVA,T01;十位显示程序
MOVCA,@A+DPTR
MOVP0,A
SETBP2.0
SETBP2.1
CLRP2.2
SETBP2.3
LCALLDEL_SUB
LCALLDEL_SUB
DISP_0:
MOVA,T00;个位显示程序
MOVCA,@A+DPTR
MOVP0,A
SETBP2.0
SETBP2.1
SETBP2.2
CLRP2.3
LCALLDEL_SUB
LCALLDEL_SUB
POPACC
RET
ZD_SUB:
MOVTL0,#0B0H
MOVTH0,#3CH
DJNZR7,DNEXT
MOVR7,#20
SETBD1S
DNEXT:
RETI
DEL_SUB:
SETBRS0
MOVR5,#2
DEL1:
MOVR4,#248
DEL2:
DJNZR4,DEL2
DJNZR5,DEL1
CLRRS0
RET
BJ_SUB:
;报警子程序
MOVA,TEH
PUSHACC
MOVA,TEL
PUSHACC
MOVA,TEH
ANLA,#80H
JZBJ1
MOVA,TEH
ANLA,#00000111B
MOVTEH,A
BJ1:
MOVA,TEH
ANLA,#00001111B
SWAPA
MOVTEH,A
MOVA,TEL
ANLA,#0F0H
SWAPA
ORLA,TEH
MOVTEH,A
CJNEA,SEX,BJ2
BJ2:
JCBJ6
CLRP1.2
BJ3:
CJNEA,SEI,BJ5
LJMPBJ6
BJ5:
JNCBJ6
CLRP1.1
BJ4:
CLRP2.5
LJMPBJRET
BJ6:
SETBP1.1
SETBP1.2
SETBP2.5
BJRET:
POPACC
MOVTEL,A
POPACC
MOVTEH,A
RET
KEY_SUB:
SETBP3.5;键盘扫描子程序
SETBP3.6
SETBP3.7
SETBSSET
SETBUP
SETBDOWN
JBP3.5,KEY_0
MOVR6,#10
D10:
LCALLDEL_SUB
DJNZR6,D10
JBP3.5,KEY_0
JNBP3.5,$
CLRSSET
KEY_0:
JBP3.6,KEY_1
MOVR6,#10
D11:
LCALLDEL_SUB
DJNZR6,D11
JBP3.6,KEY_1
CLRUP
KEY_1:
JBP3.7,KEY_2
MOVR6,#10
D12:
LCALLDEL_SUB
DJNZR6,D12
CLRDOWN
KEY_2:
RET
SEX_SUB:
LCALLKEY_SUB
JBUP,SEX_1
MOVA,SEX
CJNEA,MAX,SEX_0
NOP
LJMPSEX_1
SEX_0:
INCSEX
LJMPSEX_3
SEX_1:
JBDOWN,SEX_3
MOVA,SEX
CJNEA,SEI,SEX_2
NOP
LJMPSEX_3
SEX_2:
DECSEX
SEX_3:
MOVA,SEX
JNBACC.7,SEX_4
MOVT03,#0BH
CPLA
INCA
LJMPSEX_5
SEX_4:
MOVT03,#0AH
SEX_5:
MOVB,#64H
DIVAB
MOVT02,A
MOVA,B
MOVB,#0AH
DIVAB
MOVT01,A
MOVT00,B
RET
SEI_SUB:
LCALLKEY_SUB
JBUP,SEI_1
MOVA,SEI
CJNEA,SEX,SEI_0
NOP
LJMPSEI_1
SEI_0:
INCSEI
LJMPSEI_3
SEI_1:
JBDOWN,SEI_3
MOVA,SEI
CJNEA,MIN,SEI_2
NOP
LJMPSEI_3
SEI_2:
DECSEI
SEI_3:
MOVA,SEI
JNBACC.7,SEI_4
MOVT03,#0BH
CPLA
INCA
LJMPSEI_5
SEI_4:
MOVT03,#0AH
SEI_5:
MOVB,#64H
DIVAB
MOVT02,A
MOVA,B
MOVB,#0AH
DIVAB
MOVT01,A
MOVT00,B
RET
TS_SUB:
CLREA
LCALLSEX_SUB
MOVR6,#15
TS_0:
LCALLDISP_SUB
JBSSET,TS_3
TS_1:
LCALLSEI_SUB
MOVR6,#15
TS_2:
LCALLDISP_SUB
JBSSET,TS_4
LJMPTS_5
TS_3:
DJNZR6,TS_0
LJMPTS_SUB
TS_4:
DJNZR6,TS_2
LJMPTS_1
TS_5:
SETBEA
RET
END
五、设计总结
时光如箭,岁月如梭,转眼间为期三周的专业课程实习已经结束了,本次设计以AT89S52单片机为控制核心,利用其强大的处理功能,以及丰富的外围接口,实现智能温度采集和控制,此次设计系统有如下优点:
(1)结构简单,控制部分成本低廉,维护方便。
(2)配置灵活、方便、易于扩展。
通过此次智能温度采集与控制的综合设计,使我们巩固了专业知识,同时也了解了单片机在工业上的使用及单片机的编程、扩展口的使用,另外也懂得了单片机是如何应用在测控系统中的。
在此次设计过程中,通过不断摸索,开拓了思维,同时也解决了不少以前尚未弄明白的问题,同时也使我们的技术知识得到了巩固,操作能力得到了提高。
这次设计过程中,虽然