標(biāo)題:
單片機(jī)報(bào)警器
[打印本頁(yè)]
作者:
baozi1997
時(shí)間:
2018-6-21 16:34
標(biāo)題:
單片機(jī)報(bào)警器
圖片1.png
(284.33 KB, 下載次數(shù): 18)
下載附件
2018-6-21 16:46 上傳
#include<reg51.h>
//------兩個(gè)常用的宏定義------//
#define uchar unsigned char
#define uint unsigned int
void DelayMS(uint); // 延時(shí)函數(shù)的聲明
void Time0_Init(); // 定時(shí)器0初始化
void K1_scan();
void Display();
sbit beep=P1^7; // 蜂鳴器發(fā)出聲報(bào)警
sbit led=P1^0; // 二極管發(fā)出光報(bào)警
sbit K1=P3^7; // 報(bào)警裝置觸發(fā)按鈕
uint num1; // 十秒的計(jì)數(shù)變量
uint num2; // 六秒的計(jì)數(shù)變量
uchar flag; // 報(bào)警按鍵檢測(cè)的標(biāo)志位
uchar code Ledchar[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
uchar LedBuffer[4]={0x00,0x00,0x00,0x00};
void main()
{
Time0_Init();
led=1;
beep=1;
flag=0;
while(1)
{
K1_scan(); //一直檢測(cè)按鍵是否按下
while(flag==1) //flag=1表示按下,執(zhí)行相應(yīng)功能
{
led=0; //開(kāi)led
beep=0; //開(kāi)蜂鳴器
flag=0;
LedBuffer[0]=0x3f;
LedBuffer[1]=0x79;
LedBuffer[2]=0x3f;
LedBuffer[3]=0x79; //清標(biāo)志位
}
while(num1==100) //五秒延時(shí)到,關(guān)閉警報(bào)
{
led=1;
beep=1;
LedBuffer[0]=0x00;
LedBuffer[1]=0x00;
LedBuffer[2]=0x00;
LedBuffer[3]=0x00;
}
while(num2>100 && num2<300 && flag==1) //關(guān)閉后十秒內(nèi)有鍵按下則重開(kāi)警報(bào)
{
led=0;
beep=0;
flag=0;
LedBuffer[0]=0x3f;
LedBuffer[1]=0x79;
LedBuffer[2]=0x3f;
LedBuffer[3]=0x79;
}
}
}
//------按鍵檢測(cè)函數(shù)------//
void K1_scan()
{
while(K1==0)
{
DelayMS(10);
if(K1==1)
break;
while(K1==0);
EA=1;
flag=1;
}
}
//------定時(shí)器0初始化------//
void Time0_Init()
{
TMOD=0x01; //選擇定時(shí)器0工作在定時(shí)方式1
TH0=0x3c; //定時(shí)50ms,裝初值
TL0=0xb0;
ET0=1; //開(kāi)啟定時(shí)中斷
EA=0; //關(guān)總中斷
TR0=1; //開(kāi)啟定時(shí)器T0
}
//------定時(shí)器0中斷------//
void Timer0() interrupt 1
{
TH0=0x3c; //重裝初值
TL0=0xb0;
Display();
num1++; //計(jì)時(shí)變量+1
num2++; //
}
//------顯示函數(shù)------//
void Display()
{
P2=0xfe; P0=LedBuffer[3]; DelayMS(2);
P2=0xfd; P0=LedBuffer[2]; DelayMS(2);
P2=0xfb; P0=LedBuffer[1]; DelayMS(2);
P2=0xf7; P0=LedBuffer[0]; DelayMS(2);
}
//------延時(shí)函數(shù)MS級(jí)------//
void DelayMS(uint x)
{
uint i,j;
for(i=x;i>0;i--)
for(j=124;j>0;j--);
} }
復(fù)制代碼
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1