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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4816|回復(fù): 10
收起左側(cè)

請教:紅外線遙控如何設(shè)置可以實現(xiàn)剛通電時所有LED均是熄滅(低電平)?

[復(fù)制鏈接]
ID:167337 發(fā)表于 2017-3-6 13:01 | 顯示全部樓層 |閱讀模式
在網(wǎng)上找到的紅外接遙控程序改編,計劃實現(xiàn)功能:K1,K2 “開”與“關(guān)”,K3 以后是“點動”。
但問題:剛通電后所有LED均是亮(高電平),K1按一次后(K2還要再按一次)K3以下的LED才熄滅,以后不斷電,才正常工作。不是很符合一般的情況。現(xiàn)在想:如何設(shè)置程序可以符合剛通電后所有LED均是熄滅(低電平)?謝謝!

紅外接遙控LED程序:
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint  unsigned int
void delay(uchar x);  //x*0.14MS
void delay1(int ms);
void beep();
sbit IRIN = P3^3;         //紅外接收器數(shù)據(jù)線
sbit K1=P1^0;                  //LED輸出線
sbit K2=P1^1;
sbit K3=P1^2;
sbit K4=P1^3;
sbit K5=P1^4;



uchar IRCOM[7];
uchar t1,t2;


main()
{
    IE = 0x84;                 //允許總中斷中斷,使能 INT1 外部中斷
    TCON = 0x10;               //觸發(fā)方式為脈沖負(fù)邊沿觸發(fā)
   IRIN=1;                    //I/O口初始化
  // delay1(10);                 //延時

    while(1)        ;

} //end main
/**********************************************************/
void IR_IN() interrupt 2 using 0
{
  unsigned char j,k,N=0;
     EX1 = 0;   
         delay(15);
         if (IRIN==1)
     { EX1 =1;
           return;
          }
                           //確認(rèn)IR信號出現(xiàn)
  while (!IRIN)            //等IR變?yōu)楦唠娖剑^9ms的前導(dǎo)低電平信號。
    {delay(1);}

for (j=0;j<4;j++)         //收集四組數(shù)據(jù)
{
  for (k=0;k<8;k++)        //每組數(shù)據(jù)有8位
  {
   while (IRIN)            //等 IR 變?yōu)榈碗娖剑^4.5ms的前導(dǎo)高電平信號。
     {delay(1);}
    while (!IRIN)          //等 IR 變?yōu)楦唠娖?br />      {delay(1);}
     while (IRIN)           //計算IR高電平時長
      {
    delay(1);
    N++;           
    if (N>=30)
         { EX1=1;
         return;}                  //0.14ms計數(shù)過長自動離開。
      }                        //高電平計數(shù)完畢               
     IRCOM[j]=IRCOM[j] >> 1;                  //數(shù)據(jù)最高位補“0”
     if (N>=8) {IRCOM[j] = IRCOM[j] | 0x80;}  //數(shù)據(jù)最高位補“1”
     N=0;
  }
}

   if (IRCOM[2]!=~IRCOM[3])
   { EX1=1;
     return; }

   IRCOM[5]=IRCOM[2] & 0x0F;     //取鍵碼的低四位
   IRCOM[6]=IRCOM[2] >> 4;       //右移4次,高四位變?yōu)榈退奈?br />   // IRCOM[5]=IRCOM[5]+0x30;
//  IRCOM[6]=IRCOM[6]+0x30;

if(IRCOM[5]>9)
    { IRCOM[5]=IRCOM[5]+0x37;}
   else
          IRCOM[5]=IRCOM[5]+0x30;

   if(IRCOM[6]>9)
    { IRCOM[6]=IRCOM[6]+0x37;}
   else
          IRCOM[6]=IRCOM[6]+0x30;
          t1=IRCOM[6];
          t2=IRCOM[5];
          //switch(t1,t2)
//  {
//          case '4','5': BEEP=~BEEP; break;
//          case '4','6': BEEP=1; break;
//          default: break;
//          }



// 開、關(guān) 鍵碼:
if(IRCOM[6]=='1'&&IRCOM[5]=='2')
K1=!K1;                                   //“開關(guān)”功能

// 靜音 鍵碼:
if(IRCOM[6]=='5'&&IRCOM[5]=='E')
K2=!K2;


//OK 鍵碼:
if(IRCOM[6]=='1'&&IRCOM[5]=='8')         //“點動”功能。          
K3=1;
delay(1000);
K3=0 ;

// V-(聲音-) 鍵碼:
if(IRCOM[6]=='5'&&IRCOM[5]=='F')
    K4=1;
    delay(1000);
    K4=0 ;

// V+(聲音+) 鍵碼:
if(IRCOM[6]=='5'&&IRCOM[5]=='B')
    K5=1;
    delay(1000);
    K5=0 ;

//P+(頻道+) 鍵碼:
if(IRCOM[6]=='5'&&IRCOM[5]=='5')
    K6=1;
    delay(1000);
    K6=0 ;

//P-(頻道-) 鍵碼:
if(IRCOM[6]=='5'&&IRCOM[5]=='A')
    K7=1;
    delay(1000);
    K7=0 ;



  EX1 = 1;                        
}                  

