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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

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

遙控風(fēng)扇芯片BA5104 STC8G1K08-TSSOP20單片機(jī)四位共陰數(shù)碼管 紅外解碼程序

  [復(fù)制鏈接]
回帖獎(jiǎng)勵(lì) 100 黑幣 回復(fù)本帖可獲得 5 黑幣獎(jiǎng)勵(lì)! 每人限 1 次
ID:796012 發(fā)表于 2023-5-8 09:40 | 顯示全部樓層 |閱讀模式
  1. /*風(fēng)扇遙控芯片:BA5104  紅外遙控解碼程序  晶振頻率:11.0592MHZ  1幀12位,一次至少發(fā)2幀*//*歷時(shí)8天成功調(diào)試,干擾碼直接清零,只顯示相關(guān)鍵值*/
  2. /*解碼后的鍵值:關(guān)機(jī) 0xfd81; 開(kāi)/風(fēng)速 0xfd82; 風(fēng)類(lèi) 0xfd84; 定時(shí) 0xfd88; 搖頭 0xfd90; 彩燈 0xfdc3; 無(wú) 0xfda0; 無(wú) 0xfdc6*/
  3. #include "STC8G.h"/*單片機(jī):STC8G1K08-TSSOP20*//*紅外端口:P33(包含外部中斷1,改端口時(shí)要注意)*/
  4. unsigned char q,b,s,g,/*位選*/xs,ir[13],j,c;unsigned int r,m,d0,d1;
  5. unsigned char code dm[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};/*共陰段碼*/
  6. void delayms(unsigned int i){while(i--);}/*延時(shí)函數(shù)*/
  7. void int1init(){IT1=1;EX1=1;EA=1;}/*外部中斷1初始化函數(shù),設(shè)置成下降沿觸發(fā)*/
  8. void d1r1Init()/*定時(shí)器1初始化函數(shù)*/{AUXR |= 0x40;/*1T*/TMOD &= 0x0F;TL1 = 0x70;/*初始值*/TH1 = 0xFF;/*初始值*/TF1 = 0;/*清除TF1標(biāo)志*/TR1=0;/*先不啟動(dòng)*/ET1=1;/*開(kāi)中斷*/EA=1;}
  9. void kayscan()/*P1端口對(duì)地增加按鍵*/
  10. {
  11.         P1=0xff;
  12.         P34=1;P35=1;P36=1;P37=1;
  13.   if(P11==0){delayms(5);if(P11==0){IAP_CONTR |= 0x20;/*軟件復(fù)位,并且從用戶程序開(kāi)始執(zhí)行*/while(!P11);}}
  14.         if(P12==0){delayms(5);if(P12==0){xs=1;while(!P12);}}if(P13==0){delayms(5);if(P13==0){xs=2;while(!P13);}}  
  15.         P1=0x00;
  16. }
  17. void display()/*數(shù)碼管掃描*/
  18. {
  19.         unsigned char i;for(i=0;i<4;i++){switch(i)/*選擇顯示位置*/
  20.         {case(0):P34=0;P35=1;P36=1;P37=1;break;/*千位*/case(1):P34=1;P35=0;P36=1;P37=1;break;/*百位*/case(2):P34=1;P35=1;P36=0;P37=1;break;/*十位*/case(3):P34=1;P35=1;P36=1;P37=0;break;/*個(gè)位*/}
  21.    if(i==0){P1=dm[q];}/*千位*/if(i==1){P1=dm[b];}/*百位*/if(i==2){P1=dm[s];}/*十位*/if(i==3){P1=dm[g];}/*個(gè)位*/delayms(50); /*間隔一段時(shí)間掃描*/P1=0x00;/*消隱*/}
  22. }
  23. void ircl()/*紅外時(shí)間記錄*/
  24. {
  25.         unsigned char c1;
  26.         if(!P33)
  27.         {
  28.     d1=0;
  29.     TR1=1;/*啟動(dòng)定時(shí)器1*/
  30.     while(!P33);
  31.     TR1=0;
  32.     ir[j]=d1;
  33.         }
  34.         /*編碼位置清零*/
  35.   if(P33==1&&j>0)/*當(dāng)端口高電平時(shí),編碼位置還未清零*/
  36.         {
  37.     c++;/*計(jì)算一下持續(xù)時(shí)間*/
  38.    if(c>250){c1++;c=0;}/*超過(guò)一定的時(shí)間*/
  39.          if(c1>5){j=0;c1=0;}/*就要再次按遙控按鍵*/
  40.          /*如果還有干擾碼就直接清零*/
  41.         }
  42. }
  43. void xssz() /*顯示的數(shù)值*/
  44. {
  45.         /*按K1顯示收錄的紅外編碼*/
  46.         if(xs==0){g=m/1%16;s=m/16%16;b=m/256%16;q=m/4096%16;}/*1倍代表示4位16進(jìn)制,16倍表示8位16進(jìn)制,256倍表示12位16進(jìn)制,4096倍表示16位16進(jìn)制*/
  47.         /*按K2顯示0表示編碼位置清零成功*/
  48.         if(xs==1){g=c%10;s=c/10%10;b=c/100%10;q=0;}
  49.         /*按K3顯示大約中斷次數(shù)和快速清零*/
  50.         if(xs==2){g=j%10;s=j/10%10;b=j/100%10;q=j/1000%10;}
  51. }
  52. void main()
  53. {
  54.         P1M0=0xff; P1M1=0; P3M0=0; P3M1=0; P5M0=0; P5M1=0;/*端口模式*/P33=1;j=0;xs=0;
  55.         d1r1Init();/*定時(shí)器1初始化*/
  56.         delayms(1000);/*等待電源穩(wěn)定*/
  57.         int1init();/*外部中斷1初始化*/
  58.         while(1)
  59.         {
  60.                 ircl();
  61.                 kayscan();
  62.                 xssz();
  63.                 display();
  64.         }
  65. }
  66. /*傳統(tǒng)51單片機(jī)具有5個(gè)中斷源,中斷優(yōu)先級(jí)從高到低依次是:外部中斷0(interrupt0)、定時(shí)器0(interrupt1)、外部中斷1(interrupt2)、定時(shí)器1(interrupt3)和串口中斷(interrupt4)。*/
  67. void int1() interrupt 2 /*外部中斷1服務(wù)函數(shù),低電平觸發(fā)*//*受遙控中斷影響,不夠時(shí)間處理編碼,記錄時(shí)間不可以在這函數(shù)里*/
  68. {
  69.         unsigned int i;
  70.         j++;/*編碼位置*/
  71.   if(m==0)/*如果還沒(méi)解碼正確*/
  72.           {
  73.       for(i=1;i<13;i++)/*未捕獲間隔碼*/
  74.          {
  75.            r=r<<1;
  76.            if(ir[i]>70&&ir[i]<125)
  77.              {
  78.                      r=r|0x001;
  79.              }
  80.           }
  81.     }
  82.         if(j>12){r=r|0xf000;}/*表示收到符合長(zhǎng)度的編碼*/else{r=0x0000;}/*清零*/  
  83.         if(r==0xfd81|r==0xfd82|r==0xfd84|r==0xfd88|r==0xfd90|r==0xfdc3|r==0xfda0|r==0xfdc6)
  84.         {
  85.                 m=r;/*收錄合格編碼*/
  86.         }
  87.         else
  88.         {
  89.                 m=0;
  90.         }
  91.         if(j>12&m==0){j=0;}/*如果大于12位了,編碼還不正確,就把位置清零,防止下一幀亂碼*/
  92. }
  93. void TM1_Isr() interrupt 3 /*定時(shí)器1 中斷服務(wù)函數(shù),每約13微秒中斷1次*/{d1++;/*每約13微秒加1*/}
