基于RS-232C的串口通信設(shè)計畢業(yè)論文

上傳人:紅** 文檔編號:182574031 上傳時間:2023-01-25 格式:DOC 頁數(shù):37 大?。?11.13KB
收藏 版權(quán)申訴 舉報 下載
基于RS-232C的串口通信設(shè)計畢業(yè)論文_第1頁
第1頁 / 共37頁
基于RS-232C的串口通信設(shè)計畢業(yè)論文_第2頁
第2頁 / 共37頁
基于RS-232C的串口通信設(shè)計畢業(yè)論文_第3頁
第3頁 / 共37頁

下載文檔到電腦,查找使用更方便

9 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《基于RS-232C的串口通信設(shè)計畢業(yè)論文》由會員分享,可在線閱讀,更多相關(guān)《基于RS-232C的串口通信設(shè)計畢業(yè)論文(37頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、基于RS-232C的串口通信摘 要隨著計算機系統(tǒng)的應(yīng)用和微機網(wǎng)絡(luò)的發(fā)展,通信功能越來越顯的重要。通信既包括計算機與外部設(shè)備之間,也包括計算機和計算機之間的信息交換。由于串行通信是在一根傳輸線上一位一位的傳送信息,所用的傳輸線少,并且可以借助現(xiàn)成的電話網(wǎng)進行信息傳送,因此,特別適合于遠(yuǎn)距離傳輸。串口接口RS-232C實現(xiàn)較為簡單,可以實現(xiàn)全雙工的實時通信。因此,它作為一種標(biāo)準(zhǔn),目前已在微機通信接口中廣泛采用。PC機與單片機之間傳送數(shù)據(jù)可通過RS-232C接口實現(xiàn)。PC機可以作為上位機,單片機作為從機進行串口通信。PC機在Windows平臺上,利用Visual Basic編程語言中的 mscomm

2、控件可以開發(fā)串口通信程序界面,進行串口通信的實時觀測,并利用MAX232進行電平轉(zhuǎn)換與單片機相連。通過單片機編寫通信協(xié)議就可以實現(xiàn)PC機與單片機之間的數(shù)據(jù)傳送,從而實現(xiàn)基于RS-232C的串口通信控制。關(guān)鍵詞: 單片機 MAX232 RS-232C 串口通信 Visual BasicSerial Port Communication Based on RS-232C AbstractAlong with the application of computer system and the development of microcomputer network, Communication i

3、s more and more important .It can be exchange information between computer and the peripheral equipments , and between computer and the other computers .Because the serial communication is transmitted the information with bit by bit ,it only uses a few line and also can use the ready-made telephone

4、line .So it suits to the long-distance transmission .the RS-232C realization is simple and the communication is duplex and real-time. Therefore it is looked as a kind of standard and used in microcomputer communication widely .The realization of data communication between PC and single-chip can use

5、RS-232C. During the communication PC is a upper machine and single-chip is host machine .In the windows platform ,using mscomm control in Visual Basic software to develop the surface of serial port communication and carry on real-time observation .Using MAX232 to realize the level conversion and con

6、nect with single-chip .Programming in the single-chip to realize the communication protocol and it can complete the data transmission.Key words: single-chip; MAX232;RS-232C; Serial port communication; Visual Basic 目 錄1引言12 Visual Basic與單片機實現(xiàn)串口通信的總體設(shè)計方案22.1 Visual Basic與單片機串口通信功能的實現(xiàn)方法22.2 MAX232的結(jié)構(gòu)與功

7、能32.3 MAX232實現(xiàn)PC機與單片機的聯(lián)調(diào)33 Visual Basic開發(fā)串口通信程序設(shè)計53.1mscomm控件實現(xiàn)串口通信的方法53.2 Visual Basic開發(fā)串口通信程序界面設(shè)計84單片機開發(fā)串口通信程序設(shè)計154.1 MCS-51單片機的串口結(jié)構(gòu)與功能154.2波特率的產(chǎn)生與通信協(xié)議的制定184.3單片機程序設(shè)計205結(jié)論23謝辭24參考文獻(xiàn)25附錄26外文資料35 1引言不同的獨立系統(tǒng)經(jīng)由線路相互交換數(shù)據(jù)便是通信。通信的形式可以區(qū)分為兩種,一種是并行傳輸方式的通信,另一種則為串行傳輸方式的通信。所謂并行通信是指一次傳輸8位(1個字節(jié));而串行通信一次只傳輸1位。計算機與

8、計算機或計算機與終端之間的數(shù)據(jù)傳送可以采用串行通信和并行通信二種方式。由于串行通信方式具有使用線路少、成本低,特別是在遠(yuǎn)程傳輸時,避免了多條線路特性的不一致而被廣泛采用。 在串行通信時,要求通訊雙方都采用一個標(biāo)準(zhǔn)接口,使不同的設(shè)備可以方便地連接起來進行通信。 RS-232C接口(又稱 EIA RS-232-C)是目前最常用的一種串行通信接口。RS-232C標(biāo)準(zhǔn)是美國EIA(電子工業(yè)聯(lián)合會)與BELL等公司一起開發(fā)的1969年公布的通信協(xié)議。它適合于數(shù)據(jù)傳輸速率在020000b/s范圍內(nèi)的通信。這個標(biāo)準(zhǔn)對串行通信接口的有關(guān)問題,如信號線功能、電器特性都作了明確規(guī)定。大多數(shù)通信設(shè)備廠商都生產(chǎn)與RS

9、-232C制式兼容的通信設(shè)備。RS-485也是一種常用的通信標(biāo)準(zhǔn),在要求通信距離為幾十米到上千米時,廣泛采用RS-485 串行總線標(biāo)準(zhǔn)。RS-485采用平衡發(fā)送和差分接收,因此具有抑制共模干擾的能力。但RS-232C由于實現(xiàn)較為簡單,而且價格上也便宜很多,可以實現(xiàn)全雙工的實時通信。因此,它作為一種標(biāo)準(zhǔn),目前已在微機通信接口中被廣泛采用。 PC機與單片機相結(jié)合在工業(yè)監(jiān)控、數(shù)據(jù)采集和實時控制系統(tǒng)中應(yīng)用廣泛。其中,單片機系統(tǒng)作為從機進行數(shù)據(jù)采集和執(zhí)行控制,而PC機作為主機進行發(fā)送命令、實時檢測、數(shù)據(jù)存儲、動態(tài)顯示等工作。利用Visual Basic中的mscomm 控件可實現(xiàn)與單片機的串行通信。其中

10、可利用VB開發(fā)串口通信程序,單片機編寫通信協(xié)議就可實現(xiàn)雙方數(shù)據(jù)的傳送與接收。2 Visual Basic與單片機實現(xiàn)串口通信的總體設(shè)計方案 2.1 Visual Basic與單片機串口通信功能的實現(xiàn)方法串行通信的數(shù)據(jù)是逐位傳送的,發(fā)送方發(fā)送的每一位都具有因定的時間間隔,這就要求接收方也要按照發(fā)送方同樣的時間間隔來接收每一位。不僅如此,接收方還要確定一個信息組的開始和結(jié)束。為此,串行通信對傳送數(shù)據(jù)的格式作了嚴(yán)格的規(guī)定。不同的串行通信方式具有不同的數(shù)據(jù)格式。常用的兩種基本串行通信方式有同步通信和異步通信。所謂同步通信是指在約定的通信速率下,發(fā)送端和接收端的時鐘信號頻率和相信始終保持一致(同步),這

11、就保證了通信雙方在發(fā)送和接收數(shù)據(jù)時具有完全一致的定時關(guān)系。同步通信傳送信息的位數(shù)幾乎不受限制,通常一次通信傳的數(shù)據(jù)有幾十到幾千個字節(jié),通信效率較高。但它要求在通信中保持精確的同步時鐘,所以其發(fā)送器和接收器比較復(fù)雜,成本也較高,一般用于傳送速率要求較高的場合。 異步通信是指通信中兩個字符之間的時間間隔是不固定的,而在一個字符內(nèi)各位的時間間隔是固定的。異步通信規(guī)定字符由起始位(start bit)、數(shù)據(jù)位(data bit)、奇偶校驗位(parity)和停止位(stop bit)組成。起始位表示一個字符的開始,接收方可用起始位使自己的接收時鐘與數(shù)據(jù)同步。停止位則表示一個字符的結(jié)束。這種用起始位開始

12、,停止位結(jié)束所構(gòu)成的一串信息稱為幀(frame)。比較適合于遠(yuǎn)距離串行通信。 常用于數(shù)據(jù)通信的傳輸方式有單工、半雙工、全雙工。單工方式:數(shù)據(jù)僅按一個固定方向傳送。因而這種傳輸方式的用途有限,常用于串行口的打印,數(shù)據(jù)傳輸與簡單系統(tǒng)間的數(shù)據(jù)采集。半雙工方式:數(shù)據(jù)可實現(xiàn)雙向傳送,但不能同時進行,實際的應(yīng)用是采用某種協(xié)議實現(xiàn)收/發(fā)開關(guān)轉(zhuǎn)換。全雙工方式:允許雙方同時進行數(shù)據(jù)雙向傳送,可以實時通信。本設(shè)計采用的是PC機與單片機的全雙工異步通信方式。具體方案如下:(1)Visual Basic是一種可視化的編程語言,利用Visual Basic中的控件建立一個用戶端的界面,供用戶進行選擇進入主程序界面。(2

13、)在Visual Basic主界面程序中添加mscomm控件,開發(fā)串口通信程序。(3)通過MCS-51系列單片機編寫串口通信協(xié)議。(4)單片機進行數(shù)碼管接口擴展,數(shù)碼管顯示PC機發(fā)送的數(shù)據(jù),并且將PC機發(fā)送的數(shù)據(jù)通過單片機回傳給PC機。即通過PC機的VB串口通信程序界面,從PC機鍵盤發(fā)送一個數(shù)傳給單片機則單片機控制的數(shù)碼管則可以顯示該數(shù),并且將發(fā)送的數(shù)據(jù)傳回PC機,若接受到的數(shù)據(jù)與發(fā)送的數(shù)據(jù)相同且與數(shù)碼管顯示的數(shù)據(jù)相同則表示發(fā)送成功。(5)由于RS-232接口與單片機的電氣特性不同,可通過MAX232芯片進行電平轉(zhuǎn)換,聯(lián)調(diào)單片機與PC機進行串口通信。2.2 MAX232的結(jié)構(gòu)與功能MAX232

14、 芯片是MAXIM 公司生產(chǎn)的,包含兩路接收器和驅(qū)動器的IC 芯片。RS-232C采用的是EIA電平,其規(guī)定如下:在TXD、RXD上規(guī)定邏輯1時,電壓為-3V -15V,邏輯0時,為+3V +15V。而單片機所用的是TTL+5V邏輯電平。MAX232 芯片內(nèi)部有一個電源電壓轉(zhuǎn)換器,可以把輸入的+ 5V 電壓變換為RS-232 輸出電平所需的-10 +10V 電壓。所以采用此芯片接口串行通信系統(tǒng)只需單一的 + 5V 電源就可以了。對于沒有- 12 + 12V 的場合,其適應(yīng)性更強。加之其價格適中,硬件接口簡單,所以被廣泛采用。其芯片引腳圖如下:圖1 MAX232引腳結(jié)構(gòu)其中引腳11,12為TTL

15、電平接口的收發(fā)引腳。13,14為RS-232C接口的收發(fā)引腳。2.3 MAX232實現(xiàn)PC機與單片機的聯(lián)調(diào)目前較為常用的RS-232C 9針串口在通信距離較近時,僅需3根線便可在兩個數(shù)字設(shè)備之間全雙工的傳送數(shù)據(jù),即需要TXD、RXD、GND即可完成。RS-232針腳的功能如下:TXD(pin 3):串口數(shù)據(jù)輸出RXD(pin 2):串口數(shù)據(jù)輸入RTS(pin 7):發(fā)送數(shù)據(jù)請求CTS(pin 8):清除發(fā)送DSR(pin 6):數(shù)據(jù)發(fā)送就緒DCD(pin 1):數(shù)據(jù)載波檢測DTR(pin 4):數(shù)據(jù)終端就緒GND(pin 5):地線RI (pin 9):載波偵測連線方式如下圖所示:MCS-51

16、 P3.0 P3.1 圖2 PC機與單片機連線方法3 Visual Basic開發(fā)串口通信程序設(shè)計 3.1mscomm控件實現(xiàn)串口通信的方法一般說來,計算機都有一個或多個串行端口,它們依次為Com1,Com2,這些串口還提供了外部設(shè)備與PC機進行數(shù)據(jù)傳輸和通信的通道,這些串口在CPU和外設(shè)之間充當(dāng)解釋器的角色。當(dāng)字符數(shù)據(jù)從CPU發(fā)送給外設(shè)時,這些字符數(shù)據(jù)將被轉(zhuǎn)換成串行比特流數(shù)據(jù);當(dāng)接收數(shù)據(jù)時,比特流數(shù)據(jù)被轉(zhuǎn)換為字符數(shù)據(jù)傳遞給CPU。而Visual Basic 是一種可視化的,面向?qū)ο蠛筒捎檬录?qū)動方式的結(jié)構(gòu)化高級程序設(shè)計語言,可用于開發(fā)Windows 環(huán)境下的各類應(yīng)用程序。Visual Bas

