![用VC實現(xiàn)PC機(jī)與單片機(jī)的通信_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/11/5f09bb4f-f6b9-4c38-b8a7-c7fbada44378/5f09bb4f-f6b9-4c38-b8a7-c7fbada443781.gif)
![用VC實現(xiàn)PC機(jī)與單片機(jī)的通信_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/11/5f09bb4f-f6b9-4c38-b8a7-c7fbada44378/5f09bb4f-f6b9-4c38-b8a7-c7fbada443782.gif)
![用VC實現(xiàn)PC機(jī)與單片機(jī)的通信_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/11/5f09bb4f-f6b9-4c38-b8a7-c7fbada44378/5f09bb4f-f6b9-4c38-b8a7-c7fbada443783.gif)
![用VC實現(xiàn)PC機(jī)與單片機(jī)的通信_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/11/5f09bb4f-f6b9-4c38-b8a7-c7fbada44378/5f09bb4f-f6b9-4c38-b8a7-c7fbada443784.gif)
![用VC實現(xiàn)PC機(jī)與單片機(jī)的通信_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/11/5f09bb4f-f6b9-4c38-b8a7-c7fbada44378/5f09bb4f-f6b9-4c38-b8a7-c7fbada443785.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、用VC實現(xiàn)PC機(jī)與單片機(jī)的通信王榮鴿 白連平摘要 介紹了Windows98環(huán)境下利用Visual C+ 6.0的MSComm控件實現(xiàn)微機(jī)與微機(jī)及微機(jī)與單片機(jī)通信程序設(shè)計方法,并完整給出了微機(jī)、單片機(jī)的通信程序?qū)嵗?。關(guān)鍵詞 串行通信 Visual C+ 6.0 MSComm 單片機(jī)中圖分類號: TP311 文獻(xiàn)標(biāo)志碼: ARealization of Communications between PC and Singlechip with VCWang,Rongge Bai,LianpingABSTRACT: This paper introduces the designing meanse
2、s by which a computer can communicate with a computer or a singlechip by MSComm of Visual C+ 6.0 in the circumstance of Windows98,And fully provides the program examples of computer communication and singlechip communication.Key Words: serial communications Visual C+ 6.0 MSComm singlechip在工業(yè)檢測及自動控制系
3、統(tǒng)中,微機(jī)與微機(jī)、微機(jī)與單片機(jī)之間經(jīng)常需要進(jìn)行數(shù)據(jù)交換,串行通信是主要的通信手段,它高效、方便,并遵循統(tǒng)一的國家標(biāo)準(zhǔn)。Visual C+ 6.0作為一種強(qiáng)大的開發(fā)工具幾乎在Windows軟件開發(fā)的任何領(lǐng)域都得到廣泛的應(yīng)用。一般用Visual C+ 6.0開發(fā)串行通信程序有二種方法:一是利用Windows的通信 API函數(shù);另一種是采用Visual C+ 6.0標(biāo)準(zhǔn)控件MSComm來實現(xiàn)。第一種方法需要聲明及調(diào)用許多API函數(shù),十分煩瑣。第二種方法實現(xiàn)簡便,且可滿足一般情況下通信要求。 本文利用Visual C+ 6.0提供的MSComm通信控件編寫較簡單的VC程序, 完成了微機(jī)與單片機(jī)之間的
4、RS-232串行口通信。1、硬件結(jié)構(gòu)PC微機(jī)的COM口接口電平為RS-232標(biāo)準(zhǔn),若兩臺微機(jī)間通信,只需簡單地直接連接(TXD RXD)及地(GND)三根線。若微機(jī)與單片機(jī)通信,由于單片機(jī)UART為TTL電平,故需將RS-232電平與TTL電平轉(zhuǎn)換,可直接使用MAX232,MC1489等實現(xiàn)電平轉(zhuǎn)換功能。2、串行通信控件MSComm 在VC環(huán)境下單擊Project菜單,從中選擇Add to Project,在彈出的對話框中單擊Components and Controls選項,然后在彈出的對話框中再單擊Registered ActiveX Controls選項。在列表中選擇Microsoft
5、Communications Control (version6.0),形狀為帶有紅色底座的黃色電話機(jī)。單擊Insert按鈕,確認(rèn)后,會出現(xiàn)一個Confirm Classes對話框,其中列出了該控件的類名(CMSComm)、頭文件名(MSComm.h)、執(zhí)行文件名(MSComm.cpp)。關(guān)閉此對話框,在程序主界面的控件列表中,可以看到該通信控件已被加入,拖動該控件就可以將其放入程序中。 MSComm控件提供了功能完善的串口數(shù)據(jù)的發(fā)送和接收功能, MSComm控件具有兩種處理方式: 1、事件驅(qū)動方式:由MSComm控件的OnComm事件捕獲并處理通信錯誤及事件;2、查詢方式:通過檢查CommE
6、vent屬性的值來判斷事件和錯誤。 MSComm控件的通信功能實現(xiàn),實際上是調(diào)用了API函數(shù),而API函數(shù)是由Comm.drv解釋并傳給設(shè)備驅(qū)動程序執(zhí)行的,對于VC程序開發(fā)者只需知道MSComm控件的屬性和事件的用法即可以實現(xiàn)串口的操作。 以下是MSComm控件的主要屬性和方法: 1) CommPort:設(shè)置或返回串行端口號,其取值范圍為199,缺省為1。 2) Setting:設(shè)置或返回串行端口的波特率、奇偶校驗位、數(shù)據(jù)位數(shù)、停止位。如:M scomm.Setting="9600,N,8,1"。 3) PortOpen:打開或關(guān)閉串行端口,格式為:MSComm.PortO
7、pen=T RUE|FALSE。 4) InBufferSize:設(shè)置或返回接收緩沖區(qū)的大小,缺省為1024字節(jié)。 5) InBufferCount:返回接收緩沖區(qū)內(nèi)的等待讀取的字節(jié)個數(shù),可通過設(shè)置該屬性為0來清除接收緩沖區(qū)。 6) Rthreshold:該屬性為一閥值,它確定當(dāng)接收緩沖區(qū)內(nèi)字節(jié)個數(shù)達(dá)到或超過該值后就產(chǎn)生代碼為MSCOMM_EV_RECEIVE的OnComm事件 。 7) InputLen::設(shè)置或返回接收緩沖區(qū)內(nèi)用Input讀入的個數(shù)。若取0,則INPUT讀取整個緩沖區(qū)的內(nèi)容。 8) Input: 該屬性表示從接收緩沖區(qū)移走一串字符。 類型:VARIANT。9) OutBuf
8、ferSize:設(shè)置或返回發(fā)送緩沖區(qū),缺省為512字節(jié)。 10) OutBufferCount:返回發(fā)送緩沖區(qū)內(nèi)等待發(fā)送的字符數(shù),可用來清空緩沖區(qū)。 11) Output:向發(fā)送緩沖區(qū)傳送一字符串。類型:VARIANT。如果在通信過程中發(fā)生錯誤或事件,就會引發(fā)OnComm事件并且改 變屬性值,由CommEvent屬性代碼反映錯誤類型,在通信程序的設(shè)計中 可根據(jù)該屬性值來執(zhí)行不同的操作,以下是部分屬性常數(shù)值及其含義: 1) ComEvSend: 其值為1,發(fā)送緩沖區(qū)的內(nèi)容少于SThreshold指定 的值。 2) ComEvReceive: 其值為2,接收緩沖區(qū)內(nèi)字符數(shù)達(dá)到 RThreshold
9、 值,該事件在緩沖區(qū)中數(shù)據(jù)被移走前將持續(xù)產(chǎn)生。 3) ComEventFrame: 其值為1004,硬件檢測到幀錯誤。 4) ComEventRxOver:其值為1008,接收緩沖區(qū)溢出。 5) ComEventTxFull: 其值為1010,發(fā)送緩沖區(qū)溢出。 6) ComEventRxParity:其值為1009,奇偶校驗。 7) ComEvEOF: 其值為7,接收數(shù)據(jù)中出現(xiàn)文件結(jié)束(ASCII 碼為 2 6)字符。 3、串口通信微機(jī)程序設(shè)計下面程序可實現(xiàn)簡單通信,程序主要有兩個編輯框,一為發(fā)送,用戶在此編輯框內(nèi)鍵入字符將通過串口發(fā)送出去;另一為接收,顯示串口接收到字符。如在兩臺微機(jī)相連,分
10、別運(yùn)行此程序,即可實現(xiàn)兩機(jī)之間通信。具體實現(xiàn)步驟如下:1)啟動Visual C+ 6.0,創(chuàng)建一名為Chat應(yīng)用程序項目,程序類型為Dialog based。2)如2所述在應(yīng)用程序中插入通信控件。3)MFC的ClassWizard 對話框的Member Variables選項卡如下所示控件ID類型數(shù)據(jù)成員IDC_EDIT1_SENDCstringm_sendIDC_EDIT2_RECVCstringm_recvIDC_MSCOMM1CMSCommm_commIDCANCEL4)部分源程序代碼如下:BOOL CChatDlg:OnInitDialog( ) CDialog:OnInitDialo
11、g( );/ TODO: Add extra initialization here m_comm.SetCommPort(1); /選擇串口1 if(!m_comm.GetPortOpen( ) m_comm.SetPortOpen(TRUE); /打開串口1 m_comm.SetSettings("9600,n,8,1"); /串口參數(shù)設(shè)置 m_comm.SetRThreshold(1); /當(dāng)串口接收緩沖區(qū)內(nèi)接收字符多于或等于1將觸發(fā)一關(guān)于comEvReceive的OnComm事件。return TRUE; / return TRUE unless you set t
12、he focus to a control / EXCEPTION: OCX Property Pages should return FALSEvoid CChatDlg:OnChangeEdit1Send( ) / TODO: Add your control notification handler code hereint count;CString temp;UpdateData(TRUE); /獲取用戶輸入數(shù)據(jù)count=m_send.GetLength( ); /獲取編輯框內(nèi)字符數(shù)temp=m_send.GetAt(count-1); /取最新輸入字符if(!m_comm.Get
13、PortOpen( ) m_comm.SetPortOpen(TRUE);m_comm.SetOutput(COleVariant(temp); /發(fā)送數(shù)據(jù)if(count= =40) /如輸入字符超過40,清空發(fā)送編輯框m_send.Empty( ); UpdateData(FALSE); /更新編輯框void CChatDlg:OnOnCommMscomm 1( ) / TODO: Add your control notification handler code hereVARIANT temp;int count; if(m_comm.GetCommEvent( )= =2) /串行
14、口數(shù)據(jù)接收處理;count=m_comm.GetInBufferCount( );m_comm.SetInputLen(count); /利用Input接收字符數(shù)為counttemp=m_comm.GetInput( ); /接收字符m_recv+=temp.bstrVal; /將接收字符添加到接收框變量中if(m_recv.GetLength( )= =40) /如輸入字符超過40,清空發(fā)送編輯框m_recv.Empty( ); UpdateData(FALSE); /更新編輯框4、串行通信單片機(jī)程序設(shè)計在此作為演示,此單片機(jī)程序功能只是簡單將所收字符再發(fā)送出去,類似可實現(xiàn)各種復(fù)雜通信協(xié)議。
15、將微機(jī)與單片機(jī)相連后,微機(jī)運(yùn)行chat.exe,單片機(jī)運(yùn)行此程序即可實現(xiàn)兩機(jī)通信。下面是MC68HC908GP32為例的程序清單。 *=Registers=SCCR1 equ $0013b_ENSCI equ 6SCCR2 equ $0014b_TE equ 3b_RE equ 2BAUD equ $0019SCS1 equ $0016SCS2 equ $0017SCDR equ $0018CONFIG2 equ $001eCONFIG1 equ $001fPCTL equ $0036b_PLLON equ 5b_BCS equ 4PBWC equ $0037b_AUTO equ 7PMSH
16、equ $0038PMSL equ $0039PMRS equ $003a*=Initial Codes= ORG $8000RESET_INIT: SEI LDHX #$023F TXS LDA #$01 STA CONFIG2 LDA #$3D STA CONFIG1*= Initial CGMC= CLR PCTL MOV #$01,PCTL MOV #$01,PMSH MOV #$2C,PMSL MOV #$80,PMRS BSET b_PLLON,PCTL ;32.768khz -2.4576Mhz BSET b_AUTO,PBWC BSET b_BCS,PCTL*= Initial
17、 SCI=* LDA #$02 STA BAUD ;9600baud BSET b_ENSCI,SCCR1 ;ENABLE SCI MOV #$0C,SCCR2 ;ENABLE TRANSMITTER AND RECEIVER*=Main program=*START:CLI JSR GETDATA JSR SENDATA JMP STARTGETDATA:BRCLR 5,SCS1,GETDATA LDA SCDR RTSSENDATA:BRCLR 7,SCS1,SENDATA STA SCDR RTS*=Vector=* ORG $FFFE DW RESET_INIT若要實現(xiàn)一臺微機(jī)(主機(jī))
18、與多臺GP32通信,可用SCI接收器喚醒功能(空閑線或地址位)。主機(jī)與從機(jī)通信時,發(fā)送信息的開頭一般為從機(jī)地址,各從機(jī)接收信息開頭的地址,如發(fā)現(xiàn)地址與自己的地址相同,則準(zhǔn)備接收后面的數(shù)據(jù),負(fù)責(zé)不予理睬。至此我們用Visual C+ 6.0實現(xiàn)了微機(jī)與微機(jī)以及微機(jī)與單片機(jī)之間的串行通信,通過更復(fù)雜的通信協(xié)議,完全可滿足工業(yè)測控系統(tǒng)中的一般數(shù)據(jù)通信要求。參考文獻(xiàn):1劉慧根等. MC68HC08原理及其嵌入是應(yīng)用. 清華大學(xué)出版社,2001.2劉瑜. Windows環(huán)境下串行通信程序設(shè)計. 計算機(jī)應(yīng)用與研究,1999.作者簡介: 王榮鴿,女,1977年10月4日生,漢族。石油大學(xué)(華東)信控學(xué)院控制理論與控制工程碩士研究生,現(xiàn)主要從事單片機(jī)和DSP在電機(jī)控制方面的研究。電話E-mail:zhwei1997 257061 山東省石油大學(xué)(華東)信控學(xué)院 王榮鴿 白連平Intruduction: Wang,Rongge,female,born on October 4th ,1977 ,the han nationality . Control theory and cont
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 全新公司合同擔(dān)保協(xié)議下載
- 借貸居間合同
- 食品檢測服務(wù)合同
- 吊車施工合同
- 個人借款給企業(yè)的合同范文
- 污水處理廠運(yùn)維合同履約承諾書
- 基于線性材料插值的超彈性結(jié)構(gòu)拓?fù)鋬?yōu)化方法研究
- 多參量智能光纖傳感系統(tǒng)研究
- 列車軸裝通風(fēng)式制動盤流量特性的數(shù)值研究
- 開放世界中的目標(biāo)感知與多任務(wù)決策方法研究
- 高考模擬作文“文化自信:春節(jié)走向世界”導(dǎo)寫+范文3篇
- 蘇教版三年級下冊數(shù)學(xué)計算能手1000題帶答案
- 改善護(hù)理服務(wù)行動計劃總結(jié)報告
- 湖南汽車工程職業(yè)學(xué)院單招職業(yè)技能測試參考試題庫(含答案)
- 第2課+古代希臘羅馬(教學(xué)設(shè)計)-【中職專用】《世界歷史》(高教版2023基礎(chǔ)模塊)
- 中儲糧蘭州公司考試筆試題庫
- 焊接機(jī)器人在汽車制造中應(yīng)用案例分析報告
- 重建成長型思維課件
- 電捕焦油器火災(zāi)爆炸事故分析
- 質(zhì)量問題分析及措施報告
- 汽修廠安全風(fēng)險分級管控清單
評論
0/150
提交評論