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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4248|回復(fù): 14
打印 上一主題 下一主題
收起左側(cè)

紅外遙控的編程怎么編?地址如圖

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:174394 發(fā)表于 2017-4-16 23:36 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
就是需要三個紅外遙控器的鍵對應(yīng)三個按鈕(需要加減鍵 和EQ鍵)

紅外遙控地址.png (120.27 KB, 下載次數(shù): 122)

紅外遙控地址.png
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:190107 發(fā)表于 2017-4-17 13:30 | 只看該作者
紅外遙控編碼 主要是時序很重要 網(wǎng)上都有程序例子 先去試著看一下  然后自己在編寫
回復(fù)

使用道具 舉報

板凳
ID:160317 發(fā)表于 2017-4-17 14:44 | 只看該作者
紅外遙控的畢設(shè),同求啊
回復(fù)

使用道具 舉報

地板
ID:174394 發(fā)表于 2017-4-17 21:57 | 只看該作者
小唐唐 發(fā)表于 2017-4-17 13:30
紅外遙控編碼 主要是時序很重要 網(wǎng)上都有程序例子 先去試著看一下  然后自己在編寫

不太懂啊能找下給我參考嗎
回復(fù)

使用道具 舉報

5#
ID:123289 發(fā)表于 2017-4-17 23:12 | 只看該作者
前幾天也買了這個控制器;藥滋,寫了人機對話程序。
現(xiàn)將紅外解碼部分的方案,告訴你。
回復(fù)

使用道具 舉報

6#
ID:123289 發(fā)表于 2017-4-17 23:14 | 只看該作者
本帖最后由 yzwzfyz 于 2017-4-17 23:26 編輯

1、紅色用接收模塊HS0038B,從INT0輸入,下沿產(chǎn)生中斷。用T3計數(shù)紅外脈沖寬度(是下沿到下沿)。
     紅外遙控器采用UPD6122控制芯片NEC編碼格式,只取下沿。但紅外模塊接收會反轉(zhuǎn)成上沿。
2、INT0中斷后,記錄上次紅外寬度(下沿到下沿),再復(fù)位T3重新計數(shù),準備計數(shù)下個脈沖寬度。
3、紅外脈沖寬度數(shù)據(jù):(有容錯范圍,即上下限)
3.1、引導(dǎo)碼=5900H-78FFH 容錯范圍84%-115% *(9ms+4.5ms),做一個標記B_INFRLEAD=1,表示已有引導(dǎo)符;
3.2、0=0800H-0AFFH 容錯范圍87%-119% *(1.125ms+0.56ms);
3.3、1=0F00H-13FFH 容錯范圍85%-114% *2.25ms;
3.4、其它:放棄作廢碼處理,清B_INFRLEAD=0,表示尚無引導(dǎo)符;
3.5、計數(shù)T3溢出時,清0停止計數(shù)。(紅外輸入已結(jié)束,則T3停止不再計數(shù))
注:用的是24MHz的晶振。
回復(fù)

使用道具 舉報

7#
ID:123289 發(fā)表于 2017-4-17 23:16 | 只看該作者
本帖最后由 yzwzfyz 于 2017-4-17 23:28 編輯

解出:引導(dǎo)符、0、1后,依協(xié)議組裝即可得到鍵碼。
回復(fù)

使用道具 舉報

8#
ID:190666 發(fā)表于 2017-4-17 23:23 | 只看該作者
很實用,很給力
回復(fù)

使用道具 舉報

9#
ID:123289 發(fā)表于 2017-4-17 23:24 | 只看該作者
得到鍵碼后的人機對話程序的復(fù)雜程度,與程序的目的相關(guān)。一般比較復(fù)雜,不在此細述。
回復(fù)

使用道具 舉報