復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

ID:796012 發(fā)表于 2023-5-8 09:44 | 顯示全部樓層
歡迎各位黒友一起研究學(xué)習(xí)。
回復(fù)

使用道具 舉報(bào)

ID:1075581 發(fā)表于 2023-5-8 23:14 | 顯示全部樓層
不錯(cuò)不錯(cuò),回去我試試
回復(fù)

使用道具 舉報(bào)

ID:85865 發(fā)表于 2023-5-9 08:02 | 顯示全部樓層
紅外解碼程序
回復(fù)

使用道具 舉報(bào)

ID:603592 發(fā)表于 2023-5-9 09:45 | 顯示全部樓層
不錯(cuò) 也做個(gè)試試
回復(fù)

使用道具 舉報(bào)

ID:1064915 發(fā)表于 2023-5-9 16:04 | 顯示全部樓層
配上原理圖,更完美
回復(fù)

使用道具 舉報(bào)

ID:78835 發(fā)表于 2023-5-9 19:29 | 顯示全部樓層
代碼有點(diǎn)亂啊
回復(fù)

使用道具 舉報(bào)

ID:409878 發(fā)表于 2023-5-10 09:06 | 顯示全部樓層
代碼學(xué)習(xí)是否規(guī)范?
回復(fù)

使用道具 舉報(bào)

