北京交大單片機(jī)課程設(shè)計(jì)串行通信之多機(jī)通信_(tái)第1頁
北京交大單片機(jī)課程設(shè)計(jì)串行通信之多機(jī)通信_(tái)第2頁
北京交大單片機(jī)課程設(shè)計(jì)串行通信之多機(jī)通信_(tái)第3頁
北京交大單片機(jī)課程設(shè)計(jì)串行通信之多機(jī)通信_(tái)第4頁
北京交大單片機(jī)課程設(shè)計(jì)串行通信之多機(jī)通信_(tái)第5頁
已閱讀5頁,還剩10頁未讀, 繼續(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ī)課程設(shè)計(jì)串行通信之多機(jī)通信完成日期:2009年7月11日目錄一、 設(shè)計(jì)目的1二、 實(shí)現(xiàn)功能1三、 元件清單1四、 總體框圖2五、 基本原理4六、 軟件仿真4七、 拓展說明6八、 課程設(shè)計(jì)完成感想7九、 程序清單8一、 設(shè)計(jì)目的1 了解單片機(jī)串行通信的工作原理。2 掌握串行口工作方式的程序設(shè)計(jì)及點(diǎn)對(duì)點(diǎn)通信電路連接方法二、 實(shí)現(xiàn)功能基本實(shí)驗(yàn)要求:利用兩臺(tái)單片機(jī)實(shí)驗(yàn)平臺(tái)完成兩臺(tái)單片機(jī)間點(diǎn)對(duì)點(diǎn)通信。1 完成兩臺(tái)單片機(jī)間一主一從的單工通信。主機(jī)發(fā)送數(shù)據(jù),從機(jī)接收數(shù)據(jù)并在數(shù)碼管上顯示。2 完成兩臺(tái)單片機(jī)的全雙工通信。通信雙方的任一單片機(jī)可同時(shí)發(fā)送和接收數(shù)據(jù),并將數(shù)據(jù)在各自的數(shù)碼管上顯示。經(jīng)過和老師的

2、溝通協(xié)商,最后實(shí)現(xiàn)功能改為:實(shí)現(xiàn)兩個(gè)或兩個(gè)以上單片機(jī)間的多機(jī)通信,具體方式為:1. 三個(gè)51單片機(jī)間進(jìn)行“1主對(duì)2”全雙工多機(jī)通信。2. 主機(jī)可以將其數(shù)碼管顯示的內(nèi)容發(fā)送給每個(gè)從機(jī),也可以采集每個(gè)從機(jī)數(shù)碼管顯示的數(shù)據(jù)并求和后顯示出來,同時(shí)從機(jī)也可以主動(dòng)發(fā)送數(shù)據(jù)給主機(jī)。3. 每個(gè)單片機(jī)的數(shù)碼管顯示值可以通過外接的按鍵進(jìn)行設(shè)置。三、 元件清單AT89S52單片機(jī) 3個(gè)74LS47譯碼器6個(gè)七段數(shù)碼管6個(gè)復(fù)位電路三套晶振電路三套不帶鎖按鍵6個(gè)電源電路一套四、 總體框圖五、 基本原理本課程設(shè)計(jì)的重點(diǎn)和難點(diǎn)在于對(duì)于多機(jī)通信的標(biāo)志位SM2及相關(guān)寄存器的運(yùn)用。MCS-51單片機(jī)串行通信口控制器SCON中的S

