畢業(yè)設計(論文)單片機與計算機串行通信設計_第1頁
畢業(yè)設計(論文)單片機與計算機串行通信設計_第2頁
畢業(yè)設計(論文)單片機與計算機串行通信設計_第3頁
畢業(yè)設計(論文)單片機與計算機串行通信設計_第4頁
畢業(yè)設計(論文)單片機與計算機串行通信設計_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、摘 要單片微型計算機簡稱單片機,它是將中央處理器(cpu)、存儲器(ram,rom)、定時計數(shù)器和各種接口電路都集成到一塊集成電路芯片上的微型計算機。隨著計算機技術(shù)尤其是單片機技術(shù)的發(fā)展,人們已越來越多地采用單片機來對一些工業(yè)控制系統(tǒng)參數(shù)進行檢測和控制。pc機具有強大的監(jiān)控和管理功能,單片機則具有快速及靈活的控制特點,通過pc機的rs 232串行接口與外部設備進行通信,是許多通信系統(tǒng)中常用的一種通信解決方案。因此如何實現(xiàn)pc機與單片機之間的通信具有非常重要的現(xiàn)實意義。本設計介紹了stc89c52單片機與pc機串行通信的實現(xiàn)方法,給出了具體通信接口電路以及利用vb6.0的通信控件mscomm實現(xiàn)

2、pc機串行通信的程序。通過vb程序控制led及數(shù)碼管的亮滅,同時可實現(xiàn)對兩者的參數(shù)設置,更改其亮燈次數(shù)和間隔時間。系統(tǒng)經(jīng)過實際應用,效果令人滿意 .關鍵詞:串行通行 單片機 vb程序 proteus仿真abstractsingle-chip microcomputer(scm) is also be called the single chip computer which is integrated the central processing unit(cpu), memory(ram and rom), timer/counter and various interface circui

3、t into a piece of integrated circuit chip of microcomputer. with the development of computer technology, especially in microcomputer technology development, people have increasingly used single-chip microcomputer into some industry controlling system parameters to test and control. personal computer

4、s(pc) have powerful functions of monitoring and management. scm has rapid and flexible controlling features. through the rs-232 serial interface of pc communicate with external devices, it is an common communication solutions in many communication system. therefore, how to realize the communication

5、between the microcomputer and pc has very important practical significance.this design introduces the realization method of serial communication between microcomputer(stc89c52) and pc. it gives the specific communication interface circuit and the program which using vb6.0 mscomm control realize seri

6、al communication with pc. the led and digital tube can be controlled by the vb program, which can set the parameters both of them and change time interval and bright light times. by practical application, the effect of system is satisfactory.key words: serial communication microcomputer vb program p

7、roteus simulation目 錄一 前言11.1概述11.2串行通信基本概念11.3本次設計的工作任務2二 總體方案設計32.1可行性分析32.2系統(tǒng)功能分析32.3單片機選型32.4系統(tǒng)硬軟件的功能設計4三 通信系統(tǒng)硬件電路設計63.1串行接口的基本通信方式63.3電平轉(zhuǎn)換電路的設計83.4繪制電路原理圖10四 串行通信程序設計134.1下位機(單片機)串行通信及程序設計134.2上位機(pc機)串行通信及程序設計14五 總結(jié)18六 致謝19參考文獻20附 錄21一 前言1.1概述單片機是一種集成在電路芯片,是采用超大規(guī)模集成電路技術(shù)把具有數(shù)據(jù)處理能力的中央處理器cpu隨機存儲器ra

8、m、只讀存儲器rom、多種i/o口和中斷系統(tǒng)、定時器/計時器等功能(可能還包括顯示驅(qū)動電路、脈寬調(diào)制電路、模擬多路轉(zhuǎn)換器、a/d轉(zhuǎn)換器等電路)集成到一塊硅片上構(gòu)成的一個小而完善的計算機系統(tǒng)。單片機又稱單片微控制器,它不是完成某一個邏輯功能的芯片,而是把一個計算機系統(tǒng)集成到一個芯片上。相當于一個微型的計算機,和計算機相比,單片機只缺少了i/o設備。概括的講:一塊芯片就成了一臺計算機。它的體積小、質(zhì)量輕、價格便宜、為學習、應用和開發(fā)提供了便利條件。同時,學習使用單片機是了解計算機原理與結(jié)構(gòu)的最佳選擇。由于單片機對成本是敏感的,所以目前占統(tǒng)治地位的軟件還是最低級匯編語言,它是除了二進制機器碼以上最低

9、級的語言了,既然這么低級為什么還要用呢?很多高級的語言已經(jīng)達到了可視化編程的水平為什么不用呢?原因很簡單,就是單片機沒有家用計算機那樣的cpu,也沒有像硬盤那樣的海量存儲設備。一個可視化高級語言編寫的小程序里面即使只有一個按鈕,也會達到幾十k的尺寸,對于家用pc的硬盤來講沒什么,可是對于單片機來講是不能接受的。單片機在硬件資源方面的利用率必須很高才行,所以匯編雖然原始卻還是在大量使用。一樣的道理,如果把巨型計算機上的操作系統(tǒng)和應用軟件拿到家用pc上來運行,家用pc的也是承受不了的。1.2串行通信基本概念單片機在與外部設備或與其他計算機之間交換信息時,通常采用并行通信和串行通行兩種方式。其中串行