ID:796012 發(fā)表于 2023-5-10 11:49 | 顯示全部樓層
回復(fù)

使用道具 舉報(bào)

ID:796012 發(fā)表于 2023-5-10 11:50 | 顯示全部樓層
參考原理圖:
參考原理圖.png
回復(fù)

使用道具 舉報(bào)

ID:796012 發(fā)表于 2023-5-10 12:26 | 顯示全部樓層
joyb 發(fā)表于 2023-5-9 16:04
配上原理圖,更完美

已上傳原理圖了
回復(fù)

使用道具 舉報(bào)

ID:409878 發(fā)表于 2023-5-11 08:37 | 顯示全部樓層
這個(gè)不屬于51單片機(jī)?
回復(fù)

使用道具 舉報(bào)

ID:796012 發(fā)表于 2023-5-11 10:06 | 顯示全部樓層
suiwinder 發(fā)表于 2023-5-11 08:37
這個(gè)不屬于51單片機(jī)?

屬于的呢,是51系列單片機(jī)呀。
回復(fù)

使用道具 舉報(bào)

ID:1076852 發(fā)表于 2023-5-11 16:58 | 顯示全部樓層
贊,學(xué)到了
回復(fù)

使用道具 舉報(bào)

ID:965189 發(fā)表于 2023-5-11 22:50 | 顯示全部樓層
不一樣的紅外解碼。
回復(fù)

使用道具 舉報(bào)

ID:1063563 發(fā)表于 2023-5-12 07:52 | 顯示全部樓層
很不錯(cuò)的程序謝謝分享
回復(fù)

使用道具 舉報(bào)

ID:194654 發(fā)表于 2023-5-12 08:56 | 顯示全部樓層
這個(gè)值得學(xué)習(xí),謝謝分享
回復(fù)

使用道具 舉報(bào)

ID:1095638 發(fā)表于 2023-10-12 17:27 | 顯示全部樓層
牛逼啊,兄弟
回復(fù)

使用道具 舉報(bào)

ID:433219 發(fā)表于 2023-10-14 08:05 | 顯示全部樓層
紅外解碼  哪種b編碼格式? NEC ???
回復(fù)

使用道具 舉報(bào)

ID:796012 發(fā)表于 2023-10-15 13:32 | 顯示全部樓層
wkman 發(fā)表于 2023-10-14 08:05
紅外解碼  哪種b編碼格式? NEC ???

風(fēng)扇芯片專(zhuān)用的格式,一開(kāi)始我也以為是NEC,搞了好久……
回復(fù)

使用道具 舉報(bào)

ID:773929 發(fā)表于 2023-10-18 10:15 | 顯示全部樓層
謝謝分享,我最近也寫(xiě)了一款
回復(fù)

