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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

msp430單片機紅外解碼 12864顯示

[復制鏈接]
跳轉到指定樓層
樓主
ID:372145 發表于 2018-7-19 09:39 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
紅外解碼的代碼,但是還是有一些瑕疵沒有解決

單片機源程序如下:
  1. MSP430紅外解碼.txt35溫馨是大自然的一抹色彩,獨具慧眼的匠師才能把它表現得盡善盡美;溫馨是樂譜上的一個跳動音符,感情細膩的歌唱者才能把它表達得至真至純#include "msp430x14x.h"   //xt1 32768KHZ xt2 8MHZ ,紅外接收頭接于P1.0
  2. #include<12864-9.h>
  3. //**********************************************************************
  4. #define   HONGWAI_1      0x01//紅外接收頭接于P1.0
  5. #define   HONGWAI_0      0xfe
  6. #define   HONGWAI_IN     (P1IN&HONGWAI_1) //P1.0輸入
  7. //**********************************************************************
  8. char IRcode[4]={0,0,0,0};   //定義一個4字節的數組用來存儲代碼
  9. void int_timer(void)
  10. {
  11. TACTL|=TASSEL1+TACLR;//選擇SMCLK作為定時器的時鐘
  12. TACTL|=MC0;//增加模式,并且使能中斷
  13. TACCR0=9999;//中斷周期
  14. }
  15. void int_ex(void) //初始化P1.0口外部中斷
  16. {
  17. P1DIR&=HONGWAI_0;//輸入口
  18. P1SEL&=HONGWAI_0; //使用普通IO
  19. P1IE|=HONGWAI_1;//外部中斷允許
  20. P1IES|=HONGWAI_1;//下降沿觸發中斷
  21. P1IFG= 0x00; // 清除P1口中斷標志
  22. }
  23. void sent_byte2(char dat)
  24. {
  25. while((IFG2&UTXIFG1)==0);//判斷發送緩沖區是否結束
  26. U1TXBUF=dat;
  27. }
  28. #pragma vector=UART1RX_VECTOR
  29. __interrupt void UART1_RX_ISR(void)
  30. {
  31. char data=0;
  32. data=U1RXBUF; //讀取接受到的數據并且發送到PC機
  33. P1OUT=data;
  34. sent_byte2(data+1);
  35. }

  36. void int_UART2(void)
  37. {
  38. P3SEL |= 0xc0;                            // P3.6,7 = USART0 TXD/RXD
  39. UCTL0 |= SWRST;                           //復位串口
  40. ME2 |= UTXE1 + URXE1;                     // 允許接收、發送
  41. UCTL1 |= CHAR;                            // 8位數據
  42. UTCTL1 |= SSEL0;                          // UCLK = ACLK
  43. UBR01 = 0x03;                             // 波特率9600
  44. UBR11 = 0x00;                             //
  45. UMCTL1 = 0x4A;                            // 波特率小數部分
  46. UCTL1 &= ~SWRST;                          // 串口停止復位,正常工作
  47. IE2 |= URXIE1;                            // 使能接收中斷
  48. _EINT();                                 //系統中斷允許

  49. }

  50. void int_clk()
  51. {
  52.     char i;
  53.     BCSCTL1&=~XT2OFF; //打開XT振蕩器
  54.     BCSCTL2|=SELM1+SELS+DIVS_2+DIVS_1;//MCLK 8M and SMCLK 1M 8分頻
  55.     do
  56. {
  57.         IFG1 &= ~OFIFG;                 //清除振蕩錯誤標志
  58.         for(i = 0; i < 100; i++)
  59.    _NOP();    //延時等待
  60.         }
  61.     while ((IFG1 & OFIFG) != 0); //如果標志為1繼續循環等待
  62.     IFG1&=~OFIFG;
  63. }
  64. void delay_07ms(char h)//0.7ms
  65. {
  66. char p;
  67. for(p=h;p>0;p--)
  68. {
  69.     int_timer();
  70.     while(TAR<=700);
  71.     TACTL=0;         //停止計數器
  72.     TAR=0;
  73. }
  74. }
  75. void delay_1ms(void)//1ms
  76. {
  77.     int_timer();
  78.     while(TAR<=1000);
  79.     TACTL=0;         //停止計數器
  80.     TAR=0;
  81. }
  82. #pragma vector=PORT1_VECTOR
  83. __interrupt void PORT1_ISR(void)
  84. {
  85.    char m,n,k,CodeTemp;
  86.    int j;
  87.    P1IE&=HONGWAI_0;//禁止P1.0中斷
  88.    if(P1IFG&HONGWAI_1==HONGWAI_1)
  89.    {
  90.     P1IFG=0;//清中斷標志
  91.    
  92.     for(k=0;k<10;k++)
  93.       {
  94.         delay_07ms(1);
  95.         if (HONGWAI_IN)         //如果0.7ms后HONGWAI_IN=1,說明不是引導碼
  96.            {
  97.        k=10;break;
  98.     }
  99.         else
  100.    if(k==9)            //如果持續了10×0.7ms=7ms的低電平,說明是引導碼
  101.            {
  102.       while(HONGWAI_IN==0);
  103.              delay_07ms(5);     //跳過持續4.5ms的高電平
  104.              for(m=0;m<4;m++)       //分別讀取4個字節
  105.                  {
  106.       for(n=1;n<=8;n++)      //每個字節8個bit的判斷
  107.                  {
  108.       while(HONGWAI_IN==0);      //等待上升沿
  109.                     delay_07ms(1);        //從上升沿那一時刻開始延時0.9ms,再判斷IRsignal
  110.                     if(HONGWAI_IN)     //如果IRsignal是"1",則向右移入一位"1"
  111.                      {
  112.                               delay_1ms();   //延時1ms
  113.                        CodeTemp=CodeTemp|0x80;
  114.                        if(n<8) CodeTemp=CodeTemp>>1;
  115.                       }
  116.                     else
  117.                       if(n<8)CodeTemp=CodeTemp>>1;//如果IRsignal是"0",則向右移一位,自動補"0"
  118.                         }
  119.                    IRcode[m]=CodeTemp;
  120.                    CodeTemp=0;
  121.                   }
  122.   //        sent_byte2(IRcode[3]);
  123.           for(j=50;j>0;j--)
  124.             delay_1ms();   //延時1ms
  125.          
  126.           }
  127.     }
  128.    
  129. }
  130.      
  131. P1IE|=HONGWAI_1;//外部中斷允許
  132. }
  133. int main( void )
  134. {
  135. WDTCTL = WDTPW + WDTHOLD;
  136. int_clk();   //初始化時鐘
  137. lcd_init();
  138. lcd_full_disp(0);//清屏
  139. int_ex();   //初始化P1.0口外部中斷
  140. _BIS_SR(GIE);
  141. //int_UART2();
  142. while(1)
  143. {   d_hz(1,0,0,0);
  144.     d_hz(3,0,1,0);
  145.     d_hz(5,0,2,0);
  146.     dchar_16(7,0,':',0);
  147.     dchar_16(8,0,IRcode[0]/100+48,0);
  148.     dchar_16(9,0,IRcode[0]%100/10+48,0);
  149.     dchar_16(10,0,IRcode[0]%10+48,0);
  150.     d_hz(1,1,0,0);
  151.     d_hz(3,1,1,0);
  152.     d_hz(5,1,2,0);
  153.     d_hz(7,1,3,0);
  154.     d_hz(9,1,2,0);
  155.     dchar_16(11,1,':',0);
  156.     dchar_16(12,1,IRcode[1]/100+48,0);
  157.     dchar_16(13,1,IRcode[1]%100/10+48,0);
  158.     dchar_16(14,1,IRcode[1]%10+48,0);
  159.     d_hz(1,2,4,0);
  160.     d_hz(3,2,5,0);
  161.     d_hz(5,2,2,0);
  162.     dchar_16(7,2,':',0);
  163.     dchar_16(8,2,IRcode[2]/100+48,0);
  164.     dchar_16(9,2,IRcode[2]%100/10+48,0);
  165.     dchar_16(10,2,IRcode[2]%10+48,0);
  166.     d_hz(1,3,4,0);
  167.     d_hz(3,3,5,0);
  168.     d_hz(5,3,2,0);
  169.     d_hz(7,3,3,0);
  170.     d_hz(9,3,2,0);
  171.     dchar_16(11,3,':',0);
  172.     dchar_16(12,3,IRcode[3]/100+48,0);
  173.     dchar_16(13,3,IRcode[3]%100/10+48,0);
  174.     dchar_16(14,3,IRcode[3]%10+48,0);
  175.    
  176. //   _BIS_SR(LPM1_bits+ GIE);                //打開低功耗模式1、打開系統中斷允許
  177. }
  178. }
  179. const uchar  HZ[16*96]={
  180.    
  181. //用(0) 戶(1) 碼(2) 反(3) 操(4) 作(5)

  182. 0x00,0x00,0x00,0xFE,0x22,0x22,0x22,0x22,0xFE,0x22,0x22,0x22,0x22,0xFE,0x00,0x00,
  183. 0x80,0x40,0x30,0x0F,0x02,0x02,0x02,0x02,0xFF,0x02,0x02,0x42,0x82,0x7F,0x00,0x00,/*"用",0*/

  184. 0x00,0x00,0x00,0xF8,0x88,0x88,0x88,0x89,0x8A,0x8E,0x88,0x88,0x88,0xF8,0x00,0x00,
  185. 0x80,0x40,0x30,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"戶",1*/

  186. 0x02,0x82,0xE2,0x5E,0x42,0xC2,0x00,0x02,0xFA,0x82,0x82,0x82,0xFE,0x80,0x00,0x00,
  187. 0x01,0x00,0x7F,0x10,0x10,0x3F,0x00,0x04,0x04,0x04,0x44,0x84,0x40,0x3F,0x00,0x00,/*"碼",2*/

  188. 0x00,0x00,0xFE,0x12,0x72,0x92,0x12,0x12,0x12,0x11,0x91,0x71,0x01,0x00,0x00,0x00,
  189. 0x40,0x30,0x4F,0x40,0x20,0x21,0x12,0x0C,0x0C,0x12,0x11,0x20,0x60,0x20,0x00,0x00,/*"反",3*/

  190. 0x08,0x08,0xFF,0x88,0x48,0x00,0xF0,0x97,0xF5,0x05,0xF5,0x95,0x97,0xF0,0x00,0x00,
  191. 0x42,0x81,0x7F,0x00,0x40,0x42,0x22,0x12,0x0A,0xFF,0x06,0x0A,0x32,0x62,0x22,0x00,/*"操",4*/

  192. 0x80,0x40,0x20,0xF8,0x07,0x22,0x18,0x0C,0xFB,0x48,0x48,0x48,0x68,0x48,0x08,0x00,
  193. 0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0xFF,0x04,0x04,0x04,0x04,0x06,0x04,0x00,/*"作",5*/
  194.    
  195. };