10、通行又可分為異步傳送和同步傳送。異步傳送時,數(shù)據(jù)在線路上似一個字(或字符),為單位來傳送的,各個字符之間可以是接連傳送,也可以是間斷傳送,這完全由發(fā)送方根據(jù)需要來決定。另外,在異步傳送時,發(fā)送方和接收方各用自己的時鐘源來控制發(fā)送和接收。在異步通信時,對字符必須規(guī)定一定的格式,以利于接收方能判別何時有字符傳來及何時是一個新字符的開始。異步通信方式中的一個字符有四部分組成:起始位、數(shù)據(jù)位、奇偶校驗位和停止位。起始位為“0”信號時,用來通知接收設備一個新的字符開始來到。線路在不傳輸數(shù)據(jù)時應保持位“1”,接收端不斷檢測線路的狀態(tài),若連續(xù)為“1”后又檢測到一個“0”,就知道又發(fā)來了一個新的字符。起始位還

11、被用來同步接收端的時鐘,以保證以后的接收能正確進行。起始位后面緊跟的是數(shù)據(jù)位,他可以是五位、六位、七位或八位。串行通信的速度與數(shù)據(jù)的位數(shù)成比例因此要根據(jù)需要來確定數(shù)據(jù)的位數(shù)。在本課題中沒有用到奇偶校驗位,有一個起始位、一個停止位和八位數(shù)據(jù)位。在串行通信中有個重要指標叫波特率,它定義為每秒傳送二進制數(shù)碼的位數(shù),以位/秒為單位。在異步通信中,波特率位每秒傳送的字符數(shù)和每個字符位數(shù)的乘積1。1.3本次設計的工作任務標準的51單片機都有一個全雙工串行通信接口,利用這個通信接口,我們可以方便地與其它單片機系統(tǒng)或電腦(pc機)進行串行通信,相互交換數(shù)據(jù)。在微機測控系統(tǒng)中,一般稱計算機為上位機、而前端采集控

12、制的單片機系統(tǒng)稱為下位機。上位機主要負責所有測控數(shù)據(jù)的綜合管理與下位機的調(diào)度控制,而下位機由單片機構(gòu)成前端的測控系統(tǒng),進行原始數(shù)據(jù)的采集及設備的控制,下位機受上位機的管理控制。串口對單片機意義重大,不但可以將單片機采集的實時數(shù)據(jù)傳輸?shù)诫娔X上,而且也能接受電腦對單片機的控制指令,實現(xiàn)對單片機的智能化控制,從而開發(fā)出以計算機為控制中心的數(shù)據(jù)發(fā)送和接收系統(tǒng),這樣不僅拓寬了單片機的應用領域,而且使我們的控制系統(tǒng)、監(jiān)控系統(tǒng)可以充分利用計算機強大的數(shù)據(jù)處理能力和管理功能,使系統(tǒng)功能更加完善、更加強大、更加完美。基于此目的,進行單片機與pc機串行通信系統(tǒng)設計,本次設計的主要工作:(1)單片機系統(tǒng):實現(xiàn)和pc

13、通信的串口通信的方法。(2)外圍電路:實現(xiàn)單片機和pc機之間的串口電平轉(zhuǎn)換。(3)通信程序:一方面是單片機匯編程序,另一方面是pc的通信程序。二 總體方案設計按照單片機系統(tǒng)的設計方法,這一階段,我需要考察實際應用環(huán)境的需要,確定單片機與pc機串行通信系統(tǒng)的整體設計方案。它包括系統(tǒng)的可行性分析、功能分析、單片機選型以及系統(tǒng)硬軟件的分工問題。2.1可行性分析畢業(yè)設計在指導老師的指導下,搜集、查閱相關資料,確定單片機系統(tǒng)能達到需要的設計目標,而且達到目標需要的經(jīng)濟成本沒有超出可接收的范圍。2.2系統(tǒng)功能分析單片機以其體積小、價格低、抗干擾性好等特點,在現(xiàn)在控制系統(tǒng)中常用在操作現(xiàn)場進行數(shù)據(jù)采集,以及實

