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