新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 紅外線數(shù)據(jù)通信實驗

紅外線數(shù)據(jù)通信實驗

作者: 時間:2012-09-14 來源:網(wǎng)絡 收藏

1.實驗目的:
掌握利用實現(xiàn)數(shù)據(jù)傳輸?shù)脑砗头椒ā?/P>

2.試驗內容:
利用兩塊實驗板,利用實現(xiàn)實驗板A向實驗板B發(fā)送數(shù)據(jù)。并將發(fā)送和接收的數(shù)據(jù)顯示在數(shù)碼管上。
3.硬件連接:
本實驗主要涉及到紅外模塊與數(shù)碼管模塊,確保紅外模塊中的發(fā)送和接收跳線都連接正確,同時確保數(shù)碼管模塊中的跳線連接正確。
點擊瀏覽下一頁
4.試驗原理圖:
硬件原理:
利用串口來處理數(shù)據(jù),將串口數(shù)據(jù)利用紅外發(fā)射管發(fā)送,將紅外接收管接收到的數(shù)據(jù)取反后再送回串口處理,處理后還原得到發(fā)送的數(shù)據(jù)。利用串口處理數(shù)據(jù),簡化了數(shù)據(jù)的分解,組合,載波等一系列復雜操作,使得紅外通信大大簡單化。
軟件原理:
利用串口來發(fā)送和接收數(shù)據(jù),大大簡化了程序的設計,將數(shù)據(jù)通過串口發(fā)送,在將收到的數(shù)據(jù)送數(shù)碼管顯示。由于紅外傳輸并不可*,可能丟失數(shù)據(jù),在實驗的過程中我們可以觀測到,可*的數(shù)據(jù)傳輸我們暫不考慮,在下一試驗中會詳細討論這個問題。
5.實驗步驟:
1.連接紅外模塊中的發(fā)送和接收條線。
2.Keil中編寫程序,利用發(fā)送和接收數(shù)據(jù),并將接收到的數(shù)據(jù)在數(shù)碼管上顯示出來。
3.將編譯好的程序下載到實驗箱上驗證程序的正確性。
6.思考題: 
1:簡析紅外探測的優(yōu)點和缺點及實用范圍。
2:怎樣利用紅外探測原理來設計一個完整的防盜報警器?

下面是程序代碼:
/**********************************Copyright (c)********************;**                            西南科技大學計算機學院;**                           ;**          ;**    日期:      2005.5.10;**    描述:      紅外實驗,本程序也通過調試,僅供參考。;**    實驗內容:   利用紅外線傳輸數(shù)據(jù);**    適用機型:  AT89S52*************************************************************/#include at89x52.h>                     //定義芯片特殊功能寄存器的頭文件#define uchar unsigned charuchar Send_data[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};uchar count=0x00;      //計時變量uchar ptr=0x00;        //取數(shù)指針uchar Receive_data;    //接收到的數(shù)據(jù)/*******************************************************名稱:   初始化運行環(huán)境   功能:  初始化各寄存器與端口狀態(tài)設置串口工作方式,波特率 3138參數(shù):  無返回值:無*******************************************************/          void DeviceInit(void){TL0=0xC0;         //置定時器處置,設置中斷時間為20msTH0=0x63;TMOD=0x01;        //設定定時器/計數(shù)器0工作方式為1IE=0x92;          //允許全局中斷,允許定時器/計數(shù)器0溢出中斷,允許串口接收終端T2CON = 0x39;     //設置定時器2的工作模式為波特率發(fā)生器方式,RCAP2H = 0xFF;    //設置波特率為3138HzRCAP2L = 0x11;SCON = 0x50;      //設置串口工作方式為方式1TR2 = 0x01;       //啟動定時器2*/TR0=0x01;         //啟動定時器/計數(shù)器0P1=0xFE;}/*******************************************************名稱:   發(fā)送模塊   功能:  利用串口發(fā)送1個字符參數(shù):  無返回值:無*******************************************************/void SendChar(uchar dat)  {SBUF=dat;        //發(fā)送數(shù)據(jù)送發(fā)送緩沖區(qū)while(TI==0);    //等待發(fā)送完成TI=0;            //置發(fā)送完成標志}/*******************************************************名稱:   接收中斷模塊   功能:  將接收到的數(shù)據(jù)保送數(shù)碼管顯示參數(shù):  無返回值:無*******************************************************/void Receive (void) interrupt 4{if(RI)                   //當接收終端標志設立時,開始讀取接收到的數(shù)據(jù){RI = 0;               //清除接收終端標志Receive_data=SBUF;    //將接收到的數(shù)據(jù)送緩沖區(qū)保存P0=Receive_data;      //顯示接收到的數(shù)據(jù)}}/*******************************************************名稱:   定時器中斷模塊功能:  每隔一秒發(fā)送一個數(shù)據(jù)參數(shù):  無返回值:無*******************************************************/void Timer0Over(void) interrupt 1  { count++;if(count==0x32)        //每隔相同時間發(fā)送一個數(shù)據(jù){ if(ptr=15){SendChar(Send_data[ptr]);ptr++;}else{SendChar(Send_data[0]);ptr=0x01;}count=0x00;     //計時清零}TL0=0xC0;       //中斷時間20msTH0=0x63;}/*******************************************************名稱:   主函數(shù)功能:  應用程序入口參數(shù):  無返回值:無*******************************************************/void main()                       {DeviceInit();    //初始化定時器0與串口while(1);}


評論


相關推薦

技術專區(qū)

關閉