基于51單片機的電動車防盜系統(tǒng)設(shè)計 數(shù)碼管顯示。ㄗ罱K版本)
文件全部放在附件中了,自行下載,包含電路圖、仿真圖、流程圖、仿真、程序。
51hei.png (2.82 KB, 下載次數(shù): 67)
下載附件
文件包含的內(nèi)容很全
2021-4-8 16:15 上傳
電動車防盜仿真修改數(shù)碼管顯示后最后版本.zip
(796.47 KB, 下載次數(shù): 57)
2021-4-8 10:14 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
功能如下:
1. 遙控器與主機采用315m無線方式通信,兩路檢測(震動+人體); 2. 遙控器上3個按鍵,功能是布防、撤防和報警提示; 3. 按下布防按鍵,主板人體感應(yīng)模塊和震動傳感器檢測人體和震動,當(dāng)檢測到有信號時,相應(yīng)的LED燈亮,蜂鳴器響報警。30S后停止報警,也可以通過撤防按鍵取消報警; 4. 當(dāng)在布防狀態(tài),兩個傳感器都檢測到信號,就都報警,同時對應(yīng)的指示燈亮,一路檢測到信號,也會有相應(yīng)的指示燈亮和報警; 5.加繼電器端口模擬被盜取時切斷整車電源。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
O1Y[95BF`]XN[S%ZNWE@0CN.png (105.96 KB, 下載次數(shù): 56)
下載附件
仿真圖
2021-4-8 10:06 上傳
電路原理圖如下:
MFN[E%6Z_]943EXGLDLAU3B.png (160.54 KB, 下載次數(shù): 59)
下載附件
電路原理圖(有源文件)
2021-4-8 10:03 上傳
單片機程序很簡潔:
#include <reg52.h>
#define uc unsigned char
#define ui unsigned int
sbit SOS = P1^2;//測試
sbit bufang = P1^4;//布放按鍵
sbit chefang= P1^3;//撤防
sbit baojing= P1^1;//蜂鳴器
sbit jdq = P1^0;//繼電器
sbit led1=P0^2;
sbit led2=P0^3;
sbit sos1=P0^0;//第一路報警
sbit sos2=P0^1;//第二路報警 //熱釋電
bit bdata flag,flag1;//flag布防標(biāo)志,flag1布防倒計時標(biāo)志
uc t,t1,js; //定時器專用變量
void delay(ui x) //延時函數(shù)1ms
{
ui i,j;
for(i=0;i<x;i++)
for(j=0;j<110;j++);
}
void kongzhi() //控制函數(shù)
{
if((bufang==1)&&(flag==0)) //在報警等待時按下布防鍵
{
delay(10);
if((bufang==1)&&(flag==0))
{
P2=0x85; //顯示字母b
t=0;
t1=0; //清零計時器
TR0=1; //打開計時器
baojing=0;
led1=0;
led2=0;
delay(500);
baojing=1;
led1=1;
led2=1;
}
}
if((flag==1)&&(sos1==0)) //震動傳感器按下,人體傳感器必然起作用,但是人體傳感器觸發(fā)震動傳感器不一定觸發(fā)//
{
flag1=1; //蜂鳴器鳴響
led1=0;
led2=0;
jdq=0;
TR0=1; //開啟定時器
}
if((flag==1)&&(sos2==0)) //報警按鍵按下
{
TR0=1;
led2=0;
}
if((flag==0)&&(SOS==1)) //報警按鍵按下
{
flag1=1; //蜂鳴器鳴響
led1=0;
led2=0;
P2=0xbf; //顯示"-"
jdq=0;
TR0=1; //開啟定時器
}
if(chefang==1) //撤防鍵按下
{
delay(10);
if(chefang==1)
{
{
P2=0xff; //關(guān)閉顯示
flag1=0;
baojing=1; //關(guān)閉蜂鳴器
flag=0; //停止計時器計時
TR0=0; //關(guān)閉計時器
led1=1;
led2=1;
jdq=1;
}
}
}
}
void init() //初始化函數(shù)
{
TH0=0x4b;
TL0=0xff;
TMOD=0x01;
EA=1;
ET0=1;
TR0=0; //定時器初始化
bufang=0;
SOS=0;
chefang=0; //按鍵初始化
jdq=1;
}
void main() //主函數(shù)
{
init(); //調(diào)用初始化
while(1)//循環(huán)
{
kongzhi();//控制函數(shù)
}
}
void time() interrupt 1//定時器函數(shù)
{
TH0=0x4b;
TL0=0xff; //重新賦初值
t++;
if(t==20)
{
t=0;
t1++;
if(t1==2)//計時到30s時開啟布防數(shù)碼管停止顯示 關(guān)閉定時器
{
t1=0;
flag=1;
P2=0xff;
TR0=0;
}
}
if((t>=10)&&(flag1==1))//報警
{
baojing=~baojing;
js++;
if(js==120)
{
js=0;
flag1=0;
baojing=1; //關(guān)閉蜂鳴器
flag=0; //停止計時器計時
TR0=0; //關(guān)閉計時器
led1=1;
led2=1;
jdq=1;
t=0;
t1=0; //清零計時器
TR0=1; //打開計時器
}
t=0;
}
}
|