① 單片機脈沖報警電路工作原理
此報警器主要功能部分採用成品的模塊,所以比較容易製作。它有遙控設定防盜、遙控關閉防盜自動鎖定引擎和防搶劫等功能。工作原理如下:電源接通後按動遙控器防盜設定鍵(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)確認鍵:在設置狀態時,按下此鍵後,單片機按照新的初始值進行倒計時及顯示倒計時的數改搭字。如果已經處於計時狀態則此鍵無效。