單片機雙機通訊試驗
實(shí)驗名稱(chēng):雙機通訊
實(shí)驗目的:熟悉單片機串行口工作原理;掌握通信程序設計的一般方法
實(shí)驗要求:按照實(shí)驗安排準時(shí)參加實(shí)驗,按照實(shí)驗步驟操作,仔細觀(guān)察及記錄實(shí)驗過(guò)程及結果,回答實(shí)驗相關(guān)問(wèn)題,最終根據實(shí)驗結果撰寫(xiě)實(shí)驗指導書(shū)。
實(shí)驗內容:編寫(xiě)一個(gè)雙機通信程序,一個(gè)作為主機,一個(gè)作為從機,主機對從機發(fā)送控制命令,當主機發(fā)送turn on 時(shí),從機如果接收正確,則向主機發(fā)送on用于應答,并使LED燈亮(從機任選1LED燈來(lái)控制),當主機發(fā)關(guān)turn off 時(shí),從機如果接收正確,則使LED 燈滅。如果不是這兩個(gè)命令,則從機向主機發(fā)送error作為應答。
實(shí)驗步驟:
1、連接兩臺單片機開(kāi)發(fā)板的串行通信線(xiàn),注意共地連接
2、設定A機為發(fā)送方
3、設定B機為接收方
4、設定雙方接收與發(fā)送波特率
5、各自編制收發(fā)程序
6、發(fā)送數據調試
錄入程序:
#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; //等待發(fā)送完畢}else if(rd==TurnOff)//是關(guān)燈命令{P0=0;//LED滅SBUF=Off;//應答Offwhile(TI==0);TI=0; //等待發(fā)送完畢}else {SBUF=Error;//應答Offwhile(TI==0);TI=0; //等待發(fā)送完畢}RI=0;}void InitEs()//串口初始化函數{TMOD=0x21; TH1=0xF3;//波速率設置為2400TR1=1; SCON=0XD0; ES=1;//串口中斷允許}main(){InitEs();//串口初始化EA=1; k1=k2=k3=k4=0;//關(guān)閉數碼管P0=0;//LED滅while(1){}}
程序參考及鳴謝:我在網(wǎng)上認識了一個(gè)網(wǎng)名為蘇工的網(wǎng)友,我不知道他真名,但是人很好,我把問(wèn)題咨詢(xún)過(guò)他了。雖然對單片機用c程序編程,我很生疏,因為以往我的菜鳥(niǎo)級編程都是匯編語(yǔ)言,但是,他給我解釋C程序很詳細,我略有小知,很感謝蘇工,所以在這個(gè)實(shí)驗報告引用了他的腦力勞動(dòng)成果,并且在這里謝謝蘇工對我的指教。同樣感謝單片機鮮浩老師,對我單片機課程細致的傳授,使我產(chǎn)生濃厚興趣的同時(shí)真真切切的感受到學(xué)習單片機的快樂(lè )和運用智慧操縱機器的興奮。不知道以往實(shí)驗報告的學(xué)生有沒(méi)有我這一則小敘,但是對別人勞動(dòng)成功的肯定,我認為是我們對待知識的尊重。參考網(wǎng)址:http://www.51hei.com/mcu/791.html
實(shí)驗結果:主機對從機發(fā)送控制命令,當主機發(fā)送turn on 時(shí),從機如果接收正確,則向主機發(fā)送on用于應答,并使LED燈亮(從機任選1LED燈來(lái)控制),當主機發(fā)關(guān)turn off 時(shí),從機如果接收正確,則使LED 燈滅。如果不是這兩個(gè)命令,則從機向主機發(fā)送error作為應答。
評論