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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

紅外遙控碼值測試

  [復制鏈接]
跳轉到指定樓層
樓主
ID:85681 發(fā)表于 2015-7-15 00:18 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 benbens 于 2015-7-15 00:19 編輯

       前不久迷上了紅外遙控解碼,雖然自己在學校時曾經(jīng)研究過,但一直沒有搞清楚。溫故而知新,加上得到一大神指點,讓我茅塞頓開。
       當一個紅外遙控器的按鍵按下去時,共有四組數(shù)據(jù)發(fā)送出去了,第一組是低8位用戶碼, 第二組是高8位用戶碼,第三組是數(shù)據(jù)碼, 第四組是數(shù)據(jù)反碼。  用戶碼也叫引導碼,用來區(qū)別不同的遙控器,數(shù)據(jù)碼也叫按鍵碼,用來區(qū)別不同的按鍵。數(shù)據(jù)反碼就是數(shù)據(jù)碼取反之后,用來進行數(shù)據(jù)校驗的。
        自己手頭的有一塊0802的液晶顯示模塊,剛好利用起來,做一個紅外遙控碼值測試的工具。 主控芯片用的是STC89C52RC單片機, 用它主要是因為這片單片機一直閑置在這里,大家也可以把程序移植到其它型號的單片機上(移植時注意延時函數(shù))。想到只用來測試紅外遙控碼值太可惜這片單片機和0802液晶顯示屏了,何不加上其它功能?手上有DS1302時鐘芯片,用來做一個萬年歷在合適不過了,再用一個撥動開關來切換碼值測試功能和時鐘功能(撥動開關后要重啟一下)。STC89C52RC有好多IO口,索性再加蜂鳴器和LED。

碼值測試功能:當解碼出四組數(shù)據(jù)后蜂鳴器滴一聲,LED閃爍一下。
時鐘功能:1.當按鍵按下蜂鳴器滴一聲 2.每當?shù)秸c的時候,蜂鳴器滴一聲(整點報時)。
以下是實物效果圖:

依次是 年 月 日 星期 時 分

照片名稱:紅外解碼-1
所屬相冊:電子DIY

首次開機,沒有接收到紅外信號時顯示

照片名稱:紅外解碼-3
所屬相冊:電子DIY

接收到紅外信號并成功解碼時
引導碼:0x00ff    按鍵碼:0x01  按鍵反碼:0xfe

照片名稱:紅外解碼-2
所屬相冊:電子DIY

整體效果圖

照片名稱:紅外解碼-4
所屬相冊:電子DIY

供電電源采取USB供電,直接插電腦或者手機充電器就行了。。。。   
        我是直接現(xiàn)場發(fā)揮,沒有畫電路圖,大家也可以從我的程序里看出電路的連接,鑒于我菜鳥般的編程能力,我就不全部把程序公布出來,只給出關鍵程序。需要的童鞋也可以留下郵箱,我可以發(fā)給你。

1. IO接口定義
unsigned char IR_code[4] = {0,0,0,0};//存放四組數(shù)據(jù)
sbit fmq=P1^0;//蜂鳴器接口
sbit RS=P1^1;
sbit RW=P1^2;
sbit EN=P1^3;
sbit mode=P1^4;//模式選擇接口
sbit IR_Out = P3^2;   // 此口為紅外信號輸入MCU口
sbit led=P3^7;
sbit mos_key=P1^6;
sbit up_key=P1^5;
sbit down_key=P3^6;