14、現(xiàn)現(xiàn)場控制中。但是由于其數(shù)據(jù)存儲容量和數(shù)據(jù)處理能力都較低,所以一般情況下要通過通信手段使它與pc機相連,把所接收到的數(shù)據(jù)傳送到pc機上,再在外部設備上進行顯示。由于單片機輸入、輸出電平是ttl電平,而pc機配置的是rs-232標準串行接口,兩者的電氣規(guī)范不一致,因此要完成單片機與pc機的數(shù)據(jù)通信,必須對單片機輸出的ttl電平進行電平轉(zhuǎn)換。2.3單片機選型單片機的選型的依據(jù)為,應用系統(tǒng)本身對數(shù)據(jù)處理能力的要求,以及是否有其他方面的特殊需要(低功耗、工作溫度、接口電路)的原則來確定。在此,選擇intel公司的mcs-51系列單片機中的8051單片機。mcs-51系列的單片機是intel公司在198

15、0年推出的8位機系列,8051為這一系列的代表產(chǎn)品。8051單片機內(nèi)部包括8位cpu、4kb片內(nèi)rom、128kb片內(nèi)ram、4個8位并口、一個全雙工的串口,支持64kb尋址空間,并提供5個中斷源和兩級中斷。其性能指標如表2-1。表2-1 mcs-51系列單片機8051的性能指標單片機片內(nèi)rom(kb)片內(nèi)rom(kb)i/o并口計數(shù)器串行口dmaa/d中斷源空閑和掉電方式類型型號rom8051412842 16uart無無5無以上我選用的單片機的種類和型號,取決于對該類型號的熟悉程度以及手頭所具備開發(fā)系統(tǒng)的條件。而在第六章用單片機實驗板對系統(tǒng)軟件進行調(diào)試所用到的單片機是stc89c52rc,

16、其特點是可以直接用串口進行isp編程。2.4系統(tǒng)硬軟件的功能設計對系統(tǒng)的各項功能進行劃分,確定軟件和硬件的分工問題,實現(xiàn)該方案需要從通信協(xié)議(串行通信總線標準接口)、硬件電路和程序3個方面考慮。2.4.1通信協(xié)議標準接口,就是明確定義若干信號線,使接口電路標準化、通用化,借助串行通信標準接口,不同類型的數(shù)據(jù)通信設備很容易實現(xiàn)它們之間的串行通信連接。標準異步串行通信接口有以下幾類:rs-232c、rs-232e、rs-449、20ma電流環(huán)、usb通用接口。rs485為點對多通信,距離可達1200米,2線半雙工通信方式。根據(jù)協(xié)議的廣泛性和此次設計為短距離通信,并且pc機配置的是rs-232標準串

17、行接口等條件。所以采用rs-232,它被定義為一種在低速率串行通訊中增加通訊距離的單端標準。rs-232采取不平衡傳輸方式,即所謂單端通訊。由于發(fā)送電平與接收電平的差僅為2v至3v左右,所以其共模抑制能力差,再加上雙絞線上的分布電容,其傳送距離最大為約15米,最高速率為20kb/s。rs-232是為點對點(即只用一對收、發(fā)設備)通訊而設計的,所以rs-232適合本地設備之間的通信。2.4.2硬件電路數(shù)據(jù)通信的硬件上采用3線制,將單片機和pc串口的3個引腳(txd、rxd、gnd)分別連在一起,即將pc機和單片機的發(fā)送數(shù)據(jù)線txd與接收數(shù)據(jù)線rxd交叉連接,兩者的地線gnd直接相連,而其他信號線

18、如握手信號線均不用,采用軟件握手的方式。這樣既可以實現(xiàn)預定的任務又可以簡化電路設計。但由于單片機的ttl邏輯電平和rs-232的電氣特性完全不同,rs-232的邏輯0電平規(guī)定為+5+15v之間,邏輯1電平為-5-15v之間,因此在將pc機和單片機的txd和rxd交叉連接時必須進行電平轉(zhuǎn)換,本次設計選用的是max232電平轉(zhuǎn)換芯片2。2.4.3傳輸程序單片機和pc的通信,在程序上涉及兩個部分的內(nèi)容:一方面是單片機的c51程序或者匯編程序,完成數(shù)據(jù)的收發(fā)。二是pc機的串口通信程序和界面的編制。經(jīng)過這一階段的設計,總結(jié)系統(tǒng)設計框架現(xiàn)在總結(jié)如下:1.確定單片機與pc機串行數(shù)據(jù)通信系統(tǒng)的通信方案2.選擇

19、intel公司的mcs-51系列單片機中的8051,實驗板對系統(tǒng)軟件進行調(diào)試所用到的單片機是stc89c52rc;3.串行通信總線標準接口采用rs-232c;4.串行數(shù)據(jù)通信的硬件上采用3線制,選用的是max232芯片進行單片機與rs-232接口的電平轉(zhuǎn)換;5.單片機端用匯編程序進行編程,完成數(shù)據(jù)的收發(fā),pc機端完成串口通信程序和界面的編制。此時,可以開始進行系統(tǒng)的硬件設計工作了。三 通信系統(tǒng)硬件電路設計3.1串行接口的基本通信方式3.1.1串口基本結(jié)構(gòu)的認識單片機的串行口的功能是與外部器件進行串行數(shù)據(jù)通信。串行口電路也稱為通用異步收發(fā)器(uart)。從原理上說,一個uart包括發(fā)送器電路、接