10#
ID:146949 發(fā)表于 2017-4-17 23:56 | 只看該作者
//STC89C52RC_雙倍速_外部晶振24MHz
#include "reg51.h"
#include "intrins.h"
typedef unsigned char BYTE;
typedef unsigned int WORD;
#define uchar unsigned char
#define uint unsigned int
unsigned char ir_dat_buf[4] = {0};           //紅外遙控接收碼存放位置
unsigned char mode;                          //紅外線接收模式緩存
sbit P32 = P3^2; //IR
void Delay1120us(void)
{
TL1 = 0xC4;  
TH1 = 0xEE;
TR1 = 1;   
while(!TF1);
TR1 = 0;
TF1 = 0;
}
void Delay840us(void)
{
TL1 = 0x38;  
TH1 = 0xF3;
TR1 = 1;   
while(!TF1);
TR1 = 0;
TF1 = 0;
}
unsigned char ir_read(void)                    // 數(shù)據(jù) 0: 0.56ms低電平,0.56ms高電平
{                                              // 數(shù)據(jù) 1: 0.56ms低電平,1.58ms高電平
unsigned char i,ir_temp = 0;
for(i = 0; i < 8; i++)
        {
        while(!P32);                            //等待0.56ms低電平結(jié)束
        Delay840us();                           //從高電平開始延時0.84ms
        if(P32 == 1)
                {
                ir_temp = (ir_temp << 1) + 1;        //讀到數(shù)據(jù)1
                Delay1120us();                       //延時等待1.68ms高電平結(jié)束
                }
        else
            {       
                ir_temp = ir_temp << 1;                //讀到數(shù)據(jù)0
                }
        }
return ir_temp;
}
void main()
{
    TMOD = 0x11;           //set timer0 as mode1 (16-bit)
          TL0 = 0;               //定時4ms                                                        
    TH0 = 0;
          TR0 = 1;    //timer0 start running
          TF0 = 1;
    IT0 = 1;    //set INT0 int type (1:Falling 0:Low level)
    ET0 = 1;    //enable timer0 interrupt
    EX0 = 1;                        //enable INT0 interrupt
    EA = 1;    //open global interrupt switch
         mode = 0;//紅外線接收清除
                while (1)
                   {                                 
switch(mode)
        {   
        case 1:  {mode=0;}break;
        case 2:  {mode=0;}break;
        case 3:  {mode=0;}break;
default: break;
  }
                                }                       
}
void exint0() interrupt 0 //按鍵一次: 依次發(fā)送 引導(dǎo)碼 + 地址 + 地址取反 + 數(shù)據(jù) + 數(shù)據(jù)取反
{
static unsigned  i;
EX0 = 0;                   //關(guān)閉外部中斷,仍可以執(zhí)行以下程序

for(i = 0; i < 10; i++)     // 引導(dǎo)碼由9ms低電平及4.5ms高電平組成, 接著是低8位地址碼, 高8位地址碼
        {                          // 連發(fā)碼由9ms低電平及2.25ms高電平組成, 跟著是0.56ms低電平, 然后都是高電平
        Delay840us();
        if(P32)                   //檢測引導(dǎo)碼9ms是否有高電平,有則退出
                {
                EX0 = 1;
                return;
                }
        }
while(!P32);              //等待高電平的到來 注:盡量采用延時來檢測,不然可能會進入死循環(huán)
Delay840us();
Delay840us();            // 檢測連按; 延時2.52ms,檢測是否有低電平,有表示按鍵連按,且退出
Delay840us();
if(!P32)
     {
         EX0 = 1;         
         return;
         }
while(P32);              //等待4.5ms高電平結(jié)束,開始接收數(shù)據(jù)
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
ir_dat_buf[0] = ir_read();
ir_dat_buf[1] = ir_read();
ir_dat_buf[2] = ir_read();
ir_dat_buf[3] = ir_read();

EX0 = 1;           //開啟外部中斷,等下次信號
}
void tm0_isr() interrupt 1 using 1
{
ET0 = 0;//禁止外部中斷,防止在接收到數(shù)據(jù)后處理過程中,再按遙控造成沖突
TL0 = 0x60;      //定時4ms
TH0 = 0xC1;
if(((ir_dat_buf[0] == 0x00) && (ir_dat_buf[1] == 0xff))&&((ir_dat_buf[2])== ~(ir_dat_buf[3])))//用戶碼0x00,0xFF       
{       
switch(ir_dat_buf[2])
        {   
        case 0x45: {mode=1;}break;
        case 0x46: {mode=2;}break;
        case 0x47: {mode=3;}break;

default: break;                                         
   }       
                        ir_dat_buf[0]=0;//清除紅外線接收緩存
                        ir_dat_buf[1]=0;//清除紅外線接收緩存
                        ir_dat_buf[2]=0;//清除紅外線接收緩存
                        ir_dat_buf[3]=0;//清除紅外線接收緩存               
}         
       
ET0 = 1; //充許外部中斷,處理完數(shù)據(jù)后再打開外部中斷
}
回復(fù)

