久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4247|回復: 10
打印 上一主題 下一主題
收起左側

單片機紅外對射進出門開關燈程序(已在廁所中使用)

  [復制鏈接]
跳轉到指定樓層
樓主
做它的目的是提示廁所內有人  不用走近后才被里面的人提示  其他人在遠處看到裝在外面的燈亮了就知道里面有人 紅外接收頭遮擋后重新接收到38khz信號會有一個低脈沖  通過判斷兩個接收頭遮擋的先后順序判斷進出  按鍵可以切換進出判斷

缺點是發射的38khz信號里不含有加密數據 接收端沒有解碼判斷 容易受到太陽光干擾造成進出不亮不滅   
進去時蜂鳴器響一聲 出來響兩聲  如果受到太陽光干擾就沿著進或出的方向靠近接收端揮手就能開燈或關燈   燈開啟后延時七八分鐘自動熄滅

制作出來的實物圖如下:


電路原理圖如下:



單片機源程序如下:
發射38khz方波
;12MHZ

                 ORG 0000H
                 SJMP STA
                 ORG 000BH
                 LJMP T0ISR
                 ORG 0030H
STA:
        ;         MOV TMOD,#02H                   ;AT89C2051        12MHZ
        ;         MOV TL0,#0B2H;#064H        ;
        ;         MOV TH0,#0FFH;#0FFH        ;
        ;         SETB TR0
        ;         SETB ET0
        ;         SETB EA
        ;         SJMP $
              MOV TMOD,#00010010B  ;STC15F104W         12MHZ
              MOV TH0,#0F4H           
              MOV TL0,#0F4H              
              SETB ET1
              SETB ET0
              SETB EA
              SETB TR1
              SETB TR0
                          SJMP $
T0ISR:
                 CPL P3.4
                 CPL P3.5
                 RETI
         END

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
接收
;12MHZ

               
                 SETB P3.3;IN1 紅外接收頭輸入端
                SETB P3.4;IN2 紅外接收頭輸入端
                SETB P3.5;LED 遮擋、延時指示        
                CLR  P3.1;OUT 輸出控制電器
                SETB P3.0;蜂鳴器                 
                SETB P3.2;切換 A<=>B
                X EQU 04H;切換標志位        
        SETB X
                LCALL DELAY;
                LCALL DELAY;
                CLR  P3.0;蜂鳴器
                MOV  60H,#00
        MOV  61H,#00
                MOV  62H,#00
                MOV  63H,#00 ;自動熄滅延時
MAIN1:        MOV  66H,#00
        MOV  67H,#00
                MOV  68H,#00
            SETB P3.5;LED 遮擋、延時指示               
                LCALL DELAY;

                LCALL DELAY;            
                LCALL DELAY;
                LCALL DELAY;
                LCALL DELAY;
                LCALL DELAY;
                LCALL DELAY;            
                LCALL DELAY;
                LCALL DELAY;
                LCALL DELAY;
                LCALL DELAY;
                LCALL DELAY;
                LCALL DELAY;
                LCALL DELAY;                        
MAIN0:  JNB P3.4,KK111;         IN1;  關燈
        JNB P3.3,KK222;         IN2   開燈        
                JNB P3.2,QIEHUAN;切換 A<=>B        
            DJNZ 62H,MAIN0
        DJNZ 61H,MAIN0
            DJNZ 60H,MAIN0
                DJNZ 63H,MAI ;自動熄滅延時
            CLR P3.1; OUT  輸出關閉
MAIN:   JNB P3.4,KK111;         IN1;  關燈
        JNB P3.3,KK222;         IN2   開燈        
                JNB P3.2,QIEHUAN;切換 A<=>B        
                LJMP MAIN;
MAI:    MOV  60H,#240
       MOV  61H,#240
           MOV  62H,#240
           LJMP MAIN0;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
QIEHUAN:LCALL DELAY;
                LCALL DELAY;
        JNB P3.2,MAIN;
        CPL X;
                SETB P3.0;蜂鳴器
        JNB P3.2,$
                LCALL DELAY;
                CLR  P3.0;蜂鳴器
        LJMP MAIN1
////////////////////////////////////
KK111: MOV  66H,#50
       MOV  67H,#240
           MOV  68H,#240
           CLR P3.5;LED 遮擋、延時指示
RLA:   JB P3.3,RLL;         IN2
       JNB X,QH1;切換 A<=>B
