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

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

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

9 積分

下載資源

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

資源描述:

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

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

2、 mscomm控件可以開發(fā)串口通信程序界面,進行串口通信的實時觀測,并利用MAX232進行電平轉換與單片機相連。通過單片機編寫通信協議就可以實現PC機與單片機之間的數據傳送,從而實現基于RS-232C的串口通信控制。 關鍵詞: 單片機 MAX232 RS-232C 串口通信 Visual Basic Serial Port Communication Based on RS-232C Abstract Alon

3、g with the application of computer system and the development of microcomputer network, Communication is 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 transmit

4、ted the information with bit by bit ,it only uses a few line and also can use the ready-made telephone 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 microc

5、omputer communication widely .The realization of data communication between PC and single-chip can use 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

6、 communication and carry on real-time observation .Using MAX232 to realize the level conversion and connect 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 communi

7、cation; Visual Basic 目 錄 1引言 1 2 Visual Basic與單片機實現串口通信的總體設計方案 2 2.1 Visual Basic與單片機串口通信功能的實現方法 2 2.2 MAX232的結構與功能 3 2.3 MAX232實現PC機與單片機的聯調 3 3 Visual Basic開發(fā)串口通信程序設計 5 3.1mscomm控件實現串口通信的方法 5 3.2 Visual Basic開發(fā)串口通信程序界面設計 8 4單片機開發(fā)串口通信程序設計 15 4.1 MCS-51單片機的串口結構與功能 15 4.2波特率的產生與通信協議的

8、制定 18 4.3單片機程序設計 20 5結論 23 謝辭 24 參考文獻 25 附錄 26 外文資料 35 1引言 不同的獨立系統(tǒng)經由線路相互交換數據便是通信。通信的形式可以區(qū)分為兩種,一種是并行傳輸方式的通信,另一種則為串行傳輸方式的通信。所謂并行通信是指一次傳輸8位(1個字節(jié));而串行通信一次只傳輸1位。計算機與計算機或計算機與終端之間的數據傳送可以采用串行通信和并行通信二種方式。由于串行通信方式具有使用線路少、成本低,特別是在遠程傳輸時,避免了多條線路特性的不一致而被廣泛采用。 在串行通信時,要求通訊雙方都采用一個標準接口,使不同的設備可以方便地連接起來進行通

9、信。 RS-232C接口(又稱 EIA RS-232-C)是目前最常用的一種串行通信接口。 RS-232C標準是美國EIA(電子工業(yè)聯合會)與BELL等公司一起開發(fā)的1969年公布的通信協議。它適合于數據傳輸速率在0~20000b/s范圍內的通信。這個標準對串行通信接口的有關問題,如信號線功能、電器特性都作了明確規(guī)定。大多數通信設備廠商都生產與RS-232C制式兼容的通信設備。RS-485也是一種常用的通信標準,在要求通信距離為幾十米到上千米時,廣泛采用RS-485 串行總線標準。RS-485采用平衡發(fā)送和差分接收,因此具有抑制共模干擾的能力。但RS-232C由于實現較為簡單,而且價格上也便

10、宜很多,可以實現全雙工的實時通信。因此,它作為一種標準,目前已在微機通信接口中被廣泛采用。 PC機與單片機相結合在工業(yè)監(jiān)控、數據采集和實時控制系統(tǒng)中應用廣泛。其中,單片機系統(tǒng)作為從機進行數據采集和執(zhí)行控制,而PC機作為主機進行發(fā)送命令、實時檢測、數據存儲、動態(tài)顯示等工作。利用Visual Basic中的mscomm 控件可實現與單片機的串行通信。其中可利用VB開發(fā)串口通信程序,單片機編寫通信協議就可實現雙方數據的傳送與接收。 2 Visual Basic與單片機實現串口通信的總體設計方案 2.1 Visual Basic與單片機串口通

11、信功能的實現方法 串行通信的數據是逐位傳送的,發(fā)送方發(fā)送的每一位都具有因定的時間間隔,這就要求接收方也要按照發(fā)送方同樣的時間間隔來接收每一位。不僅如此,接收方還要確定一個信息組的開始和結束。為此,串行通信對傳送數據的格式作了嚴格的規(guī)定。不同的串行通信方式具有不同的數據格式。常用的兩種基本串行通信方式有同步通信和異步通信。 所謂同步通信是指在約定的通信速率下,發(fā)送端和接收端的時鐘信號頻率和相信始終保持一致(同步),這就保證了通信雙方在發(fā)送和接收數據時具有完全一致的定時關系。同步通信傳送信息的位數幾乎不受限制,通常一次通信傳的數據有幾十到幾千個字節(jié),通信效率較高。但它要求在通信中保持精確的同步

