兩個單片機之間數據通信的仿真實現(xiàn)_第1頁
兩個單片機之間數據通信的仿真實現(xiàn)_第2頁
兩個單片機之間數據通信的仿真實現(xiàn)_第3頁
兩個單片機之間數據通信的仿真實現(xiàn)_第4頁
兩個單片機之間數據通信的仿真實現(xiàn)_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、目 錄一、課程設計內容要求 4二、方案設計 5三、電路原理圖設計 63.1電路原理圖 63.2 硬件系統(tǒng)簡介 63.3 AT89C51 單片機簡介 73.4 晶振電路的設計 7 四、軟件的設計 84.1 軟件流程圖 84.2 程序的設計 10五、仿真與調試 14六、結論與心得 18七、參考文獻 19摘 要80C51是最常見的一種8位單片機,具有多機通信的功能,可以很好完成基本的數據數據通信的功能。借助PROTEUS等仿真軟件強大的仿真功能,可以從工程的角度直接能夠看到仿真程序的運行電路工作的結果。因此彌補實驗和實際單片機之間數據通信的脫節(jié)環(huán)節(jié),因而具有一定的研究意義。本次設計在了解一定數據通信

2、有關知識的基礎上,利用單片機串口進行多個單片機的數據通信的仿真基本上達到了與實際多個單片機之間的數據通信的相同一致的效果。一課程設計內容要求 單片機在工業(yè)控制、尖端武器、通信設備、信息處理、家用電器等各測控領域的應用非常廣泛。單片機之所以能在通信設備的測控領域中廣泛應用的一個重要的基礎就是它具有數據通信的能力。而串行數據通信又是數據通信中最基本的也是最重要的一種。80C51是最常見的一種8位單片機,具有多機通信的功能,可以很好完成基本的數據數據通信的功能。借助PROTEUS等仿真軟件強大的仿真功能,可以從工程的角度直接能夠看到仿真程序的運行電路工作的結果。因此彌補實驗和實際單片機之間數據通信的

3、脫節(jié)環(huán)節(jié),因而具有一定的研究意義。本次設計在了解一定數據通信有關知識的基礎上,利用單片機串口進行多個單片機的數據通信的仿真基本上達到了與實際多個單片機之間的數據通信的相同一致的效果。具體應完成以下任務 1分析設計任務,搜集參考文獻,根據設計任務要求進行分析與論證,認真完成開題報告。 2熟悉了解并掌握8051單片機工作原理和結構及接口技術、串行通信工作原理、熟練掌握8051匯編語言或單片機C語言的運用 ,熟練掌握PROTEUS仿真軟件的使用,了解并掌握串行通信的種類及學會如何利用單片機的來實現(xiàn)相關功能。 3根據要求,完成(仿真)硬件電路的設計,并再理解和掌握一定相關數據串行通信的與概念的基礎上用

4、8051單片機匯編語言或C語言,完成數據串行通信的數據發(fā)送與接受。利用仿真軟件完成多個單片機之間數據通信功能的軟件設計。 4通過調試或(仿真)多個單片機之間的通信功能。 5總結設計過程,完成課程設計。二、方案設計本設計的題目要求是一個8951(主)與兩個8951(副)做串行多工發(fā)送數據,但是串行通信分同步異步兩種方式。1 異步通信ASYNC(Asynvhronous Data Communication)在異步通訊中數據或字符是一幀(frame)一幀地傳送的。幀定義為一個字符的完整的通訊格式,通常也稱為幀格式。最常見德的幀格式一般是先用一個起始位“0”表示字符的開始;然后是58位的數據,規(guī)定低

5、位在前,高位在后;其后是奇偶效驗位,此位通過對數據奇偶性的檢查,可用于判別字符傳送的正確性,其有三種可能的選擇,即奇,偶,無效驗,用戶可根據需要選擇(在有的格式中這個位可省略);最后是停止位,用以表示字符的結束,停止位可以是1位,1.5位,2位,不同的計算機規(guī)定有所不同。從起始位開始就停止位結束構成完整的一幀。下圖是一種11位的幀格式。由于異步通信每傳送一幀有固定格式,通訊雙方只需按約定的幀格式來發(fā)送和接收數據,所以硬件結構比同步通訊方式簡單。此外,他還能利用校驗位檢測錯誤,所以這種通信方式應用較廣泛。2 同步通信SYNC(Synchronous Data Communication)在同步通

