找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 17899|回復(fù): 11
打印 上一主題 下一主題
收起左側(cè)

單片機與PC機的串口通信課程設(shè)計報告

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:258243 發(fā)表于 2017-12-6 17:16 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

課程設(shè)計(論文)


課程名稱:《單片機應(yīng)用》課程設(shè)計
題    目:單片機與PC機的串口通信
院 (系):信息與控制工程系
專業(yè)班級:自動化
姓    名:
學(xué)    號:
指導(dǎo)教師:

單片機與PC機的串口通信設(shè)計總說明

單片機自20世紀70年代問世以來,以其極高的性能價格比,受到人們的重視和關(guān)注,應(yīng)用很廣、發(fā)展很快。而AT89C51單片機是各單片機中最為典型和最有代表性的一種,本設(shè)計是基于MCS51系列單片機中AT89C51所設(shè)計的一種具有一個全雙工的串行通信口,可以實現(xiàn)單片機與PC機之間通信,主從通信以及上,下位機互相通信等。本設(shè)計基于單片機技術(shù)原理,通過硬件電路制作以及軟件程序的編制,設(shè)計制作一個簡單的單片機與PC機間串行通信。當(dāng)PC機上按數(shù)字鍵時,能在單片機數(shù)碼管上顯示相應(yīng)數(shù)字。


目錄

1 緒論

1.1設(shè)計目的

1.2設(shè)計內(nèi)容

2 系統(tǒng)硬件電路設(shè)計              2

2.1系統(tǒng)設(shè)計框圖              2

2.2串口通信基本原理              2

2.3 AT89C51單片機簡介              4

2.4 9針串口              6

2.5硬件電路圖              7

3 系統(tǒng)軟件程序設(shè)計              8

3.1單片機與PC機總體設(shè)計流程圖              8

3.2主程序設(shè)              9

3.3 其他子程序設(shè)計              10

4 軟件仿真              12

5 總結(jié)              17

致謝              18

參考文獻              19


1.1設(shè)計目的
單片機與PC機串行通信端口在系統(tǒng)控制的范疇中一直占據(jù)著及其重要的地位,它不僅沒有因為時代的進步而遭淘汰,反而在規(guī)格上越來越完善,應(yīng)用也越來越廣泛。作為一種基本而又靈活方便的通信方式,串口通信被廣泛應(yīng)用于PC與PC或者PC與單片機之間的數(shù)據(jù)交換以及其他工業(yè)控制與自動控制中。如今,在很多場合中,要求單片機不僅能獨立完成單機的控制任務(wù),還要能與其他數(shù)據(jù)控制設(shè)備(單片機、PC機等)進行數(shù)據(jù)交換。因此如何實現(xiàn)PC機與單片機之間的通信具有非常重要的現(xiàn)實意義。
1.2設(shè)計內(nèi)容
以單片機與PC機為核心,實現(xiàn)單片機與PC機機的串口通信。

2系統(tǒng)硬件電路設(shè)計
2.1系統(tǒng)設(shè)計框圖
圖2-1 系統(tǒng)設(shè)計框圖
2.2串口通信基本原理
所謂"串行通信"是指外設(shè)和計算機間使用一根數(shù)據(jù)信號線,數(shù)據(jù)在一根數(shù)據(jù)信號線上按位進行傳輸,每一位數(shù)據(jù)都占據(jù)一個固定的時間長度。這種通信方式使用的數(shù)據(jù)線少,在遠距離通信中可以節(jié)約通信成本,當(dāng)然,其傳輸速度比并行傳輸慢。相比之下,由于高速率的要求,處于計算機內(nèi)部的CPU與串口之間的通訊仍然采用并行的通訊方式,所以串行口的本質(zhì)就是實現(xiàn)CPU與外圍數(shù)據(jù)設(shè)備的數(shù)據(jù)格式轉(zhuǎn)換(或者稱為串并轉(zhuǎn)換器),即當(dāng)數(shù)據(jù)從外圍設(shè)備輸入計算機時,數(shù)據(jù)格式由位 (bit)轉(zhuǎn)化為字節(jié)數(shù)據(jù);反之,當(dāng)計算機發(fā)送下行數(shù)據(jù)到外圍設(shè)備時,串口又將字節(jié)數(shù)據(jù)轉(zhuǎn)化為位數(shù)據(jù)。
    串行端口的本質(zhì)功能是作為CPU和串行設(shè)備間的編碼轉(zhuǎn)換器。當(dāng)數(shù)據(jù)從 CPU經(jīng)過串行端口發(fā)送出去時,字節(jié)數(shù)據(jù)轉(zhuǎn)換為串行的位。在接收數(shù)據(jù)時,串行的位被轉(zhuǎn)換為字節(jié)數(shù)據(jù)。
    在Windows環(huán)境(Windows NT、Win98、Windows2000)下,串口是系統(tǒng)資源的一部分。 應(yīng)用程序要使用串口進行通信,必須在使用之前向操作系統(tǒng)提出資源申請要求(打開串口),通信完成后必須釋放資源(關(guān)閉串口)。
