




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、 基于MATLAB GUI界面的MCU串口實時繪圖設(shè)計摘要:介紹了基于matlab的gui界面與單片機的串口實時通信并繪圖的實現(xiàn)方法。通信系統(tǒng)主要由pc機、rs232c電平轉(zhuǎn)換器、51單片機以及通信程序構(gòu)成,單片機通信程序用c語言設(shè)計,pc機通信程序則是用matlab的gui界面的事件和回調(diào)函數(shù)來實現(xiàn)。關(guān)鍵詞:matlabgui 51單片機 串行通信 繪圖1引言在控制工程中, 使用大量的數(shù)據(jù)采集系統(tǒng), 該類系統(tǒng)通常是微處理器(單片機)系統(tǒng),其處理、分析數(shù)據(jù)的能力相對較低, 一般是將這些數(shù)據(jù)傳送到pc機, 由相應(yīng)的應(yīng)用軟件系統(tǒng)進行處理、分析和形成圖表、打印, 因此, 兩類系統(tǒng)必須要實現(xiàn)通信。ma
2、tlab以其強大的科學(xué)計算與可視化功能、簡單易用、開放式可擴展環(huán)境, 特別是諸多的面向不同應(yīng)用領(lǐng)域的工具箱支持, 使其在信號處理、自動控制等許多領(lǐng)域獲得廣泛的應(yīng)用, 成為計算機輔助設(shè)計和分析、算法研究和應(yīng)用開發(fā)的基本工具和首選平臺1,2參考文獻1 吳曉燕,張雙選. matlab在自動控制中的應(yīng)用m. 西安:西安電子科技大學(xué)出版社,2006.9.2 李國勇,謝克明,楊麗娟. 計算機仿真技術(shù)與cad:基于matlab的控制系統(tǒng)m. 北京:電子工業(yè)出版社(第2版),2008.3 應(yīng)亮. matlab的圖形用戶界面的應(yīng)用j. 電腦知識與技術(shù),2005,(11):75-76.4 張道明,郝繼飛. 基于m
3、atlab的mcu串行通信j. 網(wǎng)絡(luò)與通信,2004,(5):1-3.5 蘭紅莉,羅文廣. 基于matlab的pc機與單片機串行通信實現(xiàn)j. 計算機應(yīng)用與軟件,2006,23(6):74-76.。gui為圖形化界面,應(yīng)用簡單,不需要對matlab理解就可以應(yīng)用36 汪文,陳林. 單片機原理與應(yīng)用m. 武漢:華中科技大學(xué)出版社,2008. 75-101.。本文討論應(yīng)用matlab的gui界面實現(xiàn)pc機與51單片機串行通信并實時繪制51單片機發(fā)送數(shù)據(jù)的圖形,對于實時觀察控制系統(tǒng)的運行狀態(tài)和調(diào)節(jié)pid系數(shù)有著重要的應(yīng)用。2總體設(shè)計原理pc 機配置的rs232標(biāo)準(zhǔn)串行接口com和單片機的串口連接,使用
4、三線制( 收、發(fā)、地) 實現(xiàn)數(shù)據(jù)傳遞, 用max232作為單片機與pc機間的電平轉(zhuǎn)化芯片。串行通信總體設(shè)計原理圖如圖1所示。圖1 總體設(shè)計原理圖3 matlab的gui串行通信設(shè)計guide 是一個專用于gui程序設(shè)計的向?qū)гO(shè)計器。而gui 是由各種圖形對象,如圖形窗口、圖軸、菜單、按鈕、文本框等構(gòu)建的用戶界面,是人機交互的有效工具和方法, 通過guide 可以很方便地設(shè)計出各種符合要求的圖形用戶界面。 用戶可以根據(jù)界面提示完成整個工程,卻不必去了解工程內(nèi)部是如何工作的。gui 設(shè)計既可以基本的matlab 程序設(shè)計為主,也可以鼠標(biāo)為主利用guide工具進行設(shè)計,也可綜合以上兩種方法進行設(shè)計。
5、3.1gui界面的整體布局設(shè)計通過matlab的gui界面設(shè)計程序界面和功能,程序包括程序運行起始時間、實時時間顯示、目標(biāo)值(goal value)、實時數(shù)據(jù)顯示、com口選擇、波特率選擇、打開串口(open serial)、停止繪圖(stop)、繼續(xù)繪圖(go on)、關(guān)閉繪圖窗口并刪除串口設(shè)備(clear)、保存數(shù)據(jù)(save)、關(guān)閉串口(off serial)、關(guān)閉繪圖串口并關(guān)閉matlab(quit)。如圖2所示。圖2 設(shè)計的gui界面3.2matlab對串口的控制matlab對串口的控制操作過程如下4,57 張義和. 例說51單片機(c語言版. 第3版)m. 北京:人民郵電出版社,2
6、010. 208-237.:首先要創(chuàng)建串行口設(shè)備對象,這里用到的主要函數(shù)是serial();s=serial(com1);%創(chuàng)建com1為串口對象并用s標(biāo)識。定義串口設(shè)備對象的通信屬性,主要有波特率、異步串行幀格式(包括起始位、數(shù)據(jù)位、校驗位、停止位等)和輸出輸入緩沖的大小等;用函數(shù)fopen()實現(xiàn)設(shè)備對象與硬件設(shè)備的軟連接(相對于硬件設(shè)備的連接),這樣就可以進行數(shù)據(jù)的讀寫操作;fopen(s)%打開s標(biāo)識的串口;進行matlab串行讀寫操作,主要用到的函數(shù)有fwrite()、fread()等;關(guān)閉和刪除設(shè)備對象,用到的是fclose()、delete()和clear()等函數(shù)。3.3各個控
7、件的回調(diào)函數(shù)open serial控件的回調(diào)函數(shù)function open_serial_callback(hobject, eventdata, handles)global s;%定義全局變量s,用于標(biāo)識串口global datas;%定義全局變量datas,用于存儲串口發(fā)送來的數(shù)據(jù)global out;%定義全局變量out,用于標(biāo)識是否關(guān)閉串口,out=1不關(guān)閉串口,out=0關(guān)閉串口global rate;%定義全局變量rate,用于表示串口通信的波特率global com;%定義全局變量com,用于標(biāo)識選取的com口out=1;%通過select_com下拉條控件改變?nèi)肿兞縞om的
8、值,根據(jù)com的值選取打開的com口if(com=1)s=serial(com1);elseif(com=2)s=serial(com2);elseif(com=3)s=serial(com3);elseif(com=4)s=serial(com4);end%通過baude下拉條改變?nèi)肿兞縭ate的值,根據(jù)rate的值選取串口所對應(yīng)的波特率if(rate=1)set(s,baudrate,19200);elseif(rate=2)set(s,baudrate,9600);endfopen(s);%打開串口k=1;datas=zeros(1,100);%將全局變量datas賦初始值為1*100
9、的零矩陣a=num2str(datestr(now,hh:mm:ss);%獲得實時時間并轉(zhuǎn)換為字符型存在a變量中set(handles.start_time,string,a);%將字符型a顯示在靜態(tài)存儲start中g(shù)uidata(hobject, handles); %更新結(jié)構(gòu)體while(out=1)if s.bytesavailable%查詢是否接收到數(shù)據(jù),接收到數(shù)據(jù)s.bytesavailable=1datas(1,k)=fread(s,1);%以二進制讀取串口s中的數(shù)據(jù)并存儲在datas中endplot(datas);%繪制數(shù)組datas的圖形d = get(handles.valu
10、e,string);%獲取value動態(tài)存儲區(qū)中輸入的值,即目標(biāo)值y=str2num(d);%將字符型d轉(zhuǎn)換為數(shù)字型,并存儲在y中e=size(datas);%定義e為與datas形同形式的數(shù)組i=1;while(i<=k) %將e數(shù)組賦值全部為y,即為目標(biāo)值e(1,i)=y;i=i+1;endhold on %保持接收到的數(shù)據(jù)繪制的圖,并繪制目標(biāo)值的圖形plot(e,-)hold offb=num2str(datestr(now,hh:mm:ss);%實時更新顯示時間set(handles.time,string,b);guidata(hobject, handles); %更新結(jié)構(gòu)體
11、c = num2str(datas(1,k); %將實時數(shù)據(jù)存儲在c中set(handles.datas,string,c);%在靜態(tài)存儲區(qū)datas中顯示串口實時數(shù)據(jù)guidata(hobject, handles); % 更新結(jié)構(gòu)體k=k+1;endfclose(s);%關(guān)閉串口設(shè)備delete(s);%刪除串口連接clear s;停止顯示(stop)回調(diào)函數(shù)function stop_callback(hobject, eventdata, handles)uiwait %等待繼續(xù)顯示(go on)回調(diào)函數(shù)function go_on_callback(hobject, eventdat
12、a, handles)uiresume %繼續(xù)顯示關(guān)閉繪圖窗口并刪除串口設(shè)備(clear)回調(diào)函數(shù)function clear_callback(hobject, eventdata, handles)clearclose all %關(guān)閉gui界面窗口clc保存數(shù)據(jù)(save)回調(diào)函數(shù)function save_callback(hobject, eventdata, handles)global datas;%聲明全局變量datasdlmwrite(a.txt,datas,t);%將datas中數(shù)據(jù)以txt格式存儲在a.txt中關(guān)閉串口(off serial)回調(diào)函數(shù)function off
13、_serial_callback(hobject, eventdata, handles)global out;%聲明全局變量outout=0;%out=0為退出繪圖循環(huán),關(guān)閉并刪除串口設(shè)備目標(biāo)值(goal value)回調(diào)函數(shù)function value_callback(hobject, eventdata, handles)input = str2num(get(hobject,string);if (isempty(input)set(hobject,string,0)endguidata(hobject, handles); com口選擇回調(diào)函數(shù)function select_com
14、_callback(hobject, eventdata, handles)global com;%聲明全局變量comcom=1;%com賦初始值為1rate=1;%rate賦初始值為1val=get(hobject,value);%將下拉條value的值賦給val%通過val值選擇com的值switch valcase 1com=1;case 2com=2;case 3com=3;case 4com=4;end波特率選擇回調(diào)函數(shù)function baude_callback(hobject, eventdata, handles)global rate;%聲明全局變量rateval=get(
15、hobject,value);%將下拉條value值賦給val%通過val的值選擇rate 的值switch valcase 1rate=1;case 2rate=2;end4單片機串口程序4.1串口初始化程序初始化串口波特率為19200,方式1,10位異步發(fā)送,禁止接收6,7。void initi_series(void)tmod=0x20; /波特率19200th1=0xfd;/fdtl1=0xfd;/fdscon=0x40;/方式1,10位異步發(fā)送,禁止接收pcon=0x80;/波特率加倍tr1=1; /開定時器14.2單片機向pc機發(fā)送數(shù)據(jù)函數(shù)通過數(shù)組buf_pc發(fā)送數(shù)據(jù),len為發(fā)送數(shù)據(jù)的長度。void send_to_pc( uchar *buf_pc,uchar len )unsigned int i=0,j=0;while( i<len ) /判斷字符是否發(fā)送完 sbuf=*(buf_pc+i);while(ti=0);
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 運營管理中的挑戰(zhàn)與應(yīng)對策略計劃
- 倉庫設(shè)備維護管理倡議計劃
- 《貴州德力能源有限公司納雍縣新房鄉(xiāng)營龍煤礦(變更)礦產(chǎn)資源綠色開發(fā)利用方案(三合一)》評審意見
- 組裝機箱知識培訓(xùn)課件
- 2025年阿拉善盟年貨運從業(yè)資格證考試題庫
- 2025年武漢貨運資格考試答案
- 2025年烏魯木齊貨年從業(yè)資格證考試題目
- 2025年福州貨運從業(yè)資格證考試題庫答案解析
- 第5課+古代非洲與美洲+高一下學(xué)期統(tǒng)編版(2019)必修中外歷史綱要下
- 0-3歲嬰幼兒游戲知到課后答案智慧樹章節(jié)測試答案2025年春青島職業(yè)技術(shù)學(xué)院
- 福建省泉州市2025屆高三下學(xué)期質(zhì)量檢測(三模)語文試題(含答案)
- 語文-河南省名校大聯(lián)考2024-2025學(xué)年高二下學(xué)期開學(xué)測試試題和答案
- 電梯日常維護保養(yǎng)流程與技巧培訓(xùn)
- JJF 2210-2025取水計量數(shù)據(jù)質(zhì)量控制技術(shù)規(guī)范
- 商業(yè)綜合體物業(yè)管理目標(biāo)及實施措施
- 環(huán)保局“十三五”規(guī)劃中期評估報告
- (一模)日照市2022級(2025屆)高三校際聯(lián)合考試歷史試卷
- 數(shù)學(xué)口算乘除法練習(xí)題1000道隨時打印
- 2024浙江寧波朗辰新能源有限公司招聘3人筆試參考題庫附帶答案詳解
- 2025年四川省高職單招計算機類職業(yè)技能測試題庫(供參考)
- 畜禽無害化處理項目可行性研究報告立項申請報告模板
評論
0/150
提交評論