在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STM32F407入門開發(fā): NEC紅外線協(xié)議解碼

DS小龍哥-嵌入式技術(shù) ? 來源:DS小龍哥-嵌入式技術(shù) ? 作者:DS小龍哥-嵌入式技 ? 2022-05-28 13:42 ? 次閱讀

一、NEC紅外線協(xié)議與接收頭介紹

紅外線遙控是家電領(lǐng)域里很常見的一種遙控方式,常見的電視機(jī)、空調(diào)、投影機(jī)等設(shè)備基本都支持紅外線遙控;這也主要是紅外線遙控成本比較低,現(xiàn)在很多電視機(jī)也支持藍(lán)牙遙控器了,穿透性、速度、比紅外線遙控要好很多。

紅外線遙控的原理: 就是通過紅外光的閃爍傳遞數(shù)據(jù),需要一對(duì)紅外線發(fā)射管、一個(gè)紅外線接收頭。 這個(gè)紅外線接收頭對(duì)紅外光很敏感,接收到紅外光就輸出低電平,相反就是高電平。所以可以通過這個(gè)原理就可以通過與遙控器端、接收端約定協(xié)議就能傳遞數(shù)據(jù)了。

下面兩張圖是紅外線接收頭的原理圖:

image.pngimage.png

二、解碼實(shí)現(xiàn)代碼

紅外線協(xié)議有很多,下面就以NEC協(xié)議為例: NEC協(xié)議分為: 引導(dǎo)碼、用戶碼、用戶反碼、按鍵碼、按鍵反碼組成。 引導(dǎo)碼是9ms低電平+4.5毫秒高電平組成。 數(shù)據(jù)位一共32位。也就是個(gè)字節(jié)。對(duì)應(yīng)上面說的后4個(gè)數(shù)據(jù)位。

數(shù)據(jù)1表示:0.56ms低電平+1.68ms高電平 數(shù)據(jù)0表示:0.56ms低電平+0.56ms低電平。

紅外線解碼思路在M4上面實(shí)現(xiàn)有兩種方式(其實(shí)本質(zhì)是一樣的):

  1. 通過定時(shí)器輸入捕獲方式
  2. 通過定時(shí)器+外部中斷的方式

下面的代碼就是采用定時(shí)器捕獲+外部中斷方式實(shí)現(xiàn)解碼。

2.1 main.c代碼

#include "stm32f4xx.h" // Device header
#include "led.h"
#include "delay.h"
#include "key.h"
#include "usart.h"
#include "sys.h"
#include "exti.h"
#include "timer.h"
#include "pwm.h"
#include "ds18b20.h"
#include "infrared.h"
extern u8 InfraredRxBuff[5];
int main(void)
{
	LED_Init();
	KEY_Init();
	USART1_Init(84,115200);
	KEY_EXTI_Init();
	DS18B20_Init();
	InfraredRxInit();             //紅外線解碼初始化
	while(1)
	{
	  if(InfraredRxBuff[4])
		 {
			 InfraredRxBuff[4]=0; //清除接收成功標(biāo)志
			 printf("USER=0x%x\r\n",InfraredRxBuff[0]);
			 printf("KEY=0x%x\r\n",InfraredRxBuff[2]);
			 LED0=0;
			 DelayMs(100);
			 LED0=1;
		 }
	}
}
復(fù)制代碼

2.2 解碼核心代碼


#include "infrared.h"
/*
函數(shù)功能:紅外線解碼初始化
硬件連接:PA8
定 時(shí) 器:使用TIM2
*/
void InfraredRxInit(void)
{
	/*1. 開時(shí)鐘*/
	RCC->AHB1ENR|=1<<0;//使能PORTA時(shí)鐘

	/*2. 配置GPIO口模式*/
	GPIOA->MODER&=~(0x3<<8*2); //清除模式
	GPIOA->MODER|=0x0<<8*2;    //配置輸入模式

	/*3. 開啟SYSCFG時(shí)鐘 */
	RCC->APB2ENR|=1<<14;

	/*4. 開放來自線x上的中斷請(qǐng)求*/
	EXTI->IMR|=1<<8; //中斷線8

	/*3. 配置中斷線觸發(fā)邊沿*/
	EXTI->FTSR|=1<<8; //下降沿

	/*4. 配置產(chǎn)生中斷的對(duì)應(yīng)IO口*/
	SYSCFG->EXTICR[2]&=~(0xf<<0*4);
	SYSCFG->EXTICR[2]|=0x0<<0*4;

	/*5. 配置中斷優(yōu)先級(jí)*/
	SetNVICPriorityGrouping(EXTI9_5_IRQn,1,1);

	/*6. 初始化定時(shí)器*/
	RCC->APB1ENR|=1<<0;     //開啟定時(shí)器2的時(shí)鐘
	RCC->APB1RSTR|=1<<0;    //開啟復(fù)位時(shí)鐘  
	RCC->APB1RSTR&=~(1<<0); //關(guān)閉  
	TIM2->PSC=84;     			//預(yù)分頻
	TIM2->ARR=65535;        //重裝載寄存器
	TIM2->CR1&=~(1<<0);     //開啟計(jì)數(shù)器
}