串口通信的概念非常簡單,串口按位(bit)發(fā)送和接收字節(jié)。盡管比按字節(jié)(byte)的并行通信慢,但是串口可以在使用一根線發(fā)送數(shù)據(jù)的同時用另一根線接收數(shù)據(jù)。它很簡單并且能夠?qū)崿F(xiàn)遠距離通信。比如IEEE488定義并行通行狀態(tài)時,規(guī)定設(shè)備線總常不得超過20米,并且任意兩個設(shè)備間的長度不得超過2米;而對于串口而言,長度可達1200米。
    典型的串口用于ASCII碼字符的傳輸。通信使用3根線完成:(1)地線,(2)發(fā)送,(3)接收。由于串口通信是異步的,端口能夠在一根線上發(fā)送數(shù)據(jù)同時在另一根線上接收數(shù)據(jù)。其他線用于握手,但是不是必須的。串口通信最重要的參數(shù)是波特率、數(shù)據(jù)位、停止位和奇偶校驗。對于兩個進行通行的端口,這些參數(shù)必須匹配:
a,波特率:這是一個衡量通信速度的參數(shù)。它表示每秒鐘傳送的bit的個數(shù)。例如300波特表示每秒鐘發(fā)送300個bit。當(dāng)我們提到時鐘周期時,我們就是指波特率例如如果協(xié)議需要4800波特率,那么時鐘是4800Hz。這意味著串口通信在數(shù)據(jù)線上的采樣率為4800Hz。通常電話線的波特率為14400,28800和36600。波特率可以遠遠大于這些值,但是波特率和距離成反比。高波特率常常用于放置的很近的儀器間的通信,典型的例子就是GPIB設(shè)備的通信。
    b,數(shù)據(jù)位:這是衡量通信中實際數(shù)據(jù)位的參數(shù)。當(dāng)計算機發(fā)送一個信息包,實際的數(shù)據(jù)不會是8位的,標(biāo)準(zhǔn)的值是5、7和8位。如何設(shè)置取決于你想傳送的信息。比如,標(biāo)準(zhǔn)的ASCII碼是0~127(7位)。擴展的ASCII碼是0~255(8位)。如果數(shù)據(jù)使用簡單的文本(標(biāo)準(zhǔn) ASCII碼),那么每個數(shù)據(jù)包使用7位數(shù)據(jù)。每個包是指一個字節(jié),包括開始/停止位,數(shù)據(jù)位和奇偶校驗位。由于實際數(shù)據(jù)位取決于通信協(xié)議的選取,術(shù)語 “包”指任何通信的情況。
    c,停止位:用于表示單個包的最后一位。典型的值為1,1.5和2位。由于數(shù)據(jù)是在傳輸線上定時的,并且每一個設(shè)備有其自己的時鐘,很可能在通信中兩臺設(shè)備間出現(xiàn)了小小的不同步。因此停止位不僅僅是表示傳輸?shù)慕Y(jié)束,并且提供計算機校正時鐘同步的機會。適用于停止位的位數(shù)越多,不同時鐘同步的容忍程度越大,但是數(shù)據(jù)傳輸率同時也越慢。
    d,奇偶校驗位:在串口通信中一種簡單的檢錯方式。有四種檢錯方式:偶、奇、高和低。當(dāng)然沒有校驗位也是可以的。對于偶和奇校驗的情況,串口會設(shè)置校驗位(數(shù)據(jù)位后面的一位),用一個值確保傳輸?shù)臄?shù)據(jù)有偶個或者奇?zhèn)邏輯高位。例如,如果數(shù)據(jù)是011,那么對于偶校驗,校驗位為0,保證邏輯高的位數(shù)是偶數(shù)個。如果是奇校驗,校驗位位1,這樣就有3個邏輯高位。高位和低位不真正的檢查數(shù)據(jù),簡單置位邏輯高或者邏輯低校驗。這樣使得接收設(shè)備能夠知道一個位的狀態(tài),有機會判斷是否有噪聲干擾了通信或者是否傳輸和接收數(shù)據(jù)是否不同步。