20、收器電路和控制電路。8051單片機的uart已集成在其中,構(gòu)成一個全雙工串口,全雙工通信是指同時可以作雙向通信,兩個即可同時發(fā)送、接收,又可同時接收、發(fā)送。這種串口即可以實現(xiàn)串行異步通信,也可以作為同步移位寄存器使用3。8051的串行口通過引腳rxd(p3.0串行口數(shù)據(jù)接收端)和引腳txd(p3.1串行口數(shù)據(jù)發(fā)送端)與外部設備進行串行通信。圖3-1為8051單片機內(nèi)部串行口結(jié)構(gòu)示意圖。圖3-1 串行口的內(nèi)部結(jié)構(gòu)圖圖3-1中共有兩個串口雙緩沖寄存器(sbuf),一個是發(fā)送寄存器,一個是接收寄存器,以便8051能以全雙工方式進行通信。串行發(fā)送時,從片內(nèi)總線向發(fā)送sbuf寫入數(shù)據(jù);串行接收時,從接收

21、sbuf向片內(nèi)總線讀出數(shù)據(jù)。它們都是可尋址的寄存器,但因為發(fā)送與接收不能同時進行,所以給這兩個寄存器賦一同一地址99h。在接收方式下,串行數(shù)據(jù)通過引腳rxd進入,由于在接收寄存器之前還有移位寄存器,從而構(gòu)成了串行接收的雙緩沖結(jié)構(gòu),以避免在數(shù)據(jù)接收過程中出現(xiàn)幀重疊錯誤,即在下一幀數(shù)據(jù)來時,前一幀數(shù)據(jù)還沒有走4。在發(fā)送方式下口,串行數(shù)據(jù)通過引腳txd發(fā)出。與接收數(shù)據(jù)情況不同,發(fā)送數(shù)據(jù)時,由于cpu是主動的,不會發(fā)生幀重疊錯誤,因此發(fā)送電路就不需要雙緩沖結(jié)構(gòu),這樣可以提高數(shù)據(jù)發(fā)送速度。3.1.2串口工作方式的對比(1)方式0工作方式0以8位數(shù)據(jù)為一幀進行傳輸,不設起始位和停止位,先發(fā)送或接收最低位,

22、其一幀格式如下:表3-1 方式0的幀格式d0d1d2d3d4d5d6d7方式0為移位寄存器輸入/輸出方式??赏饨右莆患拇嫫饕詳U展i/o口,也可以外接同輸入/輸出設備。8位串行數(shù)據(jù)是從rxd輸入或輸出,txd用來輸出同步脈沖。在方式0下,串行數(shù)據(jù)從rxd引腳輸出,txd引腳輸出移位脈沖。cpu將數(shù)據(jù)寫入發(fā)送寄存器時,立即啟動發(fā)送,將8位數(shù)據(jù)以固定波特率從rxd輸出,低位在前,高位在后。發(fā)送完一幀數(shù)據(jù)后,發(fā)送中斷標志ti由硬件置位。當串行口以方式0接收時,先置位允許接收控制位ren。此時,rxd為串行數(shù)據(jù)輸入端,txd仍為同步脈沖移位輸出端。當ri=0和ren=1同時滿足時,開始接收。當接收到第8

23、位數(shù)據(jù)時,將數(shù)據(jù)移入接收寄存器,并由硬件置位ri。(2)方式1工作方式1為波特率可變的10位異步通信接口方式。一幀信息包括1個起始位、8個數(shù)據(jù)位和1個停止位,其一幀格式如下:表3-2 方式1的幀格式起始d0d1d2d3d4d5d6d7停止當數(shù)據(jù)寫入發(fā)送緩沖sbuf時,就啟動發(fā)送。串行數(shù)據(jù)從txd引腳輸出,發(fā)送完一幀數(shù)據(jù)后,就由硬件置位ti。在ren=1時,rxd引腳確認開始位,開始接收一幀數(shù)據(jù)。只有當ri=0且停止位為1時,停止位才進入rb8,8位數(shù)據(jù)才能進入接收寄存器,并由硬件置位中斷標志ri;否則該數(shù)據(jù)會丟失。所以在方式1接收時,應先用軟件清零ri和sm2標志。(3)方式2 方式2為固定波

24、特率的11位uart方式。比方式1增加了一位可程控第9位數(shù)據(jù)。其幀格式為:表3-3 方式2的幀格式起始d0d1d2d3d4d5d6d7d8停止由txd端輸出一幀11位的數(shù)據(jù),附加的第9位來自scon寄存器的tb8位,用軟件置位或復位。它可作為數(shù)據(jù)的奇偶校驗位。當數(shù)據(jù)寫入subf的指令時,就啟動發(fā)送器發(fā)送。發(fā)送一幀信息后,置位中斷標志ti。在ren=1時,串行口采樣rxd引腳,開始接收一幀數(shù)據(jù)。在接收到附加的第9位數(shù)據(jù)后,當ri=0或者sm2=0時,第9位數(shù)據(jù)才進入rb8,8位數(shù)據(jù)才能進入接收寄存器,并由硬件置位中斷標志ri;否則信息丟失。(4)方式3 方式3為波特率可變的11位uart方式。除