3、M2為方式2或方式3的多機(jī)通信控制位。當(dāng)串行口以方式2或方式3工作時(shí),若SM2設(shè)為1,此時(shí)只有當(dāng)串行口接收到的第9為數(shù)據(jù)RB8=1時(shí),才置“1”中斷標(biāo)志RI,若收到的RB8=0,則不產(chǎn)生中斷標(biāo)志,信息被丟掉。從機(jī)系統(tǒng)有初始化程序?qū)⒋锌谠O(shè)定為方式2接收,即9位異步通信方式,且置“1”SM2和REN,允許串行口中斷。在主機(jī)和某一個(gè)從機(jī)通信之前,先將從機(jī)地址發(fā)送給各個(gè)從機(jī)系統(tǒng),接著才開始傳送數(shù)據(jù)或命令,主機(jī)發(fā)出的地址第9位為“1”,數(shù)據(jù)(包括命令)信息的第9位為“0”。當(dāng)主機(jī)向各個(gè)從機(jī)發(fā)送地址時(shí),各從機(jī)的串行口接收到的第9位信息及RB8為“1”,則置中斷標(biāo)志位RI為“1”,各從機(jī)響應(yīng)中斷,執(zhí)行中斷

4、服務(wù)程序,判斷主機(jī)送來的地址是否和本機(jī)地址相符合,若為本機(jī)地址,則該從機(jī)清零SM2位,準(zhǔn)備接收主機(jī)的數(shù)據(jù)或命令;若地址不相符,則保持SM2為“1”狀態(tài),接著主機(jī)發(fā)送數(shù)據(jù),此時(shí)各從機(jī)串行口接收到的RB8=0,只有于前面地址相符合的從機(jī)系統(tǒng)(即已經(jīng)將SM2清零的從機(jī))才能激活中斷標(biāo)志位RI,從而進(jìn)入中斷服務(wù)程序,在中斷服務(wù)程序中接受主機(jī)的數(shù)據(jù)或執(zhí)行主機(jī)的命令,實(shí)現(xiàn)和主機(jī)的信息傳送;其他從機(jī)因SM2保持“1”,又RB8=0不激活中斷標(biāo)志RI,所接收的數(shù)據(jù)丟失不做處理,從而實(shí)現(xiàn)主機(jī)和從機(jī)間的通信。這種控制方式是主從式工作方式,由主機(jī)控制從機(jī)的接收和發(fā)送。綜上所述,本系統(tǒng)實(shí)現(xiàn)的過程總結(jié)如下:(1) 把全

5、部從機(jī)的串行口初始化為工作方式2或方式3,置位SM2,允許中斷。(2) 主機(jī)置位TB8,發(fā)送要尋址的從機(jī)地址。(3) 所有從機(jī)均接受主機(jī)發(fā)送的地址,并各自進(jìn)入中斷服務(wù)程序,進(jìn)行地址比較。(4) 被尋址的從機(jī)確認(rèn)后,把自身的SM2清零。(5) 主機(jī)向從機(jī)發(fā)送命令,通知從機(jī)是進(jìn)行數(shù)據(jù)接收還是進(jìn)行數(shù)據(jù)的發(fā)送。(6) 主機(jī)和從機(jī)進(jìn)行數(shù)據(jù)通信。六、 軟件仿真Proteus調(diào)試與仿真:在keil中建立程序文件,調(diào)試成功生成hex文件。在proteusISIS界面中,單擊按鈕啟動(dòng)仿真。主機(jī)操作如下:(7) 每按下“加1”鍵,數(shù)碼管顯示值加1;(8) 每按下“匯總數(shù)據(jù)”鍵,主機(jī)數(shù)碼管顯示值變?yōu)閺臋C(jī)1的顯示值+

