- 什么是紅外遙控
紅外遙控系統(tǒng)主要由紅外發(fā)射裝置和紅外接收裝置構(gòu)成。
紅外發(fā)射裝置主要由鍵盤電路、紅外編碼芯片、電源和紅外發(fā)射電路組成(比如遙控器),如圖:
紅外接收裝置主要由紅外接收電路、紅外解碼芯片、電源和應(yīng)用電路組成,在單片機(jī)開發(fā)板上有紅外接收電路,而且單片機(jī)充當(dāng)解碼芯片。
- 紅外信號是怎么傳輸?shù)?p>人的眼睛能看到的可見光按波長從長到短排列依次為:紅、橙、黃、綠、青、藍(lán)、紫。其中紅光的波長范圍為0.62~0.72微米,紅外遙控就是利用波長為0.76至1.5微米之間的近紅外線來傳送控制信號的。
紅外信號的發(fā)射由紅外發(fā)射電路中的紅外發(fā)光二極管完成,通常情況下為了提高抗干擾能力與降低電源消耗,遙控器將遙控信號(二進(jìn)制脈沖碼)調(diào)制在載波(載波是傳送信息的物理基礎(chǔ)和承載工具)上經(jīng)放大后發(fā)送至紅外二極管,再由二極管轉(zhuǎn)換為紅外信號發(fā)送出去。
遙控器上不同的按鍵有著不一樣的鍵值,按下相對應(yīng)的鍵,紅外二極管就會發(fā)送對應(yīng)的信號,接收裝置接收到信號后會對信號進(jìn)行信號解調(diào)后會得到相應(yīng)按鍵的鍵值,再根據(jù)不同的鍵值執(zhí)行相應(yīng)的操作。
- NEC協(xié)議
就像串口通信一樣,紅外通信也有其自己的通信協(xié)議,我們一般遵循NEC協(xié)議。
NEC規(guī)定紅外二極管每次發(fā)送的信號的數(shù)據(jù)格式如下:
發(fā)送的數(shù)據(jù)主要由引導(dǎo)碼、用戶碼1、用戶碼2、數(shù)據(jù)碼、數(shù)據(jù)反碼組成。引導(dǎo)碼相當(dāng)于暗號,當(dāng)接收裝置接收到正確的引導(dǎo)碼后就開始讀取數(shù)據(jù),倆組用戶碼是為了區(qū)別其他的紅外發(fā)射器發(fā)射的信號,數(shù)據(jù)碼中的內(nèi)容就對應(yīng)著相應(yīng)的鍵值,數(shù)據(jù)反碼是為了在接收信號后檢驗信號的正確性。(引導(dǎo)碼是“9ms高電平+4.5ms低電平”)
這樣我們雖然清楚了信號的發(fā)送形式,但是怎么表達(dá)數(shù)據(jù)發(fā)送中的高低位(“0"和"1”)呢?這又涉及到NEC的位定義了,規(guī)定:“0.56ms高電平+0.565ms低電平”代表“1”;“0.56ms高電平+1.69ms低電平”代表“0”,就是說“0”與“1”的不同就是他們低電平所持續(xù)的時間不同。(PS:發(fā)送數(shù)據(jù)時從最低位開始發(fā)送)
不知道讀者注意到黑體字標(biāo)出的發(fā)送沒,為什么要刻意強(qiáng)調(diào)是發(fā)送時的呢?因為單片機(jī)接收到的數(shù)據(jù)格式與發(fā)送時的恰恰相反,就是說接收時的引導(dǎo)碼是“9ms低電平+4.5ms高電平”;“0”是“0.56ms低電平+0.565ms高電平”;“1”是“0.56ms低電平+1.69ms高電平”。這一點我們要格外注意,因為后續(xù)我們在解碼程序中是以接收到的數(shù)據(jù)為準(zhǔn)的?。。?p>
- 程序分析
敲代碼之前首先要對程序有一個清楚的認(rèn)識,即明白要做哪幾個模塊?這些模塊之間要怎么聯(lián)系起來?在下做的一個程序是把從紅外發(fā)射器中接收到數(shù)據(jù)經(jīng)過處理后顯示在數(shù)碼管上,這樣看來我的程序就需要如下幾個模塊:
1.初始化模塊:包括初始化紅外接收引腳(把P3.2外部中斷引腳作為紅外接收引腳)、打開外部中斷允許位;
2.延時模塊:延時模塊主要用來分析高低電平持續(xù)的時間,從而判斷對應(yīng)的位是“0”還是“1”;
3.解碼模塊:利用外部中斷函數(shù)interrupt 0進(jìn)行數(shù)據(jù)解碼,其任務(wù)是檢驗并接收正確的數(shù)據(jù)信號,對用戶碼和數(shù)據(jù)碼進(jìn)行分析,即通過檢測高低電平持續(xù)的時間來判斷相應(yīng)的位是“0”還是“1”。然后得出相對應(yīng)的鍵值,把鍵值對應(yīng)的數(shù)反饋到程序中;
4.顯示模塊:其主要任務(wù)是接收解碼模塊反饋的數(shù)值,并將數(shù)值顯示在數(shù)碼管上;
5.主函數(shù)模塊:整合前幾個模塊。
程序如下:
#include"reg52.h"
#define uint unsigned int
#define uchar unsigned char
sbit a=P2^2;//a、b、c是控制位選的三個引腳
sbit b=P2^3;
sbit c=P2^4;
sbit IR=P3^2;//將紅外接收引腳和外部中斷0引腳定義在一起,
這樣一旦接收到信號就進(jìn)入中斷函數(shù)進(jìn)行解碼
uint jz=0,time;//jz存的是鍵值相對應(yīng)的數(shù)值
uchar irdata[4],duan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0X76};
//duan[17]存的是數(shù)碼管段選顯示0~F的數(shù)據(jù);irdata[4]存的是一組用戶碼和數(shù)據(jù)碼、數(shù)據(jù)反碼
void dy(uint n) //延時一次約為0.01ms 用來判斷脈沖時間
{while(n--);}
void xs(uint x) //數(shù)碼管顯示
{
a=0;b=0;c=0;//因為我遙控器上的數(shù)只有0~9,所以就位選時控制一個數(shù)碼管就行
P0=duan[x];//顯示數(shù)字
}
void init() //初始化
{
IT0=1;//確定中斷0(紅外接收)的觸發(fā)方式為下降沿觸發(fā)
EX0=1;//打開外部中斷0和總中斷的允許位
EA=1;
IR=1; //相當(dāng)于打開外部中斷0 此處意義為紅外接收器打開
}
void hhh() interrupt 0 //執(zhí)行中斷:進(jìn)行讀取信號 最后產(chǎn)生鍵值
{
uint i,j,k;
dy(700);//能進(jìn)入中斷函數(shù)就代表IR已經(jīng)為0,此處的延時是為了判斷延時的大體時間
if(IR==0)
{
k=1000;
while(IR==0&&(k>0))//檢測引導(dǎo)碼中9ms低電平
{
dy(1);
k--;
}
if(IR==1)//判斷高電平
{
k=500;
while(IR==1&&(k>0))//檢測引導(dǎo)碼中4.5ms高電平
{
dy(1);
k--;
}
for(i=0;i<4;i++) //開始讀取用戶碼和數(shù)據(jù)和數(shù)據(jù)反碼,
因為用戶碼和數(shù)據(jù)碼、數(shù)據(jù)反碼共有4組,所以外層有四組循環(huán)
{
for(j=0;j<8;j++)//每組數(shù)據(jù)有八位,故內(nèi)層循環(huán)有八組,每次循環(huán)讀一位
{
if(IR==0)
{
k=70;
while(IR==0&&(k>0))//檢測0.56ms的低電平
{
k--;
dy(1);
}
}
if(IR==1)//進(jìn)入高電平時間,這一塊比較核心,它判斷了高電平持續(xù)時間的長短
{
time=0;
k=500;
while(IR==1&&k>0)//開始檢測高電平
{
dy(10);
time++;//time是以0.1ms為單位,因為dy(10);
k--;
}
if(time>30) return ;
irdata[i]>>=1; //移位運算,空出最高為為下一次采集做準(zhǔn)備
if(time>=8)//如果高電平持續(xù)時間超過0.85ms代表位是“1”
irdata[i]|=0x80;//或運算,給最高為置1
time=0;//重置
}
}
}
}
if(irdata[2]!=~irdata[3])//irdata[2]與irdata[3]分別是數(shù)據(jù)碼和數(shù)據(jù)反碼 ,此操作是檢驗數(shù)據(jù)準(zhǔn)確性
return;
}
switch(irdata[2])//反饋鍵值所對應(yīng)的數(shù)值
{
case 0x16:jz=0;break;
case 0x0c:jz=1;break;
case 0x18:jz=2;break;
case 0x5e:jz=3;break;
case 0x08:jz=4;break;
case 0x1c:jz=5;break;
case 0x5a:jz=6;break;
case 0x42:jz=7;break;
case 0x52:jz=8;break;
case 0x4a:jz=9;break;
case 0x45:jz=10;break;
default:break;
}
}
void main()
{
init();//初始化
while(1)
xs(jz);//顯示數(shù)值
}
上一篇:51單片機(jī)-實踐操作
下一篇:51單片機(jī)—串口通信
推薦閱讀
史海拾趣
1957年,Charles A. Coolidge, Jr.和Marshall Kincaid共同創(chuàng)立了C&K Components公司,起初主要專注于磁芯記憶單元的制造。那個時代的電子行業(yè)剛剛起步,市場競爭激烈,技術(shù)更新?lián)Q代迅速。C&K在初創(chuàng)時期就面臨了諸多挑戰(zhàn),但兩位創(chuàng)始人憑借對技術(shù)的熱愛和對市場的敏銳洞察,堅持探索新的技術(shù)方向,為公司的發(fā)展奠定了堅實的基礎(chǔ)。
在全球化的大背景下,迪貝電子也積極拓展海外市場。公司通過參加國際展覽、與國際知名企業(yè)合作等方式,不斷推廣其品牌和產(chǎn)品。同時,公司還針對不同國家和地區(qū)的市場需求,推出了適應(yīng)當(dāng)?shù)丨h(huán)境和使用習(xí)慣的產(chǎn)品。這些努力使得迪貝電子的產(chǎn)品逐漸得到了全球用戶的認(rèn)可和信賴。
1997年,迪貝電子在上海正式成立,標(biāo)志著這家專注于環(huán)境感知技術(shù)和氣體檢測及分析領(lǐng)域的創(chuàng)新企業(yè)正式進(jìn)入中國市場。當(dāng)時,中國的環(huán)保法規(guī)日益嚴(yán)格,對氣體排放的監(jiān)控和管理要求也不斷提高。迪貝電子憑借其在該領(lǐng)域的深厚積累和技術(shù)實力,迅速在市場上推出了一系列高質(zhì)量的氣體檢測和分析儀器。這些產(chǎn)品以其準(zhǔn)確性、穩(wěn)定性和易用性受到了用戶的廣泛好評,為迪貝電子在中國市場的快速發(fā)展奠定了堅實的基礎(chǔ)。
為了保持技術(shù)領(lǐng)先地位,柯愛亞不斷加大研發(fā)投入,引進(jìn)先進(jìn)的研發(fā)設(shè)備和人才。公司在功率電感、變壓器等領(lǐng)域取得了多項技術(shù)成果,并申請了多項專利。這些技術(shù)成果不僅提升了柯愛亞產(chǎn)品的競爭力,還推動了整個電子行業(yè)的發(fā)展。
艾吉芯公司深知人才是企業(yè)發(fā)展的核心動力。因此,公司高度重視人才培養(yǎng)和團(tuán)隊建設(shè)。通過引進(jìn)高素質(zhì)的研發(fā)人才和管理人才,艾吉芯建立了一支高效、專業(yè)的團(tuán)隊。同時,公司還注重員工的培訓(xùn)和發(fā)展,為員工提供廣闊的職業(yè)發(fā)展空間和良好的工作環(huán)境。
在技術(shù)創(chuàng)新的同時,順芯公司也注重市場拓展和品牌建立。公司積極參加國內(nèi)外各類展會和論壇,與潛在客戶和合作伙伴建立了廣泛的聯(lián)系。同時,順芯公司還加強(qiáng)了與渠道商的合作,提高了產(chǎn)品的市場覆蓋率。通過一系列的市場推廣活動,順芯公司的品牌知名度和美譽(yù)度逐漸提升。
本帖最后由 辛昕 于 2018-5-3 16:39 編輯 后來這個問題我沒什么興趣了,唯一的可能就是,其實它啟發(fā)了 編程里的 數(shù)據(jù)加鎖 以避免沖突。 小弟最近做數(shù)字電路的基礎(chǔ)實驗。 其中被 組合邏輯競爭冒險現(xiàn)象 困擾 呃,我看過一些資料,但是,很多 ...… 查看全部問答∨ |
大家好! 最近正在搞ce5.0的顯示驅(qū)動,我是直接繼承GPE類的,自己又?jǐn)U展了幾個函數(shù),現(xiàn)在剛把其中的emulatedline函數(shù)按照自己的屏移植好,想對其測試一下畫線功能.在往上查了很多關(guān)于顯示驅(qū)動的資料,看到有的說是利用platformbuilder自帶的應(yīng)用程序Vide ...… 查看全部問答∨ |
本帖最后由 paulhyde 于 2014-9-15 09:10 編輯 運放權(quán)威指南,超級牛逼的書,不好意思,收一個金幣,因為我需要一些金幣下載資料 … 查看全部問答∨ |
看到身邊很多人都是從51然后avr 在之后ARM嵌入式,,,這一條路好像已經(jīng)定下來了一樣,,只等人上路了,,只是偶爾想想,,嵌入式好像更偏向于軟件部分吧,,而且現(xiàn)在高校單片機(jī)很熱,,,幾年前還沒這么夸張,現(xiàn)在我們學(xué)校竟然從大一的學(xué)生開始抓 ...… 查看全部問答∨ |
【設(shè)計工具】在Modesim SE 中指定ISE12.X的仿真庫之總結(jié)篇 本文簡單描述了在Modesim SE中指定ISE12.X的仿真庫一些方法總結(jié),使用是一些經(jīng)驗之談。… 查看全部問答∨ |
智能用電監(jiān)控、保護(hù)系統(tǒng)創(chuàng)意進(jìn)度帖+負(fù)荷自動調(diào)整操作演示視頻(帶負(fù)載,擴(kuò)展功能) 本帖最后由 ltbytyn 于 2014-1-4 22:38 編輯 演示中共4路負(fù)載,4路參數(shù)設(shè)置如下。 支路1:自動模式 優(yōu)先級低 電風(fēng)扇做負(fù)載(電風(fēng)扇只開了個電源指示燈,實測結(jié)果很小,可忽略) 支路3:手動模式(無優(yōu)先級劃分)臺燈做 ...… 查看全部問答∨ |
這是正常打開的情況。然后我想看第一層,輸入快捷鍵z1,如圖:。依次的查看z2、z3、z4層等,最后我想返回去原來的時候,輸入快捷鍵zz出現(xiàn)如圖 有人也會這樣么,還是我輸入的快捷鍵有誤,或者是我不會弄,本人剛學(xué)pads不久。 … 查看全部問答∨ |
|
VK1622液晶顯示驅(qū)動IC 兼容取代HT1622/ QFP64 LQFP64/44/52/48/裸片,附帶該IC驅(qū)動程序 型 號:VK1622 / 品 牌:VINTEK/VINKA/元泰封裝形式:QFP64 LQFP64 LQFP44LQFP52 LQFP48 DICE裸片 COB邦定片 定制COG概述:VK1622是一個32x8的LCD駆動器.可軟體程式控制使其適用於多樣化的LCD應(yīng)用線路.僅用到3至4條訊號線便可控制LCD駆動 ...… 查看全部問答∨ |
/********************************************************************* msp430g2553與1602引腳連接情況 * PIN1 --> 地 * PIN2 --> VCC(一定要接+5V) * PIN3 -->仿真時懸空,實際電路 2K電阻-->地 (電阻可以是500-2k的,改變電阻可以改變 ...… 查看全部問答∨ |
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦
- Microchip 升級數(shù)字信號控制器(DSC)產(chǎn)品線 推出PWM 分辨率和 ADC 速度業(yè)界領(lǐng)先的新器件
- 意法半導(dǎo)體STM32MP23x:突破成本限制的工業(yè)AI應(yīng)用核心
- 意法半導(dǎo)體推出用于匹配遠(yuǎn)距離無線微控制器STM32WL33的集成的匹配濾波芯片
- ESP32開發(fā)板連接TFT顯示屏ST7789跳坑記
- 如何讓ESP32支持analogWrite函數(shù)
- LGVL配合FreeType為可變字體設(shè)置字重-ESP32篇
- 使用樹莓派進(jìn)行 ESP32 Jtag 調(diào)試
- ESP32怎么在SPIFFS里面存儲html,css,js文件,以及網(wǎng)頁和arduino的通訊
- ESP32 freeRTOS使用測試
- 上汽大眾:汽車網(wǎng)絡(luò)安全漏洞防護(hù)
- 恩智浦推出全新電池控制IC系列 助力新能源解決方案發(fā)展
- 全球首條GWh級新型固態(tài)電池生產(chǎn)線樣件下線
- 總投資455億元!三大動力電池項目齊刷進(jìn)度條
- 現(xiàn)代汽車韓國建氫燃料電池廠,2028年投產(chǎn)
- 6月融資一覽:智能汽車芯片、第三代半導(dǎo)體、機(jī)器人成資本焦點
- 艙駕一體“點燃”新戰(zhàn)事
- 汽車智能化2.0引爆「萬億蛋糕」,誰在改寫游戲規(guī)則?
- 2025研華智能系統(tǒng)產(chǎn)業(yè)伙伴峰會成功舉辦
- 意法半導(dǎo)體公布2025年第二季度財報和電話會議時間安排
- 免費下載|TE 白皮書《暖通空調(diào)制冷系統(tǒng)中壓力傳感器的重要性》
- 【TI有獎直播】新一代低功耗藍(lán)牙微控制器CC2640R2,開發(fā)和應(yīng)用案例解析
- ADI有獎下載之電磁流量計解決方案
- 從終端到架構(gòu),TE Connectivity(TE)助你連接5G高速未來 看視頻答題贏好禮!
- 半導(dǎo)體行業(yè)在線會員系統(tǒng)問卷調(diào)查 快來參與抽取50元京東卡!
- 分享你遇到的那些bug和解決技巧,贏萬圣節(jié)小驚喜!
- TI Simplelink 狂歡正嗨,熱門產(chǎn)品 9 折特惠!更有分享好禮任性送!
- 迎端午,芯幣可以兌換粽子啦!
- Deyisupport博文閱讀季:推薦你喜歡的放大器博文,搶樓贏好禮!
- fpga設(shè)計中毛刺問題的研究.pdf
- 小女子剛學(xué)FPGA ,請各位大俠幫助
- 幫忙分析三個放大器的作用,還有那個電容的作用
- 學(xué)51時做的小東西(一) -- 電子定時器
- stellarisWare dirvers文件夾里面為什么沒有l(wèi)m3s9b96?
- TIM1_CH1做輸出比較怎么配置
- 電快速瞬變脈沖群(EFT)不過的原因分析和整改經(jīng)驗分享
- 【ST電機(jī)評測】之 任務(wù)初始--環(huán)境搭建
- BGA封裝的DSP芯片引腳間距的問題(間距與datasheet上的有一點出入,不知道焊接的時候會不會出問題)
- 測轉(zhuǎn)速程序,請教高手