新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機雙機通訊試驗

        單片機雙機通訊試驗

        作者: 時間:2012-10-20 來源:網絡 收藏
        實驗名稱:
        實驗目的:熟悉串行口工作原理;掌握通信程序設計的一般方法
        實驗要求:按照實驗安排準時參加實驗,按照實驗步驟操作,仔細觀察及記錄實驗過程及結果,回答實驗相關問題,最終根據實驗結果撰寫實驗指導書。
        實驗內容:編寫一個雙機通信程序,一個作為主機,一個作為從機,主機對從機發送控制命令,當主機發送turn on 時,從機如果接收正確,則向主機發送on用于應答,并使LED燈亮(從機任選1LED燈來控制),當主機發關turn off 時,從機如果接收正確,則使LED 燈滅。如果不是這兩個命令,則從機向主機發送error作為應答。
        實驗步驟:
        1、連接兩臺開發板的串行通信線,注意共地連接
        2、設定A機為發送方
        3、設定B機為接收方
        4、設定雙方接收與發送波特率
        5、各自編制收發程序
        6、發送數據調試
        錄入程序:
        #include/*命令定義*/#define TurnOn  1#define TurnOff 2/*應答定義*/#define On      3#define Off     4#define Error     4/////////////////顯示sbit k1=P1^3;/*第1位數碼管共陰端*/sbit k2=P1^2;/*第2位數碼管共陰端*/sbit k3=P1^1;/*第3位數碼管共陰端*/sbit k4=P1^0;/*第4位數碼管共陰端*/unsigned char rd=0;//串口數據接收暫存變量void RxdInterrupt() interrupt 4 using 2//串口中斷函數{rd=SBUF;//接收數據存儲到變量rdif(rd==TurnOn)//是亮燈命令{P0=255;//LED亮SBUF=On;//應答Onwhile(TI==0);TI=0; //等待發送完畢}else if(rd==TurnOff)//是關燈命令{P0=0;//LED滅SBUF=Off;//應答Offwhile(TI==0);TI=0; //等待發送完畢}else {SBUF=Error;//應答Offwhile(TI==0);TI=0; //等待發送完畢}RI=0;}void InitEs()//串口初始化函數{TMOD=0x21;   TH1=0xF3;//波速率設置為2400TR1=1; SCON=0XD0; ES=1;//串口中斷允許}main(){InitEs();//串口初始化EA=1;  k1=k2=k3=k4=0;//關閉數碼管P0=0;//LED滅while(1){}} 
        程序參考及鳴謝:我在網上認識了一個網名為蘇工的網友,我不知道他真名,但是人很好,我把問題咨詢過他了。雖然對用c程序編程,我很生疏,因為以往我的菜鳥級編程都是匯編語言,但是,他給我解釋C程序很詳細,我略有小知,很感謝蘇工,所以在這個實驗報告引用了他的腦力勞動成果,并且在這里謝謝蘇工對我的指教。同樣感謝單片機鮮浩老師,對我單片機課程細致的傳授,使我產生濃厚興趣的同時真真切切的感受到學習單片機的快樂和運用智慧操縱機器的興奮。不知道以往實驗報告的學生有沒有我這一則小敘,但是對別人勞動成功的肯定,我認為是我們對待知識的尊重。參考網址:http://www.51hei.com/mcu/791.html
        實驗結果:主機對從機發送控制命令,當主機發送turn on 時,從機如果接收正確,則向主機發送on用于應答,并使LED燈亮(從機任選1LED燈來控制),當主機發關turn off 時,從機如果接收正確,則使LED 燈滅。如果不是這兩個命令,則從機向主機發送error作為應答。


        關鍵詞: 單片機 雙機通訊

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 沽源县| 五大连池市| 拉萨市| 石柱| 上饶县| 三亚市| 白朗县| 青龙| 皋兰县| 周至县| 重庆市| 全南县| 泽州县| 镇沅| 秀山| 潜江市| 澳门| 鄂托克前旗| 华阴市| 宝兴县| 淳安县| 印江| 石门县| 屯留县| 渝北区| 吐鲁番市| 闵行区| 施秉县| 金平| 友谊县| 濮阳市| 宁乡县| 大荔县| 育儿| 汉沽区| 延川县| 万山特区| 海南省| 屯昌县| 海门市| 肥西县|