25、波特率外,其余與方式2相同5。3.2通信協(xié)議的采用(1)方案采用的依據(jù)串行通信中,只有通信雙方采用相同的接口標準,才能進行正常的通信。由于不同設備串行接口的信號線定義、電器規(guī)格等特性都不盡相同,因此要使這些設備能夠相互連接,需要一個統(tǒng)一的串行通信接口。在本次設計中,采用rs-232協(xié)議作為通信協(xié)議,rs-232(又稱eia rs-232c)是目前最常見的一種串行通信接口標準,它是在1970年由美國電子工業(yè)協(xié)會聯(lián)合貝爾系統(tǒng)、調(diào)制解調(diào)器廠家及計算機終端生廠廠家共同制定的用于串行通信的標準。rs-232適合于數(shù)據(jù)傳輸速率在020 000bit/s范圍內(nèi)的通信。這個標準對串行通信接口的有關問題,如信號

26、線功能、電器特性都作了明確規(guī)定,作為一種標準在微機通信接口中廣泛采用。由于單片機系統(tǒng)使用的是ttl電平,單片機中的串口輸出的信號也是如此,但是串行通信中使用的rs-232c通信協(xié)議,二者的電平并不相同,在和單片機進行通信時,還需要有一定的外圍電路的配合,使得單片機的通信電平和標準的串行通信協(xié)議相匹配6。(2)rs-232c的電器特性、邏輯電平和各種信號線功能txd、rxd:高電平(邏輯1)為-5v-15v,低電平(邏輯0)為+5+15v。rts、cts、dsr、dtr和dcd:控制線,信號有效(接通,on狀態(tài),正電壓)時的電平為+5v+15v,信號無效時(斷開,off狀態(tài),負電壓)的電平為-5

27、v-15v。對于rs-232c的信號而言,當傳輸電平的絕對值大于3v時,電路可以有效地檢查出來,介于-5v+5v之間的電壓無意義,低于-15v或高于+15v的電壓也認為無意義。所以,rs-232c是用正負電壓來表示邏輯狀態(tài),與ttl以高低電平表示邏輯狀態(tài)的規(guī)定不同。為了能夠同計算機接口或終端的ttl器件連接,必須在eia-rs-232c與ttl電路之間進行電平和邏輯關系的變換。rs-232c中的rs是英文“推薦標準”的縮寫,232為標示號,c表示修改的次數(shù)。rs-232c總線標準規(guī)定了21個信號和25個引腳,包括一個主通道和一個輔助通道,在多數(shù)情況下主要使用主通道。3.3電平轉(zhuǎn)換電路的設計3.

28、3.1設計方法和其他的單片機器件一樣,作為單片機的標準外圍電路,串口的電平轉(zhuǎn)換也有專用的芯片,但也可以使用三極管自行調(diào)整電平匹配。本設計主要采用專用芯片進行電平轉(zhuǎn)換的方法。目前較為廣泛的是使用集成電路轉(zhuǎn)換器件,max232芯片可完成ttl和rs-232c的雙向電平轉(zhuǎn)換。在這里我采用的芯片是max232。圖3-2 max232引腳圖3.3.2max232的引腳介紹max232的引腳主要為5個部分。(1)外接電容:有5個外接電容、進行電壓匹配和電源去耦。(2)ttl的輸入:電路ttl電平的輸入引腳11和10引腳,連接單片機的txd輸出端口。(3)ttl的輸出:電路ttl電平的輸出引腳12和9引腳,

29、連接單片機的rxd輸出端口。(4)rs-232的輸入:兩路rs-232電平的輸入引腳13和8引腳,連接rs-232的txd的輸出端口。(5)rs-232的輸出:兩路rs-232電平的輸出引腳14和7引腳,連接rs-232的rxd的輸出端口。通過max232的ttl和rs-232的輸入/輸出端口,自動地調(diào)節(jié)了單片機串口的ttl電平信號和rs-232的串行通信信號的電平匹配7。3.3.3電平轉(zhuǎn)換芯片與單片機的連接電路地址分配和連接:只列出和系統(tǒng)相關的、關鍵部分的單片機與各個模塊管腳的連接和相關的地址分配。max232的11引腳:max232的ttl電平輸入引腳,連接單片機的txd,ttl串口輸入信

