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

下載本文檔

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

文檔簡(jiǎn)介

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

2、pc機(jī)串行通信的程序。通過vb程序控制led及數(shù)碼管的亮滅,同時(shí)可實(shí)現(xiàn)對(duì)兩者的參數(shù)設(shè)置,更改其亮燈次數(shù)和間隔時(shí)間。系統(tǒng)經(jīng)過實(shí)際應(yīng)用,效果令人滿意 .關(guān)鍵詞:串行通行 單片機(jī) 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本次設(shè)計(jì)的工作任務(wù)2二 總體方案設(shè)計(jì)32.1可行性分析32.2系統(tǒng)功能分析32.3單片機(jī)選型32.4系統(tǒng)硬軟件的功能設(shè)計(jì)4三 通信系統(tǒng)硬件電路設(shè)計(jì)63.1串行接口的基本通信方式63.3電平轉(zhuǎn)換電路的設(shè)計(jì)83.4繪制電路原理圖10四 串行通信程序設(shè)計(jì)134.1下位機(jī)(單片機(jī))串行通信及程序設(shè)計(jì)134.2上位機(jī)(pc機(jī))串行通信及程序設(shè)計(jì)14五 總結(jié)18六 致謝19參考文獻(xiàn)20附 錄21一 前言1.1概述單片機(jī)是一種集成在電路芯片,是采用超大規(guī)模集成電路技術(shù)把具有數(shù)據(jù)處理能力的中央處理器cpu隨機(jī)存儲(chǔ)器ra

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

29、連接單片機(jī)的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的輸入/輸出端口,自動(dòng)地調(diào)節(jié)了單片機(jī)串口的ttl電平信號(hào)和rs-232的串行通信信號(hào)的電平匹配7。3.3.3電平轉(zhuǎn)換芯片與單片機(jī)的連接電路地址分配和連接:只列出和系統(tǒng)相關(guān)的、關(guān)鍵部分的單片機(jī)與各個(gè)模塊管腳的連接和相關(guān)的地址分配。max232的11引腳:max232的ttl電平輸入引腳,連接單片機(jī)的txd,ttl串口輸入信

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

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

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

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

34、能是利用單片機(jī)接收數(shù)據(jù)在數(shù)碼管和led燈上進(jìn)行顯示。它一方面顯示數(shù)據(jù),另一方面將數(shù)據(jù)發(fā)送出去。下位機(jī)匯編語言程序如下: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上位機(jī)(pc機(jī))串行通信及程序設(shè)計(jì)上位機(jī)軟件采用vb編寫,本文中上位的數(shù)據(jù)接收是通過串口實(shí)現(xiàn)的,在vb中mscomm控件管理串口,其主要的屬性有以下幾個(gè)方面。commport設(shè)置其打

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

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

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

39、nt = 0 清除接收緩沖區(qū) .outbuffercount = 0 清除發(fā)送緩沖區(qū) .rthreshold = 1 設(shè)置接收一個(gè)字節(jié)產(chǎn)生oncomm事件 .rtsenable = true- if not .portopen then 判斷通信口是否打開 on error resume next .portopen = true 打開通信口 if err then 錯(cuò)誤處理 msgbox 串口被占用或此串口不存在!通信無效!, 16, 錯(cuò)誤提示 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 定義一個(gè)二進(jìn)制指針放接收到的數(shù)據(jù) dim inbyte1() as byte select case mscomm1.commevent 選擇事件 case comevreceive 接收到字符 timenum = 4 -賦值計(jì)時(shí)常量 inbyte = mscomm1.input 數(shù)據(jù)轉(zhuǎn)移到指針 serial_rece_fg = true dim j as long for j = 0 to ubound(inbyte) 循環(huán)到指針上標(biāo) 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) 光標(biāo)置后 case comeventrxover -接收緩沖區(qū)滿的處理 mscomm1.inbuffercount = 0 msgbox 接收緩沖區(qū)滿了! -發(fā)出警告 end selectend sub以上vb編輯產(chǎn)生的界面如下:圖4-2

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

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

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

45、范江波等.單片機(jī)應(yīng)用教程開發(fā)與實(shí)踐.北京:電子工業(yè)出版社,2009,2938,103109.5 李全利.仲偉峰.徐軍.單片機(jī)原理及應(yīng)用.北京:清華大學(xué)出版社,2006,111136.6 郭清溥.visual basic程序設(shè)計(jì)教程.北京:中國水利水電出版社,2009,35183.7 曾一江.單片機(jī)原理與接口技術(shù).北京:科學(xué)出版社,2006,126142.8 杜洋.愛上單片機(jī).北京:人民郵電出版社,2010,2197.9 沙占友.單片機(jī)外圍電路設(shè)計(jì).北京:電子工業(yè)出版社,2009,88136.10 戴佳.單片機(jī)應(yīng)用系統(tǒng)開發(fā)典型實(shí)例.北京:中國電力出版社,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, 錯(cuò)誤提示 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, 錯(cuò)誤提示 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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論