|
利用熱釋電紅外傳感器來測試人體接近目標(biāo)的方法,當(dāng)人走近垃圾桶時讓桶蓋自動開合的自動感應(yīng)垃圾桶設(shè)計。采用單片機來控制一個直流電機轉(zhuǎn)動,實現(xiàn)垃圾桶蓋的閉合控制。
proteus仿真圖
仿真圖
單片機源程序:
//功能:自動感應(yīng)垃圾桶(判斷是否有人接近,有人電機正轉(zhuǎn),離開反轉(zhuǎn))
#include "reg51.h" //包含頭文件reg51.h,定義了51單片機的專用寄存器
sbit hw=P0^1; //紅外控制端
sbit P1_3=P1^3; //電機驅(qū)動控制端
sbit P1_4=P1^4; //電機驅(qū)動控制端
sbit P1_5=P1^5; //電機驅(qū)動控制端
//函數(shù)名:delay
//函數(shù)功能:實現(xiàn)軟件延時
//形式參數(shù):無符號整型變量i,控制空循環(huán)的循環(huán)次數(shù)
//返回值:無
void delay(unsigned int i) //延時函數(shù)
{
unsigned int k;
for(k=0;k<i;k++);
}
void main()
{
bit flag; //桶蓋打開標(biāo)志位變量,為1表示桶蓋打開,否則表示桶蓋關(guān)閉
flag=0; //桶蓋關(guān)閉標(biāo)志
while(1)
{
if((hw==1)&&(flag==0))
{ P1_3=1; //電機運轉(zhuǎn),控制打開桶蓋
P1_4=0;
P1_5=1;
delay(20000); //延時,等待桶蓋打開完成
P1_5=0; //電機停轉(zhuǎn),保持桶蓋打開狀態(tài)
flag=1; //設(shè)置桶蓋打開標(biāo)志
}
else if(hw==0&&flag==1)
{
P1_3=0; //電機反向運轉(zhuǎn),關(guān)閉桶蓋
P1_4=1;
P1_5=1;
delay(20000); //延時,等待桶蓋關(guān)閉完成
P1_5=0; //電機停轉(zhuǎn),保持桶蓋關(guān)閉狀態(tài)
flag=0; //設(shè)置桶蓋關(guān)閉標(biāo)志
}
}
}
keil5代碼和proteus8.8仿真下載:
Proteus8.8與代碼.7z
(100.11 KB, 下載次數(shù): 44)
2022-10-7 04:53 上傳
點擊文件名下載附件
keil5代碼和proteus仿真
|
評分
-
查看全部評分
|