30、號。max232的12引腳:max232的ttl電平輸出引腳,連接單片機的rxd、ttl串口輸入信號。max232的14引腳:max232的rs-232電平輸出引腳,連接rs-232的rxd,rs-232的串口輸入信號。max232的13引腳:max232的rs-232電平輸入引腳,連接rs-232的txd,rs-232的串口輸出信號8。3.4繪制電路原理圖系統(tǒng)硬件設計階段,設計者需要對各個模塊的硬件部分進行具體設計。這部分包括單片系統(tǒng)的設計,外圍功能模塊的選擇,i/o口的分配,單片機與外圍模塊,單片機與單片機之間通信線路的選擇,模擬輸入/輸出通道電路設計等方面。當具體的硬件系統(tǒng)功能框圖完成后

31、,可以繪制電路的原理圖,同時設計者還要對電路設計進行進一步的驗證。完成電路原理圖的繪制后,還需要使用protues等工具軟件繪制硬件系統(tǒng)的版圖,然后進行電路板的制作。(1)打開原理圖設計界面安裝了protues后,雙擊isis打開進入原理圖編輯器。在工具欄中選擇“庫”“拾取原件/符號”,在彈出的窗口中輸關鍵字進行查找。例如輸入at89c52彈出如圖3-3所示界面:圖3-3 繪制原理圖按照此法選擇單片機、cap-elec、compim、led-red、lde-green、7seg-7、button max232、晶振crystal、電容cap等在編輯區(qū)域中添加。元件選取完畢后,在原理圖編輯區(qū)合適

32、位置擺放,可先單擊選中進行拖放。在“終端模式”中選取接地、電源及總線后將放置完畢的元件進行電路圖中各對象間的連線,目的是按照電路設計的要求建立網(wǎng)絡的實際連通性。系統(tǒng)各元器件清單:8051:單片機。crystal:晶振,選擇12mhz,便于設置波特率。max232:單片機串口的電平轉(zhuǎn)換芯片。com1:pc機的串口1。led:發(fā)光二極管。button:用于復位的按鈕。res:電阻。cap:電容。圖3-4 單片機與計算機串行通信電路原理圖圖3-5 硬件電路實物圖當接通電源后,綠色led燈和數(shù)碼管顯示“8”,實物中有一個單片機芯片,電平轉(zhuǎn)換器、led及數(shù)碼管等。如下圖:圖3-6 接通電源后實物顯示圖四

33、 串行通信程序設計4.1下位機(單片機)串行通信及程序設計一個完整的單片機系統(tǒng)只有硬件還不能工作,必須有軟件來控制整個系統(tǒng)的運行。單片機系統(tǒng)的軟件設計主要使用匯編語言或c51語言。單片機的軟件部分 ,主要任務包括系統(tǒng)的初始化、各模塊參數(shù)的設置、中斷請求管理、定時器管理、外圍模塊讀寫、功能算法實現(xiàn)、可靠性和抗干擾設計等方面9。軟件的設計可以分兩個階段。首先,在等待電路板制作期間,設計者可以按照最初的設計思路完成部分的軟件設計工作。隨后當硬件部分的制作完成后,設計者還需要根據(jù)硬件將事先完成的軟件部分的各個模塊進行組合和調(diào)整。本文以protues為集成開發(fā)環(huán)境利用匯編語言完成下位機軟件設計,軟件的功

34、能是利用單片機接收數(shù)據(jù)在數(shù)碼管和led燈上進行顯示。它一方面顯示數(shù)據(jù),另一方面將數(shù)據(jù)發(fā)送出去。下位機匯編語言程序如下:org0000hajmpmainorg0100hmain:movsp,#06h movscon,#50h /8位uart(1 start ,8 data ,1 stop),允許接受movtmod,#20h /t1工作方式2movth1,#0fdhmovtl1,#0fdhsetbtr1key:mova,#0ffhmovp0,amova,p0jnbacc.0,key0jnbacc.1,key1 ajmpmainkey0:movp1,#0ffhk0:jbri,kk /是否接收到數(shù)據(jù),

35、有則跳至kksjmpk0kk:mova,sbuf /將接收到的數(shù)據(jù)保存到累加器movp1,a /輸出至p1clrri /清除risjmpk0retkey1:movp2,#0ffhk01:jbri,kk1 /是否接收到數(shù)據(jù),有則跳至kksjmpk01kk1:mova,sbuf /將接收到的數(shù)據(jù)保存到累加器movp2,a /輸出至p2clrri /清除risjmpk0retend圖4-1 利用keil c編譯結(jié)果4.2上位機(pc機)串行通信及程序設計上位機軟件采用vb編寫,本文中上位的數(shù)據(jù)接收是通過串口實現(xiàn)的,在vb中mscomm控件管理串口,其主要的屬性有以下幾個方面。commport設置其打

36、開端口號為1或2,3,4等;inbuffersize=1024,接收緩沖區(qū)中字節(jié)數(shù);inputlen=0,設置一次接收緩沖字節(jié)數(shù)為全部字節(jié)數(shù);inputmode=cominputmodebinary表示數(shù)據(jù)通過input屬性為二進制形式;outbuffersize=1024,設置并返回傳輸緩沖區(qū)的大??;rthreshold=1,設置接收一個字節(jié)產(chǎn)生oncomm事件;rtsenable=false,若設為true則會發(fā)送信息到調(diào)制解調(diào)器,而不是通過串口通信;setting=9600,n,8,1,設置并返回波特率、奇偶校驗、數(shù)據(jù)位、停止位參數(shù)。9600,n,8,1即波特率為9600,無奇偶校驗,8