使用道具 舉報

11#
ID:190750 發(fā)表于 2017-4-18 11:19 | 只看該作者
網(wǎng)上都有程序例子 先去試著看一下  然后自己在編寫
回復(fù)

使用道具 舉報

12#
ID:190956 發(fā)表于 2017-4-18 19:49 | 只看該作者
紅外編碼格式 廠商碼+廠商補碼+命令碼+命令補碼。
回復(fù)

使用道具 舉報

13#
ID:190956 發(fā)表于 2017-4-18 19:49 | 只看該作者
例如:00FF45CB
回復(fù)

使用道具 舉報

14#
ID:174394 發(fā)表于 2017-4-19 10:10 | 只看該作者
wosiyabo 發(fā)表于 2017-4-17 23:56
//STC89C52RC_雙倍速_外部晶振24MHz
#include "reg51.h"
#include "intrins.h"

你這個用到兩個定時器?你看看我這個可以嗎?
void intersvr1(void) interrupt 2                 //紅外工作函數(shù)
{
TR0=1;
Tc=TH0*256+TL0;//提取中斷時間間隔時長
TH0=0;
TL0=0;         //定時中斷重新置零
if((Tc>Imin)&&(Tc<Imax))
{
        m=0;
        f=1;

        return;
}       //找到啟始碼
if(f==1)
{
    if(Tc>Inum1&&Tc<Inum3)
    {
           Im[m/8]=Im[m/8]>>1|0x80; m++;
    }
    if(Tc>Inum2&&Tc<Inum1)
    {
      Im[m/8]=Im[m/8]>>1; m++; //取碼
           }
           if(m==32)
    {
      m=0;  
      f=0;
       
      if(Im[2]==~Im[3])
      {
           IrOK=1;
                          TR0=0;
           }
      else
          {
           IrOK=0;   //取碼完成后判斷讀碼是否正確

           }
    }
               //準備讀下一碼
}


}
回復(fù)

使用道具 舉報

15#
ID:174394 發(fā)表于 2017-4-19 10:11 | 只看該作者
yzwzfyz 發(fā)表于 2017-4-17 23:14
1、紅色用接收模塊HS0038B,從INT0輸入,下沿產(chǎn)生中斷。用T3計數(shù)紅外脈沖寬度(是下沿到下沿)。
     紅 ...

謝謝了  這么詳細的回答 辛苦了  我慢慢看懂它
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 不卡视频一区 | 久久91精品久久久久久9鸭 | 视频一区二区在线观看 | 日韩免费看视频 | 色资源av| 一级黄色片在线看 | 男女网站免费 | 日韩视频精品在线 | 日韩精品一区二区三区在线观看 | 久久久久国产精品 | 日本a在线 | 国产精品99久久久久久久久 | 99精品久久久国产一区二区三 | 国产1区2区3区 | 综合国产 | 国产成人jvid在线播放 | 欧美一区二区 | www.久久.com | 一区二区三区四区在线播放 | 日韩中文在线观看 | 九九久视频 | 国产精品视频观看 | 91av在线电影 | 欧美日韩国产中文 | 成人精品国产免费网站 | 中文日韩在线视频 | 欧美啊v在线观看 | 狼人伊人影院 | 韩国精品在线观看 | 免费激情| yiren22 亚洲综合 | 日韩一级免费电影 | 永久看片| 日韩精品在线免费 | 自拍 亚洲 欧美 老师 丝袜 | 亚洲精品久久久一区二区三区 | 天天插日日操 | 日日干日日射 | 久久久91精品国产一区二区三区 | 成人精品系列 | 国产精品1区 |