17、ic的版本分為普及版,企業(yè)版,專業(yè)版??梢赃M行串口通信程序開發(fā)的串行通信組件包含在企業(yè)版及專業(yè)版中。Visual Basic企業(yè)版及專業(yè)版中提供了串行端口控制mscomm來為應(yīng)用程序提供串行通信。該控件屏蔽了通信過程中的底層操作,可以設(shè)置、監(jiān)視mscomm控件的屬性和事件,結(jié)合Timer控件即可完成對串行口的初始化和數(shù)據(jù)的輸入輸出工作。由于Visual Basic的mscomm控件不會主動出現(xiàn)在工具箱中,因此可在Visual Basic工程界面中的工具箱中空白處單擊鼠標(biāo)右鍵選擇部件選項,在彈出的對話框中選擇添加Microsoft Comm Control 6.0 控件。 mscomm控件的主要

18、屬性如下:(1)Commport 設(shè)置并返回通訊端口號。端口號可以設(shè)置為116的任何數(shù),如mscomm.Commport=2表示設(shè)置當(dāng)前通訊端口為COM2。(2)Setting 設(shè)置并返回波特率、奇偶校驗、數(shù)據(jù)位、停止位。格式為mscomm.Setting=String。String是一個包含四部分的字符串:第一部分為波特率;第二部分為奇偶校驗,N表示不校驗,M表示符號校驗,E表示偶校驗,O表示奇校驗,S表示空格校驗;第三部分為數(shù)據(jù)位數(shù),其可選值為4,5,6,7,8;第四部分為停止位位數(shù),其可選值為1,1.5,2。例如Setting屬性的缺省值為“1200,N,8,1”。該屬性中各含義如下:波