12、時鐘,所以其發(fā)送器和接收器比較復雜,成本也較高,一般用于傳送速率要求較高的場合。 異步通信是指通信中兩個字符之間的時間間隔是不固定的,而在一個字符內各位的時間間隔是固定的。異步通信規(guī)定字符由起始位(start bit)、數據位(data bit)、奇偶校驗位(parity)和停止位(stop bit)組成。起始位表示一個字符的開始,接收方可用起始位使自己的接收時鐘與數據同步。停止位則表示一個字符的結束。這種用起始位開始,停止位結束所構成的一串信息稱為幀(frame)。比較適合于遠距離串行通信。 常用于數據通信的傳輸方式有單工、半雙工、全雙工。單工方式:數據僅按一個固定方向傳送。因而這種

13、傳輸方式的用途有限,常用于串行口的打印,數據傳輸與簡單系統(tǒng)間的數據采集。半雙工方式:數據可實現雙向傳送,但不能同時進行,實際的應用是采用某種協議實現收/發(fā)開關轉換。全雙工方式:允許雙方同時進行數據雙向傳送,可以實時通信。 本設計采用的是PC機與單片機的全雙工異步通信方式。具體方案如下: (1)Visual Basic是一種可視化的編程語言,利用Visual Basic中的控件建立一個用戶端的界面,供用戶進行選擇進入主程序界面。 (2)在Visual Basic主界面程序中添加mscomm控件,開發(fā)串口通信程序。 (3)通過MCS-51系列單片機編寫串口通信協議。 (4)單片機進行數碼

14、管接口擴展,數碼管顯示PC機發(fā)送的數據,并且將PC機發(fā)送的數據通過單片機回傳給PC機。即通過PC機的VB串口通信程序界面,從PC機鍵盤發(fā)送一個數傳給單片機則單片機控制的數碼管則可以顯示該數,并且將發(fā)送的數據傳回PC機,若接受到的數據與發(fā)送的數據相同且與數碼管顯示的數據相同則表示發(fā)送成功。 (5)由于RS-232接口與單片機的電氣特性不同,可通過MAX232芯片進行電平轉換,聯調單片機與PC機進行串口通信。 2.2 MAX232的結構與功能 MAX232 芯片是MAXIM 公司生產的,包含兩路接收器和驅動器的IC 芯片。RS-232C采用的是EIA電平,其規(guī)定如下:在TXD、RXD上規(guī)定邏

15、輯1時,電壓為-3V~ -15V,邏輯0時,為+3V~ +15V。而單片機所用的是TTL+5V邏輯電平。MAX232 芯片內部有一個電源電壓轉換器,可以把輸入的+ 5V 電壓變換為RS-232 輸出電平所需的-10~ +10V 電壓。所以采用此芯片接口串行通信系統(tǒng)只需單一的 + 5V 電源就可以了。對于沒有- 12~ + 12V 的場合,其適應性更強。加之其價格適中,硬件接口簡單,所以被廣泛采用。其芯片引腳圖如下: 圖1 MAX232引腳結構 其中引腳11,12為TTL電平接口的收發(fā)引腳。13,14為RS-232C接口的收發(fā)引腳。 2.3

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

17、 P3.0 P3.1 圖2 PC機與單片機連線方法 3 Visual Basic開發(fā)串口通信程序設計 3.1mscomm控件實現串口通信的方法 一般說來,計算機都有一個或多個串行端口,它們依次為Com1,Com2……,這些串口還提供了外部設備與PC機進行數據傳輸和通信的通道,這些串口在CPU和外設之間充當解釋器的角色。當字符數據從CPU發(fā)送給外設時,這些字符數據將被轉換成串行比特流數據;當接收數據時,比特流數據被轉換為字符數據傳遞給CPU。

18、而Visual Basic 是一種可視化的,面向對象和采用事件驅動方式的結構化高級程序設計語言,可用于開發(fā)Windows 環(huán)境下的各類應用程序。Visual Basic的版本分為普及版,企業(yè)版,專業(yè)版??梢赃M行串口通信程序開發(fā)的串行通信組件包含在企業(yè)版及專業(yè)版中。 Visual Basic企業(yè)版及專業(yè)版中提供了串行端口控制mscomm來為應用程序提供串行通信。該控件屏蔽了通信過程中的底層操作,可以設置、監(jiān)視mscomm控件的屬性和事件,結合Timer控件即可完成對串行口的初始化和數據的輸入輸出工作。由于Visual Basic的mscomm控件不會主動出現在工具箱中,因此可在Visual B