6、從機(jī)2的顯示值之和;(9) 每按下“發(fā)送從機(jī)1”鍵,從機(jī)1的數(shù)碼管顯示的數(shù)據(jù)為此時(shí)主機(jī)的數(shù)碼管上的數(shù)據(jù);(10) 每按下“發(fā)送從機(jī)2”鍵,從機(jī)2的數(shù)碼管顯示的數(shù)據(jù)為此時(shí)主機(jī)的數(shù)碼管上的數(shù)據(jù)。從機(jī)操作如下:(1) 每按下“加1”鍵,數(shù)碼管顯示值加1;(2) 每按下“發(fā)送”鍵,向主機(jī)發(fā)送數(shù)據(jù);(3) 運(yùn)行中的數(shù)碼管顯示值隨主機(jī)的操作而發(fā)生改變。仿真片段1:主機(jī)將6發(fā)送給從機(jī)1.仿真片段2:主機(jī)將數(shù)據(jù)10發(fā)送給從機(jī)2.仿真片段3:主機(jī)接收從機(jī)1和從機(jī)2數(shù)據(jù)之和。仿真片段4:從機(jī)1向主機(jī)發(fā)送數(shù)據(jù)仿真片段5:從機(jī)2向主機(jī)發(fā)送數(shù)據(jù)七、 課程設(shè)計(jì)完成感想單片機(jī)課程設(shè)計(jì)的時(shí)間還是非常充裕的。兩天的時(shí)間,用來查

7、閱資料和選擇題目。事實(shí)上,串行通信這個(gè)題目并不是我特別想做的。電子琴和led點(diǎn)陣顯示都是很好很有趣的題目,可是稍微打聽一下,周圍的同學(xué)好多都選定了這些題目,而且這個(gè)學(xué)期的嵌入式課程設(shè)計(jì)的題目已經(jīng)做過了類似的作品。對(duì)于串行通信、總線知識(shí),我們了解的并不是很深入,可以說只是知其然而不知其所以然。因此,我打算挑戰(zhàn)一次自己,來嘗試去完成這個(gè)題目的課程設(shè)計(jì)。然而,這個(gè)過程是相當(dāng)艱辛的。從一開始審題就是如此。剛開始接觸通信專業(yè)知識(shí)到現(xiàn)在,通信方式一直都是一個(gè)很基本的常識(shí)。什么叫單工通信,什么叫半雙工、雙工。原來以為這些概念早已是小兒科的問題,可是等到真正用到的時(shí)候,卻發(fā)現(xiàn)不是那么回事。實(shí)際上全雙工通信并不

8、是那么容易就能夠?qū)崿F(xiàn)的,并不是所有總線協(xié)議都能夠?qū)崿F(xiàn)同時(shí)收同時(shí)發(fā)的功能。對(duì)于老師題目界定很模糊,所以,另一個(gè)和我一起想挑戰(zhàn)自我,并且在完全沒有商量的情況下選了同樣題目的女生決定去找老師把題目的功能的弄清楚。通過跟老師的交流,我們對(duì)于上面提到的一些概念有了更加深入的認(rèn)識(shí)。并且決定做多機(jī)通信。雖然說,多機(jī)通信,如果要焊板子的話必須要買三塊單片機(jī)才可以實(shí)現(xiàn)基本功能。但是對(duì)于已經(jīng)決定了的我們,當(dāng)時(shí)并沒有想太多。接下來就是寫程序了。改了寫,寫了改,又是兩天的時(shí)間,終于把程序調(diào)通了。鑒于沒有那么多單片機(jī)開發(fā)板來實(shí)現(xiàn)在線調(diào)試,我決定先用proteus軟件來仿真芯片調(diào)試。第一次用這個(gè)軟件感覺非常不好,因?yàn)楫?dāng)時(shí)

9、手邊沒有教材參考,自己摸索,找不到器件,找不到地線電源線。沒辦法,第二天到圖書館去借了一堆書回來看。終于把電路連接好了。把程序裝載進(jìn)去,能夠?qū)崿F(xiàn)我預(yù)先試想的功能。然而,事情高興的太早了。這個(gè)軟件,是一次性的,第二次就再也打不開了。沒辦法,只能重裝。吃一塹長(zhǎng)一智,大不了不關(guān)了,電腦全天侯待機(jī)。可是沒有辦法在線調(diào)試,我想,既然已經(jīng)可以仿真出來,應(yīng)該說沒有問題了吧。那就進(jìn)入下一個(gè)環(huán)節(jié):去中發(fā)買元件。大中午一點(diǎn)鐘的,兩個(gè)女生頂著大太陽擠公交,一直到下午六點(diǎn)才回來。其實(shí)這點(diǎn)苦不算什么,如果板子能夠出來,再苦也開心,也值得。在這個(gè)環(huán)節(jié)必須要強(qiáng)調(diào)的一點(diǎn)就是,我們當(dāng)時(shí)買單片機(jī)時(shí)要買SST公司制造的??墒悄欠N芯

