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

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

QQ登錄

只需一步,快速開始

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

一個(gè)433 315 RF的STM32解碼程序

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:450849 發(fā)表于 2020-10-23 13:04 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
RF 協(xié)議 同步信號(hào) 300us高電平 10MS 低電平,數(shù)據(jù) “0” 300us 高電平 1ms 低電平。
                                                                  數(shù)據(jù) “1”  1ms 高電平 300us低電平。


只需要配置一個(gè)中斷,將這個(gè)函數(shù)放在中斷里調(diào)用,
void ir_interrupt_drives(void)//中斷50us中調(diào)用
在main 中 while(1)里面 調(diào)用    IR_Process(); 即可實(shí)現(xiàn)RF的解碼。

單片機(jī)源程序如下:

  1. // Copyright (c) all rights reserved
  2. //********************版權(quán)和版本的聲明**********************

  3. //************************項(xiàng)目信息**************************
  4. //項(xiàng)目名稱:
  5. //客戶名稱:
  6. //************************文件信息**************************
  7. //文件名稱:    hal_ir.c
  8. //文件頭文件:  hal_ir.h
  9. //作    者:zenghb
  10. //起止時(shí)間:2020年3月26日11:58:41
  11. //文件版本:V2.0
  12. //校 驗(yàn) 和:
  13. //************************硬件信息**************************
  14. //目標(biāo)器件:ob39s003
  15. //源 時(shí) 鐘:
  16. //PCBA型號(hào):
  17. //************************平臺(tái)信息**************************
  18. //開發(fā)環(huán)境:keil
  19. //燒錄環(huán)境:
  20. //配置內(nèi)容:
  21. //************************功能信息**************************
  22. //程序功能:
  23. //函數(shù)列表:
  24. //************************修改記錄**************************
  25. // <author>  <time>   <version> <desc>
  26. //1.zenghb    2020-03-26    V2.0   
  27. //2.
  28. //**********************************************************
  29. #include "hal_ir.h"


  30. #define INTERRUPT_INT4 2

  31. //-------------------------1-------------------------------------------------------------------
  32. IR_Typedef  IR1;


  33. #define IR1_DECODE_VALUE        0x87
  34. #define IR2_DECODE_VALUE        0x87
  35. #define IR3_DECODE_VALUE        0x87
  36. #define IR4_DECODE_VALUE        0x87
  37. #define IR5_DECODE_VALUE        0x87
  38. #define IR6_DECODE_VALUE        0x87

  39. //unsigned int ProcessTime;

  40. void ir_agreement_check(void)
  41. {
  42.         static unsigned char  i;             //接收紅外信號(hào)處理

  43.     IR1.IrTimeOutCnt = 20;
  44.    
  45.         IR1.Falg.bits.IrEndFlag = 0; //只要有下降沿,結(jié)束是不存在結(jié)束。
  46.        
  47.     if(IR1.Falg.bits.StartFlag)                        
  48.     {
  49.         if( IR1.IrTime < 220 && IR1.IrTime >= 180)//引導(dǎo)碼 TC9012的頭碼,10.0ms        
  50.                 {               
  51.                         i=0;
  52.                 }

  53.         if(!IR1.Falg.bits.IR_OK)  
  54.         {
  55.                         if(i>1)
  56.                         {
  57.                                 if(IR1.IrTime < 4 || IR1.IrTime > 23)
  58.                                 {
  59.                                          IR1.Falg.bits.StartFlag = 0;
  60.                                 }
  61.                         }
  62.                         IR1.IrData[i++] = (unsigned char)IR1.IrTime;//存儲(chǔ)每個(gè)電平的持續(xù)時(shí)間,用于以后判斷是0還是1
  63.                         IR1.IrTime = 0;
  64.         }
  65.         
  66.         if(i >= 24)
  67.         {
  68.             IR1.Falg.bits.IR_OK=1;
  69.             i=0;
  70.         }
  71.     }
  72.     else
  73.     {
  74.         IR1.IrTime = 0;
  75.         IR1.Falg.bits.StartFlag = 1;
  76.     }
  77. }

  78. void ir_decode(void)//紅外碼值處理函數(shù)
  79. {
  80.         unsigned char i,j, k,value;

  81.         k=1;
  82.         for(i=0;i<3;i++)
  83.         {
  84.                 for(j=1;j<=8;j++) //處理1個(gè)字節(jié)8位
  85.                 {
  86.                         value<<=1;
  87.                         if( IR1.IrData[k] > 17 && IR1.IrData[k] < 23)//大于某值為1,這個(gè)和晶振有絕對(duì)關(guān)系,這里使用12M計(jì)算,此值可以有一定誤差
  88.                         {
  89.                                 value|=0x01;
  90.                         }
  91.                         k++;
  92.                 }
  93.                 IR1.IrCode[i] = value;
  94.         }
  95.         value=0;
  96. }


  97. void IR_Process(void)
  98. {
  99.         if(IR1.Falg.bits.IR_OK)                        //如果接收好了進(jìn)行紅外處理
  100.         {   
  101.                 ir_decode1();
  102.                 if(IR1.ProcessTime>0)
  103.                 {
  104.                         IR1.IrCode[0]=0;
  105.                         IR1.IrCode[1]=0;
  106.                         IR1.IrCode[2]=0;
  107.                 }
  108.                 IR1.Falg.bits.IR_OK=0;
  109.                 if(IR1.IrCode[0]==0xaa && IR1.IrCode[1]==0xaa)
  110.                 {
  111.                         IR1.ProcessTime = 10000;
  112.                 }
  113.         }
  114. }

  115. void ir_interrupt_drives(void)//中斷100us中調(diào)用
  116. {
  117.         static unsigned char  CheckCnt,IRStatus=0;

  118.         if(IR1.ProcessTime>0)
  119.         {
  120.                 IR1.ProcessTime--;
  121.         }
  122.         if(PIN_IR1)
  123.         {       
  124.                 if(++CheckCnt > 2)//在中斷中調(diào)用 值為2即可,快速掃描,適當(dāng)加長可提高防抖效果。
  125.                 {
  126.                         CheckCnt = 2;
  127.                         if(IRStatus==0)
  128.                         {
  129.                                 ir_agreement_check1();//下降沿
  130.                         }
  131.                         IRStatus =1;
  132.                 }
  133.         }
  134.         else
  135.         {
  136.                 IR1.IrTime++;
  137.                 if(CheckCnt)
  138.                 {
  139.                         CheckCnt--;
  140.                 }
  141.                 else
  142.                 {
  143.                         if(IRStatus)
  144.                         {
  145.                                 IRStatus = 0;
  146.                         }
  147.                 }
  148.         }
  149. }