2.3 AT89C51單片機簡介
AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲器的低電壓,高性能CMOS8位微處理器,俗稱單片機。該器件為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。其管腳功能如下:
VCC:供電電壓。
GND:接地。
P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P0口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的低八位。在FIASH編程時,P0 口作為原碼輸入口,當(dāng)FIASH進行校驗時,P0輸出原碼,此時P0外部必須接上拉電阻。
P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗時,P1口作為低八位地址接收。
P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當(dāng)P2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。
P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。
P3.0 RXD(串行輸入口)
P3.1 TXD(串行輸出口)
P3.2 /INT0(外部中斷0)
P3.3 /INT1(外部中斷1)
P3.4 T0(計時器0外部輸入)
P3.5 T1(計時器1外部輸入)
P3.6 /WR(外部數(shù)據(jù)存儲器寫選通)
P3.7 /RD(外部數(shù)據(jù)存儲器讀選通)
圖2-2 ATC89C51管腳圖

2.4 9針串口
9針串口:一個完整的RS-232接口是一個25針的D型插頭座,25針的連接器實際上只有9根連接線,所以就產(chǎn)生了一個簡化的9針D型RS-232插頭座,常用的就是一個9針的D型插頭座。
EIA-RS-232C對電器特性、邏輯電平和各種信號線功能都作了規(guī)定:
在TxD和RxD上:邏輯1(MARK)=-3V~-15V
邏輯0(SPACE)=+3~+15V
在RTS、CTS、DSR、DTR和DCD等控制線上:
信號有效(接通,ON狀態(tài),正電壓)=+3V~+15V
信號無效(斷開,OFF狀態(tài),負電壓)=-3V~-15V
介于-3~+3V之間的電壓無意義,低于-15V或高于+15V的電壓也認為無意義。因此如果要進行通信,還要對信號的電平進行轉(zhuǎn)換,比如使用MAX3232芯片來轉(zhuǎn)換電平。使用串口進進行通信時,我們最主要關(guān)心的時以下這三個引腳:5 GND、2 RXD、3 TXD要完成數(shù)據(jù)的發(fā)送與接收就必須要到上面這三個引腳。而其它引腳是用來控制傳輸規(guī)則的,即握手協(xié)議。下面是9針串口(DB9),引腳功能。
引腳號
縮寫
英文全稱
功能說明
1
DCD
Data Carrier Detection
數(shù)據(jù)載波檢測
2
RXD
Receive Data
接收數(shù)據(jù)
3
TXD
Transmit Data
發(fā)送數(shù)據(jù)
4
DTR
Data Terminal Ready
數(shù)據(jù)終端準(zhǔn)備
5
GND
System Ground
信號地
6
DSR
Data Set Ready
數(shù)據(jù)設(shè)備準(zhǔn)備好
7
RTS
Request to Send
請求發(fā)送
8
CTS
Clear to Send
清除發(fā)送
9
RI
Ring Indicator
振鈴指示

圖2-3 9針串口引腳功能圖
2.5硬件電路圖

圖2-4 硬件總電路圖


3 系統(tǒng)軟件程序設(shè)計
3.1單片機與PC總體設(shè)計流程圖(見附件)