/*
函數(shù)功能:獲取高電平持續(xù)的時(shí)間
返 回 值:高電平持續(xù)的時(shí)間
*/
u32 GetInfraredRxH(void)
{
 TIM2->CR1|=1<<0;
 TIM2->CNT=0;
 while(INFRARED_RX){}
 TIM2->CR1&=~(1<<0);
 return TIM2->CNT;
}

/*
函數(shù)功能:獲取低電平持續(xù)的時(shí)間
返 回 值:低電平持續(xù)的時(shí)間
*/
u32 GetInfraredRxL(void)
{
 TIM2->CR1|=1<<0;
 TIM2->CNT=0;
 while(!INFRARED_RX){}
 TIM2->CR1&=~(1<<0);
 return TIM2->CNT;
}


/*
函數(shù)功能:外部中斷線0中斷服務(wù)函數(shù)
NEC協(xié)議解碼原理:
1. 先接收引導(dǎo)碼:9ms低電平+4.5ms高電平
2. 引導(dǎo)碼之后,是連續(xù)的32位數(shù)據(jù)。用戶碼+用戶反碼+按鍵碼+按鍵反碼
3. 數(shù)據(jù)‘0’ :560us低電平+560us高電平
4. 數(shù)據(jù)‘1’ :560us低電平+1680us高電平
*/
u8 InfraredRxBuff[5]={0}; //存放紅外線接收的數(shù)據(jù)值,其中[4]表示標(biāo)志位。=0失敗,=1成功
void EXTI9_5_IRQHandler(void)
{
	u32 time,j,i;
	u8 data=0;
	EXTI->PR|=1<<0;  //清除中斷標(biāo)志位
	/*1. 判斷引導(dǎo)碼*/
	time=GetInfraredRxL(); //獲取低電平的時(shí)間
	if(time<5000||time>11000)return;
	time=GetInfraredRxH();
	if(time<2500||time>5500)return;

	/*2. 接收用戶碼和按鍵碼*/
	for(i=0;i<4;i++)
	{
		for(j=0;j<8;j++)
			{
			time=GetInfraredRxL(); //獲取低電平的時(shí)間
			if(time<360||time>660)return;

			time=GetInfraredRxH(); //獲取高電平的時(shí)間
			//560us高電平  0  、 1680us高電平 1
			if(time>360&&time<660)
			{
				data>>=1;
			}
			else if(time>1480&&time<1880)
			{
				 data>>=1;
				 data|=0x80; //1000 0000
			}
		}
		InfraredRxBuff[i]=data;
	}
	InfraredRxBuff[4]=1; //標(biāo)志紅外線解碼成功
}