19、特率:是一個衡量通信速度的參數(shù)。它表示每秒鐘傳送的bit的個數(shù)。例如200波特表示每秒鐘發(fā)送200個bit。當(dāng)提到時鐘周期時,就是指波特率。例如如果協(xié)議需要9600波特率,那么時鐘是9600Hz。這意味著串口通信在數(shù)據(jù)線上的采樣率為9600Hz。數(shù)據(jù)位:是衡量通信中實際數(shù)據(jù)位的參數(shù)。當(dāng)計算機發(fā)送一個信息包,實際的數(shù)據(jù)不會是8位的,標(biāo)準(zhǔn)的值是5、7和8位。如何設(shè)置取決于要傳送的信息。比如,標(biāo)準(zhǔn)的ASCII碼是0127(7位)。擴展的ASCII碼是0255(8位)。如果數(shù)據(jù)使用簡單的文本(標(biāo)準(zhǔn) ASCII碼),那么每個數(shù)據(jù)包使用7位數(shù)據(jù)。每個包是指一個字節(jié),包括開始/停止位,數(shù)據(jù)位和奇偶校驗位。由

20、于實際數(shù)據(jù)位取決于通信協(xié)議的選取,術(shù)語“包”指任何通信的情況。停止位:用于表示單個包的最后一位。典型的值為1,1.5和2位。由于數(shù)據(jù)是在傳輸線上定時的,并且每一個設(shè)備有其自己的時鐘,很可能在通信中兩臺設(shè)備間出現(xiàn)了小小的不同步。因此停止位不僅僅是表示傳輸?shù)慕Y(jié)束,并且提供計算機校正時鐘同步的機會。適用于停止位的位數(shù)越多,不同時鐘同步的容忍程度越大,但是數(shù)據(jù)傳輸率同時也越慢。奇偶校驗位:在串口通信中一種簡單的檢錯方式。有四種檢錯方式:偶、奇、高和低。當(dāng)然沒有校驗位也是可以的。對于偶和奇校驗的情況,串口會設(shè)置校驗(數(shù)據(jù)位后面的一位),用一個值確保傳輸?shù)臄?shù)據(jù)有偶個或者奇?zhèn)€邏輯高位。例如,如果數(shù)據(jù)是011