/**********************************************************/
void delay(unsigned char x)    //x*0.14MS
{
unsigned char i;
  while(x--)
{
  for (i = 0; i<13; i++) {}
}
}

/**********************************************************/
void delay1(int ms)
{
unsigned char y;
  while(ms--)
{
  for(y = 0; y<250; y++)
  {
   _nop_();
//   _nop_();
//   _nop_();
//   _nop_();
  }
}
}

電路圖: 電路圖.jpg


回復(fù)

使用道具 舉報

ID:168431 發(fā)表于 2017-3-6 14:04 | 顯示全部樓層
樓主是高手啊  程序編的6
回復(fù)

使用道具 舉報

ID:167337 發(fā)表于 2017-3-6 14:37 | 顯示全部樓層
對不起,原程序輸出21路,沒打算完全使用,只用5-7路就可以了,由于我的疏漏,程序中K6,K7路沒有刪除!請刪除K6,K7語句部分。補充電路圖: 電路圖.jpg
回復(fù)

使用道具 舉報

ID:151348 發(fā)表于 2017-3-6 14:37 | 顯示全部樓層
通電后所有LED均是熄滅(低電平)?那就在初始化的時候加上P1=0x00;
回復(fù)

使用道具 舉報

ID:167337 發(fā)表于 2017-3-6 14:43 | 顯示全部樓層
現(xiàn)在程序及電路:是通電后所有LED均是亮的(高電平)。希望改進(jìn)程序,要求是相反!
回復(fù)

使用道具 舉報

ID:167337 發(fā)表于 2017-3-6 14:55 | 顯示全部樓層
@imxuheng,本人不是太熟悉C,只能依葫蘆畫瓢,能更清楚說如何加上P1=0x00;嗎?謝謝
回復(fù)

使用道具 舉報

ID:167337 發(fā)表于 2017-3-6 15:20 | 顯示全部樓層
@imxuheng,本人不是太熟悉C,只能依葫蘆畫瓢,能否更清楚說如何加上:P1=0x00;嗎?謝謝!
回復(fù)

使用道具 舉報

ID:151348 發(fā)表于 2017-3-6 19:37 | 顯示全部樓層
YQS 發(fā)表于 2017-3-6 15:20
@imxuheng,本人不是太熟悉C,只能依葫蘆畫瓢,能否更清楚說如何加上:P1=0x00;嗎?謝謝!

main()
{
   IE = 0x84;                 //允許總中斷中斷,使能 INT1 外部中斷
   TCON = 0x10;               //觸發(fā)方式為脈沖負(fù)邊沿觸發(fā)
   IRIN=1;                    //I/O口初始化
  // delay1(10);                 //延時
    P1=0x00;
    while(1)        ;

}
回復(fù)

使用道具 舉報

ID:7485 發(fā)表于 2017-3-6 20:22 | 顯示全部樓層
進(jìn)入主程序的第一條指令就應(yīng)該是 P1=0xE0;或 P1=0x00;
回復(fù)

使用道具 舉報

ID:104825 發(fā)表于 2017-3-6 21:56 | 顯示全部樓層
把發(fā)光二極管都反過來接,然后將公共端接到vcc試試看!
回復(fù)

使用道具 舉報

ID:167337 發(fā)表于 2017-3-7 08:39 | 顯示全部樓層
哦,問題解決了!
原來單片機外圍電路設(shè)計的時候,為了不讓外圍電路誤動作,一般把外圍電路設(shè)置成單片機IO口低電平的時候 盡心動作,點亮

LEd燈的時候應(yīng)該是負(fù)電平有效,我現(xiàn)在的電路是正電平有效,自然就是費事了。好,將:供LED電源、LED極性反轉(zhuǎn),程序中相應(yīng)

判斷語句極性也反轉(zhuǎn),OK,一切正常。
看來只能自己基礎(chǔ)不精哦!

謝謝s1g、mahshmj等指點!
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: www.夜夜草| 国产三级日本三级 | 日本一区二区高清不卡 | 亚洲欧美国产精品久久 | 欧美日韩一区二区三区四区 | 一区二区三区四区在线视频 | 免费不卡一区 | 在线视频91| 亚洲人在线 | 中文字幕一区二区三区精彩视频 | 日本 欧美 三级 高清 视频 | 涩涩导航 | 在线免费观看黄a | 日韩av免费在线观看 | 中文字幕在线免费观看 | 精品一区二区三区四区外站 | 国产精品久久久久久妇女6080 | 国产黄色大片 | 日韩成人一区二区 | 午夜激情视频 | 亚洲福利免费 | 中文在线一区二区 | 欧美日韩中文字幕 | 给我免费的视频在线观看 | 美女视频三区 | 成人精品国产免费网站 | 国产精品射 | 亚洲自拍偷拍视频 | 91看国产| 国产日韩精品一区 | 亚洲一区二区久久久 | 欧美中文字幕在线观看 | 一区二区三区四区在线免费观看 | 男人天堂国产 | 在线观看免费观看在线91 | 欧美日韩国产精品激情在线播放 | 中文字幕一区在线观看视频 | 九七午夜剧场福利写真 | 久久国产精品久久久久 | 国产成人精品综合 | 欧美精品一区二区三区在线播放 |