sbit CE=P2^5;                     //DS1302片選口
sbit IO=P2^6;                     //DS1302數(shù)據(jù)口
sbit SCLK=P2^7;                   //DS1302時鐘口
2. 0802液晶驅動程序
void write_com(unsigned char com) //寫指令
{
         RW=0;
         RS=0;
         EN=0;
         P0=com;
         EN=1;
         delayms(5);
         EN=0;
}
void write_dat(unsigned char dat)//寫數(shù)據(jù)
{
         RW=0;
         RS=1;   
         EN=0;
         P0=dat;
         EN=1;
         delayms(5);
         EN=0;
}
void lcdIR_init()
{
     EA = 1;               // CPU準許中斷
     delayms(400);
     write_com(0x3c); //8位數(shù)據(jù)總線,兩行顯示模式,5*10點陣
     write_com(0x01); //清顯示
     write_com(0x0c); // 開顯示,關閉光標,關閉閃爍
     write_com(0x80);
     write_dat('B');
     write_dat('C');
     write_dat(':');
     write_com(0x80+5);
     write_dat('-');
     write_com(0xc0);
     write_dat('K');
     write_dat('C');
     write_dat(':');
     write_com(0xc0+5);
     write_dat('-');
}
void lcdtime_init()
{
     EA = 0;               // CPU不準許中斷
     delayms(400);
     write_com(0x3c); //8位數(shù)據(jù)總線,兩行顯示模式,5*10點陣
     write_com(0x01); //清顯示
     write_com(0x0c); // 開顯示,關閉光標,關閉閃爍
     write_com(0x80);
     write_dat(' ');
     write_dat(' ');
     write_dat('-');
     write_dat(' ');
     write_dat(' ');
     write_dat('-');
     write_dat(' ');
     write_dat(' ');
}
3. 紅外解碼程序
/*------------------------------------------------------------*-
  函數(shù)名稱:Int0()
  函數(shù)輸入:無(容許中斷時,外部觸發(fā))
  函數(shù)輸出:無
  函數(shù)說明:外部中斷0中斷處理
-*------------------------------------------------------------*/
void Int0() interrupt 0
{
     unsigned char i,j;
     EX0 = 0;   // 關閉外部中斷0
     i = 10;    // 0.793ms延時,運行10次
     while( --i )
     {
          // 定時0.793ms,延時0.793ms*10=7.93ms
          Delay793us();
          // 這7.93ms期間只要IR_Out變高電平,就非合法的紅外信號,跳出
          if( IR_Out )
          {
               EX0 = 1; // 準許中斷
               return ;
          }
     }

// 程序進行到這里,表明是合法的紅外信號(利用9ms判斷)
while( !IR_Out ); // 等待9ms低電平過去
// 程序進行到這里,表明經(jīng)過9ms低電平
Delay2305us();     // 延時2.305ms
// IR_Out 為低表明是連發(fā)碼,不予理睬,跳出
if( !IR_Out )
{
      EX0=1;
      return;
}
// 程序進行到這里,表明是引導碼,等待4.5ms高電平的過去
while( IR_Out );
// 開始接收四組數(shù)據(jù)
for(i=0; i<4; i++)
  {
      for(j=0; j<8; j++)
      {
           while( !IR_Out ); // 等待低電平過去
               IR_code[ i] >>= 1;  // 把上次的數(shù)據(jù)位右移一位
         Delay793us();     //延時0.793ms
       // 若為數(shù)據(jù)"1",則延時后IR_Out為高電平
         if( IR_Out )
          {
                IR_code[ i] |= 0x80;  // 所有數(shù)據(jù)位1放最高位
                while( IR_Out ); // 等待高電平過去
          }
      }
   }  
//IR_code[0]低8位用戶碼,IR_code[1]高8位用戶碼,IR_code[2]為數(shù)據(jù)碼,IR_code[3]為數(shù)據(jù)反碼----dat為二進制
  if (IR_code[2]!=~IR_code[3]) //數(shù)據(jù)碼校驗
    {
          EX0=1;
          return;
     }
         fmq=led=0;
         diaplay_IRcode(0,0x80+3);
         diaplay_IRcode(1,0x80+6);
         diaplay_IRcode(2,0xc0+3);
         diaplay_IRcode(3,0xc0+6);
          EX0=1;  // 開中斷
        return;
}
4. 主函數(shù)
void main()
{  
     IR_Out = 1;              // 此口為MCU輸入口,故需要置1
     IT0 = 1;              // 外部中斷0,下降沿觸發(fā)
     EX0 = 1;              // 準許外部中斷
     while(1)
     {  
           while(mode==1)
           {
                    lcdIR_init();
                   while(1)
                        fmq=led=1;
          }
          while(mode==0)
          {
                   lcdtime_init();
                   while(1)
                        display_settime();
          }
     }
}



評分

參與人數(shù) 1黑幣 +5 收起 理由
穿著安踏去拉薩 + 5 樓主,可不可以給我一份0802顯示屏的數(shù)據(jù)手.

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:66287 發(fā)表于 2015-7-16 16:22 | 只看該作者
思路清晰,好程序
回復

使用道具 舉報

板凳
ID:82732 發(fā)表于 2015-9-25 10:36 | 只看該作者
能把電路圖和程序發(fā)給我學習嗎
回復

使用道具 舉報

地板
ID:96072 發(fā)表于 2015-11-17 15:14 | 只看該作者
寫得不錯,把完事程序發(fā)與我吧,郵箱 185478492@qq.com
回復

使用道具 舉報

5#
ID:47634 發(fā)表于 2016-6-30 11:45 | 只看該作者
很好很好,也想做一個,我的郵箱:912503475@qq.com,謝謝
回復

使用道具 舉報

6#
ID:47634 發(fā)表于 2016-6-30 14:21 | 只看該作者
做工不錯,找時間也做一下
回復

使用道具 舉報

7#
ID:91050 發(fā)表于 2016-9-11 10:18 | 只看該作者
1430969765@qq.com  謝謝啦
回復

使用道具 舉報

8#
ID:134810 發(fā)表于 2016-9-20 16:21 來自手機 | 只看該作者
搞懂了挺簡單的。
回復

使用道具 舉報

9#
ID:138608 發(fā)表于 2016-9-27 14:32 | 只看該作者
很好!也想做一個,我的郵箱:158916715@qq.com,謝謝
回復

使用道具 舉報

10#
ID:139236 發(fā)表于 2016-10-11 13:42 | 只看該作者
能否發(fā)一份給我參考一下,正需要這樣的東西來測試編碼,是否所有的編碼都能解出?請發(fā)160222849@qq.com,謝謝!
回復

使用道具 舉報

