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

當前位置:首頁 > 單片機 > 單片機
[導讀]家電遙控器通信距離往往要求不高,而紅外的成本比其它無線設(shè)備要低的多,所以家電遙控器應(yīng)用中紅外始終占據(jù)著一席之地。遙控器的基帶通信協(xié)議很多,大概有幾十種,常用的就有 ITT 協(xié)議、NEC 協(xié)議、Sharp 協(xié)議、Phili

家電遙控器通信距離往往要求不高,而紅外的成本比其它無線設(shè)備要低的多,所以家電遙控器應(yīng)用中紅外始終占據(jù)著一席之地。遙控器的基帶通信協(xié)議很多,大概有幾十種,常用的就有 ITT 協(xié)議、NEC 協(xié)議、Sharp 協(xié)議、Philips RC-5 協(xié)議、Sony SIRC 協(xié)議等。用的最多的就是 NEC 協(xié)議了,因此我們 KST-51 開發(fā)板配套的遙控器直接采用 NEC 協(xié)議,我們這節(jié)課也以 NEC 協(xié)議標準來講解一下。

NEC 協(xié)議的數(shù)據(jù)格式包括了引導碼、用戶碼、用戶碼(或者用戶碼反碼)、按鍵鍵碼和鍵碼反碼,最后一個停止位。停止位主要起隔離作用,一般不進行判斷,編程時我們也不予理會。其中數(shù)據(jù)編碼總共是4個字節(jié)32位,如圖16-7所示。第一個字節(jié)是用戶碼,第二個字節(jié)可能也是用戶碼,或者是用戶碼的反碼,具體由生產(chǎn)商決定,第三個字節(jié)就是當前按鍵的鍵數(shù)據(jù)碼,而第四個字節(jié)是鍵數(shù)據(jù)碼的反碼,可用于對數(shù)據(jù)的糾錯。

圖16-7 NEC 協(xié)議數(shù)據(jù)格式

這個 NEC 協(xié)議,表示數(shù)據(jù)的方式不像我們之前學過的比如 UART 那樣直觀,而是每一位數(shù)據(jù)本身也需要進行編碼,編碼后再進行載波調(diào)制。

引導碼:9 ms 的載波 +4.5 ms 的空閑。

比特值“0”:560 us 的載波 +560 us 的空閑。

比特值“1”:560 us 的載波 +1.68 ms 的空閑。

結(jié)合圖16-7我們就能看明白了,最前面黑乎乎的一段,是引導碼的 9 ms 載波,緊接著是引導碼的 4.5 ms 的空閑,而后邊的數(shù)據(jù)碼,是眾多載波和空閑交叉,它們的長短就由其要傳遞的具體數(shù)據(jù)來決定。HS0038B 這個紅外一體化接收頭,當收到有載波的信號的時候,會輸出一個低電平,空閑的時候會輸出高電平,我們用邏輯分析儀抓出來一個紅外按鍵通過HS0038B 解碼后的圖形來了解一下,如圖16-8所示。

圖16-8 紅外遙控器按鍵編碼

從圖上可以看出,先是 9 ms 載波加 4.5 ms 空閑的起始碼,數(shù)據(jù)碼是低位在前,高位在后,數(shù)據(jù)碼第一個字節(jié)是8組 560 us 的載波加 560 us 的空閑,也就是 0x00,第二個字節(jié)是8組 560 us的載波加 1.68 ms 的空閑,可以看出來是 0xFF,這兩個字節(jié)就是用戶碼和用戶碼的反碼。按鍵的鍵碼二進制是 0x0C,反碼就是 0xF3,最后跟了一個 560 us 載波停止位。對于我們的遙控器來說,不同的按鍵,就是鍵碼和鍵碼反碼的區(qū)分,用戶碼是一樣的。這樣我們就可以通過單片機的程序,把當前的按鍵的鍵碼給解析出來。

我們前邊學習中斷的時候,學到51單片機有外部中斷0和外部中斷1這兩個外部中斷。我們的紅外接收引腳接到了 P3.3 引腳上,這個引腳的第二功能就是外部中斷1。在寄存器TCON 中的 bit3 和 bit2 這兩位,是和外部中斷1相關(guān)的兩位。其中 IE1 是外部中斷標志位,當外部中斷發(fā)生后,這一位被自動置1,和定時器中斷標志位 TF 相似,進入中斷后會自動清零,也可以軟件清零。bit2 是設(shè)置外部中斷類型的,如果 bit2 為0,那么只要 P3.3 為低電平就可以觸發(fā)中斷,如果 bit2 為1,那么 P3.3 從高電平到低電平的下降沿發(fā)生才可以觸發(fā)中斷。此外,外部中斷1使能位是 EX1。那下面我們就把程序?qū)懗鰜?,使用?shù)碼管把遙控器的用戶碼和鍵碼顯示出來。

