温度检测报警器单片机课程设计Word文档下载推荐.docx
- 文档编号:6540826
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:21
- 大小:384.92KB
温度检测报警器单片机课程设计Word文档下载推荐.docx
《温度检测报警器单片机课程设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《温度检测报警器单片机课程设计Word文档下载推荐.docx(21页珍藏版)》请在冰点文库上搜索。
P0口:
P0口为一个8位漏极开路双向I/O口,每脚可吸收8TTL门流。
当P1口的管脚第一次写1时,定义为高阻输入。
P0口能够用于外部程序数据存储器,它可以被定义为数据/地址的八位。
在FLASH编程时,P0口作为原码输入口;
当FLASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个P1口是一个具有内部上拉电阻的8位双向I/O口,P1输出缓冲器能驱动4个TTL逻辑电平。
当对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
当作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
此外,P1.0和P1.2分别作为定时器/计数器2的外部计数输入(P1.0/T2)和定时器/计数器2的触发输入(P1.1/T2EX)。
在Flash编程和校验时,P1口接收低8位地址字节。
P2口:
P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TT逻辑电平。
对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
在访问外部程序存储器或用16位地址读取外部数据存储器(如执行MOVX@DPTR)时,P2口送出高8位地址。
在这种应用中,P2口使用很强的内部上拉发送1。
在使用8位地址(如MOVX@RI)访问外部数据存储器时,P2口输出P2锁存器的内容。
在Flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。
P3口:
P3口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。
对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
P3口也作为AT89S52特殊功能(第二功能)使用。
RST:
复位输入。
在晶振工作时,RST脚持续两个机器周期高电平将使单片机复位。
看门狗计时完成后,RST脚输出96个晶振周期的高电平。
特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。
在DISRTO默认状态下,复位高电平有效。
ALE/PROG:
地址锁存控制信号(ALE)在访问外部程序存储器时,锁存低8位地址的输出脉冲。
在Flash编程时,此引脚(PROG)也用做编程输入脉冲。
PSEN:
外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。
当AT89S52从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN将不被激活。
EA/VPP:
访问外部程序存储器控制信号。
为使能从0000H到FFFFH的外部程序存储器读取指令,EA必须接GND。
为了执行内部程序指令,EA应该接VCC。
在Flash编程期间,EA也接收12伏VPP电压。
XTAL1:
振荡器反相放大器和内部时钟发生电路的输入端。
XTAL2:
振荡器反相放大器的输出端。
1.2.2温度传感器工作原理
DS18B20数字温度计提供9-12位摄氏温度测量而且有一个由高低电平触发的可编程的不因电源消失而改变的报警功能。
DS18B20通过一个单线接口发送或接受信息,因此在中央处理器和DS18B20之间仅需一条连接线(加上地线)。
它的测温范围为-55~+125℃,并且在-10~+85℃精度为±
5℃。
除此之外,DS18B20能直接从单线通讯线上汲取能量,除去了对外部电源的需求。
每个DS18B20都有一个独特的64位序列号,从而允许多只DS18B20同时连在一根单线总线上;
因此,很简单就可以用一个微控制器去控制很多覆盖在一大片区域的DS18B20。
这一特性在HVAC环境控制、探测建筑物、仪器或机器的温度以及过程监测和控制等方面非常有用。
表1.2.2-1详细引脚说明
序号
名称
引脚功能描述
1
VCC
可选择的Vcc引脚。
当工作于寄生电源时,此引脚必须接地。
2
DQ
地信号。
3
GND
将数据写入暂存器的TH、TL字节
图1.2.2-1是表示DS18B20的方框图,表1.2.2-1已经给出了引脚说明。
64位只读存储器储存器件的唯一片序列号。
高速暂存器含有两个字节的温度寄存器,这两个寄存器用来存储温度传感器输出的数据。
除此之外,高速暂存器提供一个直接的温度报警值寄存器(TH和TL),和一个字节的的配置寄存器。
配置寄存器允许用户将温度的精度设定为9,10,11或12位。
TH,TL和配置寄存器是非易失性的可擦除程序寄存器(EEPROM),所以存储的数据在器件掉电时不会消失。
图1.2.2-1DS18B20方框图
DS18B20的核心功能是它的直接读数字的温度传感器。
温度传感器的精度为用户可编程的9,10,11或12位,分别以0.5℃,0.25℃,0.125℃和0.0625℃增量递增。
在上电状态下默认的精度为12位。
DS18B20启动后保持低功耗等待状态;
当需要执行温度测量和AD转换时,总线控制器必须发出[44h]命令。
在那之后,产生的温度数据以两个字节的形式被存储到高速暂存器的温度寄存器中,DS18B20继续保持等待状态。
当DS18B20由外部电源供电时,总线控制器在温度转换指令之后发起“读时序”(见单总线系统节),DS18B20正在温度转换中返回0,转换结束返回1。
如果DS18B20由寄生电源供电,除非在进入温度转换时总线被一个强上拉拉高,否则将不会由返回值。
寄生电源的总线要求在DS18B20供电节详细解释。
1.2.3时钟电路设计
MCS-51内部有一个用于构成震荡器的高增益反向放大器,此放大器的输入端和输出端分别是XTAL1和XTAL2,在XTAL1和XTAL2上外接晶振可构成时钟电路。
时钟电路在单片机系统中起着非常重要的作用,是保证系统正常工作的基础。
晶振频率的大小决定了单片机系统工作的快慢。
本次设计采用内部方式的外部时钟接法。
为达到振荡周期是12MHZ的要求,这里要采用12MHZ的晶振,电容C1、C2对频率有微调作用,故外接晶振时,C1和C2在本设计中选择30pF,振荡频率取12MHz。
晶振的两个引脚分别连到XTAL1和XTAL2振荡脉冲输入引脚。
具体连接图如图1.2.3-1所示:
图1.2.3-1时钟电路原理图
1.2.4复位电路设计
MCS-52单片机通常采用上电自动复位、按钮电平复位、外部脉冲复位、上电+按钮电平复位、程序运行监视复位等方式。
本设计采用上电复位,其原理图如图1.1.4-1所示,上电复位是利用电容充电来实现的,即上电瞬间RST/Vpd端的电位与Vcc相同,随着充电电流的减少,最后被嵌位在0V,采用3.3uF的CR1和10K的R29可以保证加在引脚上的高电平持续2个机器周期,即使单片机有效地复位。
图1.2.4-1复位电路原理图
2软件模块设计
2.1主程序
系统程序主要包括延时子程序、外部中断0服务子程序、外部中断1服务子程序、显示温度子程序、报警子程序、主程序等。
主程序的功能为:
按下开关键,使处于开的状态后,4位LED数码直接读出温度。
若按一下设置键,则可设置温度的上限,蜂鸣器滴滴滴报警,当所测的温度低于所设置的下限,二极管闪烁亮,蜂鸣器滴滴滴报警。
2.2主程序流程图
图2.2-1主程序流程图设计
在主程序流程图中,当开关键按下时,DS18B20开始工作,读出其温度值后,进行数据转换,下一步进行判断,是否超过所设定的温度上限和温度下限,若超过,则蜂鸣器发出声音,并在数码管上进行显示;
若没有超过,则蜂鸣器不响,并在数码管上进行显示,然后重复上述步骤。
2.3DS18B20软件设计流程图
DS18B20器件要求采用严格的通信协议,以保证数据的完整性。
该协议定义了几种信号类型:
复位脉冲、应答脉冲时隙;
写0,写1时隙;
读0,读1时隙。
与DS18B20的通信,是通过操作时隙完成单总线上的数据传输。
发送所有的命令和数据时,都是字节的低位在前,高位在后。
2.3.1读温度子程序设计流程图
读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。
其程序流程图如图2.3.1-1所示。
2.3.1-1读出温度子程序流程图
2.3.2温度转换命令程序设计
温度转换命令程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。
如图2.3.2-1所示。
图2.3.2-1温度转换命令子程序流程图
3系统调试
3.1硬件系统调试
对板子的安装和调试在整个设计过程中是很重要的一个过程,是把设计转换成实际物体的过程,也是对理论知识的一个实际应用。
对产品进行检测的过程中使用检测仪器有:
万用表、电源、示波器等器材。
其检测步骤有下述几类。
3.1.1不加电源检测
对照设计原理图以及实物,检查线路是否连线正确,包含是否存在误接、虚焊等;
用万用表检测焊接是否良好,元器件之间是否存在短路,各元件(三极管、点解电容、发光二极管等)极性是否正确。
3.1.2静态检测
将直流稳压电源准确输出,并连入电路板中,观察是否存在不正常现象,如元器件发烫,空气中产生难闻气味等。
如有上述现象,立即断开电源,检查各线路,各连接点,排除故障;
如没有发现异常现象,则用万用表检测各个连接点是否有满足需求的电压,如静态工作点、各个输入输出端、放大电路连接点等。
如与理论电压值相差较大,则检查是否存在元器件损坏等问题。
最终的目的是让整个电路工作在一个合适的状态。
3.2软件系统调试
软件调试是保证设计成果正常运作必不可少的步骤,通常软件调试分为静态调试和动态调试。
3.2.1静态调试
在静态调试中,第一种办法是输出寄存器的内容,在测试过程中出现问题,设法保留现场信息。
把所有寄存器和主存中有关部分的内容打印出来,进行分析。
还有一种方法是为取得关键变量的动态值,在程序中插入打印语句。
这是取得动态信息的简单方法,并可检验在某时间后某个变量是否按预期要求发生了变化。
此方法的缺点是可能输出大梁需要分析的信息,必须修改源程序才能插入打印语句,这可能改变关键的时序关系,引入新的错误。
3.2.2动态调试
通常利用程序语言提供的调试功能或专门的调试工具来分析程序的动态行为。
一般程序语言和工具提供的调试功能有检查主存和寄存器;
设置断点,即当执行到特定语句或改变特定变量的值时,程序停止执行,以便分析程序此时的状态。
4设计总结
本温度报警器,通过单片机实时检测温度传感器DS18B20的状态,并将DS18B20得到的数据进行处理。
上电后数码管显示当前的环境温度,当检测到的温度高于设置的报警值的时候,蜂鸣器报警同时报警灯闪烁,温度检测精确到0.1度。
并具有掉电保存功能,数据保存在单片机内部EEPOM中,进入设置界面后如果没有键按下系统会在15秒后自动退出设置界面。
由于采用了4节干电池供电使系统的抗干扰性得到加强。
在软件上,充分利用了STC89C52的系统资源,系统运行流畅。
本设计结构简单,调试方便,系统反映快速灵活,经实验测试,该温度报警系统设计方案正确、可行,各项指标稳定、可靠。
附录
附录1:
电路原理图
附录2:
PCB图
附录3:
仿真图
附录4:
实物图
附录5:
程序
#include"
config.h"
#include<
STC15F2K60S2.h>
intrins.h>
#defineDQP00
#defineBuzzerP01
#defineLEDP02
unsignedcharTPH;
//存放温度值高字节
unsignedcharTPL;
//存放温度值低字节
unsignedcharx1,y1,y2,x2,y3,y4;
unsignedcharcodetable1[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
//段码
unsignedcharcodetable2[]={0xef,0xdf};
//位码
unsignedcharcount_led;
bitfalg=0;
/**********************************************************************
延时X微妙
不同的工作环境,需要调整此函数
此延时函数是使用1T的指令周期进行计算,与传统的12T的MCU不同
**********************************************************************/
voidDelayXus(unsignedcharn)
{
while(n--)
{
_nop_();
}
}
复位DS18B20,并检测设备是否存在
voidDS18B20_Reset()
falg=1;
while(falg)
DQ=0;
//送出低电平复位信号
DelayXus(240);
//延时至少480us
DQ=1;
//释放数据线
DelayXus(60);
//等待60us
falg=DQ;
//检测存在脉冲
//等待设备释放数据线
DelayXus(180);
从DS18B20读1字节数据
unsignedcharDS18B20_ReadByte()
unsignedchari;
unsignedchardat=0;
for(i=0;
i<
8;
i++)//8位计数器
dat>
>
=1;
//开始时间片
DelayXus
(1);
//延时等待
//准备接收
//接收延时
if(DQ==1)dat|=0x80;
//读取数据
returndat;
向DS18B20写1字节数据
voidDS18B20_WriteByte(unsignedchardat)
chari;
if((dat&
0X01)==0x01)//送出数据
{
DQ=1;
}
else
{
DQ=0;
//等待时间片结束
//恢复数据线
//恢复延时
dat>
/*********************************************************************/
voidDs18b20_Convert(void)
DS18B20_Reset();
//设备复位
DS18B20_WriteByte(0xCC);
//跳过ROM命令
DS18B20_WriteByte(0x44);
//开始转换命令
while(!
DQ);
//等待转换完成
DS18B20_WriteByte(0xBE);
//读暂存存储器命令
TPL=DS18B20_ReadByte();
//读温度低字节
TPH=DS18B20_ReadByte();
//读温度高字节
//--------------------------------------------------------------------------------------------
x1=((TPL&
0xf0)>
4)+((TPH&
0x07)<
<
4);
y1=x1/10;
//温度十位
y2=x1%10;
//温度个位
}
voidTimer0_ISR(void)interrupt1
TR0=0;
TH0=0Xf5;
TL0=0X00;
TR0=1;
count_led++;
if(count_led>
=3)count_led=1;
switch(count_led)
{
case1:
P3=table2[0];
P1=table1[y1];
break;
case2:
P3=table2[1];
P1=table1[y2];
break;
default:
;
}
if((x1/10)>
=2&
&
(x1%10)>
=5)
Buzzer=0;
LED=0;
Buzzer=1;
LED=1;
voidmain(void)
TMOD=0x01;
TH0=0Xf5;
TL0=0X00;
ET0=1;
TR0=1;
EA=1;
while
(1)
{
Ds18b20_Convert();
参考文献
[1]吴金华.基于单片机的温度监控报警系统设计[J].电子·
电路,2013,26(4):
146-149
[2]丁幼春.基于AT89C51和DS18B20的多点温度监测报警系统[J].农机化研究,2007,
6(5):
121-125
[3]马云峰,陈子夫,李培全.数字温度传感器DS18820的原理与应用[J].电子元器
件应用,2002,2
(1):
23-25.
[4]赵建林.小型温度报警器的设计及实现[J].河南科技:
上半月
2012(17)59-60
[5]戴佳等.51单片机C语言应用程序设计实例精讲[M].北京:
电子工业出版社,2006.
[6]楼然苗.51系列单片机设计实例[M].北京:
北京航空航天大学出版社,2003
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 温度 检测 报警器 单片机 课程设计