21、,那么對于偶校驗,校驗位為0,保證邏輯高的位數(shù)是偶數(shù)個。如果是奇校驗,校驗位位1,這樣就有3個邏輯高位。高位和低位不真正的檢查數(shù)據(jù),簡單置位邏輯高或者邏輯低校驗。這樣使得接收設(shè)備能夠知道一個位的狀態(tài),有機會判斷是否有噪聲干擾了通信或者是否傳輸和接收數(shù)據(jù)是否不同步。(3)Portopen 設(shè)置并返回通訊端口的狀態(tài),也可以打開和關(guān)閉端口。(4)Input 從接收緩沖區(qū)返回和刪除字符。該屬性在運行時為只讀。(5)InputLen 設(shè)置并返回每次Input屬性從接收緩沖區(qū)中讀取的字符數(shù)。InputLen屬性的缺省值為0。設(shè)置InputLen為0時,Input將讀取接收緩沖區(qū)的全部字符。(6)Outpu

22、t 向傳送緩沖區(qū)寫數(shù)據(jù)。要傳送的數(shù)據(jù)可是文本數(shù)據(jù)或二進制數(shù)據(jù)。(7)CommEvent 返回最近的通訊事件或錯誤。只要有通訊錯誤或事件發(fā)生錯誤時就會產(chǎn)生Oncomm事件。CommEvent屬性中存有該錯誤或事件的數(shù)值代碼。在VB開發(fā)串口程序時需多次用到Timer控件,其主要屬性如下:(1)Enabled 返回或設(shè)置一個值,該值用來確定一個窗體或控件否能夠?qū)τ脩舢a(chǎn)生的事件作出反應(yīng)。通過把Enabled設(shè)置為“False”來使Timer控件成為無效,將取消由控件的Interval屬性所建立的倒計時數(shù)。(2)Interval 返回或設(shè)置對Timer控件的計時事件調(diào)用間的毫秒數(shù)。Timer控件的Ena

23、bled屬性決定該控件是否對時間的推移作出響應(yīng)。將Enabled設(shè)置為“False”會關(guān)閉Timer控件,設(shè)置為“True”則打開Timer控件。當(dāng)Timer控件置為有效時,倒計時總是從其Interval屬性設(shè)置值開始。創(chuàng)建Timer事件程序。可通知VB在每次Interval到時該做什么。Timer控件和Enabled屬性設(shè)置為“True”時,VB將在Interval時間到后自動訪問Timer_Timer過程。為實現(xiàn)通信程序,須在VB開發(fā)環(huán)境下設(shè)置一個用做控制通信的窗體。窗體上主要有通信控件mscomm和Timer控件。VB的特點是事件驅(qū)動,定時器控件會定時觸發(fā)相應(yīng)事件的驅(qū)動程序。通信程序如下

24、:(1)在添加的mscomm控件的屬性中選擇CommPort的端口號為1。(若Comm1口被占用可選擇Comm2口)此屬性也可以通過代碼設(shè)置其程序如下:mscomm1.Commport1=1(2)設(shè)置握手協(xié)議即mscomm的HandShanking為0-ComNone (3)設(shè)置傳輸速度參數(shù)屬性Setting 為“1200,N,8,1”其意義(即通信協(xié)議)表示為所使用的通信端口是以每秒1200Bit的速度傳輸,不作字符校驗,每次數(shù)據(jù)位是8個Bit,而停止位是1個Bit。(4)設(shè)置兩個文本框TEXT1,TEXT2用于接收與發(fā)送數(shù)據(jù)。在添加一個Timer控件控制自動偵測接受數(shù)據(jù)。Timer控件的I

25、nterval屬性值為20。(5)打開通信端口:mscomm1.PortOpen = True(6)接收數(shù)據(jù)程序的實現(xiàn)方法:Private Sub Command4_Click()Dim Buf$Buf = Trim(MSCOMM1.Input)If Len(Buf) = 0 ThenText1.Text = ElseText1.Text = BufEnd IfEnd Sub(7)啟動自動偵測讀取數(shù)據(jù)的程序:Private Sub Command5_Click()Timer1.Enabled = Not Timer1.EnabledEnd SubPrivate Sub Timer1_Timer

26、()If mscomm1.InBufferCount 0 ThenText1.Text = Text1.Text + mscomm1.InputEnd IfEnd Sub(8)發(fā)送程序的實現(xiàn)方法:Private Sub Command1-Click()Comm1. Output = Text1. Text ;將發(fā)送區(qū)文本框中的內(nèi)容放入End Sub(9)清空接收區(qū)顯示數(shù)據(jù)Private Sub Command6_Click()Text1.Text = End sub(10)結(jié)束Private Sub Command 3-Click()Comm1. PortOpen = False End Su

27、b3.2 Visual Basic開發(fā)串口通信程序界面設(shè)計1、封面1的設(shè)計:(1)打開一個新的Visual Basic工程,在新建工程選項框中選擇標(biāo)準(zhǔn)EXE。在Form 屬性中的Picture中選擇添加圖片。這樣就完成了顯示屏幕中出現(xiàn)圖片的效果。初始化代碼為:Private Sub Form_Load()Set ball.Picture = LoadPicture(D:04計通1圖片00.jpg)X = 10Y = 10 ;定義添加圖片出現(xiàn)的起始位置 a = 30 b = 50End Sub (2)動態(tài)圖片的設(shè)計:在Form界面中添加一個Timer控件,設(shè)其Interval屬性值為20,ena

28、ble屬性為Ture 。這樣就實現(xiàn)了封面中類似屏保的圖片的移動。在Timer事件中的圖片動態(tài)顯示程序代碼:Private Sub Timer1_Timer()ball.Move X, YX = X + aY = Y + bIf X = Form2.Width - ball.Width Then a = -50If Y = Form2.Height - ball.Height Then b = -20If X = 0 Then a = 10If Y 30 Then X = 1If Y 15 Then Y = 1Label1.ForeColor = QBColor(Y)Label1.FontSiz