19、asic工程界面中的工具箱中空白處單擊鼠標右鍵選擇部件選項,在彈出的對話框中選擇添加Microsoft Comm Control 6.0 控件。 mscomm控件的主要屬性如下: (1)Commport 設置并返回通訊端口號。端口號可以設置為1~16的任何數,如mscomm.Commport=2表示設置當前通訊端口為COM2。 (2)Setting 設置并返回波特率、奇偶校驗、數據位、停止位。格式為mscomm.Setting=String。String是一個包含四部分的字符串:第一部分為波特率;第二部分為奇偶校驗,N表示不校驗,M表示符號校驗,E表示偶校驗,O表示奇校驗,S表

20、示空格校驗;第三部分為數據位數,其可選值為4,5,6,7,8;第四部分為停止位位數,其可選值為1,1.5,2。例如Setting屬性的缺省值為“1200,N,8,1”。該屬性中各含義如下: 波特率:是一個衡量通信速度的參數。它表示每秒鐘傳送的bit的個數。例如200波特表示每秒鐘發(fā)送200個bit。當提到時鐘周期時,就是指波特率。例如如果協議需要9600波特率,那么時鐘是9600Hz。這意味著串口通信在數據線上的采樣率為9600Hz。 數據位:是衡量通信中實際數據位的參數。當計算機發(fā)送一個信息包,實際的數據不會是8位的,標準的值是5、7和8位。如何設置取決于要傳送的信息。比如,標準的ASC

21、II碼是0~127(7位)。擴展的ASCII碼是0~255(8位)。如果數據使用簡單的文本(標準 ASCII碼),那么每個數據包使用7位數據。每個包是指一個字節(jié),包括開始/停止位,數據位和奇偶校驗位。由于實際數據位取決于通信協議的選取,術語“包”指任何通信的情況。 停止位:用于表示單個包的最后一位。典型的值為1,1.5和2位。由于數據是在傳輸線上定時的,并且每一個設備有其自己的時鐘,很可能在通信中兩臺設備間出現了小小的不同步。因此停止位不僅僅是表示傳輸的結束,并且提供計算機校正時鐘同步的機會。適用于停止位的位數越多,不同時鐘同步的容忍程度越大,但是數據傳輸率同時也越慢。 奇偶校驗位:在串口

22、通信中一種簡單的檢錯方式。有四種檢錯方式:偶、奇、高和低。當然沒有校驗位也是可以的。對于偶和奇校驗的情況,串口會設置校驗(數據位后面的一位),用一個值確保傳輸的數據有偶個或者奇?zhèn)€邏輯高位。例如,如果數據是011,那么對于偶校驗,校驗位為0,保證邏輯高的位數是偶數個。如果是奇校驗,校驗位位1,這樣就有3個邏輯高位。高位和低位不真正的檢查數據,簡單置位邏輯高或者邏輯低校驗。這樣使得接收設備能夠知道一個位的狀態(tài),有機會判斷是否有噪聲干擾了通信或者是否傳輸和接收數據是否不同步。 (3)Portopen 設置并返回通訊端口的狀態(tài),也可以打開和關閉端口。 (4)Input 從接收緩沖區(qū)返回和刪除字符。

23、該屬性在運行時為只讀。 (5)InputLen 設置并返回每次Input屬性從接收緩沖區(qū)中讀取的字符數。InputLen屬性的缺省值為0。設置InputLen為0時,Input將讀取接收緩沖區(qū)的全部字符。 (6)Output 向傳送緩沖區(qū)寫數據。要傳送的數據可是文本數據或二進制數據。 (7)CommEvent 返回最近的通訊事件或錯誤。只要有通訊錯誤或事件發(fā)生錯誤時就會產生Oncomm事件。CommEvent屬性中存有該錯誤或事件的數值代碼。 在VB開發(fā)串口程序時需多次用到Timer控件,其主要屬性如下: (1)Enabled 返回或設置一個值,該值用來確定一個窗體或控件否能夠對用戶