Infrared.c 文件主要是用來檢測紅外通信的,當發(fā)生外部中斷后,進入外部中斷,通過定時器1定時,首先對引導碼判斷,而后對數(shù)據(jù)碼的每個位逐位獲取高低電平的時間,從而得知每一位是0還是1,最終把數(shù)據(jù)碼解出來。雖然最終實現(xiàn)的功能很簡單,但因為編碼本身的復雜性,使得紅外接收的中斷程序在邏輯上顯得就比較復雜,那么我們首先提供出中斷函數(shù)的程序流程圖,大家可以對照流程圖來理解程序代碼,如圖16-9所示。

圖16-9 紅外接收程序流程圖

/***************************Infrared.c文件程序源代碼*****************************/#includesbitIR_INPUT=P3^3;//紅外接收引腳bitirflag=0;//紅外接收標志,收到一幀正確數(shù)據(jù)后置1unsignedcharircode[4];//紅外代碼接收緩沖區(qū)/*初始化紅外接收功能*/voidInitInfrared(){IR_INPUT=1;//確保紅外接收引腳被釋放TMOD&=0x0F;//清零T1的控制位TMOD"=0x10;//配置T1為模式1TR1=0;//停止T1計數(shù)ET1=0;//禁止T1中斷IT1=1;//設(shè)置INT1為負邊沿觸發(fā)EX1=1;//使能INT1中斷}/*獲取當前高電平的持續(xù)時間*/unsignedintGetHighTime(){TH1=0;//清零T1計數(shù)初值TL1=0;TR1=1;//啟動T1計數(shù)while(IR_INPUT){//紅外輸入引腳為1時循環(huán)檢測等待,變?yōu)?時則結(jié)束本循環(huán)//當T1計數(shù)值大于0x4000,即高電平持續(xù)時間超過約18ms時,//強制退出循環(huán),是為了避免信號異常時,程序假死在這里。if(TH1>=0x40){break;}}TR1=0;//停止T1計數(shù)return(TH1*256+TL1);//T1計數(shù)值合成為16bit整型數(shù),并返回該數(shù)}/*獲取當前低電平的持續(xù)時間*/unsignedintGetLowTime(){TH1=0;//清零T1計數(shù)初值TL1=0;TR1=1;//啟動T1計數(shù)while(!IR_INPUT){//紅外輸入引腳為0時循環(huán)檢測等待,變?yōu)?時則結(jié)束本循環(huán)//當T1計數(shù)值大于0x4000,即低電平持續(xù)時間超過約18ms時,//強制退出循環(huán),是為了避免信號異常時,程序假死在這里。if(TH1>=0x40){break;}}TR1=0;//停止T1計數(shù)return(TH1*256+TL1);//T1計數(shù)值合成為16bit整型數(shù),并返回該數(shù)}/*INT1中斷服務(wù)函數(shù),執(zhí)行紅外接收及解碼*/voidEXINT1_ISR()interrupt2{unsignedchari,j;unsignedcharbyt;unsignedinttime;//接收并判定引導碼的9ms低電平time=GetLowTime();//時間判定范圍為8.5~9.5ms,//超過此范圍則說明為誤碼,直接退出if((time<7833)||(time>8755)){IE1=0;//退出前清零INT1中斷標志return;}//接收并判定引導碼的4.5ms高電平time=GetHighTime();//時間判定范圍為4.0~5.0ms,//超過此范圍則說明為誤碼,直接退出if((time<3686)||(time>4608)){IE1=0;return;}//接收并判定后續(xù)的4字節(jié)數(shù)據(jù)for(i=0;i<4;i++){//循環(huán)接收4個字節(jié)for(j=0;j<8;j++){//循環(huán)接收判定每字節(jié)的8個bit//接收判定每bit的560us低電平time=GetLowTime();//時間判定范圍為340~780us,//超過此范圍則說明為誤碼,直接退出if((time<313)||(time>718)){IE1=0;return;}//接收每bit高電平時間,判定該bit的值time=GetHighTime();//時間判定范圍為340~780us,//在此范圍內(nèi)說明該bit值為0if((time>313)&&(time<718)){byt>>=1;//因低位在先,所以數(shù)據(jù)右移,高位為0//時間判定范圍為1460~1900us,//在此范圍內(nèi)說明該bit值為1}elseif((time>1345)&&(time<1751)){byt>>=1;//因低位在先,所以數(shù)據(jù)右移,byt|=0x80;//高位置1}else{//不在上述范圍內(nèi)則說明為誤碼,直接退出IE1=0;return;}}ircode[i]=byt;//接收完一個字節(jié)后保存到緩沖區(qū)}irflag=1;//接收完畢后設(shè)置標志IE1=0;//退出前清零INT1中斷標志}

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