29、e = XEnd Sub (2)同理在在Form界面中添加一個計時器Timer( Timer3)控件,設(shè)其Interval屬性值為100。添加一個標(biāo)簽Label2設(shè)Caption屬性為“歡迎點擊進入” 此標(biāo)簽用于提示進入主界面。程序代碼為:Dim X, Y, a, b As SinglePrivate Sub Timer3_Timer()Static X, YY = Y + 1X = X + 1If X 40 Then X = 1If Y 15 Then Y = 1Label2.ForeColor = QBColor(Y)Label2.FontSize = XEnd Sub(3)移動圖片實現(xiàn)的

30、方案:添加1個計時器Timer (Timer1)控件設(shè)其Interval屬性值為100。添加Image1,Image2 ,Image3, Image4, Image5, Image6控件,Stretch屬性均為Ture, Image1,Image2加載PC機圖片,Image4, Image5添加單片機圖片。Image1,Image2,Image4, Image5的visible為False。這樣可以實現(xiàn)圖片從屏幕左邊逐漸右移并循環(huán)移動的效果。程序代碼為:Private Sub Timer1_Timer()If Image3.Left frmSplash.ScaleWidth ThenImage

31、3.Left = frmSplash.ScaleLeft - 200End IfImage3.Left = Image3.Left + 350If Image3.Picture = Image1.Picture ThenImage3.Picture = Image2.PictureElseImage3.Picture = Image1.PictureEnd IfIf Image6.Left frmSplash.ScaleWidth ThenImage6.Left = frmSplash.ScaleLeft - 200End IfImage6.Left = Image6.Left + 350If

32、 Image6.Picture = Image1.Picture ThenImage6.Picture = Image5.PictureElseImage6.Picture = Image4.PictureEnd IfEnd Sub圖4 界面1 3、選項對話框的設(shè)計在工具箱中空白處單擊鼠標(biāo)右鍵選擇部件選項,在彈出的對話框中選擇添加Sstab 控件。在該控件的屬性中分別設(shè)置標(biāo)題為“通用”、“緩存”、“硬件”。在每一個標(biāo)題下添加命令按鈕用以三個標(biāo)題的切換。選項對話框可以使得用戶隨時查看串口通信的參數(shù)信息。程序如下:Private Sub command1_Click()Dialog.Visible

33、 = FalseEnd SubPrivate Sub Command2_Click()Dialog.Visible = FalseEnd SubPrivate Sub Command3_Click()Dialog.Visible = FalseEnd Sub圖5 選項對話框4、主界面的設(shè)計(1)菜單的設(shè)計:新建一個form界面。通過工具欄的菜單編輯器選項編輯菜單,設(shè)計標(biāo)題為“啟動程序”、“字體”、“顏色”、“選項”然后通過菜單的Click事件調(diào)用各個程序。在工具箱中空白處單擊鼠標(biāo)右鍵選擇部件選項,在彈出的對話框中選擇添加2個CommonDiolag控件。單擊“字體”、“顏色”、“選項”后可以調(diào)

34、出各個對話框。程序代碼如下:顏色對話框程序代碼:Private Sub color_Click()CommonDialog1.Flags = 1CommonDialog1.color = BackColorCommonDialog1.Action = 3Text2.ForeColor = CommonDialog1.colorEnd Sub字體對話框程序代碼:Private Sub Fontname_Click()CommonDialog2.Flags = 3CommonDialog2.ShowFontText2.fontname = CommonDialog2.fontnameText2.F

35、ontSize = CommonDialog2.FontSizeText2.FontBold = CommonDialog2.FontBoldText2.FontItalic = CommonDialog2.FontItalicText2.FontUnderline = CommonDialog2.FontUnderlineText2.FontStrikethru = CommonDialog2.FontStrikethruEnd Sub(2)動態(tài)字幕的實現(xiàn)方案在主界面中添加一個picture 控件和一個Label標(biāo)簽與一計時器控件。Label標(biāo)簽的Caption屬性為“ 基于RS-232的單

36、片機與PC機串口通信實驗演示” Timer 控件設(shè)其Interval屬性值為100。將Label標(biāo)簽添加在picture 控件中,這樣實現(xiàn)了字幕自左端向右循環(huán)移動的效果。程序代碼為:Dim thetitle As String, counter1 As IntegerPrivate Sub Timer2_Timer()Dim str As Stringstr = Mid(thetitle, 1, counter1)If Len(str) = Len(thetitle) Thencounter1 = 0End IfLabel3.Caption = strcounter1 = counter1 +

37、 1End Sub(3)圖片交替顯示的實現(xiàn)方案:在主界面中添加Image1 ,Image2, Image3控件,Stretch屬性均為TureImage1,加載PC機圖片Image2添加單片機圖片。在加入一個Timer控件設(shè)其Interval屬性值為300。這樣實現(xiàn)單片機圖片與PC機圖片交替出現(xiàn)的效果。程序代碼如下:Private Sub Timer4_Timer()If Image3.Left Form1.ScaleWidth ThenImage3.Left = Form1.ScaleLeft - 200End IfImage3.Left = Image3.Left + 300If Imag

38、e3.Picture = Image1.Picture ThenImage3.Picture = Image2.PictureElseImage3.Picture = Image1.PictureEnd IfEnd Sub通過以上程序就可以完成Visual Basic實現(xiàn)串口通信的設(shè)計。圖6 主界面4單片機開發(fā)串口通信程序設(shè)計4.1 MCS-51單片機的串口結(jié)構(gòu)與功能MCS-51單片機的主要結(jié)構(gòu)包含以下幾個部分:1、中央處理器(CPU):MCS-51的CPU能處理8位二進制數(shù)或代碼。2、內(nèi)部數(shù)據(jù)存儲器(RAM):8051芯片共有256個RAM單元,其中后128單元被專用寄存器占用,能作為寄存器

