freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

精品畢業(yè)論文--基于51單片機的主從通信系統(tǒng)的設計與實現(xiàn)-閱讀頁

2024-11-19 10:08本頁面
  

【正文】 在單片機的應用中,常用的晶振頻率為: 12MHz 和 。 方案選取 就三種數(shù)據(jù)傳輸協(xié)議的方式來看,串口通信是這三種方式中最為簡單也是最好實現(xiàn)通信方式的一種。要想使用這兩種傳輸方式進行數(shù)據(jù)傳輸?shù)脑挘仨氁褂密浖M。 另外,雖然 IIC 和 SPI 比 UART 更加強大,但是在技術上也在更麻煩一些 。 所以 無論是從設計的難易程 序來考慮,還是從本次設計的實際情況來看, 采用串口通信的方式實現(xiàn) 51 單片機的主從式通信 是最合適不過的了 , 除了實現(xiàn)主機與從機間的 串口 數(shù)據(jù)傳送外,還實現(xiàn)從機到從機的 串口 數(shù)據(jù)傳送的功能 [9][11][12]。本文首先設計出主從通信的硬件原理圖,然后再編寫出了相應的代碼。本次設計主要是一個主機和兩個從機進行通信。因此,可以將主機的 TXD 管腳與從機的 RXD 相連接,以實現(xiàn)主機發(fā)送數(shù)據(jù)從機接收數(shù)據(jù)的功能。 同時也可以實現(xiàn)從機與從機之間的數(shù)據(jù)通信。其一:當單片機處于待機狀態(tài)時,單片機的各個 I/O 口被默認為是高電平,而當主機與一個從機進行通信,另一個從機不工作的話,傳輸線上的信號就會受到另一從機的影響,最終數(shù)據(jù)傳送會發(fā)生錯誤。其中包括主機與兩個從機同時通信,主機與單個從機通信(另一個從機處于待機狀態(tài)),從機與從機之間的通信。 為了解決上述所提到的問題,可以設計一些硬件電路來實現(xiàn)。同時,關于三態(tài)門的控制,可以設計成主機控制,這樣要想實現(xiàn)各種形式的通信都可由主機控制了。 具體的電路原理圖如圖 41所示。因此,在 編寫程序進行 數(shù)據(jù)信號 傳輸 時, 必須考慮到各種情形。 數(shù)據(jù)的可變不僅包括數(shù)據(jù)的內(nèi)容,還應該包括數(shù)據(jù)的長度。我們可以將一組特殊的,用的比較少的數(shù)據(jù)用來當成控制命令字。 本次設計所設計的通信協(xié)議為: 主 機首先給所有的從機發(fā)送一個控制命令字,從機接收到這個控制命令字后進行辨認,如果是 0xaa 則從機 1 準備接收主機的數(shù)據(jù),從機 2 處于待機狀態(tài),而主機則會在發(fā)送完前面的控制命令字后發(fā)送在傳送的數(shù)據(jù)信號。 如果從機接收到的是 0xcc,則主機在發(fā)送完控制命令字后就準備接收從機 1 發(fā)送來的數(shù)據(jù)信號,從機 2 處于待機狀態(tài)。主機發(fā)送的如果是 0xee 或者是 0xff 控制命令字時,則表示從機與從機之間進行數(shù)據(jù)通信,此時,數(shù)據(jù)首先由從機傳送給主機,再由主機三態(tài)門 三態(tài)門 T R T R T R 主機 從機1 從機2 20 傳送給另外一個從機。所謂不可靠傳輸方式,就是發(fā)送端與接收端之間沒有任何關系,發(fā)送端只管發(fā)送數(shù)據(jù),接收端只管接收數(shù)據(jù)。這種傳輸模式的優(yōu)點是相對于可靠傳輸而言,傳輸速率要更高。對于要求高準確率的數(shù) 據(jù)通信系統(tǒng),更多的采用可靠傳輸。如果不一致,則放棄接收到的數(shù)據(jù)。本次設計采用可靠傳輸方式。如果所得的求和值與發(fā)送機發(fā)出的求 和校驗碼一致時,則表示數(shù)據(jù)發(fā)送正確,可以接收并存儲。 編寫軟件代碼時,首先得弄清楚程序流程圖。本次設 計采用一個單片機作主機,兩個單片機作從機進行主從通信,具體 程序 流程如圖 4圖 4圖 44 如下所示。 入口 任務初始化 發(fā)送控制命令 判斷命令 給從機 1發(fā)送數(shù)據(jù) 給從機 2發(fā)送數(shù)據(jù) 主機接收來自從機 1 的數(shù)據(jù) 主機接收來自從機 2 的數(shù)據(jù) 21 圖 42 主機程序流程圖 圖 43 從機 1 程序流程圖 圖 44 從機 2 程序流程圖 入口 任務初始化 接收控制命令 判斷命令 給主機發(fā)送數(shù)據(jù) 接收來自主機的數(shù)據(jù) 給從機 1 發(fā)送數(shù)據(jù) 接收來自從機1 的數(shù)據(jù) 入口 任務初始化 接收控制命令 判斷命令 給主機發(fā)送數(shù)據(jù) 接收來自主機的 數(shù)據(jù) 給從機 2 發(fā)送數(shù)據(jù) 接收來自從機2 的數(shù)據(jù) 22 5 主從式總線通信系統(tǒng)仿真 根據(jù)上面的原理設計好硬件原理圖和編寫好軟件代碼后,可以在 Proteus 仿真軟件上進行仿真了。這樣就可以一目了然的知道仿真結(jié)果的正確性了。 圖 51 仿真原理圖 在 Proteus 仿真軟件上連接好原理圖后,將所寫的主機和從機程序裝入單片機中,然后一一進行仿真 調(diào)試 。這是因為這些數(shù)據(jù)數(shù)碼管上顯示時分別為 0 到 9,這樣可以使傳送的數(shù)據(jù)直觀的顯示出來。 其它情形的通信仿真結(jié)果由于與上面的情形差不多,在此就不詳述。所以可以肯定,此次設計的硬件和軟件都是滿足要求的。然后采用其中之一總線協(xié)議進行基于 51 單片機的主從式總線通信系統(tǒng)的設計。 在進行課題研究的過程中,本人加深了對串口通信、 IIC 總線通信與 SPI 總線通信的理解,尤其是對 串口通信的通信有了深刻的認識。 在研究、分析上述理論知識的基礎上,本人首先設計了系統(tǒng)硬件連接框圖,并利用 Protel 99se 軟件,完成了系統(tǒng)原理圖的設計以及 PCB 圖的布局、布線,并完成了硬件電路的調(diào)試工作。最后在 Proteus 軟 件上進行了系統(tǒng)的仿真與調(diào)試。解決方法是,使用片外 RAM 或者采用更為高級的單片機。 25 致 謝 感謝 。 26 參考文獻 [1] 王偉 , 鄭金奎 . MCS51 單片 機主從式多機系統(tǒng)實時通訊的實現(xiàn) [J].西南自動化研究所, 1998 年第 3 期 P3934. [2] 陳衛(wèi)兵 . IIC 總線協(xié)議在 80C51 單片機上應用的實現(xiàn) [J].阜陽師范學院學報 ,第 19 卷第 3 期 P5254. [3] 惠玥琳 . 基于單片機的 USB 主從機的設計與實現(xiàn) [D].電子科技大學, 2020年 . [4] 易志明等 . SPI 總線在 51 系列單片機系統(tǒng)中的實現(xiàn) [J].天津大學,精密儀器與光電子工程學院,天津 300072. [5] 姚志成 . 單片機多機通信協(xié)議的設計 [J].中國核心期刊 (嵌入式與 SOC),2020年第 22卷第 2期 . [6] 范逸之等 . Visual Basic 與 RS232 串行通信控制 [M]. 最新版 .北京: 北京航空航天大學出版社 , 2020. [7] 張明鋒 . PIC 單片機入門與實踐 [M]. 北京:北京航空航天大學出版社, 2020. [8] 張傳新 , 徐少杰 . PC 機與 MCS51 單片機主從多機通信控制程序的研究 [J].伊圖里河分局研究所,鐵路計算機應用第 5 卷第 2 期 P1012. [9] 何曉紅 , 譚兵 . PC 機與多臺單片機的遠距離多機通信 [J].重慶交通學院信息中心,電子技術應用, 1997 年第 12 期 P4143. [10] 劉艷鈴 . 采用 MAX232 實現(xiàn) MCS51 單片機與 PC 機的通信 [J].天津理工學院學報第 15 卷第 2期 P5761. [11] 黃亮 . 基于 AT89C51 單片機的串行通信程序設計 [J]. 中國地質(zhì)大學 , 單片機實用電子制作 P2932. [12] 何立民 . 單片機應用技術選編 [M]. 北京:北京航空航天大學出版社, 2020. [13] 郝國法等 . 單總線單片機多機通信系統(tǒng)的設計 [J].武漢科技大學學報, 2020年 9月 P278280. [14] 張俊 . 匠人手記:一個單片機工作者的實踐與思考 [M].北京: 北京航空航天大學出版社 , 2020. [15] 周航慈 . 單片機應用程序設計 [M]. 北京:北京航空航天大學出版社, 2020. [16] Universal Serial Bus Mass Storage Class Specification Overview,Revision 12,2020 [17] Compaq,Intel,Microsoft, Universal Serial Bus Specification Revision ,1998. 27 附錄 附錄一 主 機 通信程序 include define uint unsigned int define uchar unsigned char sbit key0=P1^0。 sbit key2=P1^2。 sbit key4=P1^4。 sbit key6=P1^6。 sbit P0_1=P0^1。 uchar temp[20]。 uchar temp2[20]。 unsigned char code tab[]={0xaa/*控制字 */,0xfc/*0*/,0x60/*1*/,0xda/*2*/,0xf2/*3*/,0x66/*4*/, 0xb6/*5*/,0xbe/*6*/,0xe0/*7*/,0xfe/*8*/,0xf6/*9*/,0x00}。//主機給從機 1傳送的數(shù)據(jù) void csh()//初始化串行口 { SM0=0。 REN=1。 RI=0。 TH1=0xfd。 TMOD=0X20。 ET1=0。 TR1=1。 while(tab[m]!=0x00) { m++。sm。 } } void shujuchang2() //將主機給從機 1發(fā)送的數(shù)據(jù)進行位數(shù)計算并求和 { n=0。 } for(t=1。t++) { temp[t+1]=temp[t]+table[t]。 for(x=z。x) for(y=110。y)。 while(im) { SBUF=tab[i]。 TI=0。 } SBUF=temp[s]。 TI=0。 while(TI==0)。 } void zdc2()//主機給從機 2發(fā)送數(shù)據(jù) { j=0。 while(TI==0)。 j++。 while(TI==0)。 SBUF=0x00。 TI=0。 a=1。 } } if(key1==0) { if(key1==0) { while(key1==0)。 key1=1。 30 a=3。 } } if(key3==0) { if(key3==0) { while(key3==0)。 key3=1。 a=5。 } } if(key5==0) { if(key5==0) { while(key5==0)。 key5=1。//讓 P1口全為高電平,方便以后鍵盤掃描 shujuchang1()。 jianpan()。 switch(a) { case 1: //主機給人機 1發(fā)送數(shù)據(jù)程序 csh()。 31 break。 zdc2()。 case 3: //接收從機 1發(fā)給主機數(shù)據(jù)程序 csh()。 ES=0。 while(!TI)。 flag1=0。 csh()。 if(shuju[0]==0xcc) { temp1[1]=0x00。bp2。 } if(temp1[b]==shuju[p2]) { for(q=1。q++) { P2=shuju[q]。 } } p=0。 P0_0=1。 break。 P0_1=0。 SBUF=0xdd。 TI=0。 p=0。 while(flag1==0)。 for(b=1。b++) { temp2[b+1]=temp2[b]+shuju[b]。qp2。 delay(500)。 flag1=0。 } csh()。 case 5: //主機接收從機 1發(fā)給從機 2的數(shù)據(jù)的程序 csh()。 ES=0。 while(!TI)。 flag2=0。 csh()。 if(shuju[0]==0x12) { for(q=0。q++) { SBUF=shuju[q]。 TI=0。 flag2=0。 } csh()。 case 6: //主機接收從機 2發(fā)給從機 1的數(shù)據(jù)的程序 csh()。
點擊復制文檔內(nèi)容
公司管理相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1