紅外線(xiàn)數據通信實(shí)驗
1.實(shí)驗目的:
掌握利用紅外線(xiàn)實(shí)現數據傳輸的原理和方法。
2.試驗內容:
利用兩塊實(shí)驗板,利用紅外線(xiàn)實(shí)現實(shí)驗板A向實(shí)驗板B發(fā)送數據。并將發(fā)送和接收的數據顯示在數碼管上。
3.硬件連接:
本實(shí)驗主要涉及到紅外模塊與數碼管模塊,確保紅外模塊中的發(fā)送和接收跳線(xiàn)都連接正確,同時(shí)確保數碼管模塊中的跳線(xiàn)連接正確。

4.試驗原理圖:
硬件原理:
利用串口來(lái)處理數據,將串口數據利用紅外發(fā)射管發(fā)送,將紅外接收管接收到的數據取反后再送回串口處理,處理后還原得到發(fā)送的數據。利用串口處理數據,簡(jiǎn)化了數據的分解,組合,載波等一系列復雜操作,使得紅外通信大大簡(jiǎn)單化。
軟件原理:
利用串口來(lái)發(fā)送和接收數據,大大簡(jiǎn)化了程序的設計,將數據通過(guò)串口發(fā)送,在將收到的數據送數碼管顯示。由于紅外傳輸并不可*,可能丟失數據,在實(shí)驗的過(guò)程中我們可以觀(guān)測到,可*的數據傳輸我們暫不考慮,在下一試驗中會(huì )詳細討論這個(gè)問(wèn)題。
5.實(shí)驗步驟:
1.連接紅外模塊中的發(fā)送和接收條線(xiàn)。
2.在Keil中編寫(xiě)程序,利用紅外線(xiàn)發(fā)送和接收數據,并將接收到的數據在數碼管上顯示出來(lái)。
3.將編譯好的程序下載到實(shí)驗箱上驗證程序的正確性。
6.思考題:
1:簡(jiǎn)析紅外探測的優(yōu)點(diǎn)和缺點(diǎn)及實(shí)用范圍。
2:怎樣利用紅外探測原理來(lái)設計一個(gè)完整的防盜報警器?
下面是程序代碼:
下面是程序代碼:
/**********************************Copyright (c)********************;** 西南科技大學(xué)計算機學(xué)院;** ;** ;** 日期: 2005.5.10;** 描述: 紅外數據通信實(shí)驗,本程序也通過(guò)調試,僅供參考。;** 實(shí)驗內容: 利用紅外線(xiàn)傳輸數據;** 適用機型: 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; //計時(shí)變量uchar ptr=0x00; //取數指針uchar Receive_data; //接收到的數據/*******************************************************名稱(chēng): 初始化運行環(huán)境 功能: 初始化各寄存器與端口狀態(tài)設置串口工作方式,波特率 3138參數: 無(wú)返回值:無(wú)*******************************************************/ void DeviceInit(void){TL0=0xC0; //置定時(shí)器處置,設置中斷時(shí)間為20msTH0=0x63;TMOD=0x01; //設定定時(shí)器/計數器0工作方式為1IE=0x92; //允許全局中斷,允許定時(shí)器/計數器0溢出中斷,允許串口接收終端T2CON = 0x39; //設置定時(shí)器2的工作模式為波特率發(fā)生器方式,RCAP2H = 0xFF; //設置波特率為3138HzRCAP2L = 0x11;SCON = 0x50; //設置串口工作方式為方式1TR2 = 0x01; //啟動(dòng)定時(shí)器2*/TR0=0x01; //啟動(dòng)定時(shí)器/計數器0P1=0xFE;}/*******************************************************名稱(chēng): 發(fā)送模塊 功能: 利用串口發(fā)送1個(gè)字符參數: 無(wú)返回值:無(wú)*******************************************************/void SendChar(uchar dat) {SBUF=dat; //發(fā)送數據送發(fā)送緩沖區while(TI==0); //等待發(fā)送完成TI=0; //置發(fā)送完成標志}/*******************************************************名稱(chēng): 接收中斷模塊 功能: 將接收到的數據保送數碼管顯示參數: 無(wú)返回值:無(wú)*******************************************************/void Receive (void) interrupt 4{if(RI) //當接收終端標志設立時(shí),開(kāi)始讀取接收到的數據{RI = 0; //清除接收終端標志Receive_data=SBUF; //將接收到的數據送緩沖區保存P0=Receive_data; //顯示接收到的數據}}/*******************************************************名稱(chēng): 定時(shí)器中斷模塊功能: 每隔一秒發(fā)送一個(gè)數據參數: 無(wú)返回值:無(wú)*******************************************************/void Timer0Over(void) interrupt 1 { count++;if(count==0x32) //每隔相同時(shí)間發(fā)送一個(gè)數據{ if(ptr=15){SendChar(Send_data[ptr]);ptr++;}else{SendChar(Send_data[0]);ptr=0x01;}count=0x00; //計時(shí)清零}TL0=0xC0; //中斷時(shí)間20msTH0=0x63;}/*******************************************************名稱(chēng): 主函數功能: 應用程序入口參數: 無(wú)返回值:無(wú)*******************************************************/void main() {DeviceInit(); //初始化定時(shí)器0與串口while(1);}
評論