39、供用戶使用的只是前128單元,用于存放可讀寫的數(shù)據(jù)。因此通常所說的內(nèi)部數(shù)據(jù)存儲器就是指前128單元,簡稱內(nèi)部RAM。地址范圍為00HFFH(256B)。是一個多用多功能數(shù)據(jù)存儲器,有數(shù)據(jù)存儲、通用工作寄存器、堆棧、位地址等空間。3、內(nèi)部程序存儲器(ROM): 8051內(nèi)部有4KB的ROM,用于存放程序、原始數(shù)據(jù)或表格。4、定時器/計數(shù)器:8051共有2個16位的定時器/計數(shù)器,以實現(xiàn)定時或計數(shù)功能,并以其定時或計數(shù)結(jié)果對計算機進行控制。定時時靠內(nèi)部分頻時鐘頻率計數(shù)實現(xiàn),做計數(shù)器時,對P3.4(T0)或P3.5(T1)端口的低電平脈沖計數(shù)。5、并行I/O口:MCS-51共有4個8位的I/O口(P

40、0、P1、P2、P3)以實現(xiàn)數(shù)據(jù)的輸入輸出。6、串行口:MCS-51有一個全雙工的串行口,以實現(xiàn)單片機和其它設(shè)備之間的串行數(shù)據(jù)傳送。該串行口功能較強,既可作為全雙工異步通信收發(fā)器使用,也可作為移位器使用。RXD( P3.0)腳為接收端口,TXD(P3.1)腳為發(fā)送端口。7、中斷控制系統(tǒng):MCS-51單片機的中斷功能較強,以滿足不同控制應(yīng)用的需要。共有5個中斷源,即外中斷2個,定時中斷2個,串行中斷1個,全部中斷分為高級和低級共兩二個優(yōu)先級別。8、時鐘電路:MCS-51芯片的內(nèi)部有時鐘電路,但石英晶體和微調(diào)電容需外接。時鐘電路為單片機產(chǎn)生時鐘脈沖序列。系統(tǒng)允許的晶振頻率為12MHZ。 MCS-5

41、1單片機內(nèi)部有一個全雙工的串行通信口,即串行接收和發(fā)送緩沖器(SBUF),這兩個在物理上獨立的接收發(fā)送器,既可以接收數(shù)據(jù)也可以發(fā)送數(shù)據(jù)。但接收緩沖器只能讀出不能寫入,而發(fā)送緩沖器則只能寫入不能讀出,這個通信口既可以用于網(wǎng)絡(luò)通信,亦可實現(xiàn)串行異步通信,還可以構(gòu)成同步移位寄存器使用。如果在串行口的輸入輸出引腳上加上電平轉(zhuǎn)換器,就可方便地構(gòu)成標(biāo)準(zhǔn)的RS-232C接口. 該串行口功能較強,既可作為全雙工異步通信收發(fā)器使用,也可作為移位器使用。RXD( P3.0)腳為接收端口,TXD(P3.1)腳為發(fā)送端口。MCS-51單片機串行口寄存器結(jié)構(gòu)圖7所示。SBUF為串行口的收發(fā)緩沖器,它是一個可尋址的專用寄

42、存器,其中包含了接收器和發(fā)送器寄存器,可以實現(xiàn)全雙工通信。MCS-51的串行數(shù)據(jù)傳輸很簡單,只要向發(fā)送緩沖器寫入數(shù)據(jù)即可發(fā)送數(shù)據(jù)。從接收緩沖器讀出數(shù)據(jù)即可接收數(shù)據(jù)。其內(nèi)部結(jié)構(gòu)如下:圖7 MCS-51單片機串行口寄存器結(jié)構(gòu)串行口控制寄存器(SCON)結(jié)構(gòu)如下: 表1串行口控制寄存器(SCON) D7 D6 D5 D4 D3 D2 D1 D0SMOSM1SM2RENTB8RB8TIRI各控制位功能介紹如下: (1)SM0、SM1:串行口工作方式控制位。 SM0、SM1:工作方式 00 方式0 01 方式1 10 方式2 11 方式3 (2)SM2:多機通信控制位。 多機通信是工作于方式2和方式3,

43、SM2位主要用于方式2和方式3。接收狀態(tài),當(dāng)串行口工作于方式2或3,以及SM2=1時,只有當(dāng)接收到第9位數(shù)據(jù)(RB8)為1時,才把接收到的前8位數(shù)據(jù)送入SBUF,且置位RI發(fā)出中斷申請,否則會將接受到的數(shù)據(jù)放棄。當(dāng)SM2=0時,就不管第位數(shù)據(jù)是0還是1,都難得數(shù)據(jù)送入SBUF,并發(fā)出中斷申請。 工作于方式0時,SM2必須為0。 (3)REN:允許接收位。 REN用于控制數(shù)據(jù)接收的允許和禁止,REN=1時,允許接收,REN=0時,禁止接收。 (4)TB8:發(fā)送接收數(shù)據(jù)位8。 在方式2和方式3中,TB8是要發(fā)送的即第9位數(shù)據(jù)位。在多機通信中同樣亦要傳輸這一位,并且它代表傳輸?shù)牡刂愤€是數(shù)據(jù),TB8=

44、0為數(shù)據(jù),TB8=1時為地址。 (5)RB8:接收數(shù)據(jù)位8。 在方式2和方式3中,RB8存放接收到的第9位數(shù)據(jù),用以識別接收到的數(shù)據(jù)特征。 (6)TI:發(fā)送中斷標(biāo)志位。 可尋址標(biāo)志位。方式0時,發(fā)送完第8位數(shù)據(jù)后,由硬件置位,其它方式下,在發(fā)送或停止位之前由硬件置位,因此,TI=1表示幀發(fā)送結(jié)束,TI可由軟件清“0”。 (7)RI:接收中斷標(biāo)志位。 可尋址標(biāo)志位。接收完第8位數(shù)據(jù)后,該位由硬件置位,在其他工作方式下,該位由硬件置位,RI=1表示幀接收完成。PCON主要是為CHMOS型單片機的電源控制而設(shè)置的專用寄存器,單元地址是87H, SMOD=1則波特率加倍。其結(jié)構(gòu)格式如下: 表2電源管理

