|
LCD1602顯示
DS1302系統(tǒng)時(shí)間
按鍵設(shè)定系統(tǒng)時(shí)間、工作時(shí)間、光照閾值(默認(rèn)開始時(shí)間為16點(diǎn),結(jié)束時(shí)間為5點(diǎn))
工作時(shí)間內(nèi)路燈點(diǎn)亮,凌晨12點(diǎn)后路燈關(guān)閉,有人或車通過是,路燈點(diǎn)亮10s
非工作時(shí)間光照強(qiáng)度低于閾值,路燈點(diǎn)亮
狀態(tài)檢測,路燈應(yīng)亮未亮,聲光報(bào)警
(通過檢測LED串聯(lián)電阻的電壓值,當(dāng)有電壓值時(shí),證明線路正常,無電壓值時(shí),線路故障)
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
路燈智能控制系統(tǒng).png (37.82 KB, 下載次數(shù): 90)
下載附件
Proteus仿真
2020-2-18 21:43 上傳
單片機(jī)源程序如下:
- /*******************************************************************************
- * 函數(shù)名 : work()
- * 函數(shù)功能 : 工作狀態(tài)
- * 輸入 : 無
- * 輸出 : 無
- *******************************************************************************/
- void work()
- {
- Read_time(); //轉(zhuǎn)換時(shí)間
- if(work_time_End!=0 && work_time_Start!=0) //工作時(shí)間已設(shè)置
- {
- if(hour >= work_time_Start) //當(dāng)前時(shí)間大于起始時(shí)間,如起始時(shí)間為19:00,當(dāng)前時(shí)間為21:00。
- {
- Data = AD(1);
- led_1 = 1; //點(diǎn)亮LED
- if(Data < 50) //未檢測到LED點(diǎn)亮
- Beep = 1; //聲光報(bào)警
- else //檢測到Led點(diǎn)亮
- Beep = 0; //停止報(bào)警
- }
- else if(hour < work_time_End) //當(dāng)前時(shí)間小于結(jié)束時(shí)間,如結(jié)束時(shí)間為06:00,當(dāng)前時(shí)間為04:00。
- {
- if(red_sr) //檢測到人或車
- {
- time = 0;
- light_flag = 1; //LED標(biāo)志置1,開始T0定時(shí)器計(jì)時(shí),點(diǎn)亮LED,10s后LED標(biāo)志清零,LED熄滅
- }
- if(light_flag) //LED標(biāo)志置1,檢測到人或車
- {
- led_1 = 1; //點(diǎn)亮LED
- EA = 1; //開啟中斷
- if(time > 10) //10s后
- {
- light_flag = 0; //LED標(biāo)志清零
- EA = 0; //關(guān)中斷
- time = 0; //計(jì)時(shí)清零
- }
- Data = AD(1);
- if(Data < 50) //未檢測到LED點(diǎn)亮
- Beep = 1; //聲光報(bào)警
- else //檢測到Led點(diǎn)亮
- Beep = 0; //停止報(bào)警
- }
- else
- led_1 = 0;
- }
- else
- {
- if(light < light_limit)
- {
- led_1 = 1;
- Data = AD(1);
- if(Data < 50) //未檢測到LED點(diǎn)亮
- Beep = 1; //聲光報(bào)警
- else //檢測到Led點(diǎn)亮
- Beep = 0; //停止報(bào)警
- }
- else
- led_1 = Beep = 0;
- }
- }
- }
復(fù)制代碼
|
評分
-
查看全部評分
|