www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式硬件

第三十二章紅外遙控實(shí)驗(yàn)

本章,我們將向大家介紹如何通過(guò)STM32來(lái)解碼紅外遙控器的信號(hào)。ALIENTK戰(zhàn)艦STM32開(kāi)發(fā)板標(biāo)配了紅外接收頭和一個(gè)很小巧的紅外遙控器。在本章中,我們將利用STM32的輸入捕獲功能,解碼開(kāi)發(fā)板標(biāo)配的這個(gè)紅外遙控器的編碼信號(hào),并將解碼后的鍵值TFTLCD模塊上顯示出來(lái)。本章分為如下幾個(gè)部分:

32.1 紅外遙控簡(jiǎn)介

32.2 硬件設(shè)計(jì)

32.3 軟件設(shè)計(jì)

32.4 下載驗(yàn)證


32.1紅外遙控簡(jiǎn)介

紅外遙控是一種無(wú)線、非接觸控制技術(shù),具有抗干擾能力強(qiáng),信息傳輸可靠,功耗低,成本低,易實(shí)現(xiàn)等顯著優(yōu)點(diǎn),被諸多電子設(shè)備特別是家用電器廣泛采用,并越來(lái)越多的應(yīng)用到計(jì)算機(jī)系統(tǒng)中。

由于紅外線遙控不具有像無(wú)線電遙控那樣穿過(guò)障礙物去控制被控對(duì)象的能力,所以,在設(shè)計(jì)紅外線遙控器時(shí),不必要像無(wú)線電遙控器那樣,每套(發(fā)射器和接收器)要有不同的遙控頻率或編碼(否則,就會(huì)隔墻控制或干擾鄰居的家用電器),所以同類產(chǎn)品的紅外線遙控器,可以有相同的遙控頻率或編碼,而不會(huì)出現(xiàn)遙控信號(hào)“串門(mén)”的情況。這對(duì)于大批量生產(chǎn)以及在家用電器上普及紅外線遙控提供了極大的方面。由于紅外線為不可見(jiàn)光,因此對(duì)環(huán)境影響很小,再由紅外光波動(dòng)波長(zhǎng)遠(yuǎn)小于無(wú)線電波的波長(zhǎng),所以紅外線遙控不會(huì)影響其他家用電器,也不會(huì)影響臨近的無(wú)線電設(shè)備。

紅外遙控的編碼目前廣泛使用的是:NEC Protocol 的PWM(脈沖寬度調(diào)制)和Philips

RC-5 Protocol 的PPM(脈沖位置調(diào)制)。ALIENTEK戰(zhàn)艦STM32開(kāi)發(fā)板配套的遙控器使用的是NEC協(xié)議,其特征如下:

1、8位地址和8位指令長(zhǎng)度;

2、地址和命令2次傳輸(確??煽啃裕?/p>

3、PWM脈沖位置調(diào)制,以發(fā)射紅外載波的占空比代表“0”和“1”;

4、載波頻率為38Khz;

5、位時(shí)間為1.125ms或2.25ms;

NEC碼的位定義:一個(gè)脈沖對(duì)應(yīng)560us的連續(xù)載波,一個(gè)邏輯1傳輸需要2.25ms(560us脈沖+1680us低電平),一個(gè)邏輯0的傳輸需要1.125ms(560us脈沖+560us低電平)。而遙控接收頭在收到脈沖的時(shí)候?yàn)榈碗娖?,在沒(méi)有脈沖的時(shí)候?yàn)楦唠娖?,這樣,我們?cè)诮邮疹^端收到的信號(hào)為:邏輯1應(yīng)該是560us低+1680us高,邏輯0應(yīng)該是560us低+560us高。

NEC遙控指令的數(shù)據(jù)格式為:同步碼頭、地址碼、地址反碼、控制碼、控制反碼。同步碼由一個(gè)9ms的低電平和一個(gè)4.5ms的高電平組成,地址碼、地址反碼、控制碼、控制反碼均是8位數(shù)據(jù)格式。按照低位在前,高位在后的順序發(fā)送。采用反碼是為了增加傳輸?shù)目煽啃裕捎糜谛r?yàn))。

我們遙控器的按鍵2按下時(shí),從紅外接收頭端收到的波形如圖32.1.1所示:



圖32.1.1 按鍵2所對(duì)應(yīng)的紅外波形