45、寄存器結(jié)構(gòu)PCOND7D6D5D4D3D2D1D0位符號SMOD-GF1GF0PDIDL中斷允許寄存器IE: ES為串行中斷允許控制位,ES=1允許串行中斷,ES=0,禁止串行中斷。 表3中斷允許寄存器結(jié)構(gòu)位符號EA-ESET1EX1ET0EX0位地址AFHAEHADHACHABHAAHA9HA8H因為預(yù)先設(shè)置傳輸數(shù)據(jù)時是8個數(shù)據(jù)位,1個停止位。所以可設(shè)置串口工作方式1,方式1是一個8位的異步串行通信接口。SCON控制寄存器的初值為: 表4 SCON控制寄存器的初值 D7 D6 D5 D4 D3 D2 D1 D0SMOSM1SM2RENTB8RB8TIRI01010010串口的初始化程序為:m

46、ov scon, #52h ;串口工作在方式14.2波特率的產(chǎn)生與通信協(xié)議的制定MCS-51的單片機內(nèi)有兩個16位可編程的定時/計數(shù)器,它們具有四種工作方式,其控制字和狀態(tài)字均在相應(yīng)的特殊功能寄存器中,通過對控制寄存器的編程,就可方便地選擇適當(dāng)?shù)墓ぷ鞣绞?。MCS-51單片機內(nèi)部的定時/計數(shù)器的結(jié)構(gòu)中,定時器T0是由特性功能寄存器TL0(低8位)和TH0(高8位)構(gòu)成,定時器T1由特性功能寄存器TL1(低8位)和TH1(高8位)構(gòu)成。特殊功能寄存器TMOD控制定時寄存器的工作方式,TCON則用于控制定時器T0和T1的啟動和停止計數(shù),同時管理定時器T0和T1的溢出標(biāo)志等。程序開始時需對TL0、TH

47、0、TL1和TH1進行初始化編程,以定義它們的工作方式和控制T0和T1的計數(shù)。 TMOD和TCON這兩個特殊功能寄存器的格式參見下表:TMOD用于控制T0、T1的工作方式: 表5 TMOD寄存器結(jié)構(gòu)D7D6D5D4D3D2D1D0GATAC/TM1M0GATAC/TM1M0T1方式字段T0方式字段其中低四位用于T0,高四位用于T1。M1、M0是工作方式的控制位,當(dāng)M1M0=10時為工作方式2(為常數(shù)自動重裝入的8為定時/計數(shù)器)GATE=0時,只要用軟件TR0或TR1置1就可以啟動定時器,而GATE=1時只有INT0或INT1引腳為高電平且由軟件使TR0或TR1置1時才能啟動定時器。C/T=0

48、時為定時方式,C/T=1時為計數(shù)方式。定時器控制積存器TCON,字節(jié)地址為88H,位地址為88H8FH,其格式如表6: 表6TCON結(jié)構(gòu)D7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1IE0IT0TR1由軟件置位和清零來啟動或關(guān)閉T1。當(dāng)GATE=0時,TR1=1時,允許T0計數(shù),當(dāng)GATE=1時,僅當(dāng)TR1=1時且INT0為高電平時才可啟動TR0計數(shù)。當(dāng)M1M0=10時,定時/計數(shù)器處于工作方式2.此時定時器的等效電路如圖8所示。圖8 定時/計數(shù)器工作方式2的等效電路工作方式0和工作方式1的最大特點就是計數(shù)溢出后,計數(shù)器為全0,因而循環(huán)定時或循環(huán)計數(shù)應(yīng)用時就存在反復(fù)設(shè)置初

49、值的問題,這給程序設(shè)計帶來許多不便,同時也會影響計時精度,工作方式2就針對這個問題而設(shè)置,它具有自動重裝載功能,即自動加載計數(shù)初值,所以也有的文獻(xiàn)稱之為自動重加載工作方式。在這種工作方式中,16位計數(shù)器分為兩部分,即以TL0為計數(shù)器,以TH0作為預(yù)置寄存器,初始化時把計數(shù)初值分別加載至TL0和TH0中,當(dāng)計數(shù)溢出時,不再象方式0和方式1那樣需要“人工干預(yù)”,由軟件重新賦值,而是由預(yù)置寄存器TH以硬件方法自動給計數(shù)器TL0重新加載。 程序初始化時,給TL0和TH0同時賦以初值,當(dāng)TL0計數(shù)溢出時,置位TF0的同時把預(yù)置寄存器TH0中的初值加載給TL0,TL0重新計數(shù)。如此反復(fù),這樣省去了程序不斷

50、需給計數(shù)器賦值的麻煩,而且計數(shù)準(zhǔn)確度也提高了。但這種方式也有其不利的一面,就是這樣一來的計數(shù)結(jié)構(gòu)只有8位,計數(shù)值有限,最大只能到255。所以這種工作方式很適合于那些重復(fù)計數(shù)的應(yīng)用場合。例如我們可以通過這樣的計數(shù)方式產(chǎn)生中斷,從而產(chǎn)生一個固定頻率的脈沖。也可以當(dāng)作串行數(shù)據(jù)通信的波特率發(fā)送器使用。當(dāng)M1M0=10時,定時/計數(shù)器處于工作方式2在種情況下,定時/計數(shù)器1通常作為串行口的波特率發(fā)生器使用,以確定串行通信的速率。當(dāng)作波特率發(fā)生器使用時,只需設(shè)置好工作方式,即可自動運行。本設(shè)計使用定時/計數(shù)器1。預(yù)設(shè)數(shù)據(jù)傳送速率為1200b/s。 SMOD=0計算定時器1工作方式2初值的公式為X=256-