37、個數(shù)據(jù)位,1個停止位;sthreshold=0(缺省值)。數(shù)據(jù)傳輸事件不會產(chǎn)生oncomm事件。若設置sthreshold屬性為1,當傳輸緩沖區(qū)完全空時,mscomm控件產(chǎn)生oncomm事件10。在使用mscomm控件的input屬性讀取數(shù)據(jù)之前,必須先設置inputl.en屬性確定被input屬性讀取的字符數(shù),設置inputlen為0,則input屬性讀取緩沖區(qū)中全部的內(nèi)容 如果接收的數(shù)據(jù)類型為文本數(shù)據(jù),則設置mscomml.inputmode=cominputmodetext,input屬性通過一個variant返回文本數(shù)據(jù)。下面是vb部分程序,完整程序附于附錄:mscomm控件的初始化(

38、屬性設置)程序:with mscomm1 .commport = 11 使用com11 .settings = baudrate & ,n,8,1 設置通信口參數(shù) .inbuffersize = 1024 設置mscomm1接收緩沖區(qū)為1024字節(jié) .outbuffersize = 1024 設置mscomm1發(fā)送緩沖區(qū)為1024字節(jié) .inputmode = cominputmodebinary 設置接收數(shù)據(jù)模式為二進制形式- .inputlen = 0 設置input 一次從接收緩沖讀取全部字節(jié)數(shù) .sthreshold = 0 設置發(fā)送完所有產(chǎn)生oncomm事件 .inbuffercou

39、nt = 0 清除接收緩沖區(qū) .outbuffercount = 0 清除發(fā)送緩沖區(qū) .rthreshold = 1 設置接收一個字節(jié)產(chǎn)生oncomm事件 .rtsenable = true- if not .portopen then 判斷通信口是否打開 on error resume next .portopen = true 打開通信口 if err then 錯誤處理 msgbox 串口被占用或此串口不存在!通信無效!, 16, 錯誤提示 exit sub end if end ifend with數(shù)據(jù)接收子程序:private sub mscomm1_oncomm() on erro

40、r resume next dim indata as string 串口接收的數(shù)據(jù) dim inbyte() as byte 定義一個二進制指針放接收到的數(shù)據(jù) dim inbyte1() as byte select case mscomm1.commevent 選擇事件 case comevreceive 接收到字符 timenum = 4 -賦值計時常量 inbyte = mscomm1.input 數(shù)據(jù)轉(zhuǎn)移到指針 serial_rece_fg = true dim j as long for j = 0 to ubound(inbyte) 循環(huán)到指針上標 if inbyte(j) =

41、13 then indata = indata & vbcr lf else indata = indata & chr(inbyte(j) -ascii碼顯示處理 end if next j txt_rcv.seltext = indata 將剛收到的字符串顯示出來 indata = txt_rcv.selstart = len(txt_rcv.text) 光標置后 case comeventrxover -接收緩沖區(qū)滿的處理 mscomm1.inbuffercount = 0 msgbox 接收緩沖區(qū)滿了! -發(fā)出警告 end selectend sub以上vb編輯產(chǎn)生的界面如下:圖4-2

42、 vb界面在啟動運行后,顯示如下界面面,此時點擊相應按鈕可顯示對應數(shù)值,例如點擊led1和“0”后,燈變?yōu)榧t色、數(shù)碼管顯示0。如下圖:圖4-3 單擊led1和“0”顯示的結(jié)果五 總結(jié)從選擇課題到現(xiàn)在設計接近最后階段,讓人感受頗深,有關于單片機知識的,但更多是自己的動手能力。因為我們平時接觸的都是純粹理論的東西,做實驗也是霧里看花,對硬件的認識是很缺乏的。在網(wǎng)上查閱了大量的單片機和數(shù)字芯片的資料,資料比較多也很分散,所以整理有用的資料就顯得很重要,有些東西實在是不懂我就把資料帶回來請教同學,讓我受益匪淺。然后在硬件電路的設計中,由于要涉及軟件設計的具體情況,在老師的精心指導下,最終確定了一個比較

43、容易接受的方案。當時感覺這下任務該完成了,沒有想到的是在實際的調(diào)試中更是遇到了太多的麻煩。拿著設計好的電路接線圖和設計的程序室調(diào)試,可未能得到我所想要的結(jié)果,后來對電路進行了一些改動,在反復檢查電路調(diào)試程序后,最后終于有了結(jié)果。通過這次的課程設計作品的制作讓我對單片機的理論有了更加深入的了解,同時在具體的制作過程中我發(fā)現(xiàn)現(xiàn)在書本上的知識與實際的應用存在著不小的差距,書本上的知識很多都是理想化后的結(jié)論,忽略了很多實際的因素,或者涉及的不全面,可在實際的應用時這些是不能被忽略的,我們不得不考慮這方的問題,這讓我們無法根據(jù)書上的理論就輕易得到預想中的結(jié)果,有時結(jié)果甚至差別很大。這次實踐使我更深刻的體