24、產生的事件作出反應。通過把Enabled設置為“False”來使Timer控件成為無效,將取消由控件的Interval屬性所建立的倒計時數。 (2)Interval 返回或設置對Timer控件的計時事件調用間的毫秒數。Timer控件的Enabled屬性決定該控件是否對時間的推移作出響應。將Enabled設置為“False”會關閉Timer控件,設置為“True”則打開Timer控件。當Timer控件置為有效時,倒計時總是從其Interval屬性設置值開始。創(chuàng)建Timer事件程序??赏ㄖ猇B在每次Interval到時該做什么。Timer控件和Enabled屬性設置為“True”時,VB將在In

25、terval時間到后自動訪問Timer_Timer過程。 為實現通信程序,須在VB開發(fā)環(huán)境下設置一個用做控制通信的窗體。窗體上主要有通信控件mscomm和Timer控件。VB的特點是事件驅動,定時器控件會定時觸發(fā)相應事件的驅動程序。通信程序如下: (1)在添加的mscomm控件的屬性中選擇CommPort的端口號為1。(若Comm1口被占用可選擇Comm2口)此屬性也可以通過代碼設置其程序如下: mscomm1.Commport1=1 (2)設置握手協議即mscomm的HandShanking為0-ComNone (3)設置傳輸速度參數屬性Setting 為“1200,N,8,1

26、”其意義(即通信協議)表示為所使用的通信端口是以每秒1200Bit的速度傳輸,不作字符校驗,每次數據位是8個Bit,而停止位是1個Bit。 (4)設置兩個文本框TEXT1,TEXT2用于接收與發(fā)送數據。在添加一個Timer控件控制自動偵測接受數據。Timer控件的Interval屬性值為20。 (5)打開通信端口: mscomm1.PortOpen = True (6)接收數據程序的實現方法: Private Sub Command4_Click() Dim Buf$ Buf = Trim(MSCOMM1.Input) If Len(Buf) = 0 Then Text1.T

27、ext = "" Else Text1.Text = Buf End If End Sub (7)啟動自動偵測讀取數據的程序: Private Sub Command5_Click() Timer1.Enabled = Not Timer1.Enabled End Sub Private Sub Timer1_Timer() If mscomm1.InBufferCount > 0 Then Text1.Text = Text1.Text + mscomm1.Input End If End Sub (8)發(fā)送程序的實現方法: Private Sub Comman

28、d1-Click() Comm1. Output = Text1. Text ;將發(fā)送區(qū)文本框中的內容放入 End Sub (9)清空接收區(qū)顯示數據 Private Sub Command6_Click() Text1.Text = "" End sub (10)結束 Private Sub Command 3-Click() Comm1. PortOpen = False End Sub 3.2 Visual Basic開發(fā)串口通信程序界面設計 1、封面1的設計: (1)打開一個新的Visual Basic工程,在新建工程選項框中選擇標準EXE。在For

29、m 屬性中的Picture中選擇添加圖片。這樣就完成了顯示屏幕中出現圖片的效果。 初始化代碼為: Private Sub Form_Load() Set ball.Picture = LoadPicture("D:\04計通1\圖片\00.jpg") X = 10 Y = 10 ;定義添加圖片出現的起始位置 a = 30 b = 50 End Sub (2)動態(tài)圖片的設計: 在

30、Form界面中添加一個Timer控件,設其Interval屬性值為20,enable屬性為Ture 。這樣就實現了封面中類似屏保的圖片的移動。在Timer事件中的圖片動態(tài)顯示程序代碼: Private Sub Timer1_Timer() ball.Move X, Y X = X + a Y = Y + b If X >= Form2.Width - ball.Width Then a = -50 If Y >= Form2.Height - ball.Height Then b = -20 If X <= 0 Then a = 10 If Y <= 0 Then b = 20

31、 End Sub (3)添加兩個標簽分別設Caption屬性為“您好!歡迎使用!”“下一步”來顯示文本。 圖3封面1 2、界面1的設計: (1)動態(tài)標簽字幕顏色變換放大的實現: 在Form界面中添加一個計時器Timer控件,設其Interval屬性值為100。再添加一個標簽設Caption屬性為“Visual Basic與單片機的串口通信演示”。 程序代碼為: Dim X, Y, a, b As Single Private Sub Timer2_Timer() Static X, Y Y = Y +

32、1 X = X + 1 If X > 30 Then X = 1 If Y > 15 Then Y = 1 Label1.ForeColor = QBColor(Y) Label1.FontSize = X End Sub (2)同理在在Form界面中添加一個計時器Timer( Timer3)控件,設其Interval屬性值為100。添加一個標簽Label2設Caption屬性為“歡迎點擊進入” 此標簽用于提示進入主界面。 程序代碼為: Dim X, Y, a, b As Single Private Sub Timer3_Timer() Static X, Y Y