10、片不好買,甚至有人說那個(gè)芯片已經(jīng)沒有人用了。既然這樣,那就買AT的吧,應(yīng)該說沒有什么關(guān)系。可是我們?nèi)f萬沒有想到,這這個(gè)失誤竟造成了我們后面調(diào)試階段非常大的阻礙。仿真的時(shí)候用的是帶譯碼器的四腳數(shù)碼管,而去中發(fā)卻沒有買到,只好改變?cè)瓉淼脑O(shè)想,每個(gè)數(shù)碼管加一個(gè)譯碼器。由于某些原因,兩天之后又去了一趟中發(fā)購置元件。有數(shù)碼管在,工程變得很巨大。由于我們每天要上一個(gè)上午的課,因此總共花了三天的時(shí)間才把板子焊好。沒有辦法燒程序,因?yàn)殚_發(fā)板是飛利浦公司,和sst公司的。沒有辦法燒AT的芯片。怎么辦,只能請(qǐng)教老師了。找過老師,找過助教。終于在另一個(gè)老師的助教那里發(fā)現(xiàn)了一個(gè)可以向所有芯片燒程序的下載器。但是仍然沒

11、有辦法在線調(diào)試。只好先用別人開發(fā)板上的芯片在線調(diào)試,這樣先把電路調(diào)通了。買的二聯(lián)的板子,很多線,很多焊錯(cuò)點(diǎn),很崩潰。此時(shí)又發(fā)生了一件神奇的事情。也可能我們的課程設(shè)計(jì)的進(jìn)程到此為止了。在線調(diào)試完全沒有問題,可不知道為什么放在焊好的電路上就沒有任何反映了。查電路,該電路,仍然一如既往的出不來任何反映。找助教老師,他查了一個(gè)晚上,也是和我一樣的費(fèi)解。怎么辦,貌似沒轍了??删驮谶@個(gè)時(shí)候,才真正的靜下心來了。不可能沒有原因,所有的事情都是有原因的,單片機(jī)沒有反映,一定是一個(gè)很關(guān)鍵的錯(cuò)誤沒有找出來。晚上去實(shí)驗(yàn)室繼續(xù)查,一個(gè)管腳一個(gè)管腳的查,突然發(fā)現(xiàn)EA端按錯(cuò)了地方了。改過來,出來了!寫道這里已經(jīng)一千五百字

12、,回首整個(gè)過程可謂坎坷崎嶇。自己焊板子的錯(cuò)誤真的是不少,粗心大意的毛病總是改不了。做事情要堅(jiān)持不懈,要腳踏實(shí)地,就算再困難總有柳暗花明的一天。八、 程序清單程序寄存器說明:R5:要發(fā)送和接收,并顯示在數(shù)碼管上的數(shù)據(jù)R4:暫存中間數(shù)據(jù)R3:發(fā)送及接收指令。00H是主機(jī)發(fā)送,01H是主機(jī)接收R2:從機(jī)地址R1,R0:延時(shí)專用寄存器主機(jī)清單:ORG00HAJMPMAINORG30HMAIN:MOVSP,#60H;初始化程序MOVTMOD,#20H;使用定時(shí)器1,方式2MOVTH1,#0FDH;裝入初始值MOVTL1,#0FDHMOVSCON,#0D8H;波特率為9.6KMOVPCON,#0SETBT

13、R1MOVR5,#00H;MOVSBUF,#00H;MOVP1,#00HLOOP:MOVP2,R5;顯示R5寄存器內(nèi)容JBRI,SHOUMOVA,#0FFHMOVP3,A;掃描按鍵JNBP3.2,PRESTX1;功能1 發(fā)送給從機(jī)1數(shù)據(jù)JNBP3.3,PRESTX2;功能2 發(fā)送給從機(jī)2數(shù)據(jù)JNBP3.4,PRESRX;功能3 接收從機(jī)1+從機(jī)2數(shù)據(jù)之和JNBP3.5,JIAYI;功能4 自身的數(shù)據(jù)加1AJMPLOOPPRESTX1:CALLDELAYJBP3.2,LOOPJNBP3.2,$;MOVP1,#01HMOVR3,#00H;發(fā)送的命令MOVR2,#0E0H;從機(jī)1地址CALLMSIO

14、1;發(fā)送NOPNOPAJMPLOOPPRESTX2:CALLDELAYJBP3.3,LOOPJNBP3.3,$;MOVP1,#02HMOVR3,#00HMOVR2,#0F0H;從機(jī)2地址CALLMSIO1NOPNOPAJMPLOOPPRESRX:CALLDELAYJBP3.4,LOOPJNBP3.4,$;MOVP1,#0AHMOVR3,#01H;接收命令MOVR2,#0E0H;先發(fā)給從機(jī)1CALLMSIO1NOPNOPMOVA,R5;將從機(jī)1的數(shù)寄存在R4MOVR4,AMOVR2,#0F0H;再發(fā)給從機(jī)2CALLMSIO1MOVA,R4ADDA,R5DAA;將兩個(gè)數(shù)據(jù)相加MOVR5,AAJMP

15、LOOPJIAYI:CALLDELAYJBP3.5,LOOPJNBP3.5,$;MOVP1,#0HINCR5;加1CLRAADDA,R5DAA;加上進(jìn)位MOVR5,AAJMPLOOPSHOU:CLRRIMOVA,SBUFMOVR5,AAJMPLOOPMSIO1:SETBTB8;發(fā)的是地址MOVA,R2MOVSBUF,AJNBTI,$CLRTICLRTB8;發(fā)的是數(shù)據(jù)MOVA,R3MOVSBUF,AJNBTI,$CLRTICJNEA,#00,SRXSTX:CLRTB8MOVA,R5;發(fā)送子程序MOVSBUF,AJNBTI,$CLRTIRETSRX:JNBRI,$CLRRI;接收子程序MOVA,S

16、BUFMOVR5,ARETDELAY:MOVR0,#10YAN1:MOVR1,#5YAN2:DJNZR1,YAN2DJNZR0,YAN1RETEND從機(jī)程序清單:SLAVEEQU30HORG00HAJMPMAINORG30HMAIN:MOVSP,#60HMOVTMOD,#20HMOVTH1,#0FDHMOVTL1,#0FDHMOVSCON,#0D8HMOVPCON,#0SETBTR1SETBSM2MOVA,#0FFHMOVP1,AMOVA,P1MOVSLAVE,AMOVR5,#00H;MOVSBUF,#00HSETBP3.7DISPLAY:MOVP2,R5;顯示CHACKRI:JBRI,SSIOJNBP3.7,CHAAJNBP3.3,CHABCHAA:CALLDELAYJBP3.7,CHACKRIJNBP3.7,$INCR5;加1MOVA,#0ADDA,R5DAAMOVR5,AAJMPDISPLAYCHAB:CALLDELAYJBP3.3,CHACKRIJNBP3.3,$MOVA,R5MOVSBUF,AJNBTI,$CLRTIAJMPCHACKRISSIO:CLRRI;接收地址SETBRS1CLRRS0MOVA,SBUFXRLA,SLAVEJZSSIO1;判斷是否是本機(jī)RETURN

溫馨提示

  • 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)論