11#
ID:130256 發(fā)表于 2016-10-12 19:05 | 只看該作者
樓主,你這只是NEC協(xié)議的,你試一下空調(diào)100多位雜亂的編碼試試看能不能顯示!歡迎討論
回復

使用道具 舉報

12#
ID:223761 發(fā)表于 2017-8-1 11:28 | 只看該作者
程序解釋很詳細,學習了
回復

使用道具 舉報

13#
ID:223749 發(fā)表于 2017-8-1 15:51 | 只看該作者
我也想學習一下1101769421@qq.com謝謝啦
回復

使用道具 舉報

14#
ID:225044 發(fā)表于 2017-8-6 11:54 | 只看該作者
謝謝樓主分享!給我發(fā)一下好嗎?821267649@qq.com
回復

使用道具 舉報

15#
ID:72047 發(fā)表于 2017-8-9 00:59 | 只看該作者

謝謝樓主分享!給我發(fā)一下好嗎 licuoo@yahoo.com.tw
回復

使用道具 舉報

16#
ID:72047 發(fā)表于 2017-8-9 01:46 | 只看該作者
謝謝樓主分享!給我發(fā)一下好嗎?
licuoo@yahoo.com.tw
謝謝
回復

使用道具 舉報

17#
ID:6428 發(fā)表于 2017-8-11 06:31 來自手機 | 只看該作者
寫的很好,不錯
回復

使用道具 舉報

18#
ID:226881 發(fā)表于 2017-8-11 10:34 | 只看該作者
好程序啊
回復

使用道具 舉報

19#
ID:227393 發(fā)表于 2017-9-5 09:48 來自手機 | 只看該作者
很好啊,很容易看懂的程序,大神發(fā)給我學習一下,1107572536@qq .com 謝謝!
回復

使用道具 舉報

20#
ID:102702 發(fā)表于 2017-9-5 12:27 | 只看該作者
樓主能附上相關電路圖嗎?謝謝!
回復

使用道具 舉報

21#
ID:79327 發(fā)表于 2017-9-24 13:00 來自手機 | 只看該作者
1339294327@qq.com謝謝麻煩給張電路圖
回復

使用道具 舉報

22#
ID:235691 發(fā)表于 2018-4-10 16:05 | 只看該作者
好東西呀!能否發(fā)我一份程序?郵箱gpdt3209@126.com     謝謝
回復

使用道具 舉報

23#
ID:362333 發(fā)表于 2018-7-7 16:50 | 只看該作者
思路清晰,好程序
回復

使用道具 舉報

24#
ID:365479 發(fā)表于 2018-7-13 17:06 | 只看該作者
樓主可以把程序發(fā)我下嗎?1131103911@qq.com
回復

使用道具 舉報

25#
ID:89072 發(fā)表于 2018-8-5 21:25 | 只看該作者
程序解釋很詳細,學習了
回復

使用道具 舉報

26#
ID:347903 發(fā)表于 2018-8-19 15:44 來自手機 | 只看該作者
謝謝分享,學習一下我郵箱292785968@qq.com
回復

使用道具 舉報

27#
ID:472288 發(fā)表于 2019-1-23 22:13 | 只看該作者
這位朋友,你好!麻煩你把紅外遙控測碼器的全部源程序發(fā)給我,謝謝!我的郵箱是:394162308@qq.com

                                                                      再次表示最真誠地感謝!!!
回復

使用道具 舉報

28#
ID:472288 發(fā)表于 2019-1-23 22:36 | 只看該作者
樓主你好!麻煩把完整程序發(fā)給我好嗎?郵箱:394162308@qq.com    謝謝!!!
回復

使用道具 舉報

29#
ID:555570 發(fā)表于 2019-6-7 11:10 | 只看該作者
學習了 ,樓主你好,可以把完整程序我發(fā)嗎 ?316487650@qq.com
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产福利在线播放麻豆 | 国产成人免费一区二区60岁 | 国产激情在线 | 三级免费毛片 | xx性欧美肥妇精品久久久久久 | 久久精品电影 | 日韩在线 | 成人黄色在线 | 精品亚洲一区二区 | 成人一区二区三区 | 日本aa毛片a级毛片免费观看 | 亚洲成人精品 | 欧美a在线 | 日韩欧美精品一区 | 免费电影av | 欧美久久久网站 | 欧美一区二区三区四区视频 | 免费看一区二区三区 | 国产精品爱久久久久久久 | a级片在线| 91精品国产91 | 中文字幕一区二区三区精彩视频 | 免费在线成人 | 黄色片视频免费 | 超碰97免费在线 | 成人av电影免费在线观看 | 99久久久无码国产精品 | 亚洲天堂av一区 | 国产一二区视频 | 综合久久一区 | 风间由美一区二区三区在线观看 | 欧美一级二级在线观看 | 日韩在线观看网站 | 日韩中文不卡 | 国产一区二区三区免费观看在线 | 国产精品视频网 | 精品国产视频在线观看 | 成人亚洲性情网站www在线观看 | 国产精品久久福利 | 国产精品久久久久久久一区二区 | 人人玩人人添人人澡欧美 |