33、= Y + 1 X = X + 1 If X > 40 Then X = 1 If Y > 15 Then Y = 1 Label2.ForeColor = QBColor(Y) Label2.FontSize = X End Sub (3)移動圖片實現的方案: 添加1個計時器Timer (Timer1)控件設其Interval屬性值為100。添加Image1,Image2 ,Image3, Image4, Image5, Image6控件,Stretch屬性均為Ture, Image1,Image2加載PC機圖片,Image4, Image5添加單片機圖片。Image1,Im

34、age2,Image4, Image5的visible為False。這樣可以實現圖片從屏幕左邊逐漸右移并循環(huán)移動的效果。 程序代碼為: Private Sub Timer1_Timer() If Image3.Left > frmSplash.ScaleWidth Then Image3.Left = frmSplash.ScaleLeft - 200 End If Image3.Left = Image3.Left + 350 If Image3.Picture = Image1.Picture Then Image3.Picture = Image2.Picture El

35、se Image3.Picture = Image1.Picture End If If Image6.Left > frmSplash.ScaleWidth Then Image6.Left = frmSplash.ScaleLeft - 200 End If Image6.Left = Image6.Left + 350 If Image6.Picture = Image1.Picture Then Image6.Picture = Image5.Picture Else Image6.Picture = Image4.Picture End If End Sub

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

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

38、vate Sub color_Click() CommonDialog1.Flags = 1 CommonDialog1.color = BackColor CommonDialog1.Action = 3 Text2.ForeColor = CommonDialog1.color End Sub 字體對話框程序代碼: Private Sub Fontname_Click() CommonDialog2.Flags = 3 CommonDialog2.ShowFont Text2.fontname = CommonDialog2.fontname Text2.FontSi

39、ze = CommonDialog2.FontSize Text2.FontBold = CommonDialog2.FontBold Text2.FontItalic = CommonDialog2.FontItalic Text2.FontUnderline = CommonDialog2.FontUnderline Text2.FontStrikethru = CommonDialog2.FontStrikethru End Sub (2)動態(tài)字幕的實現方案 在主界面中添加一個picture 控件和一個Label標簽與一計時器控件。Label標簽的Caption屬性為“ 基

40、于RS-232的單片機與PC機串口通信實驗演示” Timer 控件設其Interval屬性值為100。將Label標簽添加在picture 控件中,這樣實現了字幕自左端向右循環(huán)移動的效果。 程序代碼為: Dim thetitle As String, counter1 As Integer Private Sub Timer2_Timer() Dim str As String str = Mid(thetitle, 1, counter1) If Len(str) = Len(thetitle) Then counter1 = 0 End If Label3.Caption

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

42、0 End If Image3.Left = Image3.Left + 300 If Image3.Picture = Image1.Picture Then Image3.Picture = Image2.Picture Else Image3.Picture = Image1.Picture End If End Sub 通過以上程序就可以完成Visual Basic實現串口通信的設計。 圖6 主界面 4單片機開發(fā)串口通信程序設計 4.1 MCS-51單片機的串口結構與功能 MC

43、S-51單片機的主要結構包含以下幾個部分: 1、中央處理器(CPU):MCS-51的CPU能處理8位二進制數或代碼。 2、內部數據存儲器(RAM):8051芯片共有256個RAM單元,其中后128單元被專用寄存器占用,能作為寄存器供用戶使用的只是前128單元,用于存放可讀寫的數據。因此通常所說的內部數據存儲器就是指前128單元,簡稱內部RAM。地址范圍為00H~FFH(256B)。是一個多用多功能數據存儲器,有數據存儲、通用工作寄存器、堆棧、位地址等空間。 3、內部程序存儲器(ROM): 8051內部有4KB的ROM,用于存放程序、原始數據或表格。 4、定時器/計數器:8051共有2個

44、16位的定時器/計數器,以實現定時或計數功能,并以其定時或計數結果對計算機進行控制。定時時靠內部分頻時鐘頻率計數實現,做計數器時,對P3.4(T0)或P3.5(T1)端口的低電平脈沖計數。 5、并行I/O口:MCS-51共有4個8位的I/O口(P0、P1、P2、P3)以實現數據的輸入輸出。 6、串行口:MCS-51有一個全雙工的串行口,以實現單片機和其它設備之間的串行數據傳送。該串行口功能較強,既可作為全雙工異步通信收發(fā)器使用,也可作為移位器使用。RXD( P3.0)腳為接收端口,TXD(P3.1)腳為發(fā)送端口。 7、中斷控制系統(tǒng):MCS-51單片機的中斷功能較強,以滿足不同控制應用的需

