人狗畜禽COMPANY LIMITED|全是肉的高H文〈男男〉|全篇肉高H秘书被C办公室四爱|全黄H全肉共妻|全黄H全肉短篇禁乱NP慕浅浅|全黄H全肉短篇N男男

技術熱線: 4007-888-234
設計開發(fā)

專注差異化嵌入式產(chǎn)品解決方案 給智能產(chǎn)品定制注入靈魂給予生命

開發(fā)工具

提供開發(fā)工具、應用測試 完善的開發(fā)代碼案例庫分享

技術支持

從全面的產(chǎn)品導入到強大技術支援服務 全程貼心伴隨服務,創(chuàng)造無限潛能!

新品推廣

提供新的芯片及解決方案,提升客戶產(chǎn)品競爭力

新聞中心

提供最新的單片機資訊,行業(yè)消息以及公司新聞動態(tài)

單片機系統(tǒng)中的紅外通信接口

更新時間: 2019-03-23
閱讀量:1761

十年專注單片機方案開發(fā)的方案公司英銳恩,分享單片機系統(tǒng)中的紅外通信接口。英銳恩現(xiàn)提供服務產(chǎn)品涉及主控芯片:8位單片機、16位單片機、32位單片機及各類運算放大器等。

摘要:本文結(jié)合復費率電能表中紅外通信的設計實從事貿(mào)易,介紹了單片機系統(tǒng)中紅外通信的軟硬件設計方法,并給出了具體的電路原理和通信源程序。

  關鍵詞:單片機,紅外通信,遙控

  在許多基于單片機的應用系統(tǒng)中,系統(tǒng)需要實現(xiàn)遙控功能,而紅外通信則是被采用較多的一種方法。一般市場上的搖控器協(xié)議簡單、保密性不強、抗干擾能力較弱。這里,我們介紹一種基于字節(jié)傳輸?shù)募t外遙控系統(tǒng),可以適合于各種復雜的應用場合。

  紅外通信的基本原理

  紅外通信的基本原理是發(fā)送端將基帶二進制信號調(diào)制為一系列的脈沖串信號,通過紅外發(fā)射管發(fā)射紅外信號。常用的有通過脈沖寬度來實現(xiàn)信號調(diào)制的脈寬調(diào)制(PWM)和通過脈沖串之間的時間間隔來實現(xiàn)信號調(diào)制的脈時調(diào)制(PPM)兩種方法。本系統(tǒng)采用的為永時市制方法。數(shù)據(jù)比特的傳送仿照不帶奇?zhèn)刃r灥腞S232通信,首先產(chǎn)生一個同步頭,然后接著8位數(shù)據(jù)比特

 硬件電路設計

  復費率電能表系統(tǒng)可分為手持遙控器和復費率電能表兩部分.手持遙控器為發(fā)射部分,其基本電路如圖2所示。采用塑封的SE303ANC-發(fā)射二極管,波長為940nm。CPU按照協(xié)議規(guī)定導通或截止發(fā)射二極管,從而產(chǎn)生特定頻率的發(fā)射信號,這里選用的頻率為38.9kHz。復費率電能表紅外接收部分的基本電路如圖3所示。接收管采用日本光電子公司的PIC-12034,其接收頻率為37.9kHz,它直接將37.9kHz的調(diào)制信號解調(diào)為基帶信號,提供緞帶接收CPU。該芯片接收靈敏度高,性能穩(wěn)定。其基本工作過程為:當接收至37.9kHz信號時,輸出低電平,否則輸出為高電平。電能表部分采用的是51系列單片機,以中斷方式檢測接收信號。這里的非門對收信號起整形作用。


  軟件設計

  發(fā)射部分的程序相對來說非常簡單,主要是生產(chǎn)不同時間間隔的37.9kHz脈沖串信號控制發(fā)射管的通斷。在發(fā)射端,CPU不斷掃描鍵盤,一旦發(fā)現(xiàn)有鍵按下,即啟動發(fā)射子程序?qū)⑾鄳臄?shù)值發(fā)送出。在我們的設計中,采用的是4×4的小鍵盤,正如和0~F編碼對應,為了提高可靠性,采用最簡單的糾錯編碼――將每位數(shù)重復發(fā)送一次,即和鍵盤數(shù)字對應的編碼為00~FF。這樣,一個鍵值要發(fā)送8比特。接收端接收滿8比特信號后,再進行糾錯處理,不正確的碥碼認為無效。收足規(guī)定的號碼后,即調(diào)用號碼分析程序進行處理。當每收至一個脈沖串信

