偶然看到TB上有熱釋電模塊,就想自己做一個報警器,或者走廊燈,可是純模塊的話輸出時間啊,玩不出花樣,不能按照自己的想法做出各種改變,那就用單片機來解決吧。壓縮包里有原理圖,bom,PCB還有keil文件,程序里具體說明都有。
Altium Designer畫的原理圖和PCB圖如下:(51hei附件中可下載工程文件)
51hei.png (34.8 KB, 下載次數: 50)
下載附件
2020-4-2 16:06 上傳
按鍵 6*6*高度自選
直插按鍵 PCB少打孔了
電容 22uf 5*11規格
10uf 5*11規格
三極管 9012 9013
單片機 15W201s
DC接口 5.5*2.1規格
電阻 10K
穩壓 5V
蜂鳴器 12V
模塊 熱釋電 微波感應
單片機源程序如下:
- #include<stc15.h> //stc15單片機的頭文件
- #include<intrins.h>
- unsigned char dengdai; //定義函數集
- sbit hongwai=P3^1; //位定義
- sbit fengming=P1^1; //位定義
- void csh(void) //中斷初始化函數
- {
- P0M0 = 0x00;
- P0M1 = 0x00;
- P1M0 = 0x00;
- P1M1 = 0x00;
- P2M0 = 0x00;
- P2M1 = 0x00;
- P3M0 = 0x00;
- P3M1 = 0x00;
- P4M0 = 0x00;
- P4M1 = 0x00;
- P5M0 = 0x00;
- P5M1 = 0x00;
- P6M0 = 0x00;
- P6M1 = 0x00;
- P7M0 = 0x00;
- P7M1 = 0x00;
- //
- IT1 = 1; //設置INT1的中斷類型 (1:僅下降沿 0:上升沿和下降沿)
- EX1 = 1;
- // //設置INT0的中斷類型 (1:僅下降沿 0:上升沿和下降沿)
- IT0=1;
- EX0=1;
-
- EA=1;
- }
- void delay(unsigned int amt) //@12.000MHz 1000ms 一秒鐘的延時
- { unsigned int w;
- unsigned char i, j, k;
- for(w=amt;w>0;w--)
- {
- _nop_();
- _nop_();
- i = 46;
- j = 153;
- k = 245;
- do
- {
- do
- {
- while (--k);
- } while (--j);
- } while (--i);
- }
- }
- void main()
- {
- csh(); //初始化外中斷
- dengdai=0; //微波的話就保留,紅外就把這句去掉
- delay(60); //微波的話就保留,紅外就把這句去掉 微波啟動會有一分鐘的三四次校準輸出,那就屏蔽前一分鐘的微波輸出
- dengdai=1; //讓外中斷可以運行
- hongwai=1; //使引腳處于輸入狀態
- fengming=1; //使引腳處于輸出關閉狀態
- while(1)
- {
- if(hongwai==0&dengdai==1) //當模塊發來一個低電平把電路下拉成低電平,同時處于非等待可以輸出狀態
- {
- delay(1); //防止報警誤觸發
- if(hongwai==0&dengdai==1) //確認被觸發
- {
- fengming=0; //蜂鳴器輸出
- delay(10);//報警持續時間
- fengming=1; //蜂鳴器輸出
- }
- }
- }
-
- }
- void exint0() interrupt 0 //外中斷函數
- {
- dengdai=0; //馬上讓模塊觸發不生效
- fengming=1; //馬上關閉蜂鳴器
- delay(45); //等待45秒
- dengdai=1; //恢復模塊生效
- }
- void exint1() interrupt 2
- {
- ;//這個外中斷功能你自己想干啥干啥,給你預留好了
-
- }
復制代碼
51hei.png (11.37 KB, 下載次數: 51)
下載附件
2020-4-2 16:07 上傳
所有資料51hei提供下載:
紅外報警.zip
(2.56 MB, 下載次數: 16)
2020-4-2 13:46 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|