復(fù)制代碼

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

使用道具 舉報(bào)

沙發(fā)
ID:957696 發(fā)表于 2021-8-1 15:08 來自手機(jī) | 只看該作者
不用中斷方式行嗎?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日本特黄a级高清免费大片 特黄色一级毛片 | 成人一区二区三区在线观看 | 亚洲精品一区中文字幕乱码 | 在线免费中文字幕 | 亚洲网站在线观看 | 午夜看片 | 亚洲视频一区 | 中文字幕免费视频 | 免费在线黄色av | 日韩精品一区二区三区视频播放 | 亚洲精品久久久久中文字幕欢迎你 | 国产黄色大片 | 欧美高清视频在线观看 | 久久999 | 国产伦精品一区二区三区视频金莲 | 亚洲第一在线 | 亚洲精品一区二区三区中文字幕 | 国产视频1区 | 亚洲天堂中文字幕 | 午夜欧美 | 日韩aⅴ在线观看 | 国产精品久久久久久久久动漫 | 韩国av电影网 | 无码一区二区三区视频 | 精品1区2区 | 黄在线 | 国产精品久久久久aaaa九色 | 91美女视频| 性做久久久久久免费观看欧美 | 久在线| 亚洲第一天堂无码专区 | 欧美精品在线免费观看 | 国产综合av | 日韩精品在线播放 | 永久av| 91在线看视频 | 日韩欧美国产一区二区三区 | 精品美女| 国产精品久久 | 天天草草草| 国产精品精品视频一区二区三区 |