45、要。共有5個中斷源,即外中斷2個,定時中斷2個,串行中斷1個,全部中斷分為高級和低級共兩二個優(yōu)先級別。 8、時鐘電路:MCS-51芯片的內部有時鐘電路,但石英晶體和微調電容需外接。時鐘電路為單片機產生時鐘脈沖序列。系統(tǒng)允許的晶振頻率為12MHZ。 MCS-51單片機內部有一個全雙工的串行通信口,即串行接收和發(fā)送緩沖器(SBUF),這兩個在物理上獨立的接收發(fā)送器,既可以接收數據也可以發(fā)送數據。但接收緩沖器只能讀出不能寫入,而發(fā)送緩沖器則只能寫入不能讀出,這個通信口既可以用于網絡通信,亦可實現串行異步通信,還可以構成同步移位寄存器使用。如果在串行口的輸入輸出引腳上加上電平轉換器,就可方便地構

46、成標準的RS-232C接口. 該串行口功能較強,既可作為全雙工異步通信收發(fā)器使用,也可作為移位器使用。RXD( P3.0)腳為接收端口,TXD(P3.1)腳為發(fā)送端口。 ?MCS-51單片機串行口寄存器結構圖7所示。SBUF為串行口的收發(fā)緩沖器,它是一個可尋址的專用寄存器,其中包含了接收器和發(fā)送器寄存器,可以實現全雙工通信。MCS-51的串行數據傳輸很簡單,只要向發(fā)送緩沖器寫入數據即可發(fā)送數據。從接收緩沖器讀出數據即可接收數據。其內部結構如下: 圖7 ?MCS-51單片機串行口寄存器結構 串行口控制寄存器(SCON)結構如下:

47、 表1串行口控制寄存器(SCON) D7 D6 D5 D4 D3 D2 D1 D0 SMO SM1 SM2 REN TB8 RB8 TI RI 各控制位功能介紹如下: ???? (1)SM0、SM1:串行口工作方式控制位。 ?????? ??SM0、SM1:工作方式 ???????????? 00?????? 方式0 ???????????? 01?????? 方式1 ???????????? 10?????? 方式2 ???????????? 11?????? 方式3 ??? ?(2)

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

49、位8。 ??? ?在方式2和方式3中,TB8是要發(fā)送的——即第9位數據位。在多機通信中同樣亦要傳輸這一位,并且它代表傳輸的地址還是數據,TB8=0為數據,TB8=1時為地址。 ??? ?(5)RB8:接收數據位8。 ???? 在方式2和方式3中,RB8存放接收到的第9位數據,用以識別接收到的數據特征。 ?? ??(6)TI:發(fā)送中斷標志位。 ??? ?可尋址標志位。方式0時,發(fā)送完第8位數據后,由硬件置位,其它方式下,在發(fā)送或停止位之前由硬件置位,因此,TI=1表示幀發(fā)送結束,TI可由軟件清“0”。 ??? ?(7)RI:接收中斷標志位。 ??? ?可尋址標志位。接

50、收完第8位數據后,該位由硬件置位,在其他工作方式下,該位由硬件置位,RI=1表示幀接收完成。 PCON主要是為CHMOS型單片機的電源控制而設置的專用寄存器,單元地址是87H, SMOD=1則波特率加倍。其結構格式如下: 表2電源管理寄存器結構 PCON D7 D6 D5 D4 D3 D2 D1 D0 位符號 SMOD - - - GF1 GF0 PD IDL 中斷允許寄存器IE: ??? ?ES為串行中斷允許控制位,ES=1允許串行中斷,ES=0,禁止串行中斷。

51、 表3中斷允許寄存器結構 位符號 EA - - ES ET1 EX1 ET0 EX0 位地址 AFH AEH ADH ACH ABH AAH A9H A8H 因為預先設置傳輸數據時是8個數據位,1個停止位。所以可設置串口工作方式1,方式1是一個8位的異步串行通信接口。SCON控制寄存器的初值為: 表4 SCON控制寄存器的初值 D7 D6 D5 D4 D3 D2 D1 D0 SMO SM1 SM

