資源描述:
《windows98下利用vc++6.0的mscomm控件實(shí)現(xiàn)微機(jī)與8051單片機(jī)的串行通信new》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、自動(dòng)化與儀表第15卷2000年第6期文章編號(hào):1001—9944(2000)06—0035—03aWindows98下利用VC++6.0的MSComm控件實(shí)現(xiàn)微機(jī)與8051單片機(jī)的串行通信12徐穎,王悅(1.南方冶金學(xué)院,江西贛州341000;2.南昌大學(xué),南昌330029)摘要:本文以設(shè)計(jì)某電機(jī)轉(zhuǎn)速轉(zhuǎn)矩微機(jī)監(jiān)控系統(tǒng)為例,詳細(xì)介紹了在設(shè)計(jì)Windows監(jiān)控軟件中如何利用VC++6.0的MSComm控件來實(shí)現(xiàn)微機(jī)與8051單片機(jī)的串行通信。和以往利用WindowsAPI函數(shù)實(shí)現(xiàn)方法相比,具有編程設(shè)計(jì)大大
2、簡化的優(yōu)點(diǎn)及更大的實(shí)用性。關(guān)鍵詞:監(jiān)控軟件;VC++6.0;RS2232串行通信;8051單片機(jī)中圖分類號(hào):TP316.86文獻(xiàn)標(biāo)識(shí)碼:B1引言其工業(yè)要求恒轉(zhuǎn)速恒轉(zhuǎn)矩運(yùn)行;同時(shí)需要把傳感在工業(yè)控制中,經(jīng)常要組成上位機(jī)為微機(jī)而下器檢測到的實(shí)際轉(zhuǎn)速、轉(zhuǎn)矩在監(jiān)控界面上顯示(以位機(jī)為單片機(jī)的二級(jí)系統(tǒng),兩者一般是通過RS2數(shù)據(jù)及曲線方式),并可保存、打印。232串行口進(jìn)行通信。這樣,既滿足實(shí)時(shí)控制要求,又有控制功能強(qiáng)大、便于使用的優(yōu)點(diǎn)。3串行通信協(xié)議說明雙機(jī)均采用查詢發(fā)送、中斷接收的通信方式。在Windows9
3、8下,用VC++6.0開發(fā)上位計(jì)幀格式為7位數(shù)據(jù)位,無校驗(yàn)位,1位停止算機(jī)的Windows監(jiān)控軟件,具有控制界面美觀大位,波特率為9600,編碼為ASCII碼。每次微機(jī)方,使用簡單方便等優(yōu)點(diǎn)。但是,在Windows工業(yè)向單片機(jī)發(fā)數(shù)據(jù)時(shí),微機(jī)先向單片機(jī)發(fā)握手信號(hào)監(jiān)控軟件開發(fā)中,如何實(shí)現(xiàn)微機(jī)與單片機(jī)之間的串“55”,單片機(jī)收到握手信號(hào)則發(fā)應(yīng)答信號(hào)“66”至行通信是一個(gè)較大的障礙,而且是設(shè)計(jì)的關(guān)鍵之微機(jī),微機(jī)收到應(yīng)答信號(hào)后即發(fā)數(shù)據(jù)。同樣,當(dāng)單一。因?yàn)樵赪indows程序中,不允許用戶直接掌握片機(jī)要向微機(jī)發(fā)數(shù)
4、據(jù)時(shí),也先向微機(jī)發(fā)握手信號(hào)串行口的中斷管理。如果使用眾多Win32API函“77”,微機(jī)收到握手信號(hào)后發(fā)應(yīng)答信號(hào)“88”,單片數(shù)來讀寫訪問和控制串行口等通訊資源,那使得程機(jī)收到應(yīng)答信號(hào)后則發(fā)數(shù)據(jù)。序過于復(fù)雜,開發(fā)Windows工控軟件難度大大增加。本文利用VC++6.0的Microsoft4微機(jī)通信程序設(shè)計(jì)Communication6.0控件編寫較簡單的VC程序,完我們利用VC++6.0設(shè)計(jì)本通信程序。主要成了微機(jī)與8051單片機(jī)之間的RS2232串行口通信,達(dá)到了工業(yè)運(yùn)用中開發(fā)Windows工控軟件
5、的步驟如下:(1)先進(jìn)入VisualC++6.0集成開發(fā)環(huán)境;實(shí)際要求。(2)創(chuàng)建一個(gè)單文檔控制界面;2系統(tǒng)設(shè)計(jì)(3)再添加控制菜單、控制對(duì)話框、控制按鈕我們設(shè)計(jì)了一個(gè)電機(jī)轉(zhuǎn)速轉(zhuǎn)矩微機(jī)監(jiān)控系與編輯框;統(tǒng),實(shí)現(xiàn)了其微機(jī)與8051單片機(jī)的串行通訊。本(4)在控制對(duì)話框中添加ActiveX控件中的監(jiān)控系統(tǒng)為微機(jī)與8051單片機(jī)組成的二級(jí)系統(tǒng),MSComm控件;用VC++6.0編制微機(jī)監(jiān)控軟件。監(jiān)控軟件的主(5)設(shè)置MSComm控件屬性:要要求是:從控制界面上設(shè)置給定轉(zhuǎn)速、轉(zhuǎn)矩,系Setting:9600,n
6、,7,1;InputLen:2;統(tǒng)根據(jù)給定選擇最佳控制方案,來保證電機(jī)符合Rthreshold:2;其它按缺省值。a收稿日期:2000206212(磁盤稿)·35·計(jì)算機(jī)應(yīng)用(6)編寫通信程序,主要部分如下:voidCROTOTEDlg::OnButton1()??通信初始化消息處理函數(shù){??TODO:AddyourcontrolnotificationhandlercodehereDataORShaking=1;??握手信號(hào)或數(shù)據(jù)標(biāo)志CommSucc=0;??握手成功標(biāo)志receiveNo=3;??
7、數(shù)據(jù)區(qū)分標(biāo)志if(!mRototeComdlg.GetPortOpen())mRototeComdlg.SetPortOpen(TRUE);??打開串行口mRototeComdlg.SetOutput(COleVariant("55"));??發(fā)握手信號(hào)mRototeComdlg.SetInputMode(0);??讀取串行口緩沖區(qū)??全部數(shù)據(jù)MessageBox("START");for(inti=0;i<=10000;i++);??延時(shí)if(CommSucc==0)MessageBox“(通信失敗
8、,請檢查通信硬件”);??握手失敗顯示}voidCROTOTEDlg::OnOnCommMscomm1()??MSComm控件消息??處理函數(shù){??TODO:AddyourcontrolnotificationhandlercodehereVARIANTvarii;varii=mRototeComdlg.GetInput();??讀入數(shù)據(jù)??賦給VARIANT變量CStringsss;sss=varii.bstrVal;UpdateData();??將文