欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
單片機報警器
[打印本頁]
作者:
baozi1997
時間:
2018-6-21 16:34
標題:
單片機報警器
圖片1.png
(284.33 KB, 下載次數: 18)
下載附件
2018-6-21 16:46 上傳
#include<reg51.h>
//------兩個常用的宏定義------//
#define uchar unsigned char
#define uint unsigned int
void DelayMS(uint); // 延時函數的聲明
void Time0_Init(); // 定時器0初始化
void K1_scan();
void Display();
sbit beep=P1^7; // 蜂鳴器發出聲報警
sbit led=P1^0; // 二極管發出光報警
sbit K1=P3^7; // 報警裝置觸發按鈕
uint num1; // 十秒的計數變量
uint num2; // 六秒的計數變量
uchar flag; // 報警按鍵檢測的標志位
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(); //一直檢測按鍵是否按下
while(flag==1) //flag=1表示按下,執行相應功能
{
led=0; //開led
beep=0; //開蜂鳴器
flag=0;
LedBuffer[0]=0x3f;
LedBuffer[1]=0x79;
LedBuffer[2]=0x3f;
LedBuffer[3]=0x79; //清標志位
}
while(num1==100) //五秒延時到,關閉警報
{
led=1;
beep=1;
LedBuffer[0]=0x00;
LedBuffer[1]=0x00;
LedBuffer[2]=0x00;
LedBuffer[3]=0x00;
}
while(num2>100 && num2<300 && flag==1) //關閉后十秒內有鍵按下則重開警報
{
led=0;
beep=0;
flag=0;
LedBuffer[0]=0x3f;
LedBuffer[1]=0x79;
LedBuffer[2]=0x3f;
LedBuffer[3]=0x79;
}
}
}
//------按鍵檢測函數------//
void K1_scan()
{
while(K1==0)
{
DelayMS(10);
if(K1==1)
break;
while(K1==0);
EA=1;
flag=1;
}
}
//------定時器0初始化------//
void Time0_Init()
{
TMOD=0x01; //選擇定時器0工作在定時方式1
TH0=0x3c; //定時50ms,裝初值
TL0=0xb0;
ET0=1; //開啟定時中斷
EA=0; //關總中斷
TR0=1; //開啟定時器T0
}
//------定時器0中斷------//
void Timer0() interrupt 1
{
TH0=0x3c; //重裝初值
TL0=0xb0;
Display();
num1++; //計時變量+1
num2++; //
}
//------顯示函數------//
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);
}
//------延時函數MS級------//
void DelayMS(uint x)
{
uint i,j;
for(i=x;i>0;i--)
for(j=124;j>0;j--);
} }
復制代碼
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1