日韩一区二区三区精品,欧美疯狂xxxxbbbb牲交,热99re久久免费视精品频,人妻互换 综合,欧美激情肉欲高潮视频

- 什么是紅外遙控

紅外遙控系統(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ù)值

}

關(guān)鍵字:51單片機(jī)  紅外遙控 引用地址:51單片機(jī)—紅外遙控

上一篇:51單片機(jī)-實踐操作
下一篇:51單片機(jī)—串口通信

推薦閱讀

華為澳大利亞公司董事長John Lord表示,仇外心理是聯(lián)邦政府決定禁止華為在澳大利亞提供5G網(wǎng)絡(luò)設(shè)備的一個因素所在。?John Lord告訴ABC的早間節(jié)目,華為在上周自由黨領(lǐng)導(dǎo)層緊張局勢的高峰期被排除在澳大利亞5G建設(shè)之外,這是非常不幸的,并且他強(qiáng)調(diào)了澳大利亞與中國之間的外交緊張局勢。?“我們沒有進(jìn)行公開討論。”他說。?“我們正在討論圍繞這一決定...
能代替消防員進(jìn)入易燃易爆、缺氧、濃煙等危險災(zāi)害事故現(xiàn)場的特種機(jī)器人,能給患者做手術(shù)也能給患者端茶送藥的醫(yī)療機(jī)器人,在生產(chǎn)線上精準(zhǔn)地擰緊一顆螺絲釘?shù)墓I(yè)機(jī)器人。8月25日,以“智能新生態(tài)、開放新時代”為主題的2019世界機(jī)器人大會在北京閉幕,全球180多家企業(yè)展出700余件(套)展品,展示了機(jī)器人在諸多領(lǐng)域的新技術(shù)、新產(chǎn)品、新應(yīng)用,也給觀眾...
獲得FAA批準(zhǔn)后,亞馬遜在無人機(jī)方面的努力終于圓滿了。終于!亞馬遜可以在美國推行無人機(jī)快遞服務(wù)了。當(dāng)?shù)貢r間周一,美國聯(lián)邦航天管理局(FAA)宣布將亞馬遜旗下指定為“航空公司”,這意味著亞馬遜可以進(jìn)行試點計劃,從而在美國推出商業(yè)無人機(jī)快遞服務(wù)。在這之前,獲得FAA批準(zhǔn)的僅有兩家,分別是Alphabet旗下的Wing,以及聯(lián)合包裹服務(wù)公司(UPS),他們被...
最近極氪在進(jìn)行一波推廣,我把我感興趣的電池部分做一次比較深度的梳理。隨著吉利將這個SEA平臺與自己的很多“伙伴”分享,我們將來能在不同品牌的很多車型上能看到——極氪、極星、沃爾沃、領(lǐng)克甚至是Smart,還有集度。題圖 SEA平臺的剖面圖目前了解下來這個電池平臺的方案主要有一下幾個要點——1)電池采用的是大家都在用的Ni55體系電池(Ni55電池是通...

史海拾趣

問答坊 | AI 解惑

組合邏輯競爭冒險(checked)

本帖最后由 辛昕 于 2018-5-3 16:39 編輯 后來這個問題我沒什么興趣了,唯一的可能就是,其實它啟發(fā)了 編程里的 數(shù)據(jù)加鎖 以避免沖突。 小弟最近做數(shù)字電路的基礎(chǔ)實驗。 其中被 組合邏輯競爭冒險現(xiàn)象 困擾 呃,我看過一些資料,但是,很多 ...…

查看全部問答∨

顯示驅(qū)動如何測試

大家好! 最近正在搞ce5.0的顯示驅(qū)動,我是直接繼承GPE類的,自己又?jǐn)U展了幾個函數(shù),現(xiàn)在剛把其中的emulatedline函數(shù)按照自己的屏移植好,想對其測試一下畫線功能.在往上查了很多關(guān)于顯示驅(qū)動的資料,看到有的說是利用platformbuilder自帶的應(yīng)用程序Vide ...…

查看全部問答∨

運放權(quán)威指南

本帖最后由 paulhyde 于 2014-9-15 09:10 編輯 運放權(quán)威指南,超級牛逼的書,不好意思,收一個金幣,因為我需要一些金幣下載資料  …

查看全部問答∨

單片機(jī)的出路?

看到身邊很多人都是從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)先級劃分)臺燈做 ...…

查看全部問答∨

Zstack使能PA的問題

本帖最后由 suneeinwh 于 2016-11-25 10:22 編輯 CC2530和CC2592,使用Zstack怎么使能PA? …

查看全部問答∨

pads9.5快捷鍵zz是什么意思,出現(xiàn)底色

這是正常打開的情況。然后我想看第一層,輸入快捷鍵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電子時鐘實驗

/********************************************************************* msp430g2553與1602引腳連接情況 * PIN1 --> 地 * PIN2 --> VCC(一定要接+5V) * PIN3 -->仿真時懸空,實際電路 2K電阻-->地 (電阻可以是500-2k的,改變電阻可以改變 ...…

查看全部問答∨
小廣播
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號

 
EEWorld服務(wù)號

 
汽車開發(fā)圈

 
機(jī)器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務(wù)審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved