双机之间的串行通信设计 c语言编程,双机串行通信设计精品.doc-资源下载人人文库网...
雙機(jī)串行通信設(shè)計(jì) 精品.doc
所屬課程名稱(chēng) 單片機(jī)原理與接口技術(shù) 題 目 雙機(jī)串行通信 二 總體設(shè)計(jì)2.1 設(shè)計(jì)目的 通過(guò)本次課題設(shè)計(jì),應(yīng)用單片機(jī)原理及其接口技術(shù)等所學(xué)相關(guān)知識(shí)及查閱資料,完成簡(jiǎn)易雙機(jī)串行通信設(shè)計(jì),以達(dá)到理論與實(shí)踐更好的結(jié)合、進(jìn)一步提高綜合運(yùn)用所學(xué)知識(shí)和設(shè)計(jì)的能力的目的。通過(guò)本次設(shè)計(jì)的訓(xùn)練,可以使我在基本思路和基本方法上對(duì)基于MCS-51單片機(jī)的嵌入式系統(tǒng)設(shè)計(jì)有一個(gè)比較感性的認(rèn)識(shí),并具備一定程度的設(shè)計(jì)能力。2.2 設(shè)計(jì)任務(wù)兩片單片機(jī)之間進(jìn)行串行通信,發(fā)送端將0f循環(huán)發(fā)送到接收端,完成后在接收端的led 燈亮。2.3 設(shè)計(jì)方法本次設(shè)計(jì),對(duì)于兩片89C51,采用RS232進(jìn)行雙機(jī)通信。發(fā)送方的數(shù)據(jù)由串行口TXD段輸出。接受方接收后,燈亮。為提高抗干擾能力,還可以在輸入輸出端加光耦合進(jìn)行光電隔離。軟件部分,通過(guò)通信協(xié)議進(jìn)行發(fā)送接收,主機(jī)先送AAH給從機(jī),當(dāng)從機(jī)接收到AAH后,向主機(jī)回答B(yǎng)BH。主機(jī)收到BBH后就把數(shù)碼表TAB16中的10個(gè)數(shù)據(jù)送給從機(jī),并發(fā)送檢驗(yàn)和。從機(jī)收到16個(gè)數(shù)據(jù)并計(jì)算接收到數(shù)據(jù)的檢驗(yàn)和,與主機(jī)發(fā)送來(lái)的檢驗(yàn)和進(jìn)行比較,若檢驗(yàn)和相同則發(fā)送00H給主機(jī);否則發(fā)送FFH給主機(jī),重新接受。從機(jī)收到16個(gè)正確數(shù)據(jù)后送到一個(gè)數(shù)碼管顯示。三 硬件系統(tǒng)設(shè)計(jì)3.1基本功能:利用89c51完成兩片單片機(jī)之間進(jìn)行串行通信。3.2可選器件:51系列單片機(jī)、電容、LED燈本設(shè)計(jì)是硬件電路和軟件編程相結(jié)合的設(shè)計(jì)方案,選擇合適的編程語(yǔ)言是一個(gè)重要的環(huán)節(jié)。在單片機(jī)的應(yīng)用系統(tǒng)程序設(shè)計(jì)時(shí),常用的是匯編語(yǔ)言和C語(yǔ)言。C語(yǔ)言雖然執(zhí)行效率沒(méi)有匯編語(yǔ)言高,但語(yǔ)言簡(jiǎn)潔,使用方便,靈活,運(yùn)算豐富,表達(dá)化類(lèi)型多樣化,數(shù)據(jù)結(jié)構(gòu)類(lèi)型豐富,具有結(jié)構(gòu)化的控制語(yǔ)句。本著學(xué)習(xí)和創(chuàng)新的精神,我們采用匯編語(yǔ)言編寫(xiě)了程序。3.1 51單片機(jī)串行通信功能圖1.AT89C51計(jì)算機(jī)與外界的信息交換稱(chēng)為通信,常用的通信方式有兩種:并行通信和串行通信。51單片機(jī)用4個(gè)接口與外界進(jìn)行數(shù)據(jù)輸入與數(shù)據(jù)輸出就是并行通信,并行通信的特點(diǎn)是傳輸信號(hào)的速度快,但所用的信號(hào)線較多,成本高,傳輸?shù)木嚯x較近。串行通信的特點(diǎn)是只用兩條信號(hào)線(一條信號(hào)線,再加一條地線作為信號(hào)回路)即可完成通信,成本低,傳輸?shù)木嚯x較遠(yuǎn)。51單片機(jī)的串行接口是一個(gè)全雙工的接口,它可以作為UART(通用異步接受和發(fā)送器)用,也可以作為同步移位寄存器用。51單片機(jī)串行接口的結(jié)構(gòu)如下:(1)數(shù)據(jù)緩沖器(SBUF)接受或發(fā)送的數(shù)據(jù)都要先送到SBUF緩存。有兩個(gè),一個(gè)緩存,另一個(gè)接受,用同一直接地址99H,發(fā)送時(shí)用指令將數(shù)據(jù)送到SBUF即可啟動(dòng)發(fā)送;接收時(shí)用指令將SBUF中接收到的數(shù)據(jù)取出。(2)串行控制寄存器(PCON)SCON用于串行通信方式的選擇,收發(fā)控制及狀態(tài)指示,各位含義如下:SM0SM1SM2RENTB8RB8TIRISM0,SM1:串行接口工作方式選擇位,這兩位組合成00,01,10,11對(duì)應(yīng)于工作方式0、1、2、3。串行接口工作方式特點(diǎn)見(jiàn)下表SM0SM1工作方式功能波特率0008位同步移位寄存器(用于I/O擴(kuò)展)fORC/1201110位異步串行通信(UART)可變(T1溢出率*2SMOD/32)10211位異步串行通信(UART)fORC/64或fORC/3211311位異步串行通信(UART)可變(T1溢出率*2SMOD/32)SM2:多機(jī)通信控制位。REN:接收允許控制位。軟件置1允許接收;軟件置0禁止接收。TB8:方式2或3時(shí),TB8為要發(fā)送的第9位數(shù)據(jù),根據(jù)需要由軟件置1或清0。RB9:在方式2或3時(shí),RB8位接收到的第9位數(shù)據(jù),實(shí)際為主機(jī)發(fā)送的第9位數(shù)據(jù)TB8,使從機(jī)根據(jù)這一位來(lái)判斷主機(jī)發(fā)送的時(shí)呼叫地址還是要傳送的數(shù)據(jù)。TI:發(fā)送中斷標(biāo)志。發(fā)送完一幀數(shù)據(jù)后由硬件自動(dòng)置位,并申請(qǐng)中斷。必須要軟件清零后才能繼續(xù)發(fā)送。RI:接收中斷標(biāo)志。接收完一幀數(shù)據(jù)后由硬件自動(dòng)置位,并申請(qǐng)中斷。必須要軟件清零后才能繼續(xù)接收。(3)輸入移位寄存器接收的數(shù)據(jù)先串行進(jìn)入輸入移位寄存器,8位數(shù)據(jù)全移入后,再并行送入接收SBUF中。(4)波特率發(fā)生器波特率發(fā)生器用來(lái)控制串行通信的數(shù)據(jù)傳輸速率的,51系列單片機(jī)用定時(shí)器T1作為波特率發(fā)生器,T1設(shè)置在定時(shí)方式。波特率時(shí)用來(lái)表示串行通信數(shù)據(jù)傳輸快慢程度的物理量,定義為每秒鐘傳送的數(shù)據(jù)位數(shù)。(5)電源控制寄存器PCON其最高位為SMOD。(6)波特率計(jì)算當(dāng)定時(shí)器T1工作在定時(shí)方式的時(shí)候,定時(shí)器T1溢出率=(T1計(jì)數(shù)率)/(產(chǎn)生溢出所需機(jī)器周期)。由于是定時(shí)方式,T1計(jì)數(shù)率= fORC/12。產(chǎn)生溢出所需機(jī)器周期數(shù)=模M-計(jì)數(shù)初值X。3.2 整體電路設(shè)計(jì)最終設(shè)計(jì)電路如下圖3所示,發(fā)送方的數(shù)據(jù)由串行口TXD段輸出,經(jīng)過(guò)電平轉(zhuǎn)換芯片MAX232將TTL電平轉(zhuǎn)換為RS232電平輸出,經(jīng)過(guò)傳輸線將信號(hào)傳送到接收端。圖2.整體電路四 程序設(shè)計(jì)通過(guò)通信協(xié)議進(jìn)行發(fā)送接收,主機(jī)先送AAH給從機(jī),當(dāng)從機(jī)接收到AAH后,向主機(jī)回答B(yǎng)BH。主機(jī)收到BBH后就把數(shù)碼表TAB16中的10個(gè)數(shù)據(jù)送給從機(jī),并發(fā)送檢驗(yàn)和。從機(jī)收到16個(gè)數(shù)據(jù)并計(jì)算接收到數(shù)據(jù)的檢驗(yàn)和,與主機(jī)發(fā)送來(lái)的檢驗(yàn)和進(jìn)行比較,若檢驗(yàn)和相同則發(fā)送00H給主機(jī);否則發(fā)送FFH給主機(jī),重新接受。從機(jī)收到16個(gè)正確數(shù)據(jù)后送到一個(gè)數(shù)碼管顯示。4.1 串行通信軟件實(shí)現(xiàn)(1)串行口工作于方式1;用定時(shí)器1產(chǎn)生2400bit/s的波特率,工作于方式2。(2)功能:將本機(jī)ROM中數(shù)碼表TAB16中的16個(gè)數(shù)發(fā)送到從機(jī),并保存在從機(jī)內(nèi)部ROM中,從機(jī)收到這16個(gè)數(shù)據(jù)后送到一個(gè)數(shù)碼管循環(huán)顯示。(3)通信協(xié)議:主機(jī)首先發(fā)送連絡(luò)信號(hào)(AAH),從機(jī)接收到之后返回一個(gè)連絡(luò)信號(hào)(BBH)表示從機(jī)已準(zhǔn)備好接收。(4)通信過(guò)程使用第九位發(fā)送奇偶校驗(yàn)位。(5)從機(jī)接收到一個(gè)數(shù)據(jù)后,立即進(jìn)行奇偶校驗(yàn),若數(shù)據(jù)沒(méi)有錯(cuò)誤,則返回00H,否則返回FFH。(6)主機(jī)發(fā)送一個(gè)數(shù)據(jù)后,等待從機(jī)返回?cái)?shù)據(jù);若為00H,則繼續(xù)發(fā)送下一個(gè)數(shù)據(jù),若為FFH,則重新發(fā)送數(shù)據(jù)。4.2 程序流程圖(1)發(fā)送端程序流程圖主程序開(kāi)始從機(jī)是否回答B(yǎng)BH?程序初始化主機(jī)發(fā)送AAHN主機(jī)發(fā)送數(shù)據(jù),檢驗(yàn)和輸出完成?N清除標(biāo)志位(2) 接收方程序流程圖主程序開(kāi)始檢驗(yàn)和相等?程序初始化接收數(shù)據(jù),計(jì)算檢驗(yàn)和N發(fā)送00H至主機(jī)接收完成?N清除標(biāo)志位發(fā)送FFH,重新接收顯示4.3:源程序匯編語(yǔ)言程序:發(fā)送程序清單如下: START:CLR EA MOV TMOD,#20H ;定時(shí)器1置為方式2 MOV TH1,#0F4H ;裝載定時(shí)器初值,波特率2400 MOV TL1,#0F4H MOV PCON,#00H SETB TR1 ;啟動(dòng)定時(shí)器 MOV SCON,#50H ;設(shè)定串口方式1,且準(zhǔn)備接收應(yīng)答信號(hào) LOOP1:MOV SBUF,#0AAH ;發(fā)聯(lián)絡(luò)信號(hào) JNB TI,$ ;等待一幀發(fā)送完畢 CLR TI ;允許再發(fā)送 JNB RI,$ ;等待2號(hào)機(jī)的應(yīng)答信號(hào) CLR RI ;允許再接收 MOV A,SBUF ;2號(hào)機(jī)應(yīng)答后,讀至A XRL A,#0BBH ;判斷2號(hào)機(jī)是否準(zhǔn)備完畢 JNZ LOOP1 ;2號(hào)機(jī)未準(zhǔn)備好,繼續(xù)聯(lián)絡(luò) LOOP2:MOV R0,#40H ;2號(hào)機(jī)準(zhǔn)備好,設(shè)定數(shù)據(jù)塊地址指針初值 MOV R7,#10H ;設(shè)定數(shù)據(jù)塊長(zhǎng)度初值 MOV R6,#00H ;清校驗(yàn)和單元LOOP3:MOV SBUF,R0 ;發(fā)送一個(gè)數(shù)據(jù)字節(jié) MOV A,R6 ADD A,R0 ;求校驗(yàn)和 MOV R6,A ;保存校驗(yàn)和 INC R0 JNB TI,$ CLR TI DJNZ R7, LOOP3 ;整個(gè)數(shù)據(jù)塊是否發(fā)送完畢 MOV SBUF,R6 ;發(fā)送校驗(yàn)和 JNB TI,$ CLR TI JNB RI,$ ;等待2號(hào)機(jī)的應(yīng)答信號(hào) CLR RI MOV A,SBUF ;2號(hào)機(jī)應(yīng)答,讀至A JNZ LOOP2 ;2號(hào)機(jī)應(yīng)答“錯(cuò)誤”,轉(zhuǎn)重新發(fā)送 RET ;2號(hào)機(jī)應(yīng)答“正確”,返回接收程序清單如下: START:CLR EA CLR P1.0MOV TMOD,#20H MOV TH1,#0F4H MOV TL1,#0F4H MOV PCON,#00H SETB TR1 MOV SCON,#50H ;設(shè)定串口方式1,且準(zhǔn)備接收 LOOP1:JNB RI,$ ;等待1號(hào)機(jī)的聯(lián)絡(luò)信號(hào) CLR RI MOV A,SBUF ;收到1號(hào)機(jī)信號(hào) XRL A,#0AAH ;判是否為1號(hào)機(jī)聯(lián)絡(luò)信號(hào) JNZ LOOP1 ;不是1號(hào)機(jī)聯(lián)絡(luò)信號(hào),再等待 MOV SBUF,#0BBH ;是1號(hào)機(jī)聯(lián)絡(luò)信號(hào),發(fā)應(yīng)答信號(hào) JNB TI,$ CLR TI MOV R0,#40H ;設(shè)定數(shù)據(jù)塊地址指針初值 MOV R7,#10H ;設(shè)定數(shù)據(jù)塊長(zhǎng)度初值 MOV R6,#00H ;清校驗(yàn)和單元LOOP2:JNB RI,$ CLR RI MOV A,SBUF MOV R0,A ;接收數(shù)據(jù)轉(zhuǎn)儲(chǔ) INC R0 ADD A,R6 ;求校驗(yàn)和 MOV R6,A DJNZ R7, LOOP2 ;判數(shù)據(jù)塊是否接收完畢 JNB RI,$ ;完畢,接收1號(hào)機(jī)發(fā)來(lái)的校驗(yàn)和 CLR RI MOV A,SBUF XRL A,R6 ;比較校驗(yàn)和 JZ END1 ;校驗(yàn)和相等,跳至發(fā)正確標(biāo)志 MOV SBUF,#0FFH ;校驗(yàn)和不相等,發(fā)錯(cuò)誤標(biāo)志 JNB TI,$ ;轉(zhuǎn)重新接收 CLR TI END1:SETB P1.0MOV SBUF,#00H RET五 系統(tǒng)調(diào)試與存在的問(wèn)題在protues上進(jìn)行仿真實(shí)驗(yàn)。首先使用Keil將編寫(xiě)完成的程序編譯生成HEX文件,將HEX文件錄到兩片單片機(jī)中,進(jìn)行仿真實(shí)驗(yàn),結(jié)果如下圖所示,可以看到,接收端接收到數(shù)據(jù)。圖4.仿真圖5.1 硬件調(diào)試常見(jiàn)故障:1、邏輯錯(cuò)誤:它是由設(shè)計(jì)錯(cuò)誤或加工過(guò)程中的工藝性錯(cuò)誤所造成的。這類(lèi)錯(cuò)誤包括錯(cuò)線、開(kāi)路、短路等。2、元器件失效:有兩方面的原因:一是器件本身已損壞或性能不符合要求;二是組裝錯(cuò)誤造成元件失效,如電解電容、集成電路安裝方向錯(cuò)誤等。3、可靠性差:因其可靠性差的原因很多,如金屬化孔、接插件接觸不良會(huì)造成系統(tǒng)時(shí)好時(shí)壞,經(jīng)不起振動(dòng);走線和布局不合理也會(huì)引起系統(tǒng)可靠性差。4、電源故障:若樣機(jī)由電源故障,則加電后很容易造成器件損壞。電源故障包括電壓值不符合設(shè)計(jì)要求,電源引線和插座不對(duì),功率不足,負(fù)載能力差等。調(diào)試方法:包括多級(jí)調(diào)試和聯(lián)機(jī)調(diào)試。在調(diào)試過(guò)程中要針對(duì)可能出現(xiàn)的故障認(rèn)真分析,直至檢查出原因并排除。本次硬件調(diào)試過(guò)程中,對(duì)所出現(xiàn)的問(wèn)題進(jìn)行了認(rèn)真的分析和改正,最后能夠很好的達(dá)到設(shè)計(jì)要求的效果。5.2 軟件調(diào)試軟件調(diào)試一般分為以下四個(gè)階段:1、 編寫(xiě)程序并查錯(cuò);2、 在匯編語(yǔ)言的編譯系統(tǒng)中編譯源程序3、 對(duì)程序進(jìn)行編譯連接,并及時(shí)發(fā)現(xiàn)程序中存在的錯(cuò)誤;4、 改正錯(cuò)誤。在軟件調(diào)試過(guò)程中,對(duì)出現(xiàn)的錯(cuò)誤進(jìn)行了認(rèn)真的分析和修改,多次調(diào)試成功后,能夠很好的達(dá)到既定的設(shè)計(jì)效果。六 設(shè)計(jì)小結(jié)經(jīng)過(guò)繁忙而又緊張的課程設(shè)計(jì),終于順利的完成了設(shè)計(jì)任務(wù)。雖然在這段時(shí)間里每天都那么繁忙,但是在這忙碌的過(guò)程中卻得到了許多的收獲。經(jīng)過(guò)課程設(shè)計(jì),在查閱資料的過(guò)程中,了解了單片機(jī)串行通信的基本知識(shí),對(duì)于以后的學(xué)習(xí)和工作都有很大的益處。在學(xué)習(xí)的過(guò)程中,也遇到了一些困難,比如開(kāi)始的時(shí)候,由于發(fā)送端和接收端的通信協(xié)議沒(méi)有做好,導(dǎo)致數(shù)據(jù)不能正確的傳輸,在解決問(wèn)題的過(guò)程中,對(duì)于串行通信的實(shí)現(xiàn)有了深刻的認(rèn)識(shí)
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的双机之间的串行通信设计 c语言编程,双机串行通信设计精品.doc-资源下载人人文库网...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: noj大作业c语言扫雷,noj大作业.d
- 下一篇: 招聘简短口号文案29句