QH2:   CLR P3.1; OUT        輸出關閉
       SETB P3.0;蜂鳴器
           LCALL DELAY;
           CLR  P3.0;蜂鳴器
           LCALL DELAY;
           SETB P3.0;蜂鳴器
           LCALL DELAY;
           CLR  P3.0;蜂鳴器
           LJMP MAIN1;
////////////////////////////////////////////
RLL:   DJNZ 68H,RLA
       DJNZ 67H,RLA
           DJNZ 66H,RLA        
           LJMP MAIN1;   
////////////////////////////////////      
KK222: MOV  66H,#50
       MOV  67H,#240
           MOV  68H,#240
           CLR P3.5;  LED 遮擋、延時指示
RRA:   JB P3.4,RRR;         IN1
           JNB X,QH2;切換 A<=>B
QH1:   SETB P3.1; OUT         輸出開啟
           SETB P3.0;蜂鳴器
           LCALL DELAY;
           CLR  P3.0;蜂鳴器
           MOV  60H,#240
       MOV  61H,#240
           MOV  62H,#240
           MOV  63H,#20
            LJMP MAIN1;
///////////////////////////////////////            
RRR:   DJNZ 68H,RRA
       DJNZ 67H,RRA
           DJNZ 66H,RRA        
           LJMP MAIN1;
////////////////////////////////////////
;秒延時子程序
DELAY: MOV R4,#5;10
           MOV R5,#248;248
       MOV R6,#248;
D10:   DJNZ R6,D10;
       DJNZ R5,D10;$
       DJNZ R4,D10
       RET
       END;


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:253767 發表于 2020-5-8 07:18 | 只看該作者
謝謝分享!!!
回復

使用道具 舉報

板凳
ID:282850 發表于 2020-5-8 14:24 | 只看該作者
思路很好,盒子及整體做工優秀。與我一樣是實戰派
回復

使用道具 舉報

地板
ID:305511 發表于 2020-5-9 13:11 | 只看該作者
挺有意思的!
回復

使用道具 舉報

5#
ID:584814 發表于 2020-5-15 07:35 | 只看該作者
去掉單片機可有效降低成本和故障率
回復

使用道具 舉報

6#
ID:261025 發表于 2020-5-27 21:08 | 只看該作者
man1234567 發表于 2020-5-15 07:35
去掉單片機可有效降低成本和故障率

還有一個版本我沒發  數碼管顯示進去+1 出來-1  減到0關閉燈  用的是2.3寸數碼管 單片機用的是貼片的 和數碼管固定在一起
回復

使用道具 舉報

7#
ID:1075398 發表于 2025-3-3 15:51 | 只看該作者
我也做了一個類似功能的,也是放廁所門口,程序是請人幫寫的,有問題, 會自已亮,會不到時間滅,會很長時間不滅,湊合用了好幾年了,改天發圖片上來
回復

使用道具 舉報

