欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
原創(chuàng)單片機(jī)紅外反射開關(guān)源碼,有詳細(xì)注釋,可以做小便池前面的開關(guān)
[打印本頁]
作者:
lids
時(shí)間:
2018-3-8 08:43
標(biāo)題:
原創(chuàng)單片機(jī)紅外反射開關(guān)源碼,有詳細(xì)注釋,可以做小便池前面的開關(guān)
51單片機(jī)源程序如下:
//紅外反射開關(guān),接收頭HS0038B,發(fā)射管用pnp三極管驅(qū)動
//第一次上電,燈亮1秒后熄滅,
//有人在開關(guān)前面,延時(shí)約1秒,燈亮,人離開后,延時(shí)X 秒后燈滅
//如果燈還沒滅,人又來到開關(guān)前面,燈長亮,人離開后,延時(shí)X 秒后燈滅
//實(shí)驗(yàn)板測試正常
//哪位大神有更好的方法來實(shí)現(xiàn)這個功能,也希望發(fā)出來
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit ir=P2^4; //紅外發(fā)射
sbit ir_in=P3^2; //紅外接收
sbit led=P1^7;
bit flag,flag2;
uint cont,cont1;
bit f1,f2;
void delay(uint z) //ms
{
uint x,y;
for(x=z; x>0; x--)
for(y=114; y>0; y--);
}
void fa_38k() //38k 載波 //接收頭前面有濾光片,發(fā)射管要用黑色熱縮套管套起來
{ //不是很準(zhǔn),沒有邏輯分析儀,搞不準(zhǔn),現(xiàn)在的反射距離在60厘米左右(發(fā)射管串100歐電阻)
ir=0; //如果有邏輯分析儀,把頻率調(diào)準(zhǔn),反射距離肯定要遠(yuǎn)些
_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();
ir=1;
_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();
_nop_();//_nop_();
}
void main()
{
uint i;
ir_in=1;
TMOD |= 0X01; //T0定時(shí)器,模式1, 16位計(jì)數(shù)
TH0 = (65536-10000)/256; //10ms初值 @12MHz晶振
TL0 = (65536-10000)%256;
EA=1;
ET0=1;
TR0=1;
led=0;
delay(1000);
led=1;
while(1)
{
if(flag)
{
fa_38k(); //發(fā)38K
}
else ir=1; //停止發(fā)射
if(ir_in==0) //如果紅外接收的輸出端為0,表示前面有反射物體
{
i++; //這句起消抖的作用 ,i取大些,抗干擾能力強(qiáng)些
if((ir_in==0) && (i>15000)) //確認(rèn)反射物體還在開關(guān)前面,這里i的延時(shí)燈點(diǎn)亮的速度
{ //i越小,燈點(diǎn)亮越快,i的數(shù)值如果設(shè)定20000,可以不要下面那句delay(2000);
i=0; //消抖計(jì)時(shí)變量清0
// delay(1000); //延時(shí)2秒后,這里不加延時(shí)也可以,看自己的喜好
led=0; //亮燈
f1=1; //延時(shí)計(jì)時(shí)標(biāo)志置1
cont1=0; //延時(shí)計(jì)時(shí)變量清零
while(!ir_in); //判斷反射物體是否離開,如果沒離開,程序就停在這里,
//燈一直亮,相當(dāng)于按鍵的松手檢測
}
}
if(cont1==1000 && ir_in==1) //松手+延時(shí)時(shí)間到后,這里是設(shè)定延時(shí)10秒
{
f1=0; //延時(shí)計(jì)時(shí)標(biāo)志清0
cont1=0; //延時(shí)關(guān)燈計(jì)時(shí)變量清0
led=1; //關(guān)燈
}
}
}
void timer0() interrupt 1
{
TH0 = (65536-10000)/256; //重裝10ms初值
TL0 = (65536-10000)%256;
cont++;
if(cont==10)
{
cont=0;
flag=!flag; //發(fā)100ms 38K,停100ms
}
if(f1)
{
cont1++;
}
}
復(fù)制代碼
作者:
liuhailan5757
時(shí)間:
2020-3-10 12:05
能不能不用紅外接收頭,用紅外對管,程序能做到防太陽光。高手能不能搞
作者:
lids
時(shí)間:
2020-3-10 14:28
可以做的,紅外對管的反射距離比較近,只能做到10幾厘米
作者:
xhl-xy
時(shí)間:
2021-11-19 10:59
大神,能否發(fā)下紅外對管的參考點(diǎn)代碼
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1