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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機紅外反射開關程序問題求助

  [復制鏈接]
跳轉到指定樓層
樓主
ID:140489 發(fā)表于 2019-9-26 10:31 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
//紅外反射開關,接收頭HS0038B,發(fā)射管用pnp三極管驅動
//第一次上電,燈亮1秒后熄滅,
//手擋一次開,再擋一次關,如此循環(huán)
//實驗板測試手擋一次開,再擋一次關 開關正常;
//但是有一個問題,如果手一直擋在前面,LED會不停的亮--滅        -- 亮--滅
//請大神們看下,怎樣才能做到手擋在前面不移開,保持一種狀態(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;         //按鍵按下標志
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ā)射管要用黑色熱縮套管套起來
{                                  //不是很準,沒有邏輯分析儀,搞不準,現(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定時器,模式1, 16位計數(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;        //這句抗干擾很好,遙控器對著按,都沒反應                        



        }
}

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

        }

}


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

使用道具 舉報

沙發(fā)
ID:213173 發(fā)表于 2019-9-26 15:01 | 只看該作者
設一個標志位,手擋置1,移開復位0,LED的滅除受時間控制外還受此標志控制。這樣手擋在前面不移開,保持亮狀態(tài)。
回復

使用道具 舉報

板凳
ID:616758 發(fā)表于 2019-9-26 16:14 | 只看該作者
請問解決了么
回復

使用道具 舉報

地板
ID:616759 發(fā)表于 2019-9-26 16:25 | 只看該作者
粗略的看了下,你有一個flag的變量沒有定義,你確定程序沒有報錯嗎?
回復

使用道具 舉報

5#
ID:616759 發(fā)表于 2019-9-26 16:36 | 只看該作者
我看了下,有一部分邏輯我不知道,準確的說不知道你幾個變量的用處,我提議把 if(ir_in==0)          //手擋住  改成while循環(huán),  里面加個if(ir_in==1) 判斷,continue跳出當前循環(huán),不知道count1的用處,可能需要那個改的這個循環(huán)外面
回復

使用道具 舉報

6#
ID:160500 發(fā)表于 2019-9-26 18:16 | 只看該作者
這個程序有BUG,38k發(fā)射應該用一個中斷或定時器自動生成。主程序只控制發(fā)射還是不發(fā)射
回復

使用道具 舉報

7#
ID:277550 發(fā)表于 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);

        }



計數(shù)器都是100就切換led狀態(tài)
回復

使用道具 舉報

8#
ID:462827 發(fā)表于 2019-9-27 07:57 | 只看該作者
置標志位唄
回復

使用道具 舉報

9#
ID:140489 發(fā)表于 2019-9-27 08:09 | 只看該作者
bai_yun_123 發(fā)表于 2019-9-26 16:25
粗略的看了下,你有一個flag的變量沒有定義,你確定程序沒有報錯嗎?

我發(fā)帖的時候誤刪了,工程里面有定義的
回復

使用道具 舉報

10#
ID:140489 發(fā)表于 2019-9-27 09:49 | 只看該作者
程序已經(jīng)改好了,抗干擾能力強,用遙控器對著不停的按,都不會有誤動作;隔著5mm厚的玻璃也能感應
#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  //感應去抖動延時的時間
uint uiKeyTimeCnt1=0; //感應去抖動延時計數(shù)器
uchar ucKeyLock1=0;   //感應觸發(fā)后自鎖的變量標志


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;        //設置定時器模式 8位自動重裝
        TL0 = 0xF4;                //設置定時初值                  13us        @11.0592KHz
        TH0 = 0xF4;                //設置定時重載值               
        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)        //沒有感應 要及時清零一些標志
                {
               
                        ucKeyLock1=0;   //感應自鎖標志清零
                        uiKeyTimeCnt1=0;//感應去抖動延時計數(shù)器清零
               
                }
                else if(ucKeyLock1==0)//有感應,且是第一次感應
                {       
                        ++uiKeyTimeCnt1;  //延時計數(shù)器
                        if(uiKeyTimeCnt1>const_key_time1)
                        {
                                uiKeyTimeCnt1=0;
                                ucKeyLock1=1; //自鎖置位,避免一直觸發(fā)
                                led = !led;
                        }               
                }
        }
}

void timer0() interrupt 1
{
        if(fw)
        ir=!ir;                   //發(fā)38k 載波
}
回復

使用道具 舉報

11#
ID:60656 發(fā)表于 2019-12-8 16:52 | 只看該作者
樓主用的什么接收管?只腳帶調制的 還是紅外光敏晶體管?
回復

使用道具 舉報

12#
ID:416239 發(fā)表于 2019-12-10 13:23 | 只看該作者
先初始化一下
回復

使用道具 舉報

13#
ID:292518 發(fā)表于 2021-9-8 14:23 | 只看該作者
樓主,能分享一下電路圖不?程序測試過了嗎?
回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品视频二区三区 | 91精品国产色综合久久 | 久久a久久 | 午夜影视大全 | 91一区二区| 国产aⅴ精品 | 日韩免费 | 91成人在线| 九九天堂网| 亚洲国产小视频 | 国产中文字幕网 | 欧美精品久久久 | 久优草 | 国产大学生情侣呻吟视频 | 99免费在线 | 精品亚洲国产成av人片传媒 | 超碰在线人人干 | 91久久久久久久久久久 | 欧美一区二 | 日韩成人精品 | 久久精品国产一区二区电影 | 精精精精xxxx免费视频 | 亚洲免费视频一区二区 | 亚洲美女在线视频 | 国产福利网站 | 国产精品91久久久久久 | 日韩欧美中文字幕在线观看 | 中文字幕高清在线 | 最新国产精品精品视频 | 91不卡在线 | 成人免费视频观看视频 | 久久久久久久国产 | 久久久人成影片免费观看 | 日韩精品一区二区三区中文在线 | 99久久久久久99国产精品免 | 亚洲成人自拍 | 欧美456 | 精品一二区 | 免费观看av网站 | 福利av在线| 国产精品久久久久久二区 |