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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于NEC協(xié)議紅外發(fā)射程序,STC89C52單片機(jī)開發(fā)板調(diào)試通過,附源碼

  [復(fù)制鏈接]
ID:965487 發(fā)表于 2021-10-15 21:18 | 顯示全部樓層 |閱讀模式
基于NEC協(xié)議紅外發(fā)射程序,STC89C52開發(fā)板調(diào)試通過,發(fā)這個貼子是呼應(yīng)前期的帖子——接收程序,歡迎大家多提寶貴意見。
                  
NEC 標(biāo)準(zhǔn)下的編碼表示

                發(fā)送端: 引導(dǎo)碼高電平約9000us 左右,低電平約4500us 左右;
                接收端:引導(dǎo)碼低電平約9000us 左右,高電平約4500us 左右;
                用戶碼16 位,數(shù)據(jù)碼16 位,共32位;
           發(fā)送端:        數(shù)據(jù)0 是用“高電平約560us +低電平約560us”表示。
                                數(shù)據(jù)1 可用“高電平約560us+低電平約1680us”表示

             接收端反轉(zhuǎn):數(shù)據(jù)0 是用“低電平約560us +高電平約560us”表示。
                                數(shù)據(jù)1 可用“低電平約560us+高電平約1680us”表示


單片機(jī)源程序如下:
  1. /*****************************************************
  2.         主機(jī):AT89C52  主頻為11.0592Mhz   紅外NEC協(xié)議編碼
  3.                   編程:wzqwxx 水上人家
  4. ******************************************************/

  5. #include <REGX52.H>
  6. sbit IR_TX = P2^4;         //定義紅外發(fā)射端口

  7. void T0_init()        //初始化定時器0
  8. {
  9.         TMOD = 0x01;
  10.         ET0 = 1;
  11.         EA = 1;
  12. }
  13. void T1_Init(void)                //13微秒@11.0592MHz
  14. {
  15.         TMOD &= 0x0F;                //設(shè)置定時器模式
  16.         TMOD |= 0x20;                //設(shè)置定時器模式
  17.         TL1 = 0xF4;                //設(shè)置定時初始值  38KHz
  18.         TH1 = 0xF4;                //設(shè)置定時重載值
  19.         TF1 = 0;                //清除TF1標(biāo)志
  20.         TR1 = 1;                //定時器1開始計時
  21. }

  22. /****中斷產(chǎn)生紅外發(fā)射不同時長延時函數(shù)560us 1680us 4500us 9000us*****/

  23. void IR_TXD_time( unsigned char th0,tl0)
  24. {
  25.                 TH0 = th0;
  26.                 TL0 = tl0;
  27.                 TR0 = 1;  //打開定時器計時
  28.                 IR_TX = 1;
  29.                 while(TF0 == 0); //延時,等待產(chǎn)生中斷
  30.                 TF0 = 0;
  31.                 TR0 = 0;
  32.                 TR1 = 0;
  33.                 IR_TX = 1;//結(jié)束時拉高發(fā)射端口,結(jié)束發(fā)射
  34. }

  35. /*********紅外發(fā)送4字節(jié)數(shù)據(jù)函數(shù)**********/

  36. void IR_Send_4B_Date(unsigned char *p)
  37. {
  38.         unsigned char i,j;         
  39.         ET1 = 1; TR1 = 1;        //打開T1中斷,產(chǎn)生38KHz頻率波,調(diào)制產(chǎn)生高電平信號
  40.         IR_TXD_time(0xdf,0x9a);// 產(chǎn)生9000us信號
  41.         ET1 = 0;//關(guān)閉38KHz頻率波,調(diào)制產(chǎn)生低電平信號 ,下同
  42.         IR_TXD_time(0xef,0xcd);//  產(chǎn)生4500us信號
  43.         for(i = 0 ; i < 4 ; i++)
  44.         {
  45.                 for(j = 0x01 ; j != 0 ; j <<= 1)//發(fā)送32位數(shù)據(jù)
  46.                 {
  47.                         ET1 = 1; TR1 = 1;
  48.                         IR_TXD_time(0xfe,0x08);//  產(chǎn)生560us高電平信號
  49.                         ET1 = 0;
  50.                         if(*(p+i) & j) //按位與是1則
  51.                                 IR_TXD_time(0xfa,0x4c);//  產(chǎn)生1680us低電平信號
  52.                          else
  53.                                 IR_TXD_time(0xfe,0x3f);//  產(chǎn)生560us低電平信號
  54.                 }
  55.         }
  56.         ET1 = 1;TR1 = 1;
  57.         IR_TXD_time(0xfd,0xfc);//  產(chǎn)生560us高電平信號,結(jié)束32位數(shù)據(jù)發(fā)送
  58.         ET1 = 0;
  59. }

  60. /*********主函數(shù)**********/

  61. void main()
  62. {
  63.         unsigned char IR_Data[] = {0x22,0xdd,0x00,0xff}        ;//待發(fā)數(shù)據(jù)
  64.         unsigned char num;
  65.         T0_init();
  66.         T1_Init();
  67.         while(1)
  68.         {
  69.                 P3 = 0x0f;
  70.                 if(P3 != 0x0f)
  71.                 {
  72.                         IR_TXD_time(0x8f,0x9a);// 延時消抖
  73.                         if(P3 !=0x0f)
  74.                         {  
  75.                                 num = P3&0x0f;
  76.                         }

  77.                 if(num == 0x0e)           //我家機(jī)頂盒的遙控數(shù)據(jù),簡單測試四個鍵值
  78.                 {IR_Data[2] =0xdc   ; IR_Data[3] = ~IR_Data[2];} //        電源
  79.                 else if(num == 0x0d)
  80.                         {IR_Data[2] = 0x99  ; IR_Data[3] = ~IR_Data[2];}//左移
  81.                 else if(num == 0x0b)
  82.                         {IR_Data[2] = 0xc1  ; IR_Data[3] = ~IR_Data[2];} //右移
  83.                 else if(num == 0x07)
  84.                         {IR_Data[2] = 0xd2  ; IR_Data[3] = ~IR_Data[2];}  //下翻
  85.                 IR_Send_4B_Date(IR_Data); //發(fā)送
  86.                 IR_TXD_time(0xff,0x01);// 延時間隔連發(fā)
  87.                 }               
  88.         }
  89. }
  90. void Timer1() interrupt 3
  91. {
  92.         IR_TX = ~IR_TX;  //13微秒@11.0592MHz ,產(chǎn)生38KHz載波
  93. }
  94. void Timer0() interrupt 1
  95. {
  96. }
