文章目錄
- 一、功能簡介
- 二、軟件設計
- 三、實驗現象
- 聯系作者
一、功能簡介
本項目使用Proteus8仿真51單片機控制器,使用報警模塊、LCD1602液晶模塊、按鍵模塊、人體紅外傳感器、HCSR04超聲波、有害氣體傳感器、SG90舵機等。
主要功能:
系統運行后,LCD1602顯示超聲波檢測距離和傳感器采集有害氣體濃度值極其閾值。
當感應到有人時,桶蓋舵機開啟,此時系統檢測垃圾高度是否超限,如果超限,則開啟壓縮機打包,完成后蜂鳴器報警提示。當人離開,桶蓋舵機關閉。如果有害氣體濃度超限,蜂鳴器報警。
可通過按鍵K3進入閾值設置模式,K1和K2調節數據,K4確定。
二、軟件設計
/*
作者:嗨小易(QQ:3443792007)*///系統數據獲取
void sys_data_get(void)
{while(1){//獲取距離sys_ctrl.dis=ultrasonicwave_measure();//獲取有害氣體濃度sys_ctrl.gas=pcf8591_read_adcvalue(0);sys_ctrl.gas=cal_map(sys_ctrl.gas,0,255,0,99);//檢測有無人if(IRED==0)sys_ctrl.man=1; else sys_ctrl.man=0; break;}
}//系統數據顯示
void sys_data_show(void)
{while(1){//距離顯示lcd1602_show_nums(4,0,sys_ctrl.dis,3,0);//氣體濃度顯示lcd1602_show_nums(4,1,sys_ctrl.gas,2,0);//有無人狀態顯示if(sys_ctrl.man==1)lcd1602_show_string(8,1,"Y");else lcd1602_show_string(8,1,"N");//距離閾值顯示lcd1602_show_nums(13,0,sys_ctrl.dish,3,0);//氣體閾值顯示lcd1602_show_nums(13,1,sys_ctrl.gash,2,0);//閾值閃爍指示switch(sys_ctrl.mode){case 1://距離lcd1602_show_string(13,0," ");delay_ms(50);lcd1602_show_nums(13,0,sys_ctrl.dish,3,0);break;case 2://氣體lcd1602_show_string(13,1," ");delay_ms(50);lcd1602_show_nums(13,1,sys_ctrl.gash,2,0);break;}break; }
}//系統數據設置
void sys_data_set(void)
{u8 key=0;key=key_scan(0);//設置if(key==KEY3_PRESS){sys_ctrl.mode++;if(sys_ctrl.mode>2)sys_ctrl.mode=1;}//閾值設置模式if(sys_ctrl.mode!=0){//加if(key==KEY1_PRESS){switch(sys_ctrl.mode){case 1://距離sys_ctrl.dish++;if(sys_ctrl.dish>500)sys_ctrl.dish=0;break;case 2://氣體sys_ctrl.gash++;if(sys_ctrl.gash>99)sys_ctrl.gash=0;break;} }//減else if(key==KEY2_PRESS){switch(sys_ctrl.mode){case 1://距離sys_ctrl.dish--;if(sys_ctrl.dish<0)sys_ctrl.dish=500;break;case 2://氣體sys_ctrl.gash--;if(sys_ctrl.gash<0)sys_ctrl.gash=99;break;} }//確定else if(key==KEY4_PRESS){sys_ctrl.mode=0; } }
}//系統功能控制
void sys_fun_ctrl(void)
{static u8 oneflag=0;//如果紅外檢測到有人if(sys_ctrl.man==1){//打開桶蓋舵機steer_control(2);//如果垃圾高度到達閾值,開啟打包if(sys_ctrl.dis>sys_ctrl.dish){if(oneflag==0)//壓縮機啟動一次{oneflag=1;_dc_motor_zturn();delay_ms(1000);_dc_motor_stop();beep_alarm(100,2000);} }else oneflag=0;}//如果紅外未檢測到有人else{//關閉桶蓋舵機steer_control(0); }//如果有害氣體濃度高于閾值,報警if(sys_ctrl.gas>sys_ctrl.gash)beep_alarm(10,1000);
}
三、實驗現象
B站演示視頻:https://space.bilibili.com/444388619
聯系作者
視頻地址:https://space.bilibili.com/444388619/video
專注于51單片機、STM32、國產32、DSP、Proteus、arduino、ESP32、物聯網軟件開發,PCB設計,視頻分享,技術交流。