44、會到了理論聯(lián)系實際的重要性,在今后的學習工作中會更加的注重實際,避免稱為只會紙上談兵。通過這次單片機課程設計,我不僅加深了對單片機理論的理解,將理論很好地應用到實際當中去,而且我還學會了如何去培養(yǎng)我們的創(chuàng)新精神,從而不斷地戰(zhàn)勝自己,超越自己。創(chuàng)新可以是在原有的基礎上進行改進,使之功能不斷完善,成為真己的東西。參考文獻1 張剛毅.彭喜元.單片機原理及接口技術(shù).北京:人民郵電出版社,2008,9118.2 徐愛鈞.單片機原理及應用.北京:機械工業(yè)出版社,2010,1525,131156.3 劉炳文.visual basic程序設計簡明教程.北京:清華大學出版社,2006,1156.4 常敏.王涵.

45、范江波等.單片機應用教程開發(fā)與實踐.北京:電子工業(yè)出版社,2009,2938,103109.5 李全利.仲偉峰.徐軍.單片機原理及應用.北京:清華大學出版社,2006,111136.6 郭清溥.visual basic程序設計教程.北京:中國水利水電出版社,2009,35183.7 曾一江.單片機原理與接口技術(shù).北京:科學出版社,2006,126142.8 杜洋.愛上單片機.北京:人民郵電出版社,2010,2197.9 沙占友.單片機外圍電路設計.北京:電子工業(yè)出版社,2009,88136.10 戴佳.單片機應用系統(tǒng)開發(fā)典型實例.北京:中國電力出版社,2005,103169.附 錄vb完整程序

46、如下:dim cport as integerprivate sub cmd_0_click() dim aa(0) as byte aa(0) = &h3f mscomm1.output = aa image1.picture = imagelist1.listimages(10).pictureend subprivate sub cmd_2_click() dim aa(0) as byte aa(0) = &h5b mscomm1.output = aa image1.picture = imagelist1.listimages(2).pictureend subprivate su

47、b cmd_3_click() dim aa(0) as byte aa(0) = &h4f mscomm1.output = aa image1.picture = imagelist1.listimages(3).pictureend subprivate sub cmd_4_click() dim aa(0) as byte aa(0) = &h66 mscomm1.output = aa image1.picture = imagelist1.listimages(4).pictureend subprivate sub cmd_5_click() dim aa(0) as byte

48、aa(0) = &h6d mscomm1.output = aa image1.picture = imagelist1.listimages(5).pictureend subprivate sub cmd_6_click() dim aa(0) as byte aa(0) = &h7d mscomm1.output = aa image1.picture = imagelist1.listimages(6).pictureend subprivate sub cmd_8_click() dim aa(0) as byte aa(0) = &h7f mscomm1.output = aa i

49、mage1.picture = imagelist1.listimages(8).pictureend subprivate sub cmd_9_click() dim aa(0) as byte aa(0) = &h6f mscomm1.output = aa image1.picture = imagelist1.listimages(9).pictureend subprivate sub cmd_led1_click() if not mscomm1.portopen then 判斷通信口是否打開 msgbox 串口被占用或此串口不存在!通信無效!, 16, 錯誤提示 exit sub

50、 end if dim aa(0) as byte aa(0) = &hfe mscomm1.output = aa shape0.fillcolor = vbred shape0.bordercolor = vbred shape1.fillcolor = vbblack shape1.bordercolor = vbblack shape2.fillcolor = vbblack shape2.bordercolor = vbblack shape3.fillcolor = vbblack shape3.bordercolor = vbblack shape4.fillcolor = vb

51、black shape4.bordercolor = vbblack shape5.fillcolor = vbblack shape5.bordercolor = vbblack shape6.fillcolor = vbblack shape6.bordercolor = vbblack shape7.fillcolor = vbblack shape7.bordercolor = vbblack end subprivate sub cmd_led2_click() if not mscomm1.portopen then 判斷通信口是否打開 msgbox 串口被占用或此串口不存在!通信

52、無效!, 16, 錯誤提示 exit sub end if dim aa(0) as byte aa(0) = &hfd mscomm1.output = aa shape0.fillcolor = vbblack shape0.bordercolor = vbblack shape1.fillcolor = vbred shape1.bordercolor = vbred shape2.fillcolor = vbblack shape2.bordercolor = vbblack shape3.fillcolor = vbblack shape3.bordercolor = vbblack shape4.fillcolor = vbblack shape4.bordercolor = vbblack shape5.fillcolor = vbblack shape5.bordercolor = v

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論