從圖32.1.1中可以看到,其地址碼為0,控制碼為168??梢钥吹皆?00ms之后,我們還收到了幾個(gè)脈沖,這是NEC碼規(guī)定的連發(fā)碼(由9ms低電平+2.5m高電平+0.56ms低電平+97.94ms高電平組成),如果在一幀數(shù)據(jù)發(fā)送完畢之后,按鍵仍然沒(méi)有放開(kāi),則發(fā)射重復(fù)碼,即連發(fā)碼,可以通過(guò)統(tǒng)計(jì)連發(fā)碼的次數(shù)來(lái)標(biāo)記按鍵按下的長(zhǎng)短/次數(shù)。

第十五章我們?cè)?jīng)介紹過(guò)利用輸入捕獲來(lái)測(cè)量高電平的脈寬,本章解碼紅外遙控信號(hào),剛好可以利用輸入捕獲的這個(gè)功能來(lái)實(shí)現(xiàn)遙控解碼。關(guān)于輸入捕獲的介紹,請(qǐng)參考第十五章的內(nèi)容。




32.2硬件設(shè)計(jì)

本實(shí)驗(yàn)采用定時(shí)器的輸入捕獲功能實(shí)現(xiàn)紅外解碼,本章實(shí)驗(yàn)功能簡(jiǎn)介:開(kāi)機(jī)在LCD上顯示一些信息之后,即進(jìn)入等待紅外觸發(fā),如過(guò)接收到正確的紅外信號(hào),則解碼,并在LCD上顯示鍵值和所代表的意義,以及按鍵次數(shù)等信息。同樣我們也是用LED0來(lái)指示程序正在運(yùn)行。

所要用到的硬件資源如下:

1)指示燈DS0

2) TFTLCD模塊(帶觸摸屏)

3)紅外接收頭

4)紅外遙控器

前兩個(gè),在之前的實(shí)例已經(jīng)介紹過(guò)了,遙控器屬于外部器件,遙控接收頭在板子上,與MCU的連接原理圖如32.2.1所示:



圖32.2.1 紅外遙控接收頭與STM32的連接電路圖

紅外遙控接收頭連接在STM32的PB9(TIM4_CH4)上。硬件上不需要變動(dòng),只要程序?qū)IM4_CH4設(shè)計(jì)為輸入捕獲,然后將收到的脈沖信號(hào)解碼就可以了。 開(kāi)發(fā)板配套的紅外遙控器外觀如圖32.2.2所示:

圖32.2.2 紅外遙控器


32.3軟件設(shè)計(jì)

打開(kāi)上一章的工程,首先在HARDWARE文件夾下新建一個(gè)REMOTE的文件夾。然后新建一個(gè)remote.c和remote.h的文件保存在REMOTE文件夾下,并將這個(gè)文件夾加入頭文件包含路徑。

打開(kāi)remote.c文件,輸入如下代碼:

#include "remote.h"

#include "delay.h"

#include "usart.h"

//紅外遙控初始化

//設(shè)置IO以及定時(shí)器4的輸入捕獲

void Remote_Init(void)

{

RCC->APB1ENR|=1<<2; //TIM4時(shí)鐘使能

RCC->APB2ENR|=1<<3; //使能PORTB時(shí)鐘

GPIOB->CRH&=0XFFFFFF0F; //PB9輸入

GPIOB->CRH|=0X00000080; //上拉輸入

GPIOB->ODR|=1<<9; //PB9上拉

TIM4->ARR=10000; //設(shè)定計(jì)數(shù)器自動(dòng)重裝值最大10ms溢出

TIM4->PSC=71; //預(yù)分頻器,1M的計(jì)數(shù)頻率,1us加1.

TIM4->CCMR2|=1<<8; //CC4S=01 選擇輸入端IC4映射到TI4上

TIM4->CCMR2|=3<<12; //IC4F=0011配置輸入濾波器8個(gè)定時(shí)器時(shí)鐘周期濾波

TIM4->CCMR2|=0<<10; //IC4PS=00 配置輸入分頻,不分頻

TIM4->CCER|=0<<13; //CC4P=0 上升沿捕獲

TIM4->CCER|=1<<12; //CC4E=1 允許捕獲計(jì)數(shù)器的值到捕獲寄存器中

TIM4->DIER|=1<<4; //允許CC4IE捕獲中斷

TIM4->DIER|=1<<0; //允許更新中斷

TIM4->CR1|=0x01; //使能定時(shí)器4

MY_NVIC_Init(1,3,TIM4_IRQChannel,2);//搶占1,子優(yōu)先級(jí)3,組2

}

