久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 12908|回復(fù): 1
收起左側(cè)

單片機(jī)與單片機(jī)之間的串行通訊課設(shè)報(bào)告

[復(fù)制鏈接]
ID:328014 發(fā)表于 2018-6-20 05:31 | 顯示全部樓層 |閱讀模式

單片機(jī)課程設(shè)計(jì)


課題單片機(jī)與單片機(jī)之間的串行通


班級


學(xué)號


姓名:


指導(dǎo)老師





一、任務(wù)簡介--------------------------------1


二、具體功能--------------------------------1


三、實(shí)驗(yàn)設(shè)備及原理圖-------------------1


四、控制程序設(shè)計(jì)--------------------------3


五、調(diào)試分析---------------------------------9

六、用戶使用說明--------------------------11


七、實(shí)驗(yàn)小結(jié)--------------------------------12

八、附錄(源代碼-----------------------13






一、任務(wù)簡介

實(shí)現(xiàn)單片機(jī)與單片機(jī)之間的串行通訊,要求:

(1)利用RS232串行芯片實(shí)現(xiàn)雙向通訊

(2)傳送的數(shù)據(jù)在數(shù)碼管上顯示出來

(3)可通過鍵盤選擇波特率1200、2400、4800和9600bit/s

(4)串行口工作方式為方式1的全雙工串行通信

二、具體功能

(1)首先要能夠通過鍵盤設(shè)定兩臺單片機(jī)的波特率,最好能將波特率顯示在數(shù)碼管(注意:兩臺單片機(jī)要想成功通信,必須選擇相同的波特率,否則無法正常通信)

(2)發(fā)送端的單片機(jī)選擇數(shù)據(jù)并通過按鍵進(jìn)行發(fā)送,在接收端的單片機(jī)可選擇要不要接受該數(shù)據(jù)(即按不按接收鍵),若接收成功則將數(shù)據(jù)在本機(jī)的數(shù)碼管上顯示出來。

(3)兩臺通信的單片機(jī)選擇的工作方式為全雙工通信方式,即兩臺單片機(jī)都可以選擇接收數(shù)據(jù)與發(fā)送數(shù)據(jù)。

三、實(shí)驗(yàn)設(shè)備及原理圖




四、控制程序設(shè)計(jì)

1、設(shè)計(jì)方案:

采用兩片89C52單片機(jī)來實(shí)現(xiàn)上位機(jī)對上位機(jī)的控制,由于是近距離的雙機(jī)通信,所以選擇接交叉相連的方式,上位機(jī)發(fā)送的數(shù)據(jù)由串行口TXD端發(fā)送,直接由下位機(jī)的串行口數(shù)據(jù)端RXD接收。需要注意的是一定要保證兩臺單片機(jī)以相同的波特率進(jìn)行通信,電路分為數(shù)碼管顯示模塊,指示模塊,以及單片機(jī)工作的基本復(fù)位,晶振模塊,甲機(jī)和乙機(jī)都需要用到1個數(shù)碼管,6個按鍵(2個收發(fā)數(shù)據(jù)按鍵+4個波特率選擇按鍵)

2、流程圖如下:

甲機(jī):

乙機(jī):

  • 實(shí)驗(yàn)結(jié)果

程序下載成功后,連接好線(P3.0連接P3.1,P3.1連接P3.0)兩機(jī)都按下S15鍵,選擇波特率4800bit/s,再按下K3鍵發(fā)送,甲機(jī)按下K4鍵接收乙機(jī)發(fā)送的數(shù)字7,并顯示在數(shù)碼管上,如下:(甲機(jī)在上,乙機(jī)在下)

接下來乙機(jī)按S4鍵接收,數(shù)碼管上顯示3

同理,兩機(jī)按下復(fù)位鍵后,再分別按下S14鍵選擇波特率2400bit/s,同時(shí)按下K3和K4,兩邊同時(shí)接收,甲機(jī)顯示6,乙機(jī)顯示2

若所選波特率不同,則兩邊都顯示8

五、調(diào)試分析

(1)波特率設(shè)置調(diào)試

在開始進(jìn)行波特率調(diào)試時(shí),總是不能做到設(shè)置多種波特率,后來是設(shè)置了四個按鍵來對應(yīng)四種不同的波特率,通過檢測按鍵的高低電平來設(shè)置波特率,設(shè)計(jì)波特率的原理就是給不同的按鍵觸發(fā)設(shè)置不同的TH1和TL1初值,這些初值對應(yīng)著不同波特率的值。

(2)數(shù)碼管顯示程序調(diào)試

本次實(shí)驗(yàn)設(shè)計(jì)要把接收到的數(shù)據(jù)顯示在數(shù)碼管上,一開始在設(shè)計(jì)顯示程序時(shí),顯示的數(shù)據(jù)總是顯示不正確,有時(shí)候是亂碼顯示,有時(shí)候是顯示初始數(shù)據(jù)8,有時(shí)候是不能顯示出數(shù)據(jù),經(jīng)過調(diào)試發(fā)現(xiàn)是在循環(huán)掃描數(shù)碼管時(shí)的所設(shè)置的延時(shí)時(shí)間太長,并且自己所寫的字型表也存在一些錯誤,導(dǎo)致數(shù)據(jù)不能夠在數(shù)碼管上正常顯示,所以對數(shù)碼管的掃描以及字型表的正確與否,對于數(shù)碼管顯示正確與否至關(guān)重要。另外在之后的調(diào)試過程中我發(fā)現(xiàn)自己無法將波特率和傳送的數(shù)據(jù)同時(shí)顯示出來,最終便沒有顯示波特率,只是設(shè)置了不同的波特率傳送不同的數(shù)據(jù)。

(3)通信調(diào)試

系統(tǒng)采用的是RS232模塊進(jìn)行通信,在開始進(jìn)行通信調(diào)試時(shí),每次都是在另一端不能正確接收,后來發(fā)現(xiàn)是連線不正確,我連接的時(shí)候?qū)蓚發(fā)送端相連,兩個接收端相連,而正確的連線方法是甲機(jī)的RXD(P3.0)連接乙機(jī)的TXD(P3.1),然后同理甲機(jī)的TXD連接乙機(jī)的RXD。

  • 發(fā)送與接收數(shù)據(jù)調(diào)試