6、信中,數據或字符開始處是用一同步字符在指示(一般約定為12個字符),以現(xiàn)發(fā)送端和接收端同步,一旦檢測到約定同步字符,下面就連續(xù)按順序接收數據。同步傳送個數如下圖因為同步通信數據塊傳送時去掉了字符的開始和結束的標志,所以其速度高于異步傳送,但這種方式對硬件結構要求較高。在單片機主要是采用異步通訊方式,我們也采用這種通訊方式。串行通信制式的確定在串行通訊中,數據是在兩機之間傳送的。按照數據傳送方向,串行通信可分為半雙工(half duplex)制式和全雙工(dull duplex)制式。所以我們的設計采取全雙工的制式 為了使仿真效果,一目了然我們設計時用LED燈接收信號,用它的亮滅代表信號的傳遞效

7、果。三、電路設計3.1 電路原理圖 圖1 兩單片機間數據通信原理圖3.2 硬件系統(tǒng)的簡介1). 主CPU為8751-A:P1接指撥開關,P2接指撥開關。2). 副CPU8751B:片接8個LED.3). 副CPU8751C:片接8個LED.4). 當主CPU8751A,P1的指撥開關切換時,此數據會發(fā)送給副CPU8951-B并控制其P2口8個LED的亮滅。同理,當主CPU 8951-A,P1的指撥開關切換時,此數據會發(fā)送給5). 副CPU8751C并控制其P2口8個LED的亮滅。當副CPU8951-B,P1的指撥開關切換時,此數據會發(fā)送給主CPU8751A并控制其P0口低四位的四個LED的亮滅

8、。同理,當副CPU8951-C, P1的指撥開關切換時,則此數據會發(fā)送給主CPU8951-A,并控制其P0口高四位的四個LED亮滅。3.3 AT89C51 單片機簡介振蕩器及定時電路CPU4K字節(jié)ROM128字節(jié)RAMSFR(26)8位并行口串行口2個16位定時器/計數器 圖2 單片機內部結構圖(1) 一個8位的CPU(2) 一個片內振蕩器及時鐘電路(3) 4KB的FLAShROM(4) 128的內部RAM(5) 可擴展64KB外部ROM和外部RAM的控制電路;(6) 2個16位的定時/計數器(7) 26個特殊功能寄存器(8) 4個8位的并行口(9) 一個全雙工的串行口(10) 5個中斷源,2

9、個外部中斷,3內部中斷(11) 內部硬件看門狗電路(12) 一個SPI串行接口,用于芯片的在系統(tǒng)編程3.4 晶振電路的設計1 設計原理8051片內有一由高增益反相放大器構成的振蕩器。反相放大器的輸入端為xTALl,輸出端為xTAL2,兩端躊接石英晶體及兩個電容形成穩(wěn)定的自激振蕩器。電容通常取30PF左右。具體電路設計這部分在兩個方案中是相同的,電路圖如下 圖3 晶振電路原理圖四軟件設計4.1軟件流程圖 中斷地址符合否?發(fā)回地址接受下一幀是命令幀嗎命令分類從接受準備就緒否?從接受準備就緒否?RRDY=1送主機TRDY=1送主機發(fā)送數據幀接受數據幀RRDY=0送主機TRDY=0送主機接收完否?發(fā)送

10、完否?SM2=1恢復現(xiàn)場 返回N N 非法命令 0100N N Y N NY Y圖4 多機通訊從機中斷服務程序框圖子程序入口 串行口初始化 發(fā)送地址幀從機應答否?發(fā)送命令幀從機應答復否命令正確否命令分類從機接收 準備就緒否發(fā)送數據塊從機發(fā)送 準備就緒否接受數據塊返回N Y應答地址相符否?Y 命令從機復位 NNY NY01 NYY 4.2 程序的設計RI或TI串行中斷請求。當接收或發(fā)送完一串行幀數據時,使內部串行口中斷請求標志RI或TI=1,并請求中斷。當某中斷源的中斷申請被CPU響應后,CPU將把此中斷源的入口地址裝入PC,中斷服務程序即從此地址開始執(zhí)行。中斷源:串行口中斷 入口地址:0023