#ifndef _INFRARED_H
#define _INFRARED_H
#include "stm32f4xx.h"
#include "sys.h"
void InfraredRxInit(void);
u32 GetInfraredRxH(void);
u32 GetInfraredRxL(void);
#define INFRARED_RX PAin(8)  //紅外線的接收口
#endif

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 紅外線
    +關(guān)注

    關(guān)注

    14

    文章

    621

    瀏覽量

    56273
  • NEC
    NEC
    +關(guān)注

    關(guān)注

    0

    文章

    238

    瀏覽量

    99150
  • STM32F407
    +關(guān)注

    關(guān)注

    15

    文章

    188

    瀏覽量

    29559
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    NEC紅外線

    NEC紅外線協(xié)議的地址碼代表什么意思?數(shù)據(jù)碼代表什么意思?讀取到一個(gè)碼后如何知道這個(gè)碼的具體功能(比如音量加)是什么?
    發(fā)表于 02-05 18:19

    藍(lán)牙學(xué)習(xí)型紅外線遙控器(NEC協(xié)議解碼

    學(xué)習(xí)型紅外線遙控器(NEC協(xié)議解碼) 單片機(jī):STC89C52RC晶振:11.0592M 波特率:9600編譯環(huán)境:Keil uVision4
    發(fā)表于 02-26 10:34

    STM32F407 UCOS III實(shí)驗(yàn)

    STM32F407 UCOS III實(shí)驗(yàn),介紹基于STM32F407的UCOSIII實(shí)例,參考下
    發(fā)表于 09-22 14:08 ?82次下載

    STM32F407 開發(fā)板原理圖

    STM32F407 開發(fā)板原理圖
    發(fā)表于 09-22 16:12 ?393次下載
    <b class='flag-5'>STM32F407</b> <b class='flag-5'>開發(fā)</b>板原理圖

    STM32F407開發(fā)板用戶手冊(cè)】第13章 STM32F407啟動(dòng)過程詳解

    STM32F407開發(fā)板用戶手冊(cè)】第13章 STM32F407啟動(dòng)過程詳解
    發(fā)表于 11-23 18:06 ?73次下載
    【<b class='flag-5'>STM32F407</b><b class='flag-5'>開發(fā)</b>板用戶手冊(cè)】第13章 <b class='flag-5'>STM32F407</b>啟動(dòng)過程詳解

    STM32F407開發(fā)板用戶手冊(cè)】第14章 STM32F407的電源,復(fù)位和時(shí)鐘系統(tǒng)

    STM32F407開發(fā)板用戶手冊(cè)】第14章 STM32F407的電源,復(fù)位和時(shí)鐘系統(tǒng)
    發(fā)表于 12-02 16:21 ?42次下載
    【<b class='flag-5'>STM32F407</b><b class='flag-5'>開發(fā)</b>板用戶手冊(cè)】第14章 <b class='flag-5'>STM32F407</b>的電源,復(fù)位和時(shí)鐘系統(tǒng)

    STM32F407開發(fā)板用戶手冊(cè)】第1章?? 初學(xué)STM32F407的準(zhǔn)備工作

    STM32F407開發(fā)板用戶手冊(cè)】第1章?? 初學(xué)STM32F407的準(zhǔn)備工作
    發(fā)表于 12-04 13:36 ?75次下載
    【<b class='flag-5'>STM32F407</b><b class='flag-5'>開發(fā)</b>板用戶手冊(cè)】第1章?? 初學(xué)<b class='flag-5'>STM32F407</b>的準(zhǔn)備工作

    STM32F407開發(fā)板用戶手冊(cè)】第21章 STM32F407的NVIC中斷分組和配置(重要)

    STM32F407開發(fā)板用戶手冊(cè)】第21章 STM32F407的NVIC中斷分組和配置(重要)
    發(fā)表于 12-04 13:51 ?21次下載
    【<b class='flag-5'>STM32F407</b><b class='flag-5'>開發(fā)</b>板用戶手冊(cè)】第21章 <b class='flag-5'>STM32F407</b>的NVIC中斷分組和配置(重要)

    STM32F407開發(fā)板用戶手冊(cè)】第19章 STM32F407的GPIO應(yīng)用之按鍵FIFO

    STM32F407開發(fā)板用戶手冊(cè)】第19章 STM32F407的GPIO應(yīng)用之按鍵FIFO
    發(fā)表于 12-05 15:21 ?39次下載
    【<b class='flag-5'>STM32F407</b><b class='flag-5'>開發(fā)</b>板用戶手冊(cè)】第19章 <b class='flag-5'>STM32F407</b>的GPIO應(yīng)用之按鍵FIFO

    STM32入門開發(fā): NEC紅外線協(xié)議解碼(超低成本無線傳輸方案)

    一、環(huán)境介紹MCU: STM32F103ZET6編程軟件環(huán)境: keil5紅外線傳輸協(xié)議: NEC協(xié)議---38KHZ載波:。
    發(fā)表于 12-17 17:47 ?6次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>入門開發(fā)</b>: <b class='flag-5'>NEC</b><b class='flag-5'>紅外線</b><b class='flag-5'>協(xié)議</b><b class='flag-5'>解碼</b>(超低成本無線傳輸方案)

    STM32: NEC紅外線協(xié)議解碼(超低成本無線傳輸方案)

    這是NEC協(xié)議紅外線遙控器: 如果自己手機(jī)沒有紅外線遙控器的功能,可以淘寶上買一個(gè)小遙控器來學(xué)習(xí)測(cè)試,成本不高,這個(gè)遙控器也可以自己做,能解碼
    的頭像 發(fā)表于 03-14 09:48 ?4628次閱讀
    <b class='flag-5'>STM32</b>: <b class='flag-5'>NEC</b><b class='flag-5'>紅外線</b><b class='flag-5'>協(xié)議</b><b class='flag-5'>解碼</b>(超低成本無線傳輸方案)

    STM32F407入門開發(fā): 位帶操作

    STM32F407的位帶操作可以實(shí)現(xiàn)類似51單片機(jī)中寄存器的操作方法,操作GPIO口代碼簡(jiǎn)潔方便。 關(guān)于位段的操作在Cortex-M3M4權(quán)威指南里有詳細(xì)描述:
    的頭像 發(fā)表于 05-28 13:50 ?3702次閱讀
    <b class='flag-5'>STM32F407</b><b class='flag-5'>入門開發(fā)</b>: 位帶操作

    STM32F407入門開發(fā): 串口配置

    STM32F407 的串口資源非常豐富,功能也很強(qiáng)勁。 STM32F407 最多可提供 6 路串口,有分?jǐn)?shù)波特率發(fā)生器、支持同步單線通信和半雙工單線通訊、支持 LIN、 支持調(diào)制解調(diào)器操作、 智能卡
    的頭像 發(fā)表于 05-28 13:51 ?1.1w次閱讀
    <b class='flag-5'>STM32F407</b><b class='flag-5'>入門開發(fā)</b>: 串口配置

    Linux驅(qū)動(dòng)開發(fā)-編寫NEC紅外線協(xié)議解碼驅(qū)動(dòng)

    NEC協(xié)議是眾多紅外線協(xié)議中的一種,以前廣泛用在電視機(jī),投影儀設(shè)備里,很早之前經(jīng)常說的萬能電視遙控器就是NEC
    的頭像 發(fā)表于 09-17 15:20 ?1938次閱讀
    Linux驅(qū)動(dòng)<b class='flag-5'>開發(fā)</b>-編寫<b class='flag-5'>NEC</b><b class='flag-5'>紅外線</b><b class='flag-5'>協(xié)議</b><b class='flag-5'>解碼</b>驅(qū)動(dòng)

    STM32F407開發(fā)紅外線解碼功能應(yīng)用案例

    NEC紅外線協(xié)議是一種常用的紅外線通信協(xié)議,廣泛應(yīng)用于消費(fèi)電子產(chǎn)品中,如電視、DVD播放器、空調(diào)遙控器等。該
    的頭像 發(fā)表于 07-06 14:34 ?1574次閱讀
    <b class='flag-5'>STM32F407</b><b class='flag-5'>開發(fā)</b>板<b class='flag-5'>紅外線</b><b class='flag-5'>解碼</b>功能應(yīng)用案例
    主站蜘蛛池模板: 色婷婷精品视频| 天堂网站| 日本人的色道免费网站| 成人免费播放视频777777| 欧美黄色大全| 亚洲一区免费看| 高清一级毛片一本到免费观看| 亚洲午夜精品久久久久久成年| 免费的毛片| 狠狠色丁香婷婷久久综合不卡| 日韩二级| 香蕉狠狠再啪线视频| 亚洲日韩色图| 四虎在线免费播放| 一级日本大片免费观看视频| 亚洲人免费视频| 全黄性色大片| 久久青草国产精品一区| www.亚洲成在线| 成人观看天堂在线影片| 中文永久免费看电视网站入口| 天天操夜夜干| 视频黄色在线| 男女吃奶一进一出动态图| 午夜视频日本| 欧美一区二区三区黄色| 国产亚洲综合精品一区二区三区| 在线看欧美成人中文字幕视频| 欧美黄色免费| 精品亚洲综合在线第一区| 色爱区综合激情五月综合激情| 午夜男人天堂| 天堂在线视频精品| 天堂资源在线www中文| 欧美一级高清免费播放| 欧美天天视频| 丁香婷婷六月天| 久久久久国产免费| 边摸边吃奶边做视频叫床韩剧| 32pao强力打造免费高速高清| 亚洲综合色婷婷中文字幕|