使用道具 舉報(bào)

ID:104712 發(fā)表于 2023-12-2 09:16 來(lái)自觸屏版 | 顯示全部樓層
玉萌業(yè)余發(fā)展 發(fā)表于 2023-5-8 09:44
歡迎各位黒友一起研究學(xué)習(xí)。

講解一下就好了
回復(fù)

使用道具 舉報(bào)

ID:104712 發(fā)表于 2023-12-2 10:28 來(lái)自觸屏版 | 顯示全部樓層
  c++;/*計(jì)算一下持續(xù)時(shí)間*/
   if(c>250){c1++;c=0;}/*超過(guò)一定的時(shí)間*/
         if(c1>5){j=0;c1=0;}/*就要再次按遙控按鍵*/
         /*如果還有干擾碼就直接清零*/

一次多長(zhǎng)時(shí)間
回復(fù)

使用道具 舉報(bào)

ID:104712 發(fā)表于 2023-12-2 16:26 來(lái)自觸屏版 | 顯示全部樓層
玉萌業(yè)余發(fā)展 發(fā)表于 2023-5-8 09:44
歡迎各位黒友一起研究學(xué)習(xí)。

改成51不行
  1. #include "reg52.h"
  2. unsigned char q,b,s,g,xs,ir[13],j,c;unsigned int r,m,d0,d1,value;
  3. unsigned char  code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
  4.                                         0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};/"?0~F??
  5. sbit XP32=P3^2;
  6. sbit LSA=P2^2;
  7. sbit LSB=P2^3;
  8. sbit LSC=P2^4;
  9. void delay(int i)
  10. {
  11.         while(i--);        
  12. }

  13. void display()
  14. {
  15.         unsigned char i;
  16.                 xs=0;
  17.          if(xs==0)
  18.                 {
  19.                         g=value/1%16;
  20.                         s=value/16%16;
  21.                         b=value/256%16;
  22.                         q=value/4096%16;
  23.                 }
  24.                 for(i=0;i<4;i++)
  25.                 {
  26.                         switch(i)
  27.                         {
  28.                                 
  29.                         case(0):
  30.                                 LSA=0;LSB=0;LSC=0; break;/"??0?
  31.                         case(1):
  32.                                 LSA=1;LSB=0;LSC=0; break;/"??1?
  33.                         case(2):
  34.                                 LSA=0;LSB=1;LSC=0; break;/"??2?
  35.                         case(3):
  36.                                 LSA=1;LSB=1;LSC=0; break;/"??3?
  37.                         }        
  38.                                 if(i==0)
  39.                                 {
  40.                                         P0=smgduan[q];
  41.                                 }
  42.                                 if(i==1)
  43.                                 {
  44.                                         P0=smgduan[b];
  45.                                 }
  46.                                 if(i==2)
  47.                                 {        
  48.                                         P0=smgduan[s];
  49.                                 }
  50.                                 if(i==3)
  51.                                 {
  52.                                         P0=smgduan[g];
  53.                                 }
  54.                         
  55.                                 
  56.                                 //P0=smgduan[i];
  57.                                 delay(100);
  58.                                 P0=0x00;
  59.                         
  60.         }               
  61. }
  62. void ircl()
  63. {
  64.         unsigned char c1;
  65.         if(!XP32)
  66.         {
  67.                         d1=0;
  68.                         TR0=1;
  69.                         while(!XP32);
  70.                         TR0=0;
  71.                         ir[j]=d1;
  72.         }
  73.         
  74.                 if(XP32==1&&j>0)
  75.         {
  76.                         c++;
  77.                         if(c>250){c1++;c=0;}
  78.                         if(c1>5){j=0;c1=0;}
  79.    
  80.         }
  81. }

  82. void main()
  83. {
  84.       
  85.                 TMOD=0x11;
  86.                  
  87.                 TH0=0xFF;
  88.                 TL0=0xF2;
  89.                 TR0=0;
  90.                 ET0=1;
  91.                 xs=0;
  92.         
  93.                 IT0=1;
  94.                 EX0=1;
  95.         EA=1;
  96.         while(1)
  97.         {
  98.                ircl();
  99.                
  100.               
  101.                 display();
  102.         }
  103. }
  104. void int1() interrupt 0
  105. {
  106.         unsigned int i;
  107.         j++;
  108.                 if(m==0)
  109.         {
  110.                         for(i=1;i<13;i++)
  111.                         {
  112.                                 r=r<<1;
  113.                                 if(ir[i]>70&&ir[i]<125)
  114.                                 {
  115.                      r=r|0x001;
  116.                                 }
  117.           }
  118.                 }
  119.       
  120.                
  121.         //        if(r==0xfd81|r==0xfd82|r==0xfd84|r==0xfd88|r==0xfd90|r==0xfdc3|r==0xfda0|r==0xfdc6)
  122.                 if(j>12)
  123.                 {
  124.                 value=r;j=0; m=0;r=0;
  125.         }
  126.       

  127. }
  128. void t0() interrupt 1
  129. {        
  130.         TH0=0xFF;
  131.         TL0=0xF2;
  132.         d1++;
  133. }
  134. //1.085069444444444e-6
