欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
單片機(jī)紅外反射開關(guān)程序問題求助
[打印本頁]
作者:
lids
時(shí)間:
2019-9-26 10:31
標(biāo)題:
單片機(jī)紅外反射開關(guān)程序問題求助
//紅外反射開關(guān),接收頭HS0038B,發(fā)射管用pnp三極管驅(qū)動(dòng)
//第一次上電,燈亮1秒后熄滅,
//手擋一次開,再擋一次關(guān),如此循環(huán)
//實(shí)驗(yàn)板測(cè)試手擋一次開,再擋一次關(guān) 開關(guān)正常;
//但是有一個(gè)問題,如果手一直擋在前面,LED會(huì)不停的亮--滅 -- 亮--滅
//請(qǐng)大神們看下,怎樣才能做到手擋在前面不移開,保持一種狀態(tài)
#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^1; //
uint cont,cont1;
bit flag_key; //按鍵按下標(biāo)志
bit key_lock=0;
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;
_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()
{
TMOD |= 0X01; //T0定時(shí)器,模式1, 16位計(jì)數(shù)
TH0 = (65536-1000)/256; //1ms初值 @12MHz晶振
TL0 = (65536-1000)%256;
ET0=1;
TR0=1;
led=0;
delay(500);
led=1;
while(1)
{
if(flag==0 )
{
fa_38k(); //發(fā)38K
}
else ir=1; //停止發(fā)射
if(ir_in==0) //手擋住
{
flag_key=1;
cont1++;
key_lock=1;
}
else flag_key=0; //手移開
if(flag_key==1 && cont1==100)
{
ir=1;
cont1=0;
led = !led;
delay(1000);
}
if(ir_in==1) cont1=0; //這句抗干擾很好,遙控器對(duì)著按,都沒反應(yīng)
}
}
void timer0() interrupt 1
{
TH0 = (65536-1000)/256; //重裝1ms初值
TL0 = (65536-1000)%256;
cont++;
if(cont==100)
{
cont=0;
flag=!flag; //發(fā)100ms 38K,停100ms
}
}
作者:
wulin
時(shí)間:
2019-9-26 15:01
設(shè)一個(gè)標(biāo)志位,手擋置1,移開復(fù)位0,LED的滅除受時(shí)間控制外還受此標(biāo)志控制。這樣手擋在前面不移開,保持亮狀態(tài)。
作者:
HAYUDA
時(shí)間:
2019-9-26 16:14
請(qǐng)問解決了么
作者:
bai_yun_123
時(shí)間:
2019-9-26 16:25
粗略的看了下,你有一個(gè)flag的變量沒有定義,你確定程序沒有報(bào)錯(cuò)嗎?
作者:
bai_yun_123
時(shí)間:
2019-9-26 16:36
我看了下,有一部分邏輯我不知道,準(zhǔn)確的說不知道你幾個(gè)變量的用處,我提議把 if(ir_in==0) //手擋住 改成while循環(huán), 里面加個(gè)if(ir_in==1) 判斷,continue跳出當(dāng)前循環(huán),不知道count1的用處,可能需要那個(gè)改的這個(gè)循環(huán)外面
作者:
liuzx66
時(shí)間:
2019-9-26 18:16
這個(gè)程序有BUG,38k發(fā)射應(yīng)該用一個(gè)中斷或定時(shí)器自動(dòng)生成。主程序只控制發(fā)射還是不發(fā)射
作者:
devcang
時(shí)間:
2019-9-27 00:59
if(ir_in==0) //手擋住
{
flag_key=1;
cont1++;
key_lock=1;
}
else flag_key=0; //手移開
if(flag_key==1 && cont1==100)
{
ir=1;
cont1=0;
led = !led;
delay(1000);
}
計(jì)數(shù)器都是100就切換led狀態(tài)
作者:
hantu
時(shí)間:
2019-9-27 07:57
置標(biāo)志位唄
作者:
lids
時(shí)間:
2019-9-27 08:09
bai_yun_123 發(fā)表于 2019-9-26 16:25
粗略的看了下,你有一個(gè)flag的變量沒有定義,你確定程序沒有報(bào)錯(cuò)嗎?
我發(fā)帖的時(shí)候誤刪了,工程里面有定義的
作者:
lids
時(shí)間:
2019-9-27 09:49
程序已經(jīng)改好了,抗干擾能力強(qiáng),用遙控器對(duì)著不停的按,都不會(huì)有誤動(dòng)作;隔著5mm厚的玻璃也能感應(yīng)
#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^1;
#define const_key_time1 20 //感應(yīng)去抖動(dòng)延時(shí)的時(shí)間
uint uiKeyTimeCnt1=0; //感應(yīng)去抖動(dòng)延時(shí)計(jì)數(shù)器
uchar ucKeyLock1=0; //感應(yīng)觸發(fā)后自鎖的變量標(biāo)志
bit fw; //
void delay(uint z) //
{
uint x,y;
for(x=z; x>0; x--)
// for(y=50; y>0; y--); //1.38 ms
for(y=10; y>0; y--); //340us
}
void main()
{
TMOD |= 0x02; //設(shè)置定時(shí)器模式 8位自動(dòng)重裝
TL0 = 0xF4; //設(shè)置定時(shí)初值 13us @11.0592KHz
TH0 = 0xF4; //設(shè)置定時(shí)重載值
EA=1;
ET0=1;
TR0=1;
led=0;
delay(3000);
led=1;
while(1)
{
delay(2); //間隔700us發(fā)一次340us 38k 載波
fw=1;
delay(1);
fw=0;
if(ir_in==1) //沒有感應(yīng) 要及時(shí)清零一些標(biāo)志
{
ucKeyLock1=0; //感應(yīng)自鎖標(biāo)志清零
uiKeyTimeCnt1=0;//感應(yīng)去抖動(dòng)延時(shí)計(jì)數(shù)器清零
}
else if(ucKeyLock1==0)//有感應(yīng),且是第一次感應(yīng)
{
++uiKeyTimeCnt1; //延時(shí)計(jì)數(shù)器
if(uiKeyTimeCnt1>const_key_time1)
{
uiKeyTimeCnt1=0;
ucKeyLock1=1; //自鎖置位,避免一直觸發(fā)
led = !led;
}
}
}
}
void timer0() interrupt 1
{
if(fw)
ir=!ir; //發(fā)38k 載波
}
作者:
zxq9781
時(shí)間:
2019-12-8 16:52
樓主用的什么接收管?只腳帶調(diào)制的 還是紅外光敏晶體管?
作者:
李澤訓(xùn)
時(shí)間:
2019-12-10 13:23
先初始化一下
作者:
long2018
時(shí)間:
2021-9-8 14:23
樓主,能分享一下電路圖不?程序測(cè)試過了嗎?
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1