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