52、2 REN TB8 RB8 TI RI 0 1 0 1 0 0 1 0 串口的初始化程序為: mov scon, #52h ;串口工作在方式1 4.2波特率的產生與通信協議的制定 MCS-51的單片機內有兩個16位可編程的定時/計數器,它們具有四種工作方式,其控制字和狀態(tài)字均在相應的特殊功能寄存器中,通過對控制寄存器的編程,就可方便地選擇適當的工作方式。 MCS-51單片機內部的定時/計數器的結構中,定時器T0是由特性功能寄存器TL0(低8位)和TH0(高8位)構成,定時器T1由特性功能寄存器TL1(低8位)和TH1(高8位)構成。特殊功能寄存器TM

53、OD控制定時寄存器的工作方式,TCON則用于控制定時器T0和T1的啟動和停止計數,同時管理定時器T0和T1的溢出標志等。程序開始時需對TL0、TH0、TL1和TH1進行初始化編程,以定義它們的工作方式和控制T0和T1的計數。 ? TMOD和TCON這兩個特殊功能寄存器的格式參見下表: TMOD用于控制T0、T1的工作方式: 表5 TMOD寄存器結構 D7 D6 D5 D4 D3 D2 D1 D0 GATA C/T M1 M0 GATA C/T M1 M0 ←T1方式字段→ ←T0方式字段→ 其中

54、低四位用于T0,高四位用于T1。M1、M0是工作方式的控制位,當M1M0=10時為工作方式2(為常數自動重裝入的8為定時/計數器)GATE=0時,只要用軟件TR0或TR1置1就可以啟動定時器,而GATE=1時只有INT0或INT1引腳為高電平且由軟件使TR0或TR1置1時才能啟動定時器。C/T=0時為定時方式,C/T=1時為計數方式。 定時器控制積存器TCON,字節(jié)地址為88H,位地址為88H—8FH,其格式如表6: 表6?TCON結構 D7 D6 D5 D4 D3 D2 D1 D0 TF1 TR1 TF0 TR0 IE1

55、 IT1 IE0 IT0 TR1由軟件置位和清零來啟動或關閉T1。當GATE=0時,TR1=1時,允許T0計數,當GATE=1時,僅當TR1=1時且INT0為高電平時才可啟動TR0計數。 當M1M0=10時,定時/計數器處于工作方式2.此時定時器的等效電路如圖8所示。 圖8 定時/計數器工作方式2的等效電路 工作方式0和工作方式1的最大特點就是計數溢出后,計數器為全0,因而循環(huán)定時或循環(huán)計數應用時就存在反復設置初值的問題,這給程序設計帶來許多不便,同時也會影響計時精度,工作方式2就針對這個問題而設置,它具有自動重裝載功能,即自動加載計數初值,所以也有的文獻稱之為自動重加載

56、工作方式。在這種工作方式中,16位計數器分為兩部分,即以TL0為計數器,以TH0作為預置寄存器,初始化時把計數初值分別加載至TL0和TH0中,當計數溢出時,不再象方式0和方式1那樣需要“人工干預”,由軟件重新賦值,而是由預置寄存器TH以硬件方法自動給計數器TL0重新加載。 ??? ?程序初始化時,給TL0和TH0同時賦以初值,當TL0計數溢出時,置位TF0的同時把預置寄存器TH0中的初值加載給TL0,TL0重新計數。如此反復,這樣省去了程序不斷需給計數器賦值的麻煩,而且計數準確度也提高了。但這種方式也有其不利的一面,就是這樣一來的計數結構只有8位,計數值有限,最大只能到255。所以這種工作

57、方式很適合于那些重復計數的應用場合。例如我們可以通過這樣的計數方式產生中斷,從而產生一個固定頻率的脈沖。也可以當作串行數據通信的波特率發(fā)送器使用。 當M1M0=10時,定時/計數器處于工作方式2在種情況下,定時/計數器1通常作為串行口的波特率發(fā)生器使用,以確定串行通信的速率。當作波特率發(fā)生器使用時,只需設置好工作方式,即可自動運行。本設計使用定時/計數器1。預設數據傳送速率為1200b/s。 SMOD=0 計算定時器1工作方式2初值的公式為X=256-fos*(SMOD+1)/384*波特率。Foc=6.144MHZ,定時器處值為X=0F3H。 定時器產生波特率的其程序代碼為: mov

