新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 紅外線數據通信實驗

        紅外線數據通信實驗

        作者: 時間:2012-09-14 來源:網絡 收藏

        1.實驗目的:
        掌握利用實現數據傳輸的原理和方法。

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

        下面是程序代碼:
        /**********************************Copyright (c)********************;**                            西南科技大學計算機學院;**                           ;**          ;**    日期:      2005.5.10;**    描述:      紅外實驗,本程序也通過調試,僅供參考。;**    實驗內容:   利用紅外線傳輸數據;**    適用機型:  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;        //取數指針uchar Receive_data;    //接收到的數據/*******************************************************名稱:   初始化運行環境   功能:  初始化各寄存器與端口狀態設置串口工作方式,波特率 3138參數:  無返回值:無*******************************************************/          void DeviceInit(void){TL0=0xC0;         //置定時器處置,設置中斷時間為20msTH0=0x63;TMOD=0x01;        //設定定時器/計數器0工作方式為1IE=0x92;          //允許全局中斷,允許定時器/計數器0溢出中斷,允許串口接收終端T2CON = 0x39;     //設置定時器2的工作模式為波特率發生器方式,RCAP2H = 0xFF;    //設置波特率為3138HzRCAP2L = 0x11;SCON = 0x50;      //設置串口工作方式為方式1TR2 = 0x01;       //啟動定時器2*/TR0=0x01;         //啟動定時器/計數器0P1=0xFE;}/*******************************************************名稱:   發送模塊   功能:  利用串口發送1個字符參數:  無返回值:無*******************************************************/void SendChar(uchar dat)  {SBUF=dat;        //發送數據送發送緩沖區while(TI==0);    //等待發送完成TI=0;            //置發送完成標志}/*******************************************************名稱:   接收中斷模塊   功能:  將接收到的數據保送數碼管顯示參數:  無返回值:無*******************************************************/void Receive (void) interrupt 4{if(RI)                   //當接收終端標志設立時,開始讀取接收到的數據{RI = 0;               //清除接收終端標志Receive_data=SBUF;    //將接收到的數據送緩沖區保存P0=Receive_data;      //顯示接收到的數據}}/*******************************************************名稱:   定時器中斷模塊功能:  每隔一秒發送一個數據參數:  無返回值:無*******************************************************/void Timer0Over(void) interrupt 1  { count++;if(count==0x32)        //每隔相同時間發送一個數據{ if(ptr=15){SendChar(Send_data[ptr]);ptr++;}else{SendChar(Send_data[0]);ptr=0x01;}count=0x00;     //計時清零}TL0=0xC0;       //中斷時間20msTH0=0x63;}/*******************************************************名稱:   主函數功能:  應用程序入口參數:  無返回值:無*******************************************************/void main()                       {DeviceInit();    //初始化定時器0與串口while(1);}


        關鍵詞: 紅外線 數據通信

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 军事| 华容县| 克东县| 五莲县| 呼和浩特市| 徐汇区| 台山市| 酒泉市| 山东| 鸡泽县| 建昌县| 张家港市| 泸溪县| 汕尾市| 华池县| 拉萨市| 阿拉善左旗| 集贤县| 高碑店市| 平山县| 阳江市| 诏安县| 开原市| 乌什县| 金堂县| 万载县| 体育| 富阳市| 昌宁县| 清流县| 区。| 达拉特旗| 炉霍县| 元朗区| 当涂县| 施甸县| 朔州市| 全南县| 东明县| 江北区| 三穗县|