復(fù)制代碼

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50

查看全部評分

回復(fù)

使用道具 舉報

ID:654797 發(fā)表于 2021-11-26 07:33 | 顯示全部樓層
我有這紅外模塊,正可以下來玩玩,
回復(fù)

使用道具 舉報

ID:654797 發(fā)表于 2021-11-26 07:34 | 顯示全部樓層
我這有個帶紅外收發(fā)的模塊,剛好可以下來玩玩
回復(fù)

使用道具 舉報

ID:928284 發(fā)表于 2022-2-17 17:22 | 顯示全部樓層
剛剛學(xué)過了紅外解碼,正好學(xué)習(xí)發(fā)射。感謝分享
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美在线视频一区 | 国产在线视频在线观看 | 久久久精品网 | 久久精品国产亚洲一区二区三区 | 婷婷桃色网 | 国产激情网 | 国产精品日韩一区二区 | 婷婷色综合| 一区二区三区在线 | 91看片网址 | 午夜一级大片 | 中文字幕视频在线观看 | 欧美精品久久久久 | 亚洲成人999 | 欧美精品一区二区三区视频 | 成人a免费 | 精品亚洲一区二区三区 | 天堂三级 | 一二三四在线视频观看社区 | 免费视频中文字幕 | 亚洲激情在线视频 | 国产成人a亚洲精品 | 国产精品一区在线观看 | 日韩欧美天堂 | 欧美v免费 | 国产免费一区二区三区免费视频 | 国产第二页 | 国产日韩久久久久69影院 | 国产精品久久久久久久久久久免费看 | 精品视频一区二区 | 久久久久久久久久久久久91 | 久久99精品久久久久久 | 午夜欧美| 欧美日韩久| 亚洲区一区二 | 亚洲欧美日韩久久久 | 国产欧美在线播放 | 久久精品99 | 碰碰视频| 久久国产精品无码网站 | 亚洲最大福利网 |