復制代碼

所有資料51hei提供下載:
MSP430紅外解碼.doc (35 KB, 下載次數: 14)


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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧洲妇女成人淫片aaa视频 | 国产亚洲精品久久久久久牛牛 | 亚洲91精品| 中文字幕亚洲欧美 | 一区二区三区四区毛片 | 亚洲一区二区电影在线观看 | 亚洲综合在线一区二区 | 高清久久 | 爱草在线| 在线播放第一页 | 久久久青草婷婷精品综合日韩 | 日韩一区二区三区视频 | 国产成在线观看免费视频 | 亚洲高清av | 97综合在线| 久久99精品久久久久久狂牛 | 高清久久久 | 日韩精品久久久久久 | 超碰在线免费 | av免费网| 一级全黄视频 | 成人影院免费视频 | 欧美一级特黄aaa大片在线观看 | 国产探花在线精品一区二区 | 日韩三极 | 国产欧美日韩一区 | a级片在线观看 | 国产亚洲欧美在线 | 91在线免费视频 | 亚洲第一天堂 | 九九伊人sl水蜜桃色推荐 | 精品久久久久久久久久久久久久 | 日韩成人在线视频 | 天堂va在线观看 | 一级片片 | 一区二区视频在线 | 日韩一区二区福利视频 | 日韩免费激情视频 | 亚洲黄色在线免费观看 | 在线播放中文字幕 | 成人免费在线观看视频 |