女人被狂躁到高潮视频免费无遮挡,内射人妻骚骚骚,免费人成小说在线观看网站,九九影院午夜理论片少妇,免费av永久免费网址

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

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

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

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

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

引導(dǎo)碼:9 ms 的載波 +4.5 ms 的空閑。

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

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

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

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

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

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

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

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

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

本站聲明: 本文章由作者或相關(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)系本站刪除。
換一批
延伸閱讀

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

隨著社會(huì)經(jīng)濟(jì)的不斷發(fā)展進(jìn)步,科技的不斷飛升,在新時(shí)代的背景下網(wǎng)絡(luò)通信已經(jīng)成了人們最為常 用的科學(xué)技術(shù)產(chǎn)品之一,由于生活水平得到了提高人們?cè)谌粘5淖非笊弦舶l(fā)生著變化,而對(duì)于通信 的產(chǎn)品可以說(shuō)是有著日新月異的變化,人們?cè)诰W(wǎng)絡(luò)...

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

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

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