資源描述:
《matlab與51單片機的串口通信》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在應用文檔-天天文庫。
1、數(shù)字信號處理2012電子信息工程專業(yè)答辯報告姓名楊全任偉學號201252241201251779成績2014-----2015秋冬季學期Matlab與51單片機的串口通信一、簡介從Matlab6.0版本開始,Mathworks公司在軟件中增加了設備控制箱(instrumentcontroltoolbox),提供了對RS-232/RS-485通信標準串口(九針串口)通信正式支持(本實驗采用USB轉串口)利用該工具箱serial類及instrcallback()回調(diào)函數(shù),能可靠地進行實時串地通信。Matlab支持
2、面向對象技術,用一個對象將計算機串口封裝起來,只要創(chuàng)建串口對象,對串口對象操作就是對串口操作,非常方便。使用serial函數(shù)就可創(chuàng)建串口對象,通過定義串口對象的屬性,能定義串口的通信模式,從串口對象屬性也能了解串口的狀態(tài),即可以通過MATLAB的串口通訊函數(shù)讀寫數(shù)據(jù)。二、Matlab串口函數(shù)serial創(chuàng)建一個串口對象,格式:s=serial('coml')fopen打開串口對象,格式:fopen(s)fwrite其他程序能對該串口進行讀寫操作fwrite(s,’’)fread讀取串口數(shù)據(jù),格式:fread(
3、s)fclose關閉串口對象,格式:fclose(s)free??解除Matlab對串口對象的控制,使delete刪除對象s,格式:delete(s)clear從工作空間中刪除對象s,格式:clear(s)三、實現(xiàn)功能利用MATLAB串口通信函數(shù),讀寫51單片機(STC89C52R+)數(shù)據(jù),運用keil編寫時鐘程序,燒錄到單片機中,時鐘程序實現(xiàn)的功能是實現(xiàn)時鐘的顯示,并且能用開發(fā)板上的三個按鈕進行時鐘的修改,一個按鈕進入修改模式(復位),另兩個實現(xiàn)時間的增減。編輯MATLAB程序,實現(xiàn)對單片機的控制。讀寫串口
4、操作。初始化并打開串口調(diào)協(xié)對象之后,現(xiàn)在可以對串口設備對象進行讀寫操作,串口讀寫操作支持二進制和文本(ASCII)兩種方式。當Matlab通信數(shù)據(jù)采用西方(ASCII)方式時,讀寫串口設備命令分別是fscanf、fpritf;當Matlab通信數(shù)據(jù)采用二進制方式時,讀寫串口設備命令分別是fread、fwrite。2014-----2015秋冬季學期一、具體實現(xiàn)4.1開發(fā)板4.2實現(xiàn)流程先創(chuàng)建創(chuàng)建串口設備對象,配置串口初始化的對象屬性,連接窗口物理設備(開發(fā)板),寫發(fā)送通信握手信號;進行讀寫操作(串口發(fā)送接收數(shù)
5、據(jù))。4.3時鐘程序見附錄(添加串口接收部分)4.4Matlab的操作如下%%%%%%默認COM4屬性設置%%%%%s=serial('com4')%開啟串口COM4的函數(shù)并設置屬性SerialPortObject:Serial-COM4CommunicationSettingsPort:COM4BaudRate:9600Terminator:'LF'CommunicationState2014-----2015秋冬季學期Status:closedRecordStatus:offRead/WriteState
6、TransferStatus:idleBytesAvailable:0ValuesReceived:0ValuesSent:0>>fopen(s);%打開s(COM4串口)>>fwrite(s,'00000000')>>fwrite(s,'00000000')%顯示清零;及時拍下數(shù)碼管顯示如下圖fwrite(s,'000CFE')%數(shù)碼管顯示00010及時拍下數(shù)碼管顯示如下圖>>fwrite(s,'000CFE')%寫入數(shù)據(jù)2014-----2015秋冬季學期>>v=fread(s,30);%讀取前30個數(shù)據(jù)
7、>>dec2hex(v)%轉換成16進制輸出ans=8080A0888080A889808008808080MATLAB串口輸出的數(shù)據(jù)與串口輸出的數(shù)據(jù)作比較可以發(fā)現(xiàn)讀取的數(shù)據(jù)一樣,由于時鐘程序反饋的數(shù)是變化的所以不能夠比較準確的將它們一個不差的比較出來。五、總結:2014-----2015秋冬季學期用MATLAB的串口功能與一般的串口調(diào)試助手的功能是一樣的,都能準確的讀寫數(shù)據(jù),可以接受和發(fā)送一般十六進制的數(shù)。總的來說本實驗還有一些要改的地方比如說,在51程序的設計方面有些地方編寫的不太好(基本功能:波特率96
8、00,發(fā)出十六進制的數(shù)據(jù),觸發(fā)串口中斷,接收十六進制數(shù)完成功能調(diào)試),用MATLAB串口和超級串口來接收和發(fā)送數(shù)據(jù)的時候不太理想,會出現(xiàn)一些誤差使得反饋值計算錯誤,由于MATLAB的GUI(圖形用戶界面)的設計上知識的不足沒能完成,如果編寫好回調(diào)函數(shù),使用MATLAB的GUI做一個電子時鐘顯示就更好了。六、附錄51程序(添加串口發(fā)送和接收功能可以進行MATLAB的GUI設計)#include