復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

ID:1103167 發(fā)表于 2023-12-14 17:20 | 顯示全部樓層
希望能學(xué)會(huì)單片機(jī)
回復(fù)

使用道具 舉報(bào)

ID:21455 發(fā)表于 2023-12-21 16:19 | 顯示全部樓層
希望能學(xué)好單片機(jī)。謝謝分享,同時(shí)想得到黑幣
回復(fù)

使用道具 舉報(bào)

ID:23844 發(fā)表于 2024-4-25 19:48 | 顯示全部樓層
樓主的程序好象不完整,可否上傳一份壓縮包分享一下。
回復(fù)

使用道具 舉報(bào)

ID:11804 發(fā)表于 2024-4-30 14:26 | 顯示全部樓層
樓主的程序不完整,可否上傳一份壓縮包分享一下。
回復(fù)

使用道具 舉報(bào)

ID:23303 發(fā)表于 2024-5-3 11:43 | 顯示全部樓層
想學(xué)習(xí)一下,請(qǐng)樓主多幫助,謝謝!
回復(fù)

使用道具 舉報(bào)

ID:796012 發(fā)表于 2024-5-5 09:50 | 顯示全部樓層
zkele 發(fā)表于 2024-4-25 19:48
樓主的程序好象不完整,可否上傳一份壓

我還想讓黒友優(yōu)化一下呢
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲欧美视频一区 | av一区二区在线观看 | 亚洲精品一区二三区不卡 | 99pao成人国产永久免费视频 | 久久亚洲欧美日韩精品专区 | 亚洲码欧美码一区二区三区 | 国产精品久久久久无码av | 国产电影一区二区三区爱妃记 | 国产做a爱片久久毛片 | 中文字幕亚洲视频 | 久久综合伊人 | 成人在线免费 | 99这里只有精品 | 夜夜操天天艹 | 蜜桃视频一区二区三区 | 国产精品久久在线观看 | 国产精品美女久久久久久免费 | 免费网站国产 | 在线免费黄色小视频 | 成人午夜精品 | 久久无毛| 国产激情91久久精品导航 | 日韩一二区在线 | 国产免费一区二区三区最新6 | 国产麻豆一区二区三区 | 97精品一区二区 | 羞羞的视频在线看 | 亚洲精品久久久久久一区二区 | 亚洲色图50p| 91色网站| 99精品国产一区二区青青牛奶 | 国产精品久久久久久一区二区三区 | 精品一区二区免费视频 | 久久高清精品 | 欧美人成在线视频 | 黄色三级毛片 | 亚洲综合国产 | 伊人网综合在线观看 | 视频二区在线观看 | 欧美国产激情 | 91传媒在线观看 |