3.2主程序設(shè)計
  1. receivedata  data  40h   ;存放收到的數(shù)據(jù)
  2. displaydata  data  39h   ;存放顯示子程序要顯示的數(shù)據(jù)
  3. ORG 0000H
  4. JMP START
  5. ORG 0023H
  6. JMP COMMJUDGE
  7. ORG 0100H
  8. START:
  9.    MOV  SP,  #60H   
  10.    MOV SCON, #50H         
  11.    MOV PCON, #80H           
  12.    MOV TMOD,#20H
  13.    MOV TL1,#0FAH
  14.    MOV TH1,#0FAH
  15.    SETB EA
  16.    SETB ES
  17.    SETB TR1
  18. HERE: JMP HERE
  19. COMMJUDGE:                                          
  20.    JB TI,TT00              ;如果是發(fā)送引起的中斷,那么就不管
  21.    CLR RI
  22.    CALL CHANGEDIS
  23.    CALL DISPLAY
  24.    CALL TRANS
  25. TT00: CLR TI
  26.      RETI
  27. 3.3其他子程序設(shè)計
  28. ;********************************************************************
  29. ;=========================================
  30. ;功能描述: 串口接收數(shù)據(jù)的處理子程序
  31. ;創(chuàng)建日期: 2017年6月29日12:37:12
  32. ;=========================================
  33. CHANGEDIS:              
  34.    PUSH Acc
  35.    PUSH PSW
  36.    MOV A,SBUF
  37.    MOV receivedata,A
  38.    SUBB A,#30H             ;數(shù)字的ASCII碼轉(zhuǎn)換為對應(yīng)的數(shù)字(此程序僅限數(shù)字
  39.    MOV displaydata,A
  40.    POP PSW
  41.    POP Acc
  42.   RET
  43. ;=========================================
  44. ;函 數(shù) 名: TRANS
  45. ;功能描述: 串口發(fā)送數(shù)據(jù)給PC的子程序
  46. ;創(chuàng)建日期: 2017年6月29日12:43:48
  47. ;=========================================
  48. TRANS:
  49.    PUSH ACC
  50.    PUSH PSW
  51.    MOV A,#2BH   ;2AH是事先約定的字符,返回給PC端時,用于確認顯示正確
  52.    MOV SBUF,A   ;此語句產(chǎn)生一個TI=1.
  53.       MOV     R7,#02H
  54. DL:   MOV     R6,#0FFH
  55. DL6:  DJNZ    R6,DL6
  56.       DJNZ    R7,DL
  57.    POP  PSW
  58.    POP  ACC
  59.    RET
  60. ;=========================================
  61. ;函 數(shù) 名: DISPLAY
  62. ;功能描述: 顯示子程序
  63. ;創(chuàng)建日期: 2017年6月27日22:37:46
  64. ;=========================================
  65. DISPLAY:
  66.      MOV R1,#displaydata ;取顯示緩沖區(qū)首地址
  67.      MOV  A,@R1      ;查表獲取段選碼
  68.      MOV  DPTR,#TAB
  69.      MOVC A,@A+DPTR
  70.               MOV  P0,#0FEH     ;對P0口進行位選,FE則最左邊那位顯示
  71.      MOV  P1,A             ;給P1口送段選碼  
  72.    RET
  73. ;-------------------------LED顯示碼表--------------------------
  74. TAB:    DB  3FH, 06H, 5BH, 4FH, 66H, 6DH
  75.         DB  7DH,7FH, 6FH,
  76. END
復(fù)制代碼



4軟件仿真

首先在protues中畫出如下電路圖


圖4-1仿真開始電路圖
打開虛擬串口軟件,建立COM1和COM2為相互連接的一對端口。
打開虛擬串口軟件,建立COM1和COM2為相互連接的一對端口。
單擊添加端口,即可完成端口添加。

打開虛擬串口軟件,建立COM1和COM2為相互連接的一對端口。
單擊添加端口,即可完成端口添加。
圖4-2 建立虛擬端口

接下來對串口進行設(shè)置,設(shè)置內(nèi)容如下:
圖4-3 串口設(shè)置

對51單片機設(shè)置
圖4-4  AT89C51單片機設(shè)置

啟動友善串口助手,選擇COM2發(fā)送數(shù)據(jù)。向單片機發(fā)送數(shù)字3,觀察單片機仿真結(jié)果。
圖4-5 仿真結(jié)果

