資源描述:
《信息與通信工程學院實驗報告》由會員上傳分享,免費在線閱讀,更多相關內容在行業(yè)資料-天天文庫。
1、成績信息與通信工程學院實驗報告(軟件仿真性實驗,)一、實驗目的和任務1、進一步掌握利用KeilμVision、STCISP和開發(fā)板進行硬件開發(fā);2、掌握串口電路設計;3、掌握串口發(fā)送程序設計;4、掌握串口接收程序設計;二、實驗內容及原理1)UART原理:UART是一種通用串行數(shù)據(jù)總線,用于異步通信。該總線雙向通信,可以實現(xiàn)全雙工傳輸和接收。在嵌入式設計中,UART用來與PC進行通信,包括與監(jiān)控調試器和其它器件,如EEPROM通信。因為計算機內部采用并行數(shù)據(jù),不能直接把數(shù)據(jù)發(fā)到Modem,必須經過UART整理才能進行異步傳輸,其過
2、程為:CPU先把準備寫入串行設備的數(shù)據(jù)放到UART的寄存器(臨時內存塊)中,再通過FIFO(FirstInputFirstOutput,先入先出隊列)傳送到串行設備,若是沒有FIFO,信息將變得雜亂無章,不可能傳送到Modem。UART首先將接收到的并行數(shù)據(jù)轉換成串行數(shù)據(jù)來傳輸。消息幀從一個低位起始位開始,后面是5~8個數(shù)據(jù)位,一個可用的奇偶位和一個或幾個高位停止位。接收器發(fā)現(xiàn)開始位時它就知道數(shù)據(jù)準備發(fā)送,并嘗試與發(fā)送器時鐘頻率同步。如果選擇了奇偶,UART就在數(shù)據(jù)位后面加上奇偶位。奇偶位可用來幫助錯誤校驗。在接收過程中,UAR
3、T從消息幀中去掉起始位和結束位,對進來的字節(jié)進行奇偶校驗,并將數(shù)據(jù)字節(jié)從并行轉換成串行。UART也產生額外的信號來指示發(fā)送和接收的狀態(tài)。例如,如果產生一個奇偶錯誤,UART就置位奇偶標志。本次實驗我們使串口1工作在模式1下,為異步通信方式。2)串口1的發(fā)送過程:當串口1發(fā)送數(shù)據(jù)時,數(shù)據(jù)從單片機的串行發(fā)送引腳TxD發(fā)送出去。當主機執(zhí)行一條寫第7頁共7頁SBUF的指令時,就啟動串口1的數(shù)據(jù)發(fā)送過程,寫SBUF信號將1加載到發(fā)送移位寄存器的第9位,并通知Tx控制單元開始發(fā)送。通過16分頻計數(shù)器,同步發(fā)送串行比特流。移位寄存器將數(shù)據(jù)不斷
4、地右移,送到TxD引腳。同時,在左邊不斷地用0進行填充。當數(shù)據(jù)的最高位移動到移位寄存器的輸出位置,緊跟其后的是第9位1,在它的左側各位全部都是0,這個條件狀態(tài)使得TX控制單元進行最后一次移位輸出,然后使得發(fā)送允許信號SEND失效,結束一幀數(shù)據(jù)的發(fā)送過程,并將中斷請求位T1置1,向CPU發(fā)送中斷請求信號。圖1串口1時序第7頁共7頁圖2串口1電路結構三、實驗步驟或程序流程1)建立工程;2)編寫源程序并保存;3)將源程序添加入源文件;4)編譯調試程序;5)軟件程序調試沒問題生成hex文件;6)用數(shù)據(jù)線將PC和單片機相連,確定com口;
5、7)打開STCISP軟件,選擇單片機類型為IAP15W4K58S4,串口選擇COM3,最低波特率2400,最高波特率,IRC頻率選18.432MHz,點擊“打開程序文件”添加目標文件(.hex),再點擊“下載/編程”;8)摁下復位鍵,程序燒寫到單片機內;9)調試硬件程序直到,達到要求。四、實驗數(shù)據(jù)及程序代碼第7頁共7頁1、串口查詢方式收發(fā)數(shù)據(jù)://串口查詢方式收發(fā)數(shù)據(jù)的例子#include"STC15F2K60S2.h"#defineFOSCL//單片機主時鐘頻率#defineBAUD//波特率常數(shù)sfrTH2=0xD6;sfr
6、TL2=0xD7;bitbusy=0;//聲明比特位busyunsignedchardata_rec;voidSendData(unsignedchardat)//聲明SendData子函數(shù){SBUF=dat;//否則,將數(shù)據(jù)dat寫入SBUF寄存器while(~TI);//判斷是否發(fā)送完成,沒有則等待TI=0;}voidRecData(void)//聲明RecData子函數(shù){while(~RI);//判斷是否接收完成,沒有則等待data_rec=SBUF;//否則,將接收到的數(shù)據(jù)寫入data_recRI=0;}voidmain
7、(){SCON=0x50;//串口1模式1,使能串行接收AUXR=0x40;//輔助寄存器AUXR,定時器1不分頻,作為串口1波特率時鐘TL1=(65536-((FOSC/4)/BAUD));//定時器1初值計數(shù)器低8位TH1=(65536-((FOSC/4)/BAUD))>>8;//定時器1初值計數(shù)器高8位TR1=1;//使能定時器1工作ES=0;//關閉串口1中斷EA=0;//CPU禁止響應中斷請求while(1){RecData();SendData(data_rec);}}2、串口中斷方式收發(fā)數(shù)據(jù)://串口中斷方式收發(fā)數(shù)
8、據(jù)的例子#include"STC15F2K60S2.h"#defineFOSCL//聲明當前單片機主時鐘頻率#defineBAUD//聲明波特率常數(shù)sfrTH2=0xD6;第7頁共7頁sfrTL2=0xD7;bitbusy=0;//聲明比特位busyunsign