//遙控器接收狀態(tài)

//[7]:收到了引導(dǎo)碼標(biāo)志

//[6]:得到了一個(gè)按鍵的所有信息

//[5]:保留

//[4]:標(biāo)記上升沿是否已經(jīng)被捕獲

//[3:0]:溢出計(jì)時(shí)器

u8 RmtSta=0;

u16 Dval; //下降沿時(shí)計(jì)數(shù)器的值

u32 RmtRec=0; //紅外接收到的數(shù)據(jù)

u8RmtCnt=0; //按鍵按下的次數(shù)

//定時(shí)器2中斷服務(wù)程序

void TIM4_IRQHandler(void)

{

//省略代碼

}

//處理紅外鍵盤(pán)

//返回值:

// 0,沒(méi)有任何按鍵按下

//其他,按下的按鍵鍵值.

u8 Remote_Scan(void)

{

u8 sta=0;

u8 t1,t2;

if(RmtSta&(1<<6))//得到一個(gè)按鍵的所有信息了

{

t1=RmtRec>>24; //得到地址碼

t2=(RmtRec>>16)&0xff; //得到地址反碼

if((t1==(u8)~t2)&&t1==REMOTE_ID)//檢驗(yàn)遙控識(shí)別碼(ID)及地址

{

t1=RmtRec>>8;

t2=RmtRec;

if(t1==(u8)~t2)sta=t1;//鍵值正確

}

if((sta==0)||((RmtSta&0X80)==0))//按鍵數(shù)據(jù)錯(cuò)誤/遙控已經(jīng)沒(méi)有按下了

{

RmtSta&=~(1<<6);//清除接收到有效按鍵標(biāo)識(shí)

RmtCnt=0; //清除按鍵次數(shù)計(jì)數(shù)器

}

}

return sta;

}

該部分代碼包含3個(gè)函數(shù),首先是Remote_Init函數(shù),該函數(shù)用于初始化IO口,并配置TIM4_CH4為輸入捕獲,并設(shè)置其相關(guān)參數(shù)。TIM4_IRQHandler函數(shù)是TIM4的中斷服務(wù)函數(shù),在該函數(shù)里面,實(shí)現(xiàn)對(duì)紅外信號(hào)的高電平脈沖的捕獲,同時(shí)根據(jù)我們之前簡(jiǎn)介的協(xié)議內(nèi)容來(lái)解碼 ,該函數(shù)用到幾個(gè)全局變量,用于輔助解碼,并存儲(chǔ)解碼結(jié)果。最后是Remote_Scan函數(shù),該函用來(lái)掃描解碼結(jié)果,相當(dāng)于我們的按鍵掃描,輸入捕獲解碼的紅外數(shù)據(jù),通過(guò)該函數(shù)傳送給其他程序。

保存remote.c,然后把該文件加入HARDWARE組下。接下來(lái)打開(kāi)remote.h在該文件里面加入如下代碼:

//省略代碼

這里的REMOTE_ID就是我們開(kāi)發(fā)板配套的遙控器的識(shí)別碼,對(duì)于其他遙控器可能不一樣,只要修改這個(gè)為你所使用的遙控器的一致就可以了。其他是一些函數(shù)的聲明,我們保存此部分代碼,然后在test.c里面修改主函數(shù)如下:

int main(void)

{

//省略部分代碼

}

至此,我們的軟件設(shè)計(jì)部分就結(jié)束了。

32.4下載驗(yàn)證

在代碼編譯成功之后,我們通過(guò)下載代碼到ALIENTEK戰(zhàn)艦STM32開(kāi)發(fā)板上,可以看到LCD顯示如圖32.4.1所示的內(nèi)容:

圖32.4.1 程序運(yùn)行效果圖

此時(shí)我們通過(guò)遙控器按下不同的按鍵,則可以看到LCD上顯示了不同按鍵的鍵值以及按鍵次數(shù)和對(duì)應(yīng)的遙控器上的符號(hào)。如圖32.4.2所示:

圖32.4.2 解碼成功



本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