5總結(jié)

通過本次單片機間串行通信實驗設(shè)計,使我對單片機有更加深刻的了解,明白了軟件與硬件的配合使用,懂得怎樣去分析電路及調(diào)試程序,雖然在設(shè)計過程中遇到很多困難,但是經(jīng)過進一步查閱相關(guān)資料,問題才得以解決,盡管最后設(shè)計不是那么完美,不是那么理想,但總體上來說實現(xiàn)了單片機與PC機間串行通信,基本上完成了實驗原理所需要求,通過本次設(shè)計也使得自己明白軟件與硬件相結(jié)合的重要性,二者缺一不可,所以在實現(xiàn)硬件連接的同時也要讀懂軟件所實現(xiàn)的功能。本設(shè)計介紹了一種單片機與PC機之間串行通信的設(shè)計方法,論文首先介紹了單片機與單片機之間串行通信的工作原理、軟件與硬件的實現(xiàn)、研究現(xiàn)狀、串行通信的概念以及鍵盤輸入。主要是單片機與單片機之間串行通信的方式和重要的數(shù)據(jù)位說明,接著提出了可行的設(shè)計方案,并從硬件電路設(shè)計及軟件程序設(shè)計兩個方面詳細介紹了整個設(shè)計的工作原理及設(shè)計過程,同時驗證了方案的可行性。


致謝
在這次課程設(shè)計的撰寫過程中,我得到了許多人的幫助。
首先我要感謝我的老師在課程設(shè)計上給予我的指導(dǎo)、提供給我的支持和幫助,這是我能順利完成這次報告的主要原因,更重要的是老師幫我解決了許多技術(shù)上的難題,讓我能把系統(tǒng)做得更加完善。在此期間,我不僅學(xué)到了許多新的知識,而且也開闊了視野,提高了自己的設(shè)計能力。
其次,我要感謝幫助過我的同學(xué),他們也為我解決了不少我不太明白的設(shè)計商的難題。同時也感謝學(xué)院為我提供良好的做畢業(yè)設(shè)計的環(huán)境。
最后再一次感謝所有在設(shè)計中曾經(jīng)幫助過我的良師益友和同學(xué)。


完整的Word格式文檔51黑下載地址:
單片機與PC機的串口通信課程設(shè)計報告.doc (933.5 KB, 下載次數(shù): 127)


評分

參與人數(shù) 1黑幣 +1 收起 理由
ks199783 + 1 贊一個!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂4 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:280985 發(fā)表于 2018-3-17 23:48 | 只看該作者
學(xué)習(xí)學(xué)習(xí)
回復(fù)

使用道具 舉報

板凳
ID:280985 發(fā)表于 2018-3-22 21:01 | 只看該作者
謝謝,很有幫助
回復(fù)

使用道具 舉報

地板
ID:300191 發(fā)表于 2018-4-14 22:49 | 只看該作者
有沒有仿真圖。
回復(fù)

使用道具 舉報

5#
ID:430861 發(fā)表于 2018-12-8 16:54 | 只看該作者
很好啊
回復(fù)

使用道具 舉報

6#
ID:462240 發(fā)表于 2019-1-6 17:25 來自手機 | 只看該作者
有源程序嘛
回復(fù)

使用道具 舉報

7#
ID:524332 發(fā)表于 2019-4-29 11:47 | 只看該作者
厲害 膜拜大佬
回復(fù)

使用道具 舉報

8#
ID:442414 發(fā)表于 2019-7-16 11:36 | 只看該作者
點贊點贊
回復(fù)

使用道具 舉報

9#
ID:663154 發(fā)表于 2020-1-9 09:01 | 只看該作者
需要進行強大的仿真
回復(fù)

使用道具 舉報

10#
ID:758137 發(fā)表于 2020-5-22 11:10 | 只看該作者
來學(xué)習(xí)
回復(fù)

使用道具 舉報

11#
ID:758137 發(fā)表于 2020-5-22 11:11 | 只看該作者
來學(xué)習(xí)
回復(fù)

使用道具 舉報

12#
ID:800989 發(fā)表于 2020-7-13 23:31 來自手機 | 只看該作者
求原程序
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表