基于51單片機智能垃圾桶
(仿真+程序+原理圖+PCB+設計報告)
功能介紹
具體功能:
1.ULN2003驅動步進電機控制打開關閉垃圾桶;
2.一個紅外對管檢測有沒有人,一個紅外對管檢測垃圾滿;
3.若檢測到人,垃圾桶自動打開,扔完垃圾后再自動關閉;
4.若檢測到垃圾滿了,聲光報警,垃圾桶就不會自動打開;
5.這時可以按手動按鍵打開垃圾桶,清理垃圾;
添加圖片注釋,不超過 140 字(可選)
程序
#include <reg52.h> //包括一個52標準內核的頭文件
#include<intrins.h>
#define uchar unsigned char //定義一下方便使用
#define uint unsigned int
#define ulong unsigned long//***********************************************
sbit HW1=P3^3;
sbit HW2=P3^5; //紅外IO端口定義,HW1是檢測垃圾是否滿,HW2是檢測是否有人扔垃圾
bit HW2_flag=0; //紅外觸發標志位
sbit beep=P3^4; //蜂鳴器端口定義
sbit led1=P1^0; //指示燈IO
sbit key1=P1^5; //按鍵IO
bit key1_flag=0; //按鍵按下標志位
uchar loop; //步進電機轉動變量
bit hand_flag=0;
uint m_i; //電機轉動次數計數
uchar ms,c_ms,p_ms=199;
uchar open_time=0;uchar beep_num; //蜂鳴器響次數控制變量
uchar open_flag=0; //控制電機轉動與不轉動總開關,置一,執行電機控制,否則不執行電機控制
bit open_flag1=1; //該變量,等于0,說明是開蓋子,等于1是關蓋子
uchar code fz[]= //正轉數據
{0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};uchar code zz[]= //反轉數據
{0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01};
void Delay800us() //短延時函數
{unsigned char i, j;i = 2;j = 139;do{while (--j);} while (--i);
}void proc() //正反轉函數
{if(open_flag==1&&!open_flag1) //關{ P2=zz[loop]; //將正轉數據賦值給P2端口,P2接的是步進電機loop=(loop+1)%8; //循環加,Loop變化范圍是 0 - 7,這樣結合上一句話就可循環將轉動數據送給P2Delay800us(); //短延時一下,調節這個短延時,可以控制步進電機的轉動速度,越小就越快m_i++; //變量加加,當加到1080,相當于送1080次電機轉動數據,就停止加,同時停止驅動電機,1080是目測的,差不多剛好打開蓋子的數據if(m_i==1080){m_i=0; //清零open_flag=0; //清零,關電機控制open_flag1=1; //數據反轉}}else if(open_flag==2&&open_flag1) //開{P2=fz[loop]; //步驟和上面的基本一致,都是送電機轉動數據,使其轉動,然后轉動1080次,就停止轉動loop=(loop+1)%8;Delay800us();m_i++;if(m_i==1080){m_i=0;open_flag1=0;open_flag=0;}}
}
******//完整資料
***//***微信公眾號:木子單片機********/
void dis_pose()
{if(!HW1) //當這個紅外被觸發,相當于垃圾桶滿了{led1=0; //指示燈點亮if(!key1) //按鍵按下{if(key1_flag) //這個標志位只有當按鍵沒按下的時候才會置一,功能是確保只執行一次{key1_flag=0; //清零,這樣只有當按鍵松開之后才回去置一,才會再次執行if(open_flag1) //如果此時為關蓋子{hand_flag=1; open_flag=2; //變量置 2 執行開蓋子}else {hand_flag=0;open_flag=1; //如果是開蓋子,執行這個,會去關蓋子} }}else key1_flag=1; //按鍵松開,就置一}else {led1=1; //指示燈熄滅if(!HW2) //這個紅外被觸發,有人要扔垃圾{if(HW2_flag) //和按鍵的功能是一樣的,確保只執行一次{HW2_flag=0; //清零,只有人離開才會置一if(open_flag1) open_flag=2; //執行開蓋子}}else {HW2_flag=1;}}
}
硬件設計
使用元器件:
單片機:STC89C52;
(注意:單片機是通用的,無論51還是52、無論stc還是at都一樣,引腳功能都一樣。程序也是一樣的。)
蜂鳴器;10uF電解電容;
30p瓷片電容;電源接口;
輕觸按鍵;9012三極管;
5mm紅色LED/黃色LED;
5P白插座+步進電機;
1K電阻;10K電阻;自鎖開關;
ULN2003電機驅動+DIP16底座;
紅外接收模塊+3p排針;
12M晶振;導線:若干;
添加圖片注釋,不超過 140 字(可選)
流程圖:
添加圖片注釋,不超過 140 字(可選)
設計資料
01仿真圖
本設計使用proteus7.8和proteus8.9兩個版本設計,向下兼容,無需擔心!具體如圖!
添加圖片注釋,不超過 140 字(可選)
02原理圖
本系統原理圖采用Altium Designer19設計,具體如圖!
添加圖片注釋,不超過 140 字(可選)
03程序
本設計使用keil5版本編程設計!具體如圖!
添加圖片注釋,不超過 140 字(可選)
04設計報告
一萬一千字設計報告,具體如下!
添加圖片注釋,不超過 140 字(可選)
05設計資料
全部資料包括程序(含注釋)、仿真源文件 、AD原理圖、任務書、PCB、設計報告、流程圖、實物圖、元件清單等。具體內容如下,全網最全! !
添加圖片注釋,不超過 140 字(可選)
點贊分享一起學習成長。