用ADC0808设计的调温报警器Word格式.docx
- 文档编号:18138380
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:15
- 大小:277.58KB
用ADC0808设计的调温报警器Word格式.docx
《用ADC0808设计的调温报警器Word格式.docx》由会员分享,可在线阅读,更多相关《用ADC0808设计的调温报警器Word格式.docx(15页珍藏版)》请在冰豆网上搜索。
基于AT89C51单片机设计的调温报警器,可以及时调节温度,根据外部温度作出相应的调节,可添加DS18B20读取的温度超过上下限时系统报警,在生活的许多方面都有着对温度进行杆子和控制的需要,所以也就使得其应用范围不断扩大。
1.设计任务
1.要求
1根据读取的温度进行调节温度。
2温度显示功能利用LED数码管显示温度
3报警功能当温度超过设定的上下限温度报警灯闪烁且发出不同频率的声音报警
4本例ADC0808仅作为外部调温器,由单片机读入温度数值后,转换成两位10进制表示的温度值,输出到数码管显示,并与预设的警报温度对比,在不高于警报温度时,LED灯成流水灯闪烁,当高于警报温度后,单片机控制LED进行警报闪烁提示并控制蜂鸣器发出声音警报,从而达到温控警报功能。
2.硬件设计
系统设计框图
AT89S51
主控模块
电路主要由AT89C52单片机上拉电阻DS18B20温度传感器LED数码管蜂鸣器和两个LED灯组成利用Proteus仿真软件。
搭建硬件电路如图1所示在设计中利用温度传感器DS18B20测取温度信息通过单片机与传感器进行通信读取温度信息并写入。
控制信息温度上下限利用单片机的P0口控制LED数码管来显示温度当温度超过设定的上下限温度时利用单片机的P3.7控制蜂鸣器发出报警声同时报警灯会亮各部分组成说明如下。
1.单片机
采用AT89C52AT89C52是51系列单片机的一个型号它是ATMEL公司生产的AT89C52是一个低电压高性能CMOS8位
单片机片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器器件采用ATMEL公司的高密度非易失性存储技术生产兼容标准MCS-51指令系统片内置通用8位中央处理器和Flash存储单元具有较高的性价比。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
I/O口作为输入口时有两种工作方式,即所谓的读端口与读引脚。
读端口时实际上并不从外部读入数据,而是把端口锁存器的内容读入到内部总线,经过某种运算或变换后再写回到端口锁存器。
只有读端口时才真正地把外部的数据读入到内部总线。
输入缓冲器CPU将根据不同的指令分别发出读端口或读引脚信号以完成不同的操作。
这是由硬件自动完成的,不需要我们操心,1然后再实行读引脚操作,否则就可能读入出错,如果不对端口置1,端口锁存器原来的状态有可能为0Q端为0Q^为1加到场效应管栅极的信号为1,该场效应管就导通对地呈现低阻抗,此时即使引脚上输入的信号为1,也会因端口的低阻抗而使信号变低使得外加的1信号读入后不一定是1。
若先执行置1操作,则可以使场效应管截止引脚信号直接加到三态缓冲器中实现正确的读入,由于在输入操作时还必须附加一个准备动作,所以这类I/O口被称为准双向口。
89C51的P0/P1/P2/P3口作为输入时都是准双向口。
单片机的最小系统如图2所示:
18引脚和19引脚接时钟电路,XTAL1接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,XTAL2接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出.第9引脚为复位输入端,接上电容,电阻及开关后够上电复位电路,20引脚为接地端,40引脚为电源端.单片机的最小系统如下图所示:
图2中的晶振频率为12MHz,复位方式为上电自动复位[8]-[9]。
2、LED显示电路
由7段4位共阴数码管和上拉电阻组成用于显示温度采用动态显示方式实现温度显示。
3.蜂鸣器
主要用于报警当温度超过设计的上下限温度时利用P3.7定时翻转电平产生驱动波形对蜂鸣器进行驱动。
4.报警灯
LED灯D1D2分别为下限上限温度报警灯当温度超过设计的下限或上下温度时利用P3.1P3.0分别控制报警灯闪烁。
软件设计思路
本程序由主程序读取温度子程序显示温度子程序和报警子程序组成主程序负责系统的初始化然后读取温度并显示同时判读温度是否超过设定的上下限若超过则进入报警程序。
2.芯片
1.ADC0808
ADC0808是CMOS单片型逐次逼近式A/D转换器,她具有8路模拟开关、地址锁存与译码器、比较器、8位开关树形A/D转换器。
2.引脚功能(外部特性)
ADC0808芯片有28条引脚,采用双列直插式封装,如右图所示。
各引脚功能如下:
1~5和26~28(IN0~IN7):
8路模拟量输入端。
8、14、15和17~21:
8位数字量输出端。
22(ALE):
地址锁存允许信号,输入,高电平有效。
6(START):
A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。
7(EOC):
A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。
9(OE):
数据输出允许信号,输入,高电平有效。
当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。
10(CLK):
时钟脉冲输入端。
要求时钟频率不高于640KHZ。
12(VREF(+))和16(VREF(-)):
参考电压输入端
11(Vcc):
主电源输入端。
13(GND):
地。
23~25(ADDA、ADDB、ADDC):
3位地址输入线,用于选通8路
极限参数
电源电压(Vcc):
6.5V
控制端输入电压:
-0.3V~15V
其它输入和输出端电压:
-0.3V~Vcc+0.3V
贮存温度:
-65℃~+150℃
功耗(T=+25℃):
875mW
引线焊接温度:
①气相焊接(60s):
215℃;
②红外焊接(15s):
220℃
ADC0808/0809内部结构框图
out8为最低位-out1为最高位,out8-out1分别接单片机的P0.0到P0.7端。
抗静电强度:
400V模拟输入中的一路
(1).只要求一个端口即可实现通信。
(2).在DS18B20中的每个器件上都有独一无二的序列号。
(3).实际应用中不需要外部任何元器件即可实现测温。
(4).测量温度范围在-55。
C到+125。
C之间。
(5).数字温度计的分辨率用户可以从9位到12位选择。
(6).内部有温度上、下限告警设置。
地址
选中通道
ADDC
ADDB
ADDA
1
IN0
IN1
IN2
IN3
IN4
IN5
IN6
IN7
3.ADC0808工作时序
ADC0808工作时序
工作时序与使用说明
ADC0808的工作时序如图11.21所示。
当通道选择地址有效时,ALE信号一出现,地址便马上被锁存,这时转换启动信号紧随ALE之后(或与ALE同时)出现。
START的上升沿将逐次逼近寄存器SAR复位,在该上升沿之后的2μs加8个时钟周期内(不定),EOC信号将变低电平,以指示转换操作正在进行中,直到转换完成后EOC再变高电平。
微处理器收到变为高电平的EOC信号后,便立即送出OE信号,打开三态门,读取转换结果。
模拟输入通道的选择可以相对于转换开始操作独立地进行(当然,不能在转换过程中进行),然而通常是把通道选择和启动转换结合起来完成(因为ADC0808的时间特性允许这样做)。
这样可以用一条写指令既选择模拟通道又启动转换。
在与微机接口时,输入通道的选择可有两种方法,一种是通过地址总线选择,一种是通过数据总线选择。
如用EOC信号去产生中断请求,要特别注意EOC的变低相对于启动信号有2μs+8个时钟周期的延迟,要设法使它不致产生虚假的中断请求。
为此,最好利用EOC上升沿产生中断请求,而不是靠高电平产生中断请求。
3.软件设计
.流程设计
1.报警子程序框图
2.扬声器发声子程序流程图
3.主程序流程图
1.
:
4.电路原理图
1.元器件:
7SEG-MPX4-CC-BLUE(7段4位共阴极LED数码管)、ADC0808(8位模/数转换器)、AT89C51(单片机)、CAP(瓷片电容)、CAP-ELEC(电解电容)、CRYSTAL(晶体振荡器)、LED-YELLOW(发光二极管)、POT-HG(高精度电位计)、RES(电阻)、RESPACK-8(带公共端得8路电阻)、SOUNDER(发声器)
2模块设计说明
1.单片机模块:
作为系统的整体控制器,通过P3.3管脚与DS18B20单总线通信,获取环境温度,显示到数码管,并与预设的报警温度比较,当不超过报警温度时,控制LED呈流水灯闪烁,当高于报警温度时,控制LED频繁闪烁,并控制蜂鸣器发出固定频率声音报警。
2.数码管模块:
数码管用来显示当前的温度值
。
3.ADC0808
作为外部调温器,系统并没有真正读取外部温度。
3.仿真
Keil软件环境下进行芯片的型号选择AT89C51编写C程序并保存之后利用Keil编译器编译调试编译成功后生成HEX文件程序经Keil软件编译通过后就可利用Protues软件进行仿真了。
绘制好的仿真电路中用鼠标左键单击单片机弹出EditCommponent对话框在ProgrameFile中载入已经生成的HEX文件然后单击OK按钮保存设计最后单击运行按钮即可进行功能仿真。
运行时LED数码管将显示外部温度调节,ADC0808改变外界温度时新的温度将刷新显示在LED数码管上当温度超过设定的上下限时会发出不同频率的报警声。
结束语
以上所述即是调温报警器的设计全过程,经过多次的反复测试与分析,对电路的原理及功能更加熟悉,同时提高了设计能力与及对电路的分析能力.经过此设计,基本完成了设计任务的要求。
硬件层面而言操相对简单。
介绍了基于单片机的调温报警器能检测温度同时当温度超过设定的上下限时报警并发出频率不同的声音。
参考文献
[1]彭伟.单片机100例.电子工业出版社。
2011
[2]王法能.单片机原理及应用,科学出版社.2004
[3]余家春.Protel99SE电路设计实用教程[M].中国铁道出版社,2004.
[4]谭浩强.C语言程序设计[M].北京:
清华大学出版社,2000
附录
程序
#include<
reg51.h>
#defineucharunsignedchar
#defineuintunsignedint
ucharcodeDSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
ucharTemperature[]={0,0,0};
sbitST=P2^5;
sbitOE=P2^7;
sbitEOC=P2^6;
sbitCLK=P2^4;
sbitH_LED=P3^0;
sbitL_LED=P3^1;
sbitBEEP=P3^7;
uchart=0;
voidDelayMS(unitx)
{
uchari;
while(x--)for(i=0;
i<
120;
i++);
}
voidShow_Temperature()
uchari,DSY_IDX[]={0xF7,0xFB,0xFD};
for(i=0;
i<
3;
i++)}
P0=DSY_CODE[Temperature[i]];
P2&
=DSY_IDX[i];
DelayMS(5);
P2|=0x0F;
}
voidmain()
uchard;
IE=0x8a;
TMOD=18;
TH0=245;
TL0=0;
TH1=(65536-1000)/256;
TL1=(65536-1000)&
256;
TR0=1;
H_LED=L_LED=1;
while
(1)
{
ST=0;
ST=1;
if(EOC==1)
OE=1;
d=P1;
OE=0;
Temperature[2]=d/100;
Temperature[1]=d%100/10;
Temperature[0]=d%10;
Show_Temperature();
if(d<
60)
TR1=1;
L_LED=!
H_LED;
else
if(d>
160)
H_LED=!
L_LED;
TR1=0;
break;
voidT0_INT()interrupt1
CLK=~CLK;
voidT1_INT()interrupt3
TL1=(65536-1000)%256;
BEEP=~BEEP;
{if(++t!
=150)return;
else
=60)return;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ADC0808 设计 调温 报警器