在確定數(shù)碼管顯示程序調(diào)試正確后,我發(fā)現(xiàn)進(jìn)行發(fā)送與接收數(shù)據(jù)調(diào)試時(shí)數(shù)碼管顯示出來的數(shù)據(jù)大部分時(shí)候都是不正確的,有時(shí)是上幾次發(fā)送的數(shù)據(jù),有時(shí)候是系統(tǒng)中原有的其他數(shù)據(jù)。出現(xiàn)這些問題的主要原因是程序設(shè)計(jì)不夠規(guī)范致使收發(fā)數(shù)據(jù)不同步,經(jīng)過老師的指導(dǎo),我設(shè)置了兩個按鍵來控制發(fā)送與接收,并調(diào)用了合適的延時(shí)函數(shù),這才使得數(shù)據(jù)接收與發(fā)送基本同步。

(5)調(diào)試心得

通過對程序的不斷調(diào)試,對于串行口通信有了更深的理解,在調(diào)試過程中要想調(diào)試出自己的想要的結(jié)果,必須要了解硬件的設(shè)計(jì)原理和電路原理,否則即使代碼沒有問題,也無法在硬件上調(diào)試成功。還有一點(diǎn)就是在調(diào)試過程中要有耐心,認(rèn)真對待,不要浮躁,心態(tài)一旦消極了,只會事倍功半,簡單的問題也會變得復(fù)雜。


  • 用戶使用說明