11、H。TMOD為T0,T1的工作方式寄存器,當為工作方式2,功能為自動再裝入8位計數器51 芯片的串口可以工作在幾個不同的工作模式下,其工作模式的設置就是使用SCON 寄存器。主機程序A:ORG 00H JMP START ;UART中斷起始地址 ORG 23H JMP UARTISTART: MOV TMOD,#00100000B ;TIMER1 工作在MODE2 ANL PCON,#01111111B ;SMOD=0 MOV TH1,#0F3H ;波特率為2400 SETB TR1 ;啟動TIMER1 MOV SCON,#11010000B ;UART工作MODE3 MOV IE,#1001

12、0000B ;UART中斷使能 SETB SM2 ;SM2=1 MOV 30H,#0FFH ;P1指撥開關的初值 MOV 31H,#OFFH MOV 32H,#0FFHLOOP: MOV A,P1 ;讀入P1指撥開關值 CJNE A,30H,UART1 ;判斷有否變化? JMP LOOP1LOOP1: MOV A,P2 ;讀入P2指撥開關值 CJNE A,31H,UART2 ;判斷有否變化? JMP LOOPUART1: MOV 30H,A ;P1指撥開關存入新值 SETB TB8 ;設TB8=1 MOV SBUF,#01H ;發(fā)送8951b的地址WAIT1: JBC TI,L1 ;發(fā)送完畢否

13、? JMP WAIT1L1: CLR TB8 ;清楚TB8=0 MOV SBUF,30H ;把P1指撥開關值發(fā)送給8951bWAIT2: JBC TI,LOOP ;發(fā)送完畢否 JMP WAIT2UART2: MOV 31H,A SETB TB8 MOV SBUF,#02HWAIT3: JBC TI,L3 JMP WAIT3L3: CLR TB8 MOV SBUF,31HWAIT4: JBC TI,LOOP JMP WAIT4UARTI: PUSH ACC ;壓入堆棧 PUSH PSW JBC RI,L5 ;是否接受中斷?RI=1? JMP RETURNL5: JB SM2,6 ; SM2=1接

14、收地址,SM2=0接收數據 MOV A,SBUF ; 接收數據載入累加器 MOV 33H,A ;暫存入(33H)RAM MOV A,32H ; 判斷接收8951-B或8951-C的數據? CJNE A,#01H,L8 ;接到收8951-B的數據? MOV A,33H ;是則輸出至P0顯示(低4位) MOV P0,A SETB SM2 ;設SM2=1,準備接收下一個地址 MOV 32H,#0FFH ;清楚地址(32H)RAM JMP RETURNL8: CJNE A,#02H,RETURN MOV A,33H SWAP A MOV P0,A SETB SM2 MOV 32H,#0FFH JMP

15、RETURNL6: MOV A,SBUF ;載入接收到的地址 CJNE A,#01H,L7 ;是8951-B的地址? MOV 32H,A ;是則此將8951B的地址存入(32H)RAM CLR SM2 ;設SM2=0,準備接收數據 JMP RETURNL7: CJNE A,#02H,RETURN MOV 32H,A CLR SM2RETURN: POP PSW ;取回PSW POP ACC RETI END從機程序B: ORG 00H JMP START ORG 23H ;UART中斷起始地址 JMP UARTI START: MOV TMOD,#00100000B ;TIMER1 工作在MO

16、DE2 ANL PCON,#01111111B ;SMOD=0 MOV TH1,#0F3H ;波特率為2400 SETB TR1 ;啟動TIMER1 MOV SCON,#11010000B MOV IE,#10010000B SETB SM2 MOV 30H,#0FFHLOOP: MOV A,P1 CJNE A,30H,UART1 JMP LOOPUART1: ORL A,#0F0H ;有變化取低4位 MOV 30H,A ;存入P1指撥開關的新值 SETB TB8 ;設TB8=1 MOV SBUF,#01 ;發(fā)送本身地址(01H)給8951AWAIT1: JBC TI,L1 ;發(fā)送完畢否 JM

17、P WAIT1L1: CLR TB8 ;是則清楚TB8=0 MOV SBUF,30H ;將指撥開關的值發(fā)送給8951AWAIT2: JBC TI,LOOP ;發(fā)送完畢否 JMP WAIT2UARTI: PUSH ACC ;壓入堆棧 PUSH PSW JBC RI,L5 ;是否為接收中斷? JMP RETURNL5: JB SM2,L6 MOV A,SBUF MOV P2,A SETB SM2 JMP RETURNL6: MOV A,SBUF CJNE A,#01H,RETURN CLR SM2RETURN: POP PSW POP ACC RETI END從機程序C ORG 00H JMP S

