两个吃奶一个添下面视频_人妻第一页香蕉网_欧美xxxx少妇_妺妺窝人体色www婷婷

紅外遙控器的發(fā)送裝置和接收裝置以及關于載波等一些原理大家可參看《手把手教你學51單片機》文檔第16章知識內(nèi)容,這里筆者只簡單說明如何運用該模塊并講解代碼的實現(xiàn)。


1.接收裝置

HS0038這個元器件是用來接收紅外遙控器發(fā)送來的信號做處理的,我們知道紅外遙控器有21個按鍵,按下不同的按鍵,HS0038的信號引腳就會產(chǎn)生不同的時序,我們解析這些時序就可以判斷按下的是什么按鍵。

比如我們用紅外遙控器對準開發(fā)板上的接收裝置HS0038,按下左上角的按鍵,那么HS0038的信號引腳就會產(chǎn)生一系列的變化如下:

首先是引導碼,也就是一開始HS0038信號引腳會拉低信號線9ms左右的時間,然后是4.5ms的高電平時間,這段時序叫做發(fā)送端的引導碼。

接著HS0038信號引腳會接收到用戶碼,只要信號線被拉低560us之后又拉高560us的時間,那么我們就認為這段時序是這種字節(jié)的一位,為0。

如果信號線被拉低560us之后又拉高1.68ms的時間,那么這段時序就是代表1。

比如信號線的時序如下

紅外遙控1

這樣我們就知道接收到的字節(jié)為0x0C。

0x0C是某個按鍵所發(fā)送的字節(jié),我們要知道按鍵的發(fā)送有5個階段,分別為:引導碼、用戶碼、用戶反碼、按鍵數(shù)據(jù)碼、按鍵數(shù)據(jù)反碼。

引導碼已經(jīng)說明過它的時序。

然后是用戶碼,用戶碼一直是0x00,也就是HS0038信號引腳是如下所示

紅外遙控2

接著用戶反碼就是0xFF。

按鍵數(shù)據(jù)碼如果是0x0C,那么按鍵數(shù)據(jù)反碼就是0xF3。

0x0C:00001100

0xF3:11110011


2.代碼的實現(xiàn)原理

在第八章第11講我們已經(jīng)學過輸入捕獲,那么解析紅外遙控就是使用這種方式,看到宋老師的例程lesson16_1里面的函數(shù)“void EXINT1_ISR() interrupt 2”。

在main.c中“InitInfrared();”就是為輸入捕獲做好設置,只要信號引腳被拉低就會進入外部中斷函數(shù)。

當我們在遙控器上按下某個按鍵時,信號引腳首先接收到的是引導碼,也就是9ms的低電平+4.5ms的高電平,由于一開始接收到低電平所以就會進入“void EXINT1_ISR() interrupt 2”函數(shù),函數(shù)里就是一關關的判斷是否一開始接收到9ms低電平,如果是,那么又接著判斷后面是不是產(chǎn)生4.5ms左右的高電平,如果是,接著就是進行判斷后面的用戶碼、用戶反碼、按鍵數(shù)據(jù)碼、按鍵數(shù)據(jù)反碼的字節(jié),并存入全局變量的數(shù)組ircode[4]中。

點贊(0)

C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍橋杯競賽優(yōu)秀選手錄制的視頻教程,并配有習題和答疑,點擊了解:

一點編程也不會寫的:零基礎C語言學練課程

解決困擾你多年的C語言疑難雜癥特性的C語言進階課程

從零到寫出一個爬蟲的Python編程課程

只會語法寫不出代碼?手把手帶你寫100個編程真題的編程百練課程

信息學奧賽或C++選手的 必學C++課程

藍橋杯ACM、信息學奧賽的必學課程:算法競賽課入門課程

手把手講解近五年真題的藍橋杯輔導課程

Dotcpp在線編譯      (登錄可減少運行等待時間)