8#
ID:1075398 發表于 2025-3-3 16:00 | 只看該作者
把它改為C語言版,誰驗證一下#include <stc15.h> #include <intrins.h>  // 發射部分代碼 #if 0 // 發射代碼,通過定義宏切換發射/接收 /************** 發射程序 **************/ sbit TxPin1 = P3^4; // 38kHz輸出引腳 sbit TxPin2 = P3^5;  void Timer0_Init() {     TMOD = 0x12;    // 定時器0模式2(8位自動重裝)     TH0 = 0xF4;     // 12MHz下產生38kHz方波     TL0 = 0xF4;     ET0 = 1;        // 允許定時器0中斷     EA = 1;         // 開總中斷     TR0 = 1;        // 啟動定時器0 }  void main() {     P3M0 = 0x00;    // 設置P3為準雙向口     P3M1 = 0x00;     Timer0_Init();     while(1); }  void Timer0_ISR() interrupt 1 {     TxPin1 = !TxPin1; // 翻轉輸出     TxPin2 = !TxPin2; }  #else /************** 接收程序 **************/ sbit RxPin1 = P3^3;   // 紅外輸入1 sbit RxPin2 = P3^4;   // 紅外輸入2 sbit LED = P3^5;      // 狀態指示燈 sbit Out = P3^1;      // 控制輸出 sbit Buzzer = P3^0;   // 蜂鳴器 sbit Switch = P3^2;   // 模式切換  bit X = 1;            // 切換標志 unsigned char counter[8]; // 60H-67H  void delay() {        // 約10ms延時     unsigned char i = 5;     while(i--) {         unsigned char j = 248;         while(j--) {             unsigned char k = 248;             while(k--);         }     } }  void main() {     // IO初始化     P3M0 = 0x00; P3M1 = 0x00; // 準雙向模式     RxPin1 = RxPin2 = LED = Switch = 1;     Out = 0;     Buzzer = 1;          X = 1;     delay(); delay();     Buzzer = 0;          // 計數器初始化     for(unsigned char i=0; i<8; i++) counter[i] = 0;      while(1) {         LED = 1;         // 初始延時(約130ms)         for(int i=0; i<13; i++) delay();                  while(1) {             // 輸入檢測             if(!RxPin2) {        // 關燈檢測                 counter[6] = 50; counter[7] = 240; counter[0] = 240;                 LED = 0;                 // 防抖動檢測                 while(counter[0]-- || counter[7]-- || counter[6]--) {                     if(RxPin1) {                         if(!X) { // 模式B                             Out = 0;                             Buzzer = 1; delay(); Buzzer = 0; delay();                             Buzzer = 1; delay(); Buzzer = 0;                             goto RESTART;                         }                         break;                     }                 }                 goto RESTART;             }                          if(!RxPin1) {        // 開燈檢測                 counter[6] = 50; counter[7] = 240; counter[0] = 240;                 LED = 0;                 while(counter[0]-- || counter[7]-- || counter[6]--) {                     if(RxPin2) {                         if(X) { // 模式A                             Out = 1;                             Buzzer = 1; delay(); Buzzer = 0;                             counter[0] = counter[1] = counter[2] = 240;                             counter[3] = 20;                             goto RESTART;                         }                         break;                     }                 }                 goto RESTART;             }                          if(!Switch) {        // 模式切換                 delay(); delay();                 if(!Switch) {                     X = !X;                     Buzzer = 1; delay(); Buzzer = 0;                 }                 while(!Switch);                 goto RESTART;             }                          // 自動關閉檢測             if(!--counter[2] && !--counter[1] && !--counter[0] && !--counter[3]) {                 Out = 0;                 break;             }         }                  RESTART: // 重啟循環         counter[3] = 20; // 重置自動關閉定時         counter[0] = counter[1] = counter[2] = 240;     } } #endif
回復

使用道具 舉報

9#
ID:1075398 發表于 2025-3-4 10:41 | 只看該作者
Lthrwy 發表于 2025-3-3 15:51
我也做了一個類似功能的,也是放廁所門口,程序是請人幫寫的,有問題, 會自已亮,會不到時間滅,會很長時間不滅, ...

就是這樣

墻開關.jpg (1.68 MB, 下載次數: 0)

墻開關.jpg
回復

使用道具 舉報

10#
ID:325985 發表于 2025-3-4 16:06 | 只看該作者
那如果搞個雙穩態電路不是也能實現這個功能嗎?是不是簡單多了呢。
回復

使用道具 舉報

11#
ID:1075398 發表于 2025-3-5 08:43 | 只看該作者
是問我嗎?我這個原來是打算帶3路輸出,實際上只作了2路,一路控燈,一路控風扇, 進入的話,先開燈,稍延時才開風扇,出來的話,先關燈,風扇會繼續延時一小會兒才關掉, 所以用雙穩態可能不能達到相要的效果, 再說用MCU電路可能會比較簡單一些
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产成人a亚洲精品 | 亚洲情综合五月天 | 国产成人精品高清久久 | 一区二区三区四区不卡视频 | 成人av一区 | 亚洲第一色站 | www.日韩高清 | 国产精品毛片一区二区三区 | 青青久在线视频 | 久久久久久国产精品久久 | 成人一区二区三区在线观看 | 毛片国产 | 玖玖玖在线| 亚洲一二三区精品 | 电影午夜精品一区二区三区 | 91社区在线观看播放 | 男女羞羞视频大全 | 久久久久久99 | 久久久91| 91精品久久久久久久久久 | 黄网站涩免费蜜桃网站 | 亚洲一区二区精品视频 | 欧美日韩在线视频观看 | 精品免费视频一区二区 | 天天色图 | 国产精品自产av一区二区三区 | 免费看a | 国产成人综合在线 | 精品欧美乱码久久久久久 | 天天综合网永久 | 午夜小电影| 亚洲免费网站 | 成人亚洲一区 | 免费毛片网站在线观看 | 日韩在线一区二区 | 国产精品一区二区在线 | 色毛片 | 91视频在线观看 | 一区二区三区视频在线 | 欧美一区在线视频 | 久久99精品视频 |