18、TART ORG 23H JMP UARTISTART: MOV TMOD,#00100000B ANL PCON,#01111111B MOV TH1,#0F3H SETB TR1 MOV SCON,#11010000B MOV IE,#10010000B SETB SM2 MOV 30H,#0FFHLOOP: MOV A,P1 CJNE A,30H,UART1 JMP LOOPUART1: ORL A,#0FH SWAP A MOV 30H,A SETB TB8 MOV SBUF,#02WAIT1: JBC TI,L1 JMP WAIT1L1: CLR TB8 MOV SBUF,30HWA

19、IT2: JBC TI,LOOP JMP WAIT2UARTI: PUSH ACC PUSH PSW JBC RI,L5 JMP RETURNL5: JB SM2,L6 ;SM2=1接收地址,SM2=0接收數據 MOV A,SBUF ;SM=0,則接收數據并輸出至P2 MOV P2,A SETB SM2 ;設SM2=1,準備接收下一個地址 JMP RETURNL6: MOV A,SBUF ;SM2=1,載入地址 CJNE A,#02H,RETURN ;是否(02H)地址? CLR SM2 ;是則清除SM2=0,準備接收數據RETURN: POP PSW POP ACC RETI END五仿真與

20、調試單擊仿真運行開始按鈕,我們能清楚地觀察到每一個引腳的電頻變化,紅色代表高電頻,藍色代表低電頻。如圖6.14所示。 圖5 完整電路圖點擊DSW1開關使它指向ON,U3的燈將熄滅,如圖6所示 圖 6 運行結果點擊DSW1開關使它指向ON,U6的燈將熄滅,如圖7所示 圖 7 運行結果點擊DSW4開關使它指向ON,燈A0,A1,A2,A3將亮起來如圖8所示 圖 8 運行結果點擊DSW3開關使它指向ON,燈A4,A5,A6,A7將亮起來,如圖9所示 圖 9 運行結果經測試,該系統(tǒng)性能優(yōu)越。六.結論與心得1、通過這次課程設計,加強了我們動手、思考和解決問題的能力。2、我沉得做課程設計同時也是對課本知識

21、的鞏固和加強,由于課本上的知識太多,平時課間的學習并不能很好的理解和運用各個元件的功能,而且考試內容有限,所以在這次課程設計過程中,對知識使用有了更多的認識。認識來源于實踐,實踐是認識的動力和最終目的,實踐是檢驗真理的唯一標準。所以這個課程設計對我們以后找工作的作用是非常大的。3、兩個星期的課程設計,過程曲折可謂一語難盡。在此期間我們也失落過,也曾一度熱情高漲。從開始時滿富盛激情到最后汗水背后的復雜心情,點點滴滴無不令我回味無長。生活就是這樣,汗水預示著結果也見證著收獲。勞動是人類生存生活永恒不變的話題。通過做課程設計,我才真正領略到“艱苦奮斗”這一詞的真正含義。我想說,設計確實有些辛苦,但苦

22、中也有樂,在如今單一的理論學習中,很少有機會能有實踐的機會,但我們可以,而且設計也是一個團隊的任務,一起的工作可以讓我們有說有笑,相互幫助,配合默契,多少人間歡樂在這里灑下,大學里一年的相處還趕不上這十來天的合作,我感覺我和同學們之間的距離更加近了;我想說,確實很累,但當我們看到自己所做的成果時,心中也不免產生興奮; 正所謂“三百六十行,行行出狀元”。我們同樣可以為社會作出我們應該做的一切,這有什么不好?我們不斷的反問自己。也許有人不喜歡這類的工作,也許有人認為設計的工作有些枯燥,但我們認為無論干什么,只要人生活的有意義就可。社會需要我們,我們也可以為社會而工作。既然如此,那還有什么必要失落呢?于是我們決定沿著自己的路,執(zhí)著的走下去。同時我認為我們的工作是一個團隊的工作,團隊需要個人,個人也離不開團隊,必須發(fā)揚團結協(xié)作的精神。某個人的離群都可能導

溫馨提示

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

評論

0/150

提交評論