1、首先將MCU程序下載到兩臺89C52單片機(jī)上,兩臺單片機(jī)的代碼一樣,只是在選擇不同波特率時(shí)所傳送的數(shù)據(jù)不一樣,用戶可自行在設(shè)置波特率初值之后修改相應(yīng)的傳送數(shù)據(jù)(本次實(shí)驗(yàn)時(shí)是甲機(jī)傳送1,2,3,4給乙機(jī),乙機(jī)傳送5,6,7,8給甲機(jī))

2、給兩臺主機(jī)設(shè)置波特率,通過矩陣按鍵S13到S16選擇波特率,若選擇的波特率為1200,則按下k13確認(rèn)該波特率;同樣的按下S14,則選擇的波特率為2400;按下S15,波特率為4800;按下S16,波特率為9600,每次選擇波特率時(shí)也傳送了相應(yīng)的數(shù)據(jù)給另一臺機(jī)。另外需注意:要想進(jìn)行正常通信,兩臺單片機(jī)要設(shè)置相同的波特率(按下相同的鍵),否則無法正常傳送數(shù)據(jù)。

3、設(shè)置完波特率之后就可以進(jìn)行兩臺單片機(jī)之間的通信了,按下k3是選擇數(shù)據(jù)并發(fā)送,之后在另一臺機(jī)器上可以選擇是否接收數(shù)據(jù),若需接收數(shù)據(jù)則按下k4,接收數(shù)據(jù)之后數(shù)據(jù)可以在接收方的數(shù)碼管上顯示(甲乙兩機(jī)收發(fā)可以同時(shí)進(jìn)行,即同時(shí)按下K3鍵發(fā)送不同的數(shù)據(jù),同時(shí)按下K4鍵接收,數(shù)碼管上分別顯示收到的數(shù)據(jù))

4、若需要選擇另外一種波特率進(jìn)行通信,則需要按下復(fù)位鍵,然后重新在矩陣鍵盤上選擇波特率,方法如上(若甲乙兩機(jī)選擇不同的波特率,則數(shù)碼管上將亂碼顯示)。

七、實(shí)驗(yàn)小結(jié)

這次課程設(shè)計(jì)主要是實(shí)現(xiàn)單片機(jī)與單片機(jī)之間串行通信,通過本次實(shí)驗(yàn)設(shè)計(jì),我對單片機(jī)之間的串行通信有了更加深刻的理解與體會,對軟件與硬件的配合使用也有了新的了解,同時(shí)也懂得了一些分析電路及調(diào)試程序的方法。在這次程序設(shè)計(jì)過程中我也遇到了很多困難,例如開始時(shí)對題目的理解有偏差,所寫的程序與自己后來買的單片機(jī)也有些地方不適用等。經(jīng)過與同學(xué)的討論、老師的指導(dǎo)、以及自己進(jìn)一步查閱相關(guān)資料,回歸書本,問題才得以解決。雖然最后設(shè)計(jì)并沒有那么理想(比如波特率與傳輸數(shù)據(jù)不能同時(shí)顯示),但總體上來說實(shí)現(xiàn)了單片機(jī)間串行通信,基本上算完成了實(shí)驗(yàn)要求。通過本次設(shè)計(jì)我明白了軟件與硬件相結(jié)合的重要性,二者缺一不可,在實(shí)現(xiàn)硬件連接的同時(shí)也要讀懂軟件所實(shí)現(xiàn)的功能;通過做實(shí)驗(yàn)?zāi)軌蚣由钗覀儗碚撝R的理解,能夠及時(shí)地查漏補(bǔ)缺,實(shí)現(xiàn)了很好地互補(bǔ);同時(shí)我也意識到做實(shí)驗(yàn)時(shí)嚴(yán)謹(jǐn)認(rèn)真的態(tài)度是非常重要的,在不斷地調(diào)試與分析過程中,我們才能真正的意識到自己存在的不足,能夠及時(shí)地改正,學(xué)到更多有用的知識。


