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

正文內(nèi)容

精品畢業(yè)論文--基于51單片機(jī)的主從通信系統(tǒng)的設(shè)計與實現(xiàn)(參考版)

2024-11-03 10:08本頁面
  

【正文】 SBUF。 P0_1=0。 break。 P0_0=1。 } 33 p=0。 while(!TI)。qp。 while(flag2==0)。 p=0。 TI=0。 SBUF=0xee。 P0_0=0。 break。 P0_1=1。 } } p=0。q++) { P2=shuju[q]。 } if(temp2[b]==shuju[p2]) { for(q=1。bp2。 if(shuju[0]==0xdd) { temp2[1]=0x00。 csh()。 32 flag1=0。 while(!TI)。 EA=0。 case 4: //接收從機(jī) 2發(fā)給主機(jī)數(shù)據(jù)程序 csh()。 } csh()。 flag1=0。 delay(500)。qp2。b++) { temp1[b+1]=temp1[b]+shuju[b]。 for(b=1。 while(flag1==0)。 p=0。 TI=0。 SBUF=0xcc。 P0_0=0。 break。 case 2: //主機(jī)給人機(jī) 2發(fā)送數(shù)據(jù)程序 csh()。 zdc1()。 csh()。 shujuchang2()。 } } } main() //主函數(shù) { P1=0xff。 a=6。 key4=1。 } } if(key4==0) { if(key4==0) { while(key4=0)。 a=4。 key2=1。 } } if(key2==0) { if(key2==0) { while(key2==0)。 a=2。 key0=1。 } void jianpan()//鍵盤掃描 { if(key0==0) { if(key0==0) { while(key0==0)。 while(TI==0)。 TI=0。 } SBUF=temp[t]。 TI=0。 while(jn) { SBUF=table[j]。 29 TI=0。 SBUF=0x00。 while(TI==0)。 i++。 while(TI==0)。 } void zdc1()//主機(jī)給從機(jī) 1發(fā)送數(shù)據(jù) { i=0。y0。x0。 } } void delay(uint z) //延時函數(shù) { uint x,y。tn。 while(table[n]!=0x00) { n++。s++) { temp[s+1]=temp[s]+tab[s]。 } for(s=1。 } void shujuchang1() //將主機(jī)給從機(jī) 1發(fā)送的數(shù)據(jù)進(jìn)行位數(shù)計算并求和 28 { m=0。 ES=1。 EA=1。 TL1=0Xfd。 PCON=0。 TI=0。 SM1=1。//主機(jī)給從機(jī) 1傳送的數(shù)據(jù) unsigned char code table[]={0xbb/*控制字 */,0xfc/*0*/,0x60/*1*/,0xda/*2*/,0xf2/*3*/,0x66/*4*/, 0xb6/*5*/,0xbe/*6*/,0xe0/*7*/,0xfe/*8*/,0xf6/*9*/,0xab,0xbc,0x00}。 uchar m,n,a,b,i,j,p,q,s,t,flag1,flag2。 uchar temp1[20]。 uchar shuju[20]。 sbit P0_0=P0^0。 sbit key5=P1^5。 sbit key3=P1^3。 sbit key1=P1^1。 此外,主從通信所使用的技術(shù)可謂日新月異,時刻了解最新的設(shè)計方法,并且搞清楚不現(xiàn)的方法適用的具體場合,利用不同的總線協(xié)議進(jìn)行設(shè)計是本人下一步的研究方向。 但因為本人缺少系統(tǒng)開發(fā)經(jīng)驗,本系統(tǒng)設(shè)計尚有諸多不足之處;在編程方面,由于程序優(yōu)化不足,在僅有 2K RAM 的 51 單片機(jī)上實現(xiàn)傳送時會有系統(tǒng)運(yùn)行效率低,并且偶爾出現(xiàn)數(shù)據(jù) 傳送時各機(jī)之間相互影響的現(xiàn)象。在確認(rèn)硬件電路工作正常之后,在 Keil 軟件上進(jìn)行軟件的調(diào)試。一方面是加強(qiáng)了對諸如 RS232 體系結(jié)構(gòu)、數(shù)據(jù)流模型和傳輸類型等基本概念的理解,另一方面,在研究 RS232 協(xié)議規(guī)范的過程中,深入理解了其數(shù)據(jù)傳送的原理和具體過程,為在硬件平臺上實現(xiàn)主從機(jī)之間的數(shù)據(jù)通信 打下了很好的基礎(chǔ)。設(shè)計了實現(xiàn)基于串口通信的主、從機(jī)功能的硬件電路平臺,并在硬件平臺上實現(xiàn)了主從機(jī)之間數(shù)據(jù)通信的基本功能。 24 6 論文總結(jié) 本文首先介紹了串行總線通信的有關(guān)概念,并在此基礎(chǔ)上講解了三種常用總線通信協(xié)議的基本原理。 23 圖 52 主機(jī)給從機(jī) 1 發(fā)送數(shù)據(jù)仿真圖 從 仿真 結(jié)果可 以看出, 無論是主機(jī)給從機(jī)之間通信,還是從機(jī)之間的通信,都能在仿真軟件上得到正確的結(jié)果。例如 主機(jī)給從機(jī) 1 發(fā)送數(shù)據(jù) ,仿真 瞬時結(jié)果 如圖 52 所示。 本次程序編寫時,主從機(jī)之間發(fā)送的數(shù)據(jù)和從機(jī)與從機(jī)之間發(fā)送的數(shù)據(jù)都為 0xfc、 0x60、 0xda、 0xf 0x6 0xb 0xbe、 0xe0、0xfe、 0xf6。具體的仿真原理圖如圖 51 所示。為了得到明確可見的仿真結(jié)果,本次設(shè)計將主從機(jī)之間的數(shù)據(jù)信號進(jìn)行傳送時,將接收到的數(shù)據(jù)信號 利用數(shù)碼管顯示出來。 其中具體程序見附錄。只有清楚了軟件流程圖,再根據(jù)流程圖進(jìn)行編寫代碼,才不會出現(xiàn)大的錯誤。如果所得的求和值與發(fā)送機(jī)發(fā)出的求和校驗碼有一致時,則表示數(shù)據(jù)發(fā)送時出現(xiàn)錯誤,接收機(jī)丟棄所接收的數(shù)據(jù),并命令發(fā)送機(jī)重新發(fā)送數(shù)據(jù)。 在上述的所有通信過程中,當(dāng)每次數(shù)據(jù)傳送結(jié)束后,接收機(jī)在接收完所有的數(shù)據(jù)后會進(jìn)行一次求和校驗,這樣可以檢驗數(shù)據(jù)傳送的成確與否。發(fā)送端重新發(fā)送數(shù)據(jù),進(jìn)而重復(fù)上面的過程,直到數(shù)據(jù)信號發(fā)送正確為止。所謂可靠傳輸,就是發(fā)送端在發(fā)送一組數(shù)據(jù)后,在數(shù)據(jù)的最后加上一個校驗碼,而接收端在接收數(shù)據(jù)時,不僅接收數(shù)據(jù),而且還要進(jìn)行計算,最后與發(fā)送端發(fā)送的校驗碼進(jìn)行對比,如果兩個校驗碼一致,則表示數(shù)據(jù)是正確的。缺點就像其名字一樣,數(shù)據(jù)傳送不安全。到于數(shù)據(jù)在傳送時有沒有發(fā)生錯誤,接收端是不會知道的。 另外,對于主從機(jī)之間發(fā)送的數(shù)據(jù),有可靠傳輸方式和不可靠傳輸方式。 當(dāng)主機(jī)發(fā)送的是 0xdd 控制命令字時,則主機(jī)在發(fā)送完控制命令字后就準(zhǔn)備接收從機(jī) 2 發(fā)送來的數(shù)據(jù)信號,從機(jī) 1 處于待機(jī)狀態(tài)。 當(dāng)主機(jī)發(fā)送的是 0xbb 控制命令字時,主機(jī)在發(fā)送完控制命令字后發(fā)送要傳送的數(shù)據(jù)信號,此時從機(jī) 1 處于待機(jī)狀態(tài),從機(jī) 2 接收主機(jī)發(fā)送來的數(shù)據(jù)。例如, 本次設(shè)計采用如下控制命令 : 0xaa 表示主機(jī)給從機(jī) 1 發(fā)送數(shù)據(jù), 0xbb 表示主機(jī)給從機(jī) 2 傳送數(shù)據(jù), 0xcc表示從機(jī) 1 給主機(jī)傳送數(shù)據(jù), 0xdd 表示從機(jī) 2 給主機(jī)傳送數(shù)據(jù), 0xee 表示從機(jī)1 給從機(jī) 2 傳送數(shù)據(jù),最后 0xff表示從機(jī) 2 給從機(jī) 1 傳送數(shù)據(jù)。 關(guān)于各種情形的通信,程序設(shè)計時,可以 設(shè)計一種通信協(xié)議, 采用不同的控制命令字進(jìn)行 通信 控制 ,同時也可規(guī)范的管理數(shù)據(jù)之間的傳送 。同時,如果想要系統(tǒng)具有實時性,數(shù)據(jù)信號則必須是可變的。 19 圖 41 硬件原理圖 軟件的編寫 主從式通信系統(tǒng)包括主機(jī)與從機(jī)之間的通信,以及從機(jī)與從機(jī)之間的通信。 本次設(shè)計采用 74HC245 芯片作為三態(tài)們器件。關(guān)于主從機(jī)之間信號的影響,可以在信號端加上三態(tài)門電路,當(dāng)某個從機(jī)不進(jìn)行工作 時,可以設(shè)置三態(tài)門呈高阻態(tài)的狀態(tài),這樣從機(jī)之間就不會相互的影響了。如果只是單純的連接主機(jī)與從機(jī)之間的 RXD 與 TXD 信號線是無法實現(xiàn)的 [1][14]。其二:主從式的通信要實現(xiàn)的是主機(jī)與從機(jī)以及從機(jī)與從機(jī)之間的通信。 根據(jù)上面的原理框圖設(shè)計具體的硬件原理圖時, 如果只是簡單的這樣連線 的話,就會遇到一些問題。而主機(jī)的 RXD 與從機(jī)的 TXD 相連接,以實現(xiàn)從機(jī)發(fā)送數(shù)據(jù)主機(jī)接收的功能。因此 ,主要需要三個單片機(jī)作主從機(jī),另外設(shè)計一些外圍硬件電路來實現(xiàn)這個主從式通信系統(tǒng) MCS51 單片機(jī)的第 10號管腳 RXD 可用于串行數(shù)據(jù)的接收,第 11 號管腳 TXD 可用于串行數(shù)據(jù)的發(fā)送。 硬件原理圖設(shè)計 關(guān)于 51 單片機(jī)的主從式通信系統(tǒng)的硬件設(shè)計的原理框圖是很容易的。 18 4 主從通信系統(tǒng)設(shè)計 主從通信系統(tǒng)的設(shè)計不僅包括系統(tǒng)的硬件原理圖設(shè)計,還包括基于硬件基礎(chǔ)上的軟件代碼的編寫。同時 IIC 的抗干擾能力較弱,一般用于同一板卡上芯片之間的通信,較 少 用于遠(yuǎn)距離傳輸。而且主機(jī)從機(jī)要是都是 51 單片機(jī)的話,實現(xiàn)起來的難度就會非常的大。因為 MCS51 單片機(jī)內(nèi)部有一個全雙工的串行通信口,而一般的 51 單片機(jī)不帶 IIC 總線接口和 SPI 總線接口。所以,選用的 波特率也相對固定 [13]。這時溢出率取決于TH1 中的計數(shù)值。 ( T1溢出率) 方式 3 的波特率 =( 2SMOD/32) 方式 0 的波特率 = fosc/12 17 方式 2 的波特率 =( 2SMOD/64) 串行口的四種工作方式對應(yīng)三種波特率。 R I ( 中 斷 標(biāo) 志 )位 采 樣 脈 沖D 0 D 1 D 2 D 3 D 4 D 5 D 6 D 7停 止 位R X D起 始R B 8 圖 311 方式 2 或方式 3 的接收時序圖 在串行通信中,收發(fā)雙方對發(fā)送或接收數(shù)據(jù)的速率要有約定。如果條件不滿足,則數(shù)據(jù)丟失,且不置位 RI,繼續(xù)搜索 RXD 引腳的負(fù)跳變。 D 0 D 1 D 2 D 3 D 4 D 5 D 6 D 7寫 入 S B U F停 止 位T X DT I ( 中 斷 標(biāo) 志 )起 始T B 8 圖 310 方式 2 或方式 3 的發(fā)送時序圖 方式 2 和方式 3輸入:接收時,數(shù)據(jù)從右邊移入輸入移位寄存器,在起始位0移到最左邊時,控制電路進(jìn)行最后一次移位。當(dāng)停止位移至輸出位時,左 邊其余位全為 0,檢測電路檢測到這一條件時,使控制電路進(jìn)行最后一次移位,并置 TI=1,向 CPU 請求中斷。每一個移位脈沖都使輸出移位寄存器的各位右移一位,并由 TXD 引腳輸出。方式 2的波特率固定為晶振頻率的 1/64 或 1/32,方式 3的波特率由定時器 T1 的溢出率決定。 16 TXD 為數(shù)據(jù)發(fā)送引腳, RXD 為數(shù)據(jù)接收引腳 。 D 0 D 1 D 2 D 3 D 4 D 5 D 6 D 7寫 入 S B U F停 止 位T X DT I ( 中 斷 標(biāo) 志 )起 始 圖 38 方式 1 輸入 D 0 D 1 D 2 D 3 D 4 D 5 D 6 D 7停 止 位R X DR I ( 中 斷 標(biāo) 志 )起 始位 采 樣 脈 沖 圖 39 方式 1 輸出 2. 方式 2和方式 3 設(shè)置 SCON 寄存器的 SM0、 SM1= 1 0 時,串行口工作于方式 2,當(dāng) SM0、SM1= 1 1 時,串行口工作于方式 3。當(dāng) RI=0,且 SM2=0(或接收到的停止位為 1)時,將接收到的 9位數(shù)據(jù)的前 8 位數(shù)據(jù)裝入接收 SBUF,第 9 位(停止位)進(jìn)入 RB8,并置 RI=1,向 CPU 請求中斷。 用軟件置REN 為 1 時,接收器以所選擇波特率的 16 倍速率采樣 RXD 引腳電平,檢測到 RXD引腳輸入電平發(fā)生負(fù)跳變時,則說明起始位有效,將其移入輸入移位寄存器,并開始接收這一幀信息的其余位。 TXD 為數(shù)據(jù)發(fā)送引腳, RXD 為數(shù)據(jù)接收引腳,傳送一幀數(shù)據(jù)的格式如圖所示。 2.方式 1 設(shè)置 SCON 寄存器的 SM0、 SM1= 0 1 時,串行口工作于方式 1。波特率固定為 fosc/12。數(shù)據(jù)由 RXD()引腳輸入或輸出,同步移位脈沖由 TXD()引腳輸出。 此 時,串行口為同步移位寄存器的輸入輸出方式。復(fù)位時, SMOD=0。 SMOD()為 波特率倍增位。也必須在中斷服務(wù)程
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1