號后即啟動一個定時器。下次中斷發(fā)生時,通過定時器的計數(shù)值判斷是0還是1。如果定時器溢出,則清除本次接收的號碼,恢復到接收初始狀態(tài)。接收部分的基本程序流程如圖4所示。

  在程序設計時,應該注意MCU的中斷方式采用下降沿觸發(fā):接收端通過T0計數(shù)值來判斷發(fā)送比特,一般采用硬判決,即取0和1比特時寬的平均值為竟決門限A,當T0值大于A時判接收信號為0,小于A時判為1。

  復費率電能表中的紅外接收程序(MCU為Intel 8052,采用C語言編寫)見程序清單。

   結(jié)語

  以上設計方案在復費率電能表中應用后,效果良好,達至了設計要求。整個系統(tǒng)外圍元件少,調(diào)試方便;軟件工作量也較小。如果應用來傳送大量數(shù)據(jù)時,還可以根據(jù)需要改變相應的編碼形式,提高數(shù)據(jù)傳送速率。

通信源程序
#include
#include
#include
#pragma OPTIMIZE(5,SPEED)
sbit RECV=P3^3;
bdata unsigned char SIGN,RECVBYTE;

sbit RECVBG=SING^0;
sbit US1AT=SIGN^6;
sbit RECVBITO=RECVBYTE^0;
unsigned char RECVBIT;

timer0()interrupt 1∥entrance:8*n+3=0Bh;
{
IE=0x8d;∥1(EA)0(X)0(X)0(X)-1(ET1)1(EX1)0(ET0)1(EX0)
RECVBG=0;
}

EX-INT1()interrupt 2∥接收紅外信號
{
TCON=0x45;∥0(TF1)1(TR1)0(TF0)1(TR0)-0(IE1)1(IT1)0(IE0)1(IT0)
If(RECVBG==0){RECVBG=1;
RECVBIT=8;
}
eles{BECVBYTE=RECVBYTE<<1;
if(TH0<=4)RECVBIT0=1;

else RECVBIT0=0;
RECVBIT--;
If(RECVBIT==0){RECVBG=0;
US1AT=1;
}
}
TH0=0;
TL0=0;
TCON=0x55;∥0(TF1)1(TR1)0(TF0)1(TR0)-0(IE1)1(IT1)0(IE0)1(IT0)
IE=0x8f;∥Enable the timer0interrupt
}

void main(){
RECVBYTE=O;
SIGN=O;
TMOD=0x11;
TCON=0x55;∥0(TF1)1(TR1)0(TF0)1(TR0)-0(IE1)1(IT1)0(IE0)1(IT0)
IP=0x00;
IE=0x8d;∥1(EA)0(X)0(X)0(X)-1(ET1)1(EX1)0(ET0)1(EX0)
∥基本循環(huán)程序
while(1){

.(略)

if(US1AT==1{∥紅外接收處理

.(略)

}
}
}

蒙城县| 威远县| 凤山市| 龙胜| 宁夏| 盘锦市| 开封县| 绥阳县| 十堰市| 富锦市| 普兰县| 泗水县| 大化| 潍坊市| 柏乡县| 自治县| 遂川县| 永昌县| 汉川市| 手机| 罗田县| 盐边县| 会同县| 容城县| 咸丰县| 右玉县| 苏尼特右旗| 达孜县| 花莲市| 嘉黎县| 沙田区| 金山区| 宁陵县| 富民县| 中超| 香格里拉县| 台安县| 桑植县| 湘阴县| 上蔡县| 北安市|