欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4073|回復: 3
收起左側

原創單片機紅外反射開關源碼,有詳細注釋,可以做小便池前面的開關

[復制鏈接]
ID:140489 發表于 2018-3-8 08:43 | 顯示全部樓層 |閱讀模式
51單片機源程序如下:
  1. //紅外反射開關,接收頭HS0038B,發射管用pnp三極管驅動
  2. //第一次上電,燈亮1秒后熄滅,
  3. //有人在開關前面,延時約1秒,燈亮,人離開后,延時X 秒后燈滅
  4. //如果燈還沒滅,人又來到開關前面,燈長亮,人離開后,延時X 秒后燈滅
  5. //實驗板測試正常
  6. //哪位大神有更好的方法來實現這個功能,也希望發出來
  7. #include <reg52.h>
  8. #include <intrins.h>
  9. #define uchar unsigned char
  10. #define uint  unsigned int

  11. sbit ir=P2^4;         //紅外發射
  12. sbit ir_in=P3^2; //紅外接收
  13. sbit led=P1^7;
  14. bit flag,flag2;
  15. uint cont,cont1;

  16. bit f1,f2;
  17. void delay(uint z)           //ms
  18. {
  19.         uint x,y;
  20.         for(x=z; x>0; x--)
  21.                 for(y=114; y>0; y--);
  22. }


  23. void fa_38k()          //38k 載波                         //接收頭前面有濾光片,發射管要用黑色熱縮套管套起來
  24. {                                  //不是很準,沒有邏輯分析儀,搞不準,現在的反射距離在60厘米左右(發射管串100歐電阻)
  25.         ir=0;                  //如果有邏輯分析儀,把頻率調準,反射距離肯定要遠些
  26.         _nop_();_nop_();_nop_();_nop_();
  27.         _nop_();_nop_();_nop_();_nop_();
  28.         
  29.         ir=1;
  30.         _nop_();_nop_();_nop_();_nop_();
  31.         _nop_();_nop_();_nop_();_nop_();
  32.         _nop_();_nop_();_nop_();_nop_();
  33.         _nop_();_nop_();_nop_();_nop_();
  34.         _nop_();//_nop_();
  35. }

  36. void main()
  37. {
  38.         uint i;
  39.         ir_in=1;
  40.         TMOD |= 0X01;                          //T0定時器,模式1, 16位計數
  41.         TH0 = (65536-10000)/256;  //10ms初值 @12MHz晶振
  42.         TL0 = (65536-10000)%256;
  43.         EA=1;
  44.         ET0=1;
  45.         TR0=1;
  46.         led=0;
  47.         delay(1000);
  48.         led=1;
  49.         while(1)
  50.         {
  51.                 if(flag)
  52.                 {
  53.                         fa_38k();  //發38K
  54.                 }
  55.                 else ir=1;           //停止發射
  56.            
  57.                
  58.                 if(ir_in==0)  //如果紅外接收的輸出端為0,表示前面有反射物體
  59.                 {        
  60.                         i++;          //這句起消抖的作用 ,i取大些,抗干擾能力強些
  61.                         if((ir_in==0) && (i>15000)) //確認反射物體還在開關前面,這里i的延時燈點亮的速度
  62.                         {                                                //i越小,燈點亮越快,i的數值如果設定20000,可以不要下面那句delay(2000);
  63.                                 i=0;                         //消抖計時變量清0
  64.                         //        delay(1000);         //延時2秒后,這里不加延時也可以,看自己的喜好
  65.                                 led=0;                         //亮燈
  66.                                 f1=1;                         //延時計時標志置1
  67.                                 cont1=0;                 //延時計時變量清零
  68.                                 while(!ir_in);         //判斷反射物體是否離開,如果沒離開,程序就停在這里,
  69.                                                                  //燈一直亮,相當于按鍵的松手檢測
  70.                         }
  71.                 }

  72.                 if(cont1==1000 && ir_in==1)  //松手+延時時間到后,這里是設定延時10秒
  73.                 {
  74.                         f1=0;                                          //延時計時標志清0
  75.                         cont1=0;                                  //延時關燈計時變量清0
  76.                         led=1;                                          //關燈
  77.                 }

  78.         }
  79. }

  80. void timer0() interrupt 1
  81. {
  82.         TH0 = (65536-10000)/256;  //重裝10ms初值
  83.         TL0 = (65536-10000)%256;
  84.         cont++;
  85.         if(cont==10)  
  86.         {        
  87.                 cont=0;
  88.                 flag=!flag;         //發100ms 38K,停100ms
  89.         }
  90.         
  91.         if(f1)
  92.         {
  93.                 cont1++;
  94.         }        
  95. }

復制代碼


評分

參與人數 2黑幣 +55 收起 理由
kkggg12345 + 5 贊一個!
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:387856 發表于 2020-3-10 12:05 | 顯示全部樓層
能不能不用紅外接收頭,用紅外對管,程序能做到防太陽光。高手能不能搞
回復

使用道具 舉報

ID:140489 發表于 2020-3-10 14:28 | 顯示全部樓層
可以做的,紅外對管的反射距離比較近,只能做到10幾厘米
回復

使用道具 舉報

ID:964852 發表于 2021-11-19 10:59 來自觸屏版 | 顯示全部樓層
大神,能否發下紅外對管的參考點代碼
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表