① 单片机脉冲报警电路工作原理
此报警器主要功能部分采用成品的模块,所以比较容易制作。它有遥控设定防盗、遥控关闭防盗自动锁定引擎和防抢劫等功能。工作原理如下:电源接通后按动遥控器防盗设定键(A键),HY988A I/O端输出跳变高电平经D3使T3导通HY-5高响度喇叭发声作为回应信号。同HY988A A输出端输出高电平经R1为T1提供基极电流,这时如果HY966受到轻微震动,其输出端输出高电平脉冲使T1导通,T1的导通使C1瞬间充电至+5V左右,此电压高于比较器参考电压,比较器反转输出高电平经 A1B 缓冲后驱动继电器吸合、HY-5喇叭报警。此后如 HY966 不在受到震动C1经R4缓慢放电,当C1上的电压放电至低于比较器参考电压时,比较器反转输出低电平,继电器释放、报警停止,继续警戒状态。如果在报警过程中按遥控器关闭防盗键(B键),则HY988A A输出端变为低电平 T1 失去基极电流,同时经 D2 使C1快速放电,报警立刻停止。以后不论HY966有无受到震动都不会使T1导通而触发报警,防盗警戒解除,可正常驾驶。另外如车被启动按遥控器任意按键都会使喇叭回应、引擎熄火,此功能可做防抢或寻车使用。 器件选用:震动监测部分用 HY966微震动传感器,它灵敏度高并且可以调整,使用时按芯线颜色连接。遥控功能部分采用,HY988A两位遥控组件,只用其A和I/O两个输出端,遥控器A键作为防盗设定、B键作为防抢、关闭防盗用。报警部分用高响度喇叭,只用将喇叭引线按正负接入即可,其声极可达120db;比较和缓冲器用一块 LM358 双运放。三端稳压采用78L06;继电器用4123型躅点电流大于5A。其它元件参数按图中标示。
接线方法:将调试好的报警器用合适的外壳装好,把报警器正极与车用电瓶正极相连,负极搭铁或接电瓶负极;震动传感器紧贴车体安装好,将摩托或其它机动车原点火线剪开上端接继电器 A点,下端接继电器 B点。接好后按防盗设定键,喇叭回应一声,进入警戒状态,这时如果车被轻微震动或移动,都将触发报警,喇叭发出120db强力警号的同时继电器吸合点火线断开
② 基于单片机的火灾自动报警系统
基于单片机的火灾自动报警系统通常由感应器、控制器和报警器等部分组成。感应器可以根据环境中的相关参数,如温度、烟雾等检测火灾情况。控制器根据感应器检测到的态闭蠢信息触发报警器发出声音或者光线等信号,态轮同时可以控制一些设备执行自动投用灭火剂等规避措施。
火灾自动报警系统中自动报警的参数一般是温度和烟雾。温度达到一定的数值,比如超过70摄氏度时,可以判断这个区域内很可能发生了火灾;而检测烟雾则能较早地捕捉到火灾,其烟雾浓度较高时则可以判断火灾的程度。这些参数都是经过行业标准和实践验证得出的,并按照相关要求进行技术开发的。为了使系统能够及时、准确地报警,不调高或者调低这些报警参数。
国标中对自帆陪动报警系统有着较为详细的规定,比如建筑物的消防设施设计规范国家标准GB50016-2014中明确规定了各类建筑物的火灾自动报警系统的性能和技术要求。同时还有烟雾探测器和水喷灭火系统的相关行业标准,如烟雾探测器行业标准GB 4715-2005,和水喷灭火系统行业标准GB 50031-2009等。这些行业标准都详细规定了火灾自动报警系统、探测器、灭火系统的安装和使用要求。
需要注意的是,因地区和建筑形式的差异,这些标准会有一些差异,并且根据具体情况建议在系统设计时,应参照施工和设计方面相应的标准规范。
③ 51单片机送低电平就报警,想问下报警的原理请仔细点,谢谢了
图中利用三极管来驱动蜂鸣器,此处PNP三极管9012工作在饱和产、截止状态,即当其基极为高电平时截止,低电平时饱和。故当51单片机送低电平时Q1饱和导通,LS1得电发声实现报警。
④ 以AT89C51单片机和DS18B20实现温度检测显示并报警的程序和电路图,显示用M016L液晶模块显示
汇编语言程序:
;*********************************************************************
;程序适合单个DS18B20和MCS-51单片机的连接,晶振为12MHz
;测量的温度范围-55℃~+99℃,温度精确到小数点后一位
;*********************************************************************
TEMPER_L EQU 30H ;存放从DS18B20中读出的高、低位温度值
TEMPER_H EQU 31H
TEMPER_NUM EQU 32H ;存放温度转换后的整数部分
TEMPER_POT EQU 33H ;存放温度转换后的小数部分
FLAG0 EQU 34H ;FLAG0存放温度的符号
DQ EQU P1.0 ;DS18B20数据线
RS BIT P1.7 ;LCD1602控制线定义
RW BIT P1.6
E BIT P1.5
SkipDs18b20 EQU 0CCH ;DS18B20跳过ROM命令
StartDs18b20 EQU 44H ;DS18B20温度变换命令
ReadDs EQU 0BEH ;DS18B20读暂存器命令
ORG0000H
SJMPMAIN
ORG0040H
MAIN:MOVSP,#60H
ACALL LCD_INIT
MOV A,#80H ;lcd第1行第1列开始显示temperature:
ACALL WC51R
MOV A,#'t'
ACALL WC51DDR
MOV A,#'e'
ACALL WC51DDR
MOV A,#'m'
ACALL WC51DDR
MOV A,#'p'
ACALL WC51DDR
MOV A,#'e'
ACALL WC51DDR
MOV A,#'r'
ACALL WC51DDR
MOV A,#'a'
ACALL WC51DDR
MOV A,#'t'
ACALL WC51DDR
MOV A,#'u'
ACALL WC51DDR
MOV A,#'r'
ACALL WC51DDR
MOV A,#'e'
ACALL WC51DDR
MOV A,#':'
ACALL WC51DDR
REP:LCALLGET_TEMPER ;读出转换后的温度值
LCALLTEMPER_COV
MOV A,#0c6H ;lcd第2行第7列开始显示温度
ACALL WC51R
MOV A,FLAG0 ;显示符号
ACALL WC51DDR
MOV A,TEMPER_NUM ;温度整数拆分成十位和个位显示
MOV B,#10
DIV AB
ADD A,#30H
CJNE A,#30H,REP1 ;如果十位为0不显示
MOV A,#20H
REP1:ACALL WC51DDR
MOV A,B
ADD A,#30H
ACALL WC51DDR
MOV A,#'.' ;显示小数点
ACALL WC51DDR
MOV DPTR,#TABLE
MOV A,TEMPER_POT ;显示小数部分
MOVC A,@A+DPTR
ACALL WC51DDR
LJMPREP
;DS18B20复位程序
DS18B20_INIT:SETB DQ
NOP
NOP
CLR DQ
MOVR7,#9
INIT_DELAY:CALL DELAY60US
DJNZ R7,INIT_DELAY
SETB DQ
CALL DELAY60US
CALL DELAY60US
MOV C,DQ
JC ERROR
CALL DELAY60US
CALL DELAY60US
CALL DELAY60US
CALL DELAY60US
RET
ERROR:CLR DQ
SJMP DS18B20_INIT
RET
;读DS18B20一个字节到累加器A程序
READ_BYTE: MOV R7,#08H
SETB DQ
NOP
NOP
LOOP:CLR DQ
NOP
NOP
NOP
SETB DQ
MOV R6,#07H
DJNZ R6,$
MOV C,DQ
CALL DELAY60US
RRC A
SETB DQ
DJNZ R7,LOOP
CALL DELAY60US
CALL DELAY60US
RET
;累加器A写到DS18B20程序
WRITE_BYTE:MOV R7,#08H
SETB DQ
NOP
NOP
LOOP1:CLR DQ
MOV R6,#07H
DJNZ R6,$
RRC A
MOV DQ,C
CALL DELAY60US
SETB DQ
DJNZ R7,LOOP1
RET
DELAY60US:MOV R6,#1EH
DJNZ R6,$
RET
;读温度程序
GET_TEMPER:CALL DS18B20_INIT ;DS18B20复位程序
MOV A,#0CCH ;DS18B20跳过ROM命令
CALL WRITE_BYTE
CALL DELAY60US
CALL DELAY60US
MOV A,#44H ;DS18B20温度变换命令
CALL WRITE_BYTE
CALL DELAY60US
CALL DS18B20_INIT ;DS18B20复位程序
MOV A,#0CCH ;DS18B20跳过ROM命令
CALL WRITE_BYTE
CALL DELAY60US
MOV A,#0BEH ;DS18B20读暂存器命令
CALL WRITE_BYTE
CALL DELAY60US
CALL READ_BYTE ;读温度低字节
MOV TEMPER_L,A
CALL READ_BYTE ;读温度高字节
MOV TEMPER_H,A
RET
;将从DS18B20中读出的温度拆分成整数和小数
TEMPER_COV:
MOV FLAG0,#'+' ;设当前温度为正
MOV A,TEMPER_H
SUBB A,#0F8H
JC TEM0 ;看温度值是否为负?不是,转
MOV FLAG0,#'-' ;是,置FLAG0为'-'
MOV A,TEMPER_L
CPL A
ADD A,#01
MOV TEMPER_L,A
MOV A,TEMPER_H
CPL A
ADDC A,#00
MOV TEMPER_H,A
TEM0:
MOV A,TEMPER_L ;存放小数部分到TEMPER_POT
ANL A,#0FH
MOV TEMPER_POT,A
MOV A,TEMPER_L ;存放小数部分到TEMPER_NUM
ANL A,#0F0H
SWAP A
MOV TEMPER_NUM,A
MOV A,TEMPER_H
SWAP A
ORL A,TEMPER_NUM
MOV TEMPER_NUM,A
RET
;LCD初始化子程序
LCD_INIT:MOV A,#00000001H ;清屏
ACALL WC51R
MOV A,#00111000B ;使用8位数据,显示两行,使用5×7的字型
LCALL WC51R
MOV A,#00001100B ;显示器开,光标关,字符不闪烁
LCALL WC51R
MOV A,#00000110B ;字符不动,光标自动右移一格
LCALL WC51R
RET
;检查忙子程序
F_BUSY:PUSH ACC ;保护现场
MOV P2,#0FFH
CLR RS
SETB RW
WAIT: CLR E
SETB E
JB P2.7,WAIT ;忙,等待
POP ACC ;不忙,恢复现场
RET
;写入命令子程序
WC51R: ACALL F_BUSY
CLR E
CLR RS
CLR RW
SETB E
MOV P2,ACC
CLR E
RET
;写入数据子程序
WC51DDR:ACALL F_BUSY
CLR E
SETB RS
CLR RW
SETB E
MOV P2,ACC
CLR E
RET
TABLE:DB 30H,31H,31H,32H,33H,33H,34H,34H
DB 35H,36H,36H,37H,38H,38H,39H,39H ;小数温度转换表
END
C语言程序:
//程序适合单个DS18B20和MCS-51单片机的连接,晶振为12MHz
//测量的温度范围-55℃~+99℃,温度精确到小数点后一位
#include<REG52.H>
#defineucharunsignedchar
#defineuintunsignedint
sbit DQ=P1^0; //定义端口
sbit RS=P1^7;
sbit RW=P1^6;
sbit EN=P1^5;
union{
ucharc[2];
uintx;
}temp;
ucharflag;//flag为温度值的正负号标志单元,"1"表示为负值,"0"时表示为正值。
uintcc,cc2;//变量cc中保存读出的温度值
floatcc1;
ucharbuff1[13]={"temperature:"};
ucharbuff2[6]={"+00.0"};
//检查忙函数
void fbusy()
{
P2=0xff;
RS=0;
RW=1;
EN=1;
EN=0;
while((P2&0x80))
{
EN=0;
EN=1;
}
}
//写命令函数
void wc51r(uchar j)
{
fbusy();
EN=0;
RS=0;
RW=0;
EN=1;
P2=j;
EN=0;
}
//写数据函数
void wc51ddr(uchar j)
{
fbusy(); //读状态;
EN=0;
RS=1;
RW=0;
EN=1;
P2=j;
EN=0;
}
void init()
{
wc51r(0x01); //清屏
wc51r(0x38); //使用8位数据,显示两行,使用5*7的字型
wc51r(0x0c); //显示器开,光标开,字符不闪烁
wc51r(0x06); //字符不动,光标自动右移一格
}
voiddelay(uintuseconds) //延时程序
{
for(;useconds>0;useconds--);
}
ucharow_reset(void) //复位
{
ucharpresence;
DQ=0; //DQ低电平
delay(50); //480ms
DQ=1; //DQ高电平
delay(3); //等待
presence=DQ; //presence信号
delay(25);
return(presence); //0允许,1禁止
}
ucharread_byte(void) //从单总线上读取一个字节
{
uchari;
ucharvalue=0;
for(i=8;i>0;i--)
{
value>>=1;
DQ=0;
DQ=1;
delay(1);
if(DQ)value|=0x80;
delay(6);
}
return(value);
}
voidwrite_byte(ucharval) //向单总线上写一个字节
{
uchari;
for(i=8;i>0;i--) //一次写一字节
{
DQ=0;
DQ=val&0x01;
delay(5);
DQ=1;
val=val/2;
}
delay(5);
}
voidRead_Temperature(void) //读取温度
{
ow_reset();
write_byte(0xCC); //跳过ROM
write_byte(0xBE); //读
temp.c[1]=read_byte();
temp.c[0]=read_byte();
ow_reset();
write_byte(0xCC);
write_byte(0x44); //开始
return;
}
voidmain() //主程序
{
uchar k;
delay(10);
EA=0;
flag=0;
init();
wc51r(0x80); //写入显示缓冲区起始地址为第1行第1列
for(k=0;k<13;k++) //第一行显示提示信息"currenttempis:"
{wc51ddr(buff1[k]);}
while(1)
{
delay(10000);
Read_Temperature(); //读取双字节温度
cc=temp.c[0]*256.0+temp.c[1];
if (temp.c[0]>0xf8){flag=1;cc=~cc+1;}elseflag=0;
cc1=cc*0.0625; //计算出温度值
cc2=cc1*100; //放大100倍,放在整型变量中便于取数字
buff2[1]=cc2/1000+0x30;if(buff2[1]==0x30)buff2[1]=0x20;//取出十位,转换成字符,如果十位是0不显示。
buff2[2]=cc2/100-(cc2/1000)*10+0x30;//取出个位,转换成字符
buff2[4]=cc2/10-(cc2/100)*10+0x30;//取出小数点后一位,转换成字符
if(flag==1)buff2[0]='-';elsebuff2[0]='+';
wc51r(0xc5); //写入显示缓冲区起始地址为第2行第6列
for(k=0;k<6;k++) //第二行显示温度
{wc51ddr(buff2[k]);}
}
}
⑤ 请问一下,压力传感器将信号传给单片机,单片机产生信号控制报警电路的原理是什么最好有电路图。
压力传感器过来的压力信号,经AD转换变成数字量后,进入单片机,单片机将这些数字量进行标定,并设定阈值,但数字量的值超过阈值后,单片机就发出报警。这些主要是在程序里控制。
⑥ 单片机设定时间报警怎么处理
我冬天漏脚
关注
单片机定时报警C语明族言程序,单片机控制的简易定时报警器电路设计( - 控制/MCU - 电子发烧友网... 转载
2021-05-17 12:29:32
我冬天漏脚
码龄5年
关注
单片机控制的简易定时报警器电路设计(含电路图和程序)
设计一个单片机控制的简易定时报警器。要求根据设定的初始值(1-59秒)进行倒计时,当计时到0时数码管闪烁“00”(以1Hz闪烁),按键功能如下:
(1)设定键:在倒计时模式时,按下此键后停止倒计时,进入设置状态;如果已经处于设置状态则此键无效。
(2)增一键:在设置状态时,每按一次递增键,初始值的数字增1。
(3)递一键:在设置状态时,每按一次递减激歼弊键,初始值的数字减1。
(4)确认键:在设置状态时,按下此键后,单片机按照新的初始值进行倒计时及显示倒计时的数改搭字。如果已经处于计时状态则此键无效。