八、附錄(源代碼

當(dāng)波特率是1200,2400,4800,9600時(shí),甲機(jī)分別送乙機(jī)數(shù)據(jù)1,2,3,4

當(dāng)波特率是1200,2400,4800,9600時(shí),乙機(jī)分別送甲機(jī)數(shù)據(jù)5,6,7,8

以下是甲機(jī)源代碼:(乙機(jī)源代碼與甲機(jī)一樣,只需將1,2,3,4改成5,6,7,8


  1. ORG 0000H
  2.     LJMP  MAIN
  3. ORG  0023H                                ;串行口中斷入口地址
  4. LJMP  Seri_INT
  5. MAIN:MOV   SP,#0EFH              ;堆棧初始化      
  6.      MOV   TMOD,#20H              ;定時(shí)器T1方式2
  7. MOV   SCON,#50H ;串口初始化方式1多機(jī)通信
  8. MOV   R0,#30H              ;發(fā)送數(shù)據(jù)區(qū)首址
  9. MOV   R1,#40H   ;接收數(shù)據(jù)區(qū)首址                                                                     
  10. LCALL Switch                 ;選擇波特率
  11. SETB    EA       ;開總中斷控制位
  12.      SETB    TR1      ;啟動T1
  13.      SETB    ES      ;允許串口中斷

  14. Seri_INT:
  15.          LCALL  DLY
  16.          JNB   P3.2,FSSSS1                            ;K3按鍵發(fā)送
  17. SJMP               Seri_INT

  18. FSSSS1:
  19.         LCALL  DLY                             ;延時(shí)20ms
  20.         LCALL SEND                               ;調(diào)用發(fā)送子程序

  21. ACCCN2:
  22.          LCALL DLY
  23.          JNB P3.3,FSSSS2   ;K4按鍵接收
  24.               SJMP               ACCCN2

  25. FSSSS2:
  26.          LCALL DLY
  27.          LCALL RECE              ;調(diào)用接收子程序
  28.          INC R0                                          ;修改發(fā)送數(shù)據(jù)指針
  29.   INC R1                                          ;修改接收數(shù)據(jù)指針
  30.               LCALL Display              ;將接收到的數(shù)據(jù)顯示出來

  31. SEND:
  32.           MOV A,@R0                            ;進(jìn)入串口中斷            
  33. MOV C,P                            ;C為進(jìn)位標(biāo)志位,P為奇偶標(biāo)志位,把P中的內(nèi)容傳輸給C
  34.           MOV SBUF,A              ;發(fā)送數(shù)據(jù)到緩沖區(qū)
  35.               CLR TI                            ;發(fā)送中斷標(biāo)志清零
  36.                   RET


  37. RECE:
  38. CLR   RI                            ;接收中中斷標(biāo)志清0
  39.       MOV   A,SBUF              ;讀出接收緩沖區(qū)內(nèi)容
  40.       MOV   @R1,A                            ;讀入接收緩沖區(qū)內(nèi)容
  41.         RET


  42. DELAY2ms:                                              ;延時(shí)2ms
  43.         MOV  R6,#62
  44. DEL1: MOV  R7,#8
  45. DEL2: NOP          ; 晶振頻率12MHz,則執(zhí)行一次所需時(shí)間為1微秒
  46.       NOP            ; 1微秒
  47.       DJNZ   R7,DEL2  ; 2微秒
  48.       DJNZ   R6,DEL1  ; 2微秒[(1+1+2)*62+2]*80=2ms
  49.         RET

  50. DLY:                                                           ;延時(shí)20ms
  51.       MOV  R6,#62
  52. DLY3: MOV  R7,#80
  53. DLY4: NOP          ; 晶振頻率12MHz,則執(zhí)行一次所需時(shí)間為1微秒
  54.       NOP            ; 1微秒
  55.       DJNZ   R7,DLY4  ; 2微秒
  56.       DJNZ   R6,DLY3  ; 2微秒[(1+1+2)*62+2]*80=20ms
  57.         RET


  58. Display:
  59.         MOV DPTR,#TAB              ;字型表首址
  60.         CLR P2.2
  61.          CLR P2.3
  62. CLR P2.4                            ;使傳送的數(shù)據(jù)在第0位數(shù)碼管顯示
  63.               MOV A,40H
  64.               MOVC A,@A+DPTR              ;查字型表
  65.               MOV P0,A                                 ;將傳送的數(shù)據(jù)送到P0口顯示
  66.               LCALL DELAY2mS
  67.               SJMP Display

  68. Switch:                                                           ;選擇波特率
  69.        LCALL  DLY               
  70.        MOV    P1,#0EFH                  ;選擇按鍵S13到S16,屏蔽S1到S12
  71.        MOV    R3,P1
  72.        CJNE   R3,#0EFH,CON1              ;判斷按下的鍵
  73.        SJMP   Switch                              
  74.                                                                                       
  75. CON1: CJNE R3,#0E7H,CON2     ;S13選擇波特率1200
  76.      MOV TH1,#0E8H                                          ;賦初值232
  77.      MOV TL1,#0E8H
  78. MOV 30H,#1            ;當(dāng)波特率是1200時(shí),甲機(jī)發(fā)送數(shù)據(jù)1
  79.                 RET

  80. CON2: CJNE R3,#0EBH,CON3     ;S14選擇波特率2400
  81.       MOV TH1,#0F4H                                          ;初值244
  82.       MOV TL1,#0F4H
  83. MOV 30H,#2          ;當(dāng)波特率是2400時(shí),甲機(jī)發(fā)送數(shù)據(jù)2
  84.                 RET                                          
  85.                
  86. CON3: CJNE R3,#0EDH,CON4     ;S15選擇波特率4800
  87.       MOV TH1,#0FAH                                          ;初值250
  88.       MOV TL1,#0FAH
  89. MOV 30H,#3        ;當(dāng)波特率是4800時(shí),甲機(jī)發(fā)送數(shù)據(jù)3
  90.               RET

  91. CON4: CJNE R3,#0EEH,CON5      ;S16選擇波特率9600
  92.       MOV TH1,#0FDH                                            ;初值253
  93.       MOV TL1,#0FDH
  94. MOV 30H,#4     ;當(dāng)波特率是9600時(shí),甲機(jī)發(fā)送數(shù)據(jù)4
  95. CON5:   RET

  96. TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H  ;0到f的字型表
  97.      DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H  
  98. END
復(fù)制代碼

完整的Word格式文檔51黑下載地址:
單片機(jī)與單片機(jī)之間的串行通訊.doc (1002.43 KB, 下載次數(shù): 26)


回復(fù)

使用道具 舉報(bào)

ID:354902 發(fā)表于 2018-6-20 09:41 | 顯示全部樓層
厲害了
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品美女视频 | 91在线网站 | 中文字幕一区在线 | 国产激情在线观看 | 涩涩视频网站在线观看 | 亚洲淫视频 | www.色午夜.com | 欧美亚洲国产日韩 | 亚洲成人一二三 | 久久一区二区三区免费 | 欧美日本一区 | 亚洲电影在线播放 | 天天久 | 日韩一区中文字幕 | 色本道 | 91久久久久久 | 成人深夜福利网站 | 成人亚洲一区 | 一区二区在线免费观看视频 | 亚洲成人一级 | 国产不卡在线观看 | 亚洲精品68久久久一区 | 欧美日韩在线电影 | 日韩一区二区黄色片 | 韩三级在线观看 | 91麻豆精品国产91久久久久久久久 | 日本精品在线观看 | 亚洲精品白浆高清久久久久久 | 黄色毛片免费视频 | 亚洲精品乱码久久久久久按摩观 | 做a视频 | 精品国产第一区二区三区 | 在线色网 | 免费国产视频 | 欧美视频一区二区三区 | 老头搡老女人毛片视频在线看 | 欧美www在线| 日韩在线一区二区三区 | 黄页网址在线观看 | 国产一区二区三区在线 | 国产精品国产a级 |