附件包含:智能路燈的源代碼、AD軟件原理圖、proteus仿真
用按鍵代替人體感應模塊,按鍵按下代表熱釋電模塊檢測到人
LM393+電位器模擬光強,向左調代表光弱,向右調代表光強
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
仿真
電路原理圖如下:
單片機源程序如下:
- #include<reg51.h>
- #include<intrins.h>
- #include<absacc.h> //頭文件
- #define uc unsigned char
- #define ui unsigned int//宏定義
- sbit GM=P1^0; //光敏
- sbit RT=P1^5; //人體紅外
- sbit KZ=P3^5; //繼電器控制燈
- uc sec=0;
- void init()//初始化函數
- {
- GM=0;//光敏置低
- RT=0;//人體紅外置低
- TMOD=0x01; //定時器工作方式
- TH0=0x3c;
- TL0=0xb0; //賦初值50ms
- ET0=1; //打開中斷允許開關
- TR0=1; //打開定時器定時開關
- EA=1; //打開中斷總開關
- }
- void main()//主函數
- {
- init();//初始化函數
- while(1);//空循環
- }
- void T0_time() interrupt 1 //定時器執行函數,熱釋電模塊和光線感應和控制繼電器都是在定時器里完成
- {
- uc m; //定義變量m
- TH0=0x3c;
- TL0=0xb0; //重新賦初值50ms
- m++; //m加一次是50ms
- if(m>=20) //加到20次,就是一秒
- {
- m=0; //m清零
- if(RT==0||GM==0) //當熱釋電和光敏有一個不符合條件(符合條件就是熱釋電檢測到人,光敏檢測到環境光線弱)
- sec++; //sec變量加
- if(RT==1&&GM==1&&sec<=5)//當熱釋電和光敏都符合條件并且sec變量小于等于5
- {
- sec=0; //sec清零
- KZ=0; //控制繼電器打開
- }
- if((RT==0||GM==0)&&sec>5)//當熱釋電和光敏有一個不符合條件并且sec大于5時
- {
- sec=0; //sec清零
- KZ=1; //控制繼電器關閉
- }
- }
- }
復制代碼
附件
Keil代碼與Proteus仿真下載:
智能路燈.7z
(170.39 KB, 下載次數: 78)
2022-4-8 19:04 上傳
點擊文件名下載附件
上述原理圖、仿真、程序可下載附件查看
|