58、 tmod, #20h ;定時器1設為工作方式2 mov th1,#0f3h ;定時器處值 mov tl1,#0f3h ;8位重裝值 SETB TR1 ;啟動定時器1 該程序設置了數據傳送速率為1200b/s。 4.3單片機程序設計 在設置好串口工作方式與波特率的基礎上,把PC機發(fā)送的數據傳給數碼管可以顯示發(fā)送的數據,并且回傳給PC機。通過觀察數碼管的顯示與回傳的數據進行比較是否一致就可以驗證串口通信的正確性。 通過P3.3、P3.4口的位選控制2位數碼管顯示數據。 主要程序流程圖: 開始

59、 串口初始化 啟動定時器 N Ri是否為1 Y 清除RI,接收數據 發(fā)送數據

60、 將接收數據進行顯示 圖9 主程序流程圖 程序源代碼如下: st_addr equ 4000h port equ 1b30h org st_addr ljmp main main: clr p3.4 ;清p3.4 clr p3.3 ;清p3.3 mov tmod, #20h ;定時器1工作方式2 mov scon, #52h ;串口工作方式1 mov th1,#0f3h ;定時器處值波特率1200b

61、/s mov tl1,#0f3h setb tr1 ;啟動定時器 jnb ri,load1 ;判斷RI是否為1 load: clr ri ;清RI clr p3.3 ;清p3.3 clr p3.4 ;清p3.4 mov a,sbuf ;傳輸數據 mov r0,a ;數據顯示 mov sbuf,a ;回傳數據 jnb ti,$ ; 判斷T

62、I是否為1 clr ti load1:mov a,r0 swap a ;高字節(jié)與低字節(jié)交換內容 anl a,#0fh ;屏蔽高四位 mov dptr,#table2 movc a,@a+dptr ;查表 mov p1,a ;送數碼管顯示 setb p3.4 ;P3.4置1 lcall delay ;調用延時子程序 clr p3.4 ;清P3.4

63、 mov a,r0 anl a,#0fh ;取高四位 mov dptr,#table2 movc a,@a+dptr ;查表 mov p1,a ;送于數碼管顯示 setb p3.3 lcall delay ;調用延時子程序 clr p3.3 mov a,r0 jnb ri,load1 ; jmp load delay:mov r7,#0ffh ;延

64、時程序 ys1: mov r6,#0ffh djnz r6,$ djnz r7,ys1 ret table2:db 3fh,06h,5bh,4fh,66h,6dh db 7dh,07h,7fh,6fh,77h,7ch,39h,5eh,79h,71h end 5結論 通過Visual Basic中的mscomm控件開發(fā)的串口通信程序,并通過單片機編寫的通信協議在進行電平轉換的基礎上就可以實現串口通信。PC機作為上位機發(fā)送一個數據后,經

65、過串口傳送給單片機,單片機將數據再通過P1口傳給數碼管,通過位選使得兩位數碼管顯示數據。單片機再將數據回傳給PC機,回傳的數據與發(fā)送的數據和數碼管顯示一致,說明基于RS-232C的串口通信成功。 謝辭 畢業(yè)設計是一項實踐性很強的工作,對動手能力和自學能力要求很高,由于本人缺乏這方面的鍛煉,在設計過程中遇到了很多困難,而指導教師師給予了我很大的幫助,老師及時地、耐心地解答了我們在設計過程中遇到的各種問題,使我受益匪淺,并且在學習能力方面得到了很大的提高。這也是我人生中一次重要的鍛煉老師親切隨和,治學嚴

66、謹,在我的心里留下深刻的影響。在整個畢業(yè)設計中當我們遇到問題時,呂老師一直是很熱情的在給予指導。在此我要向呂老師表示我衷心的感謝與敬意。 參考文獻 [1]李 華. MCS51系列單片機實用接口技術[M ]. 北京北京航空航天大學出版社, 1993 [2]朱明宇,武 峰. 8031單片機主從式數據采集系統(tǒng)設計 [3]求實科技,仵浩, 齊燕杰等. Visual Basic 串口通信工程開發(fā)實例導航[M]. 北京: 人民郵電出版社, 2002. [4]范逸之, 陳立元, 孫德營等. 利用Visual Basic 實現串并行通信技術[M]. 北京: 清華大學出版社, 2001. [5]李肇慶,韓濤. 串行端口技術[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: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
5. 裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關資源

更多
正為您匹配相似的精品文檔
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服 - 聯系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網版權所有   聯系電話:18123376007

備案號:ICP2024067431-1 川公網安備51140202000466號


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