第一篇:PLC和PC機(jī)間的串行通信
關(guān)鍵詞:RS-232串行通信 可編程控制器 自由端口模式 數(shù)據(jù)緩沖區(qū)
HG-2003型溫升測(cè)控裝置是筆者與我國(guó)北京某科學(xué)研究聯(lián)聯(lián)合開(kāi)發(fā)的一套專(zhuān)門(mén)用于高壓晶閘管閥溫升檢測(cè)試驗(yàn)的測(cè)控裝置??紤]到PLC及其網(wǎng)絡(luò)已被公認(rèn)為現(xiàn)代測(cè)控裝置開(kāi)發(fā)的幾大支柱之一,而且從近幾年的統(tǒng)計(jì)數(shù)字來(lái)看,PLC產(chǎn)品在世界范圍內(nèi)的產(chǎn)量、銷(xiāo)量高居各測(cè)控器件榜首,因此筆者決定本測(cè)控系統(tǒng)的核心器件采用可編程控制器(PLC),其基本功能可通過(guò)軟件編程實(shí)現(xiàn)。PLC的三大亮點(diǎn)是:(1)集電控、電傳、電儀三電于一體;(2)網(wǎng)絡(luò)的性能價(jià)格比高;(3)可靠性高。這些亮點(diǎn)就使得整個(gè)測(cè)控設(shè)備結(jié)構(gòu)簡(jiǎn)單、可靠性高,同時(shí)也為實(shí)現(xiàn)系統(tǒng)控制功能的二次開(kāi)發(fā)奠定了良好的技術(shù)基礎(chǔ)。本文主要討論設(shè)備中所采用的西門(mén)子公司的S7-200型PLC和PC機(jī)之間的串行通信問(wèn)題。
1、溫升測(cè)控系統(tǒng)整體介紹
1.1 HG-2003測(cè)控裝置的測(cè)控對(duì)象及結(jié)構(gòu)
先來(lái)介紹一下該溫升試驗(yàn)測(cè)控裝置的基本工作流程。10kV電源進(jìn)線(xiàn)經(jīng)過(guò)進(jìn)線(xiàn)框中的高壓斷路器CB和高壓隔離開(kāi)關(guān)柜中的隔離開(kāi)關(guān)G(用于在設(shè)備檢修或維護(hù)時(shí)形成一個(gè)明顯的斷點(diǎn))后,加在10kV轉(zhuǎn)換變壓器T1上。該變壓器將三相電轉(zhuǎn)化為單相電。這主要是由于做實(shí)驗(yàn)時(shí)負(fù)載電流很大,如果使用三相電源,容易造成負(fù)荷電流的不平衡從而造成試驗(yàn)故障。在轉(zhuǎn)換變壓器的輸出端(二次側(cè))連接單相溫升試驗(yàn)變壓器T2。該溫升變壓器的一次側(cè)應(yīng)加裝用于無(wú)功功率補(bǔ)償?shù)碾娙莨?,二次?cè)則通過(guò)有載分接開(kāi)關(guān)直接連接試驗(yàn)品(即高壓晶閘管閥)進(jìn)行溫升試驗(yàn)。
從基本工作流程不難知道測(cè)控裝置的測(cè)控對(duì)象,本裝置的具體測(cè)控對(duì)象如表1所示。
表1 測(cè)控對(duì)象表
測(cè)控裝置的物理結(jié)構(gòu)分為兩部分:操作控制臺(tái)和試區(qū)控制箱。其中,試區(qū)控制箱即PLC控制箱被安裝在試驗(yàn)區(qū)的隔離開(kāi)關(guān)框內(nèi)。操作控制臺(tái)即PC機(jī)人機(jī)辦是非曲直操作臺(tái)則安裝在控制室內(nèi)。由于二者之間相距約40m,所以采用PC/PPI電纜傳輸測(cè)控信號(hào)時(shí)需加裝中繼器。
1.2 HG-2003測(cè)控裝置的基本功能
本測(cè)控系統(tǒng)的基本功能包括:開(kāi)關(guān)分合控制指示功能;設(shè)備和試品的過(guò)流、過(guò)壓、過(guò)熱報(bào)警及保護(hù)功能;各種操作連鎖功能,如電源開(kāi)關(guān)柜內(nèi)10kV電源斷路器和隔離開(kāi)關(guān)柜內(nèi)的手動(dòng)隔離開(kāi)關(guān)、控制室門(mén)觸點(diǎn)、試驗(yàn)大廳門(mén)觸點(diǎn)間的連鎖保護(hù)功能等,并設(shè)有相關(guān)的報(bào)警提示畫(huà)面。這些功能可以避免操作順序出錯(cuò)。
2、S7-200通信程序的設(shè)計(jì)與實(shí)現(xiàn) 2.1 PC機(jī)與S7-200的通信方式
西門(mén)子S7-200 PLC的通信功能較強(qiáng),有多種通信方式可供用戶(hù)選擇,如:?jiǎn)沃髡痉绞?、多主站方式以及使用調(diào)制解調(diào)器的遠(yuǎn)程通信方式等。在本測(cè)控裝置中,筆者采用單主站方式。在運(yùn)行Windows或Windows NT操作操作的個(gè)人計(jì)算機(jī)(PC機(jī))上安裝STEP 7-Micro/WIN32編程軟件后,PC機(jī)就可作為通信中的主站。它可與一個(gè)或多個(gè)從站相連,STEP 7-Micro/WIN 32每次和一個(gè)S7-200 CPU通信,但可以訪(fǎng)問(wèn)網(wǎng)絡(luò)上的所有CPU。該通信方式的硬件配置為PLC到PC機(jī)通信口的電纜連接器,即帶RS-232口的隔離型PC/PPI電纜,用五個(gè)DIP開(kāi)關(guān)設(shè)置波特率和其它配置項(xiàng)。它支持的波特率為9.6kbps或19,2kbps,支持的協(xié)議為PPI協(xié)議。這里并沒(méi)有使用PPI協(xié)議,而是使用PC/PPI電纜和自由端口通信功能來(lái)實(shí)現(xiàn)S7-200 CPU與PC機(jī)間的通信。自由端口模式是計(jì)算機(jī)或其它帶有串行通信接口的設(shè)備與S7-200 CPU之間通信的一種廉價(jià)和靈活的方法。它以用戶(hù)定義的通信協(xié)議為基礎(chǔ),通過(guò)使用相關(guān)的中斷指令和專(zhuān)用的通信指令控制S7-200 CPU通信口的操作模式,實(shí)現(xiàn)與多種智能設(shè)備的連接。
具體地說(shuō),所謂自由通信端口模式是指CPU的串行通信接口可由用戶(hù)程序控制的一種通信操作模式,其梯形圖程序可以使用接收完成中斷、字符接收中斷、發(fā)送完成中斷、發(fā)送指令(XMT)和接收指令(RCV)等控制通信過(guò)程。在該模式下,通信協(xié)議完全由用戶(hù)程序控制。
CPU處于STOP模式時(shí),自由通信端口模式被禁止,CPU重新建立使用其它協(xié)議的通信,例如與編程設(shè)備的通信。只有當(dāng)CPU處于RUN模式時(shí),才能使用自由通信端口模式。通過(guò)將特殊寄存器字節(jié)SM30或SM130的協(xié)議選擇域(mm)置1可以將通信端口設(shè)置為自由端口模式,處于該模式時(shí)不能與編程設(shè)備通信。
可以用反映CPU模塊上的工作方式開(kāi)關(guān)當(dāng)前位置的特殊存儲(chǔ)器位SM0.7來(lái)控制自由端口模式的進(jìn)入。當(dāng)SM0.7為1時(shí),工作方式開(kāi)關(guān)處于RUN位置,可選擇自由端口模式;當(dāng)SM0.7為0時(shí),工作方式開(kāi)關(guān)處于TEM位置,應(yīng)選擇PC/PPI協(xié)議模式,以便用于編程設(shè)備監(jiān)視或控制CPU模塊的操作。
2.2 自由端口模式下PLC串行通信程序的編程要點(diǎn)
計(jì)算機(jī)與可編程控制器通信時(shí),為了避免通信中的各方爭(zhēng)用通信線(xiàn),一般采用主從工作方式,即計(jì)算機(jī)為主機(jī),可編程控制器為從機(jī);只有主機(jī)才有權(quán)主動(dòng)發(fā)送請(qǐng)求報(bào)文,從機(jī)收到后返回響應(yīng)報(bào)文。下面主要談一談編程過(guò)程中應(yīng)注意的幾個(gè)問(wèn)題。
首先是電纜切換時(shí)間的處理。因?yàn)槭褂昧薖C/PPI電纜,所以在S7-200 CPU的用戶(hù)程序中應(yīng)考慮電纜的切換時(shí)間。S7-200 CPU接收到RS232設(shè)備的請(qǐng)求報(bào)文到它發(fā)送響應(yīng)報(bào)文的延遲時(shí)間必須大于等于電纜的切換時(shí)間。波特率為9600bps和19200bps,電纜的切換時(shí)間分別為2ms和1ms。在梯形圖程序中可用定時(shí)中斷實(shí)現(xiàn)切換延時(shí)。
其次就是通信可靠性的處理,校驗(yàn)碼的采用是提高通信可靠性最常用的措施之一。用得較多的是異或校驗(yàn),即將每一幀中的第一個(gè)字符(不包括起始字符)到該幀中正文的最后一個(gè)字符作異或運(yùn)算,并將異或的結(jié)果(展品或校驗(yàn)碼)作為報(bào)文的一部分發(fā)送到接收端。接收方接收到數(shù)據(jù)后計(jì)算出所接收到的數(shù)據(jù)的展品或校驗(yàn)碼,再與發(fā)送方傳過(guò)來(lái)的校驗(yàn)碼比較,如果不同,可以判斷通信有誤。
最后需注意的是防止起始字符、結(jié)束字符與數(shù)據(jù)字符的混淆。因?yàn)閳?bào)文的起始字符和結(jié)束字符只有8位,接收到的報(bào)文數(shù)據(jù)區(qū)內(nèi)出現(xiàn)與起始字符或結(jié)束字符相同的數(shù)據(jù)字符的機(jī)率很大,這可能會(huì)引起字符混淆??梢栽诎l(fā)送前對(duì)數(shù)據(jù)作某種處理,例如選擇起始字符和結(jié)束字符為某些特殊的值,而將數(shù)字字符轉(zhuǎn)化為BCD碼或ASCII碼后再發(fā)送,這樣可以避免出現(xiàn)上述的情況,但是會(huì)增加編程的工作量和數(shù)據(jù)傳 送的時(shí)間。2.3 通信程序中關(guān)鍵指令的使用與說(shuō)明
發(fā)送指令XMT(Transmit)用于啟動(dòng)自由端口模式下數(shù)據(jù)緩沖區(qū)(TBL)數(shù)據(jù)的發(fā)送,指令格式如圖1所示。通過(guò)指定的通信端口(PORT),將存儲(chǔ)在數(shù)據(jù)緩沖區(qū)(TBL)中的信息發(fā)送。使ENO=0的錯(cuò)誤條件:SM4.3(運(yùn)行時(shí)間),0006(間接尋址),009(在端口0同時(shí)XMT/RCV),000B(在端口1同時(shí)XMT/RCV)。
XMT指令可以方便地發(fā)送1~255個(gè)字符,如果有中斷程序連接到發(fā)送結(jié)束事件上,在發(fā)送完緩沖區(qū)中的最后一個(gè)字符時(shí),端口0會(huì)產(chǎn)生中斷事件9,端口1會(huì)產(chǎn)生中斷事件26。可以監(jiān)視發(fā)送完成狀態(tài)位SM4.5和SM4.6的變化,而不是用中斷進(jìn)行發(fā)送。數(shù)據(jù)緩沖區(qū)中的起始字符和結(jié)束字符是可選項(xiàng),第一個(gè)字節(jié)的“字符數(shù)”是要發(fā)送的字節(jié)數(shù),它本身并不發(fā)送出去。
接收指令RCV(Receive)可以方便地接收一個(gè)或多個(gè)字符,最多可接收255個(gè)字符。通過(guò)指令的通信端口(PORT),將接收信息存儲(chǔ)在數(shù)據(jù)緩沖區(qū)(TBL)中。數(shù)據(jù)緩沖區(qū)中的第一個(gè)字節(jié)用來(lái)累計(jì)接收到的字節(jié)數(shù),它本身不能接收到,起始字符和結(jié)束字符是可選項(xiàng)。如果有中斷程序連接到接收結(jié)束事件上,在接收完最后一個(gè)字符時(shí),端口0產(chǎn)生中斷事件23,端口1產(chǎn)生中斷事件24。
使ENO=0的錯(cuò)誤條件:SM86.6和SM186.6(RCV參數(shù)錯(cuò)誤),SM4.3(運(yùn)行時(shí)間),0006(音接尋址),009(在端口0同時(shí)XMT/RCV),000B(在端口1同時(shí)XMT/RCV)。CPU不是在自由端口模式。
可以監(jiān)視SM86.6或SM186.6的變化,而不是用中斷進(jìn)行報(bào)文接收。SM86.6或SM186.6為非零時(shí),RCV指令未被激活或接收已經(jīng)結(jié)束。正在接收?qǐng)?bào)文時(shí),它們?yōu)?。
當(dāng)超時(shí)或校驗(yàn)錯(cuò)誤時(shí),要自動(dòng)中止報(bào)文接收功能。必須為報(bào)文接收功能定義一個(gè)啟動(dòng)條件和一個(gè)結(jié)束條件。
RCV指令允許通過(guò)參數(shù)設(shè)定選擇報(bào)文開(kāi)始條件和報(bào)文結(jié)束條件,即設(shè)定特殊存儲(chǔ)器字節(jié)SM86~SM94(用于端口0)和SM186~SM194(用于端口1)。
另外兩個(gè)比較重要的指令是獲取與設(shè)置通信口地址指令。獲取通信口地址指令(GET ADDR指令)用來(lái)讀取PORT指定的CPU口的站地址,并將數(shù)值放入ADDR指定的地址中。設(shè)置通信口地址指令(SET ADDR指令)用來(lái)將通信口(PORT)站地址設(shè)置為ADDR指定的數(shù)值。設(shè)置的新地址不能永久保存,斷電后又上電,通信口地址將恢復(fù)為上次的地址值(用系統(tǒng)塊下載的地址)。圖2為使用RCV指令和接收完成中斷接收數(shù)據(jù)的通信程序流程圖。
3、計(jì)算機(jī)通信程序的設(shè)計(jì)與實(shí)現(xiàn)
3.1 Windows環(huán)境下的PC機(jī)通信程序 在Windows環(huán)境下,操作系統(tǒng)通過(guò)驅(qū)動(dòng)程序控制各硬件資源,不允許用戶(hù)像在DOS環(huán)境下那樣直接對(duì)串口進(jìn)行底層的操作。為此,Visual Basic提供了一個(gè)串行通信控件:MSComm控件。程序員只需設(shè)置和監(jiān)視MSComm控件的屬性和事件,就可以勁易而易舉地實(shí)現(xiàn)串行通信。
3.2 MSComm控件的屬性
MSComm控件主要屬性如下:(1)Comm Port:設(shè)置并返回通信端口號(hào)。(2)Settings:以字符的形式設(shè)置并返回波特率、奇偶校驗(yàn)位、數(shù)據(jù)位和停止位。其中字符n、o、e分別代表無(wú)校驗(yàn)、奇校驗(yàn)、偶校驗(yàn)。(3)Port Open:設(shè)置并返回通信端口狀態(tài)。設(shè)置為T(mén)ure時(shí),打開(kāi)端口;設(shè)置為Flase時(shí),關(guān)閉端口。另外,還有Input、Output、Input Mode、In Buffer Count等屬性,這里不再一一介紹。3.2 MSComm控件處理接收信息的方式
MSComm控件提供兩種處理方式:(1)事件驅(qū)動(dòng)方式:RTHreshold屬性非0時(shí),收到字符或傳輸線(xiàn)發(fā)生變化時(shí)就會(huì)產(chǎn)生串口事件On Comm。通過(guò)查詢(xún)CommEvent屬性可以捕獲并處理這些通信事件。(2)查詢(xún)方式:通過(guò)查詢(xún)Iuput Buffer Count(接收緩沖區(qū)的字節(jié)數(shù))屬性值,處理接收到的信息。本裝置中采用事件驅(qū)動(dòng)方式。
用Visual Basic語(yǔ)言設(shè)計(jì)串行通信程序簡(jiǎn)單實(shí)用,關(guān)鍵是如何形成一個(gè)友好的用戶(hù)界面。編程的細(xì)節(jié)這里不再詳述。
隨著工業(yè)PC機(jī)的推出,個(gè)人計(jì)算機(jī)在工業(yè)現(xiàn)場(chǎng)支行的可靠性問(wèn)題也得到了解決。因此在各類(lèi)測(cè)控設(shè)備中實(shí)現(xiàn)PLC和PC機(jī)間的串行通信有著重大的意義。這樣一方面有助于將個(gè)人計(jì)算機(jī)開(kāi)發(fā)成簡(jiǎn)易工作站或者工作終端,實(shí)現(xiàn)集中顯示、集中報(bào)警功能;另一方面也可把個(gè)人計(jì)算機(jī)開(kāi)發(fā)成PLC編程終端,通過(guò)編程器接口接入PLC網(wǎng)絡(luò),進(jìn)行編程、調(diào)試及監(jiān)控,并最終達(dá)到PLC測(cè)控設(shè)備結(jié)構(gòu)簡(jiǎn)單、運(yùn)行可靠、維護(hù)容易、便于二次開(kāi)發(fā)的技術(shù)特點(diǎn)。
第二篇:51單片機(jī)與PC機(jī)通信資料
《專(zhuān)業(yè)綜合實(shí)習(xí)報(bào)告》
專(zhuān)
業(yè):
電子信息工程
年
級(jí):
2013級(jí)
指導(dǎo)教師:
學(xué)
生:
目錄
一:實(shí)驗(yàn)項(xiàng)目名稱(chēng) 二:前言
三:項(xiàng)目?jī)?nèi)容及要求 四:串口通信原理 五:設(shè)計(jì)思路
5.1虛擬串口的設(shè)置 5.2下位機(jī)電路和程序設(shè)計(jì) 5.3串口通信仿真 六:電路原理框圖 七:相關(guān)硬件及配套軟件
7.1 AT89C51器件簡(jiǎn)介 7.2 COMPIN簡(jiǎn)介 7.3 MAX232器件簡(jiǎn)介 7.4 友善串口調(diào)試助手
7.5 虛擬串口軟件Virtual Serial Port Driver 6.9 八:程序設(shè)計(jì) 九:proteus仿真調(diào)試 十:總結(jié) 十一:參考文獻(xiàn)
一:實(shí)驗(yàn)項(xiàng)目名稱(chēng): 基于51單片機(jī)的單片機(jī)與PC機(jī)通信
二:前言
在國(guó)內(nèi)外,以PC機(jī)作為上位機(jī),單片機(jī)作為下位機(jī)的控制系統(tǒng)中,PC機(jī)通常以軟件界面進(jìn)行人機(jī)交互,以串行通信方式與單片機(jī)進(jìn)行積極交互,而單片機(jī)系統(tǒng)根據(jù)被控對(duì)象配置相應(yīng)的前向,后向信息通道,工作時(shí)作為主控機(jī)測(cè)對(duì)象,作為被控機(jī)接受PC機(jī)監(jiān)督,指揮,定期或受命向上位機(jī)提供對(duì)象及本身的工作狀態(tài)信息。
目前,隨著集成電路集成度的增加,電子計(jì)算機(jī)向微型化和超微型化方向發(fā)展,微型計(jì)算機(jī)已成為導(dǎo)彈,智能機(jī)器人,人類(lèi)宇宙和太空和太空奧妙復(fù)雜系統(tǒng)不可缺少的智能部件。在一些工業(yè)控制中,經(jīng)常需要以多臺(tái)單片機(jī)作為下位機(jī)執(zhí)行對(duì)被控對(duì)象的直接控制,以一臺(tái)PC機(jī)為上位機(jī)完成復(fù)雜的數(shù)據(jù)處理,組成一種以集中管理、分散控制為特點(diǎn)的集散控制系統(tǒng)。
為了提高系統(tǒng)管理的先進(jìn)性和安全性,計(jì)算機(jī)工業(yè)自動(dòng)控制和監(jiān)測(cè)系統(tǒng)越來(lái)越多地采用集總分算系統(tǒng)。較為常見(jiàn)的形式是由一臺(tái)做管理用的上位主計(jì)算機(jī)(主機(jī))和一臺(tái)直接參與控制檢測(cè)的下位機(jī)(單片機(jī))構(gòu)成的主從式系統(tǒng),主機(jī)和從機(jī)之間以通訊的方式來(lái)協(xié)調(diào)工作。主機(jī)的作用一是要向從機(jī)發(fā)送各種命令及參數(shù):二是要及時(shí)收集、整理和分析從機(jī)發(fā)回的數(shù)據(jù),供進(jìn)一步的決策和報(bào)表。從機(jī)被動(dòng)地接受、執(zhí)行主機(jī)發(fā)來(lái)的命令,并且根據(jù)主機(jī)的要求向主機(jī)回傳相應(yīng)煩人實(shí)時(shí)數(shù)據(jù),報(bào)告其運(yùn)行狀態(tài)。
用串行總線(xiàn)技術(shù)可以使系統(tǒng)的硬件設(shè)計(jì)大大簡(jiǎn)化、系統(tǒng)的體積減小、可靠性提高。同時(shí),系統(tǒng)的更改和擴(kuò)充極為容易。MCS-51系列單片機(jī),由于內(nèi)部帶有一個(gè)可用于異步通訊的全雙工的穿行通訊接口,陰齒可以很方便的構(gòu)成一個(gè)主從式系統(tǒng)。
串口是計(jì)算機(jī)上一種非常通用的設(shè)備通訊協(xié)議,大多數(shù)計(jì)算機(jī)包容兩個(gè)基于RS232的串口。串口同時(shí)也是儀器儀表設(shè)備通過(guò)用的通訊協(xié)議,很多GPIB兼容的設(shè)備也帶有RS-232口。同時(shí)串口通訊協(xié)議也可以用于獲取遠(yuǎn)程采集設(shè)備數(shù)據(jù)。所以,深入的理解學(xué)習(xí)和研究串口通信相關(guān)知識(shí)是非常必要的。此次畢業(yè)設(shè)計(jì)選題為“PC機(jī)與MCS-51單片機(jī)的串口通訊”,使用51單片機(jī)來(lái)實(shí)現(xiàn)一個(gè)主從式的總線(xiàn)通訊系統(tǒng)。通過(guò)此次設(shè)計(jì),對(duì)串口通訊的原理和應(yīng)用融會(huì)貫通,為以后的時(shí)間工作儲(chǔ)備知識(shí)和研究方法。
三.項(xiàng)目?jī)?nèi)容及要求
基于51單片機(jī),在相關(guān)軟件的輔助下,建立起單片機(jī)與PC機(jī)之間的通信機(jī)制,使用proteus仿真軟件進(jìn)行仿真,要求可從PC機(jī)上發(fā)送數(shù)字及英文字母出來(lái),由單片機(jī)接收并在虛擬軟件顯示屏上顯現(xiàn)出來(lái),有開(kāi)關(guān)控制數(shù)字或者是字母的發(fā)送。
四:串口通信原理
單片機(jī)與外圍部件或設(shè)備的數(shù)據(jù)傳輸方式有并行通信和串行通信兩種方式,本實(shí)驗(yàn)主要通過(guò)串行通信方式進(jìn)行單片機(jī)與PC機(jī)之間的數(shù)據(jù)傳輸,故略去并行通信方式的介紹。
串行通信是指計(jì)算機(jī)主機(jī)與外設(shè)之間以及主機(jī)系統(tǒng)與主機(jī)系統(tǒng)之間數(shù)據(jù)的串行傳送。使用一條數(shù)據(jù)線(xiàn),將數(shù)據(jù)一位一位地依次傳輸,每一位數(shù)據(jù)占據(jù)一個(gè)固定的時(shí)間長(zhǎng)度。其只需要少數(shù)幾條線(xiàn)就可以在系統(tǒng)間交換信息,特別適用于計(jì)算機(jī)與計(jì)算機(jī)、計(jì)算機(jī)與外設(shè)之間的遠(yuǎn)距離通信。
串口通信時(shí),發(fā)送和接收到的每一個(gè)字符實(shí)際上都是一次一位的傳送的,每一位為1或者為0。這種傳送方式具有方法簡(jiǎn)單,靈活性強(qiáng),可靠性高等特點(diǎn),同時(shí)需要的傳送線(xiàn)少,適于遠(yuǎn)距離傳送。但是,由于數(shù)據(jù)是按位發(fā)送出去的,因此這種數(shù)據(jù)傳送方式比并行通信速率低。
串行通信又可以分為同步通信和異步通信兩種方式。
同步通信是指同步通信是一種比特同步通信技術(shù),要求發(fā)收雙方具有同頻同相的同步時(shí)鐘信號(hào),只需在傳送報(bào)文的最前面附加特定的同步字符,使發(fā)收雙方建立同步,此后便在同步時(shí)鐘的控制下逐位發(fā)送/接收。進(jìn)行數(shù)據(jù)傳輸時(shí),發(fā)送和接收雙方要保持完全的同步,因此,要求接收和發(fā)送設(shè)備必須使用同一時(shí)鐘。
相對(duì)于同步通信,異步通信在發(fā)送字符時(shí),所發(fā)送的字符之間的時(shí)隙可以是任意的,當(dāng)然,接收端必須時(shí)刻做好接收的準(zhǔn)備(如果接收端主機(jī)的電源都沒(méi)有加上,那么發(fā)送端發(fā)送字符就沒(méi)有意義,因?yàn)榻邮斩烁緹o(wú)法接收)。發(fā)送端可以在任意時(shí)刻開(kāi)始發(fā)送字符,因此必須在每一個(gè)字符的開(kāi)始和結(jié)束的地方加上標(biāo)志,即加上開(kāi)始位和停止位,以便使接收端能夠正確地將每一個(gè)字符接收下來(lái)。內(nèi)部處理器在完成了相應(yīng)的操作后,通過(guò)一個(gè)回調(diào)的機(jī)制,以便通知發(fā)送端發(fā)送的字符已經(jīng)得到了回復(fù)。
五.設(shè)計(jì)思路
Pc機(jī)和單片機(jī)的串口通信系統(tǒng)的調(diào)試一般通過(guò)一根串口連接線(xiàn)把帶有軟件上位機(jī)的(Pc機(jī))和下位機(jī)(即單片機(jī))連接起來(lái)進(jìn)行,用這種調(diào)試串口通信程序比較煩瑣。本文介紹一種用純軟件實(shí)現(xiàn)PC機(jī)和單片機(jī)串口通信的仿真的方法,所有的調(diào)試都在一臺(tái)電腦上通過(guò)軟件完成。上位機(jī)由Pc機(jī)代替,下位機(jī)由用PROTEUS軟件設(shè)計(jì)的AT89C51單片機(jī)仿真電路代替串口及連接通過(guò)由虛擬串口軟Virtual Serial Port Driver 6.9進(jìn)行連接。
5.1虛擬串口的設(shè)置
安裝虛擬串口軟件Virtual Serial Port Driver 6.9,然后打開(kāi),左邊上面的COMl是電腦上實(shí)際的物理串口,下面是虛擬串口,在沒(méi)有設(shè)置前是空的。因?yàn)殡娔X最多有兩個(gè)物理串口,將圓圈里的串口改為COMl,COM3,點(diǎn)擊Add pair,這就表示,利用這個(gè)軟件將計(jì)算機(jī)的串口l和模擬串口3聯(lián)接了起來(lái),這兩個(gè)串口可以進(jìn)行通信了。
5.2下位機(jī)電路和程序設(shè)計(jì)
用Proteus6.9設(shè)計(jì)的仿真電路只用了幾個(gè)元器件。由于兩個(gè)虛擬串口采用相同的標(biāo)準(zhǔn)電平,因此電路中用來(lái)作,ITllL電平向RS232電平轉(zhuǎn)換的電路在仿真電路中可以省略。單片機(jī)的實(shí)例程序用Keil C51語(yǔ)言編寫(xiě),串口接收數(shù)據(jù)采用中斷的方式,發(fā)送數(shù)據(jù)采用外部中斷的方式,用按鈕開(kāi)關(guān)控制數(shù)據(jù)的發(fā)送。
5.3串口通信仿真
打開(kāi)友善串口調(diào)試助手,修改串口為COM3,波特率為9600,校驗(yàn)位為None,數(shù)據(jù)位8,停止位為1。用Proteus打開(kāi)仿真電路文件,先設(shè)置AT89C51的屬性,右擊選中AT89C5l,再用左鍵單擊AT89C51,在出現(xiàn)的屬性對(duì)話(huà)框里點(diǎn)擊Program File后的打開(kāi)按鈕,找到自Keil源程序編譯好的.HEX文件后單擊打開(kāi),然后在Clock Frequency后填寫(xiě)12M。單擊OK接下來(lái)打開(kāi)串口COMPIN的屬性對(duì)話(huà)框,在PhsicalPort后選擇COMl,波特率為9600,校驗(yàn)位為None,數(shù)據(jù)位8,停止位為l。設(shè)置好后,啟動(dòng)仿真就可以實(shí)現(xiàn)電腦和單片機(jī)串口通信的仿真了。首先演示一下單片機(jī)向計(jì)算機(jī)的串口發(fā)送數(shù)據(jù)。撥動(dòng)開(kāi)關(guān)向右撥,運(yùn)行,按一下開(kāi)關(guān)。虛擬串口終端最示單片機(jī)向計(jì)算 機(jī)COMl發(fā)送的數(shù)據(jù),而計(jì)算機(jī)的COMI已經(jīng)和COM3相連,因軟件PROTEUS 所此可以在COM3收到單片機(jī)發(fā)送給COMi的數(shù)據(jù)。接著冉演示一下計(jì)算機(jī)的串口向單片機(jī)發(fā)送數(shù)據(jù)。撥動(dòng)開(kāi)關(guān)向左撥,在口調(diào)試助手中輸入想要發(fā)送的數(shù)據(jù),點(diǎn)擊手動(dòng)則字符 串由COM3發(fā)送給了計(jì)算機(jī)的COMI。再由COMI發(fā)送給單片 機(jī)。單片機(jī)的程序里面有回顯功能,將接 送給了COM因 此可以在COM3的接受框內(nèi)能夠接收到會(huì)顯得字符串。
六.電路原理框圖
七.相關(guān)硬件及配套軟件 7.1 AT89C51器件簡(jiǎn)介
AT89C51是一種帶4K字節(jié)FLASH存儲(chǔ)器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低電壓、高性能CMOS 8位微處理器,俗稱(chēng)單片機(jī)。AT89C2051是一種帶2K字節(jié)閃存可編程可擦除只讀存儲(chǔ)器的單片機(jī)。單片機(jī)的可擦除只讀存儲(chǔ)器可以反復(fù)擦除1000次。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃速存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的AT89C51是一種高效微控制器,AT89C051是它的一種精簡(jiǎn)版本。AT89C51單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。
7.2 COMPIN簡(jiǎn)介
COM口(cluster communication port)即串行通訊端口。微機(jī)上的com口通常是9針,也有25針的接口,最大速率115200bps。通常用于連接鼠標(biāo)(串口)及通訊設(shè)備(如連接外置式MODEM進(jìn)行數(shù)據(jù)通訊或一些工廠(chǎng)的CNC機(jī)接口)等。一般主板外部只有一個(gè)COM口,機(jī)箱后面和并口一起的那個(gè)九孔輸出端(梯形),就是COM1口,COM2口一般要從主板上插針引出。并口是最長(zhǎng)的那個(gè)梯形口。本實(shí)驗(yàn)主要應(yīng)用九針接口。
7.3 MAX232器件簡(jiǎn)介
MAX232是一種雙組驅(qū)動(dòng)器/接收器,片內(nèi)含有一個(gè)電容性電壓發(fā)生器以便在單5V電源供電時(shí)提供EIA/TIA-232-E電平。
當(dāng)用單片機(jī)和PC機(jī)通過(guò)串口進(jìn)行通信,盡管單片機(jī)有串行通信的功能,但單片機(jī)提供的信號(hào)電平和RS232的標(biāo)準(zhǔn)不一樣,因此要通過(guò)max232這種類(lèi)似的芯片進(jìn)行電平轉(zhuǎn)換。
7.4友善串口調(diào)試助手
一個(gè)強(qiáng)大而穩(wěn)定的串口調(diào)試助手,支持常用的110-921600bps波特率及自定義波特率,波特率最高可支持8000000(串口硬件有關(guān)),可適應(yīng)于非標(biāo)準(zhǔn)波特率。支持串口自動(dòng)識(shí)別,能設(shè)置校驗(yàn)、數(shù)據(jù)位和停止位,能以ASCII碼或十六進(jìn)制接收或發(fā)送任何數(shù)據(jù)或字符,可以任意設(shè)定自動(dòng)發(fā)送周期,并能將接收數(shù)據(jù)保存成文本文件,能發(fā)送任意大小的文本文件。
7.5虛擬串口軟件Virtual Serial Port Driver 6.9簡(jiǎn)介
該軟件安裝成功后可以虛擬出多個(gè)串口用于實(shí)驗(yàn),虛擬串口都是成對(duì)出現(xiàn)使用的,最大限度的方便了用戶(hù)數(shù)的需求。
八.程序設(shè)計(jì)
注:本程序采用C語(yǔ)言編寫(xiě),程序如下: #include
}
void main(){ uchar i;
P0 = 0x00;Receive_Buffer[0]=i;SCON = 0x50;TMOD = 0x20;PCON = 0x00;TH1 = 0xfd;TL1 = 0xfd;EA = 1;EX0 = 1;IT0 = 1;ES = 1;IP = 0x01;TR1 = 1;while(1){ for(i=0;i<100;i++){ if(Receive_Buffer[i]==-1)break;while(x--){ for(i=0;i<120;i++);}
}
} } P0 = DSY_CODE[Receive_Buffer[i]];Delay(200);Delay(200);void Serial_INT()interrupt 4 { uchar c;
}
void EX_INT0()interrupt 0 { uchar *s =(“Receiving From 8051...rn”);uchar i = 0;while(s[i]!='