在人工智能飛速發(fā)展的當下,大模型展現(xiàn)出了強大的語言理解與生成能力。然而,要讓這些模型真正在實際場景中發(fā)揮作用,與外部豐富的工具及數(shù)據(jù)源順暢交互至關(guān)重要。在此背景下,Model Context Protocol(MCP),...

關(guān)鍵字: 人工智能 大模型 協(xié)議

在智能汽車飛速發(fā)展的當下,汽車內(nèi)各種電氣設(shè)備之間的數(shù)據(jù)交互愈發(fā)頻繁和復雜。車載以太網(wǎng)作為連接這些設(shè)備的關(guān)鍵物理網(wǎng)絡(luò),正扮演著日益重要的角色。它基于傳統(tǒng)以太網(wǎng)協(xié)議,對物理接口電氣特性進行了改造,并依據(jù)車載網(wǎng)絡(luò)需求制定了新標...

關(guān)鍵字: 以太網(wǎng) 車載網(wǎng)絡(luò) 協(xié)議

I2C 總線的起始條件和終止條件通常由主機產(chǎn)生。起始條件是在 SCL 高電平時,SDA 從高電平轉(zhuǎn)為低電平;而終止條件則是當 SCL 高電平時,SDA 從低電平轉(zhuǎn)化為高電平。這兩個條件的準確識別對于 I2C 通信的正確啟...

關(guān)鍵字: I2C 總線 數(shù)據(jù) 協(xié)議

在當今數(shù)字化時代,互聯(lián)網(wǎng)已經(jīng)成為人們生活和工作中不可或缺的一部分。從瀏覽網(wǎng)頁、發(fā)送電子郵件,到視頻通話、在線購物,每一項網(wǎng)絡(luò)活動的背后都離不開一套復雜而精妙的協(xié)議體系 ——TCP/IP 協(xié)議族。作為支撐現(xiàn)代互聯(lián)網(wǎng)運行的基...

關(guān)鍵字: 協(xié)議 互聯(lián)網(wǎng) TCP/IP 協(xié)議

串口:串口是一個泛稱,UART、TTL、RS232、RS485都遵循類似的通信時序協(xié)議,因此都被通稱為串口。串口通訊應(yīng)用是工控人必須掌握的一個技能,幾乎在每一個項目中都會用到,今天我們就來詳細比較一下它們究竟有何區(qū)別。

關(guān)鍵字: 串口 協(xié)議

采用芯科科技MG21無線SoC的控客智能家居解決方案為杭州亞運會媒體村打造智能、舒適、便捷、安全的生活體驗

關(guān)鍵字: 無線SoC 紅外遙控器 工業(yè)物聯(lián)網(wǎng)

電視、空調(diào)、音響、電暖器、等日常家電中,最常見的遙控器就是紅外線遙控式了,遙控器是一種用來遠控機械的裝置。現(xiàn)代的遙控器,主要是由集成電路電板和用來產(chǎn)生不同訊息的按鈕所組成。因其造價成本低,對其它的電器不存在干擾的優(yōu)點被大...

關(guān)鍵字: 紅外遙控器 遙控發(fā)射器

在如今,我們的無線遙控器在我們的生活中比比皆是,每家每戶都在使用,例如我們的電視、空調(diào)等家電是極為普遍的,無線遙控器給我們?nèi)粘I顜順O大的便利,遙控器的發(fā)明者是誰已無從知曉,我們?nèi)缃竦倪b控器,是一種采用遠程來控制機器的...

關(guān)鍵字: 無線遙控器 紅外遙控器

隨著社會經(jīng)濟的不斷發(fā)展進步,科技的不斷飛升,在新時代的背景下網(wǎng)絡(luò)通信已經(jīng)成了人們最為常 用的科學技術(shù)產(chǎn)品之一,由于生活水平得到了提高人們在日常的追求上也發(fā)生著變化,而對于通信 的產(chǎn)品可以說是有著日新月異的變化,人們在網(wǎng)絡(luò)...

關(guān)鍵字: 通信 協(xié)議 控制

據(jù)路透社等海外媒體報道,美國商務(wù)部官員Wilbur Ross在4月16日透露,因未履行和解協(xié)定中的部分協(xié)議,美國商務(wù)部將禁止美國企業(yè)向中興通訊銷售元器件,時間有可能長達7年。該消息公布之后,國內(nèi)部分產(chǎn)業(yè)人士認為是假消息,...

關(guān)鍵字: 協(xié)議 元器件 中興通訊
關(guān)閉