51、fos*(SMOD+1)/384*波特率。Foc=6.144MHZ,定時器處值為X=0F3H。定時器產(chǎn)生波特率的其程序代碼為:mov tmod, #20h ;定時器1設(shè)為工作方式2 mov th1,#0f3h ;定時器處值 mov tl1,#0f3h ;8位重裝值SETB TR1 ;啟動定時器1該程序設(shè)置了數(shù)據(jù)傳送速率為1200b/s。4.3單片機程序設(shè)計在設(shè)置好串口工作方式與波特率的基礎(chǔ)上,把PC機發(fā)送的數(shù)據(jù)傳給數(shù)碼管可以顯示發(fā)送的數(shù)據(jù),并且回傳給PC機。通過觀察數(shù)碼管的顯示與回傳的數(shù)據(jù)進行比較是否一致就可以驗證串口通信的正確性。通過P3.3、P3.4口的位選控制2位數(shù)碼管顯示數(shù)據(jù)。主要程序

52、流程圖: 開始 串口初始化 啟動定時器 N Ri是否為1 Y 清除RI,接收數(shù)據(jù) 發(fā)送數(shù)據(jù) 將接收數(shù)據(jù)進行顯示 圖9 主程序流程圖程序源代碼如下:st_addr equ 4000hport equ 1b30h org st_addr ljmp mainmain: clr p3.4 ;清p3.4 clr p3.3 ;清p3.3 mov tmod, #20h ;定時器1工作方式2 mov scon, #52h ;串口工作方式1 mov th1,#0f3h ;定時器處值波特率1200b/s mov tl1,#0f3h setb tr1 ;啟動定時器 jnb ri,load1 ;判斷RI是否為1loa

53、d: clr ri ;清RI clr p3.3 ;清p3.3 clr p3.4 ;清p3.4 mov a,sbuf ;傳輸數(shù)據(jù) mov r0,a ;數(shù)據(jù)顯示 mov sbuf,a ;回傳數(shù)據(jù) jnb ti,$ ; 判斷TI是否為1 clr ti load1:mov a,r0 swap a ;高字節(jié)與低字節(jié)交換內(nèi)容 anl a,#0fh ;屏蔽高四位 mov dptr,#table2 movc a,a+dptr ;查表 mov p1,a ;送數(shù)碼管顯示 setb p3.4 ;P3.4置1 lcall delay ;調(diào)用延時子程序 clr p3.4 ;清P3.4 mov a,r0 anl a,#0

54、fh ;取高四位 mov dptr,#table2 movc a,a+dptr ;查表 mov p1,a ;送于數(shù)碼管顯示 setb p3.3 lcall delay ;調(diào)用延時子程序 clr p3.3 mov a,r0 jnb ri,load1 ; jmp loaddelay:mov r7,#0ffh ;延時程序ys1: mov r6,#0ffh djnz r6,$ djnz r7,ys1 rettable2:db 3fh,06h,5bh,4fh,66h,6dh db 7dh,07h,7fh,6fh,77h,7ch,39h,5eh,79h,71h end5結(jié)論通過Visual Basic中的

55、mscomm控件開發(fā)的串口通信程序,并通過單片機編寫的通信協(xié)議在進行電平轉(zhuǎn)換的基礎(chǔ)上就可以實現(xiàn)串口通信。PC機作為上位機發(fā)送一個數(shù)據(jù)后,經(jīng)過串口傳送給單片機,單片機將數(shù)據(jù)再通過P1口傳給數(shù)碼管,通過位選使得兩位數(shù)碼管顯示數(shù)據(jù)。單片機再將數(shù)據(jù)回傳給PC機,回傳的數(shù)據(jù)與發(fā)送的數(shù)據(jù)和數(shù)碼管顯示一致,說明基于RS-232C的串口通信成功。謝辭畢業(yè)設(shè)計是一項實踐性很強的工作,對動手能力和自學(xué)能力要求很高,由于本人缺乏這方面的鍛煉,在設(shè)計過程中遇到了很多困難,而指導(dǎo)教師師給予了我很大的幫助,老師及時地、耐心地解答了我們在設(shè)計過程中遇到的各種問題,使我受益匪淺,并且在學(xué)習(xí)能力方面得到了很大的提高。這也是我人

56、生中一次重要的鍛煉老師親切隨和,治學(xué)嚴(yán)謹(jǐn),在我的心里留下深刻的影響。在整個畢業(yè)設(shè)計中當(dāng)我們遇到問題時,呂老師一直是很熱情的在給予指導(dǎo)。在此我要向呂老師表示我衷心的感謝與敬意。參考文獻(xiàn)1李華. MCS51系列單片機實用接口技術(shù)M . 北京北京航空航天大學(xué)出版社, 19932朱明宇,武峰. 8031單片機主從式數(shù)據(jù)采集系統(tǒng)設(shè)計3求實科技,仵浩, 齊燕杰等. Visual Basic 串口通信工程開發(fā)實例導(dǎo)航M. 北京: 人民郵電出版社, 2002.4范逸之, 陳立元, 孫德營等. 利用Visual Basic 實現(xiàn)串并行通信技術(shù)M. 北京: 清華大學(xué)出版社, 2001.5李肇慶,韓濤. 串行端口技術(shù)M . 北京:國防工業(yè)出版社,2004.6美Evangelos Petroutsos 著. 邱仲潘譯. Visual Basic 6 從入門到精通M. 北京: 電子工業(yè)出版社, 1999.7范逸之. Visual Basic 與RS232 串行

展開閱讀全文
溫馨提示:
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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!