版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
任務(wù)二制作雙機(jī)通信系統(tǒng)三、任務(wù)實(shí)施(一)任務(wù)描述本任務(wù)是實(shí)現(xiàn)兩個(gè)MCS-51單片機(jī)之間的串行通信,甲、乙機(jī)均采用查詢工作方式。(1)利用方式1實(shí)現(xiàn)單片機(jī)雙機(jī)通信,主頻為6MHz,波特率為2400b/s。(2)兩個(gè)單片機(jī)距離較近,甲、乙兩機(jī)的發(fā)送端與接收端分別直接相連,兩機(jī)共地,由于8051串行口的輸出是TTL電平,兩片相連所允許的距離極短。(3)執(zhí)行程序,甲機(jī)將亮燈信號(hào)發(fā)送給乙機(jī),若通信正常,乙機(jī)接收到信號(hào)后點(diǎn)亮8個(gè)發(fā)光二極管。(4)甲、乙機(jī)均采用查詢工作方式。(5)串口初始化。需要注意的是:主頻為6MHz,波特率為2400b/s時(shí),若設(shè)置波特率不加倍,則定時(shí)器初始值為F9H,但此時(shí)計(jì)算得到的實(shí)際波特率為2232b/s,誤差高達(dá)6.99%。因此,設(shè)置波特率加倍,即SMOD=1,此時(shí),定時(shí)器初始值為F3H,計(jì)算得到的實(shí)際波特率誤差僅為0.16%。讀者可根據(jù)前面的計(jì)算公式自行計(jì)算。(6)約定通信雙方協(xié)議。甲機(jī)(主機(jī))發(fā)送AAH,請求發(fā)送信號(hào),乙機(jī)(從機(jī))應(yīng)答B(yǎng)BH,表示同意接收。甲機(jī)接到應(yīng)答信號(hào)后,發(fā)送數(shù)據(jù),并發(fā)送和校驗(yàn)。乙機(jī)接收數(shù)據(jù)并存儲(chǔ)、校驗(yàn),接收正確則回復(fù)00H;否則,回復(fù)FFH,請求甲機(jī)重發(fā)數(shù)據(jù),并等待再次接收。甲機(jī)接到回復(fù)00H后結(jié)束通信,否則,重發(fā)數(shù)據(jù)。(7)根據(jù)雙方通信協(xié)議,繪制雙方的通信控制流程圖,并編寫控制代碼。任務(wù)二制作雙機(jī)通信系統(tǒng)(二)硬件設(shè)計(jì)單片機(jī)的雙機(jī)通信采用三線零調(diào)制解調(diào)方式連接,兩臺(tái)單片機(jī)的發(fā)送端的TXD與RXD交錯(cuò)相連,即完成硬件的連接,在Proteus中繪制電路原理圖如圖5-21所示。任務(wù)二制作雙機(jī)通信系統(tǒng)(三)軟件設(shè)計(jì)1.甲機(jī)(主機(jī))控制程序/************************************************************甲機(jī)串口初始化程序(查詢方式)晶振6MHz,波特率2400bps************************************************************/voidinit_UART(void){SCON=0x50;//串口方式1,允許接收PCON=0x80;//波特率加倍TMOD=0x20;//T1工作方式2TH1=0xF3;//波特率2400bpsTL1=TH1;TR1=1;//啟動(dòng)T1}任務(wù)二制作雙機(jī)通信系統(tǒng)/************************************************************甲機(jī)通信子程序************************************************************/
voidsend_jia(void)
{unsignedchari;unsignedcharsum=0;//累加和while(!send_ready){SBUF=0xaa;//請求發(fā)送信號(hào)AAwhile(!TI);TI=0;while(!RI);//等待應(yīng)答信號(hào)BBRI=0;if(SBUF==0xBB)send_ready=1;}while(!send_ok){for(i=0;i<8;i++)//發(fā)送數(shù)據(jù){SBUF=fabuf[i]; sum+=fabuf[i];//計(jì)算累加校驗(yàn)和while(!TI);TI=0;}SBUF=sum;//發(fā)送累加校驗(yàn)和while(!TI);TI=0;while(!RI);//等待成功接收信號(hào)00RI=0;if(SBUF==0x00)send_ok=1;}}任務(wù)二制作雙機(jī)通信系統(tǒng)#include<reg51.h>
sbitkey=P1^7;//定義發(fā)送控制按鍵
unsignedcharfabuf[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
bitsend_ready=0;//定義發(fā)送就緒標(biāo)志位,=1可以發(fā)送
bitsend_ok=0; //定義發(fā)送成功標(biāo)志位,=1成功
voidinit_UART(void);
voidsend_jia(void);/************************************************************甲機(jī)主程序,按鍵按下,則進(jìn)行一次完整的通信過程************************************************************/
voidmain()
{init_UART();while(1){if(!key)//判斷按鍵{while(!key);send_ready=0;//清標(biāo)志位send_ok=0;send_jia();//執(zhí)行甲機(jī)通信過程}}
}任務(wù)二制作雙機(jī)通信系統(tǒng)2.乙機(jī)(從機(jī))控制程序/************************************************************乙機(jī)通信控制子程序************************************************************/voidreceive_yi(void){unsignedchari;unsignedcharsum=0;//本地校驗(yàn)和bitask_ok=0;//定義甲機(jī)請求標(biāo)志位,=1有通信請求bitreceive_ok=0;//定義乙機(jī)成功接收標(biāo)志位,=1正確接收while(!ask_ok)//等待請求信號(hào)AAH{while(!RI);RI=0;if(SBUF==0xAA)ask_ok=1;}SBUF=0xBB;//發(fā)送應(yīng)答信號(hào)BBHwhile(!TI);TI=0;while(!receive_ok){for(i=0;i<8;i++)//接收數(shù)據(jù),并求和校驗(yàn){while(!RI);RI=0;shoubuf[i]=SBUF;sum+=SBUF;}while(!RI);//接收和校驗(yàn),并判斷RI=0;if(sum==SBUF){SBUF=0x0;//校驗(yàn)正確,發(fā)送00hwhile(!TI);TI=0;receive_ok=1;}else{SBUF=0xFF;//校驗(yàn)正確,發(fā)送FFhwhile(!TI);TI=0;}}}任務(wù)二制作雙機(jī)通信系統(tǒng)
#include<reg51.h>
unsignedcharshoubuf[8];//定義接收數(shù)據(jù)區(qū)
voidinit_UART(void);//串口初始化子程序
voidreceive_yi(void);//乙機(jī)通信控制子程序
voiddelay1s(void);//延時(shí)1s子程序/************************************************************乙機(jī)主程序************************************************************/
voidmain()
{ unsignedchari;init_UART();while(1){receive_yi();for(i=0;i<8;i++){P1=shoubuf[i];delay1s();} }}/************************************************************延時(shí)1s子程序************************************************************/
voiddelay1s(void)
{unsignedchara,b,c;for(c=23;c>0;c--)for(b=152;b>0;b--)for(a=70;a>0;a--);}任務(wù)二制作雙機(jī)通信系統(tǒng)(四)程序調(diào)試1.在keil中分別編譯甲機(jī)發(fā)送程序和乙機(jī)接收程序,分別生成hex文件,分別命名和保存。2.在Proteus仿真軟件中,調(diào)用虛擬終端儀器,并將虛擬終端的接收端RXD分別連與甲機(jī)和乙機(jī)的TXD端口,用于調(diào)試過程中監(jiān)測甲乙機(jī)雙方發(fā)出的信號(hào)。任務(wù)二制作雙機(jī)通信系統(tǒng)二、了解多機(jī)通信MCS-51串行口的方式2和方式3有一個(gè)專門的應(yīng)用領(lǐng)域,即多機(jī)通信。MC-51單片機(jī)的多機(jī)通信是指一臺(tái)主機(jī)和多臺(tái)從機(jī)之間的通信。。圖5-16為MCS51單片機(jī)多機(jī)通信系統(tǒng)邏輯連接圖。主機(jī)的RXD端與所有從機(jī)的TXD端相連,主機(jī)的TXD端與所有從機(jī)的RXD端相連。在這種方式中主機(jī)發(fā)送的信息可以傳送到各個(gè)從機(jī)或指定的從機(jī),各從機(jī)發(fā)送的信息只能被主機(jī)接收,從機(jī)與從機(jī)之間不能進(jìn)行通信。在編程前,首先要給各從機(jī)定義地址編號(hào),如分別為00H、01H、02H等。在主機(jī)想發(fā)送一個(gè)數(shù)據(jù)塊給某個(gè)從機(jī)時(shí),它必須先送出一個(gè)地址字節(jié),以辨認(rèn)從機(jī)。編程實(shí)現(xiàn)多機(jī)通信的過程如下。(1)主機(jī)發(fā)送一幀地址信息,與所需的從機(jī)聯(lián)絡(luò)。主機(jī)應(yīng)置TB8為1,表示發(fā)送的是地址幀。(2)所有從機(jī)初始化設(shè)置SM2=1,處于準(zhǔn)備接收一幀地址信息的狀態(tài)。(3)各從機(jī)接收到地址信息,因?yàn)镽B8=1,則置中斷標(biāo)志RI。中斷后,首先判斷主機(jī)送過來的地址信息與自己的地址是否相符。對(duì)于地址相符的從機(jī),置SM2=0,以接收主機(jī)隨后發(fā)來的所有信息;對(duì)于地址不相符的從機(jī),保持SM2=1的狀態(tài),對(duì)主機(jī)隨后發(fā)來的信息不予理睬,直到發(fā)送新的一幀地址信息。(4)主機(jī)發(fā)送控制指令和數(shù)據(jù)信息給被尋址的從機(jī)。其中主機(jī)置TB8為0,表示發(fā)送的是數(shù)據(jù)或控制指令。對(duì)于未選中的從機(jī),因?yàn)镾M2=1,RB8=0,所以不會(huì)產(chǎn)生中斷,對(duì)主機(jī)發(fā)送的信息不接收。任務(wù)二制作雙機(jī)通信系統(tǒng)【例5-5】設(shè)有一臺(tái)主機(jī),兩臺(tái)從機(jī),主機(jī)呼叫從機(jī),若聯(lián)系成功則主機(jī)向從機(jī)發(fā)送指令,從機(jī)利用P1口所接發(fā)光二極管顯示從機(jī)機(jī)號(hào)。主頻為6MHz,波特率為1200b/s。主機(jī)采用查詢工作方式,從機(jī)采用中斷方式。原理圖如圖5-17所示。任務(wù)二制作雙機(jī)通信系統(tǒng)一、雙機(jī)通信MCS-51單片機(jī)串行口工作方式1只能用于雙機(jī)通信,不能用于多機(jī)通信?!纠?-4】編程實(shí)現(xiàn)兩MCS-51單片機(jī)的短距離串行通信,功能為:將甲機(jī)片內(nèi)數(shù)據(jù)塊從串行口發(fā)送到乙機(jī),甲機(jī)采用查詢方式,乙機(jī)采用中斷方式。分析:(1)通信雙方的硬件連接如圖5.15所示。任務(wù)二制作雙機(jī)通信系統(tǒng)(2)通信雙方的軟件協(xié)議。為實(shí)現(xiàn)雙機(jī)通信,規(guī)定如下:①假定甲機(jī)為發(fā)送機(jī),乙機(jī)為接收機(jī)。②當(dāng)甲機(jī)發(fā)送時(shí),先送一個(gè)“AA”信號(hào),乙機(jī)收到后回答一個(gè)“BB”信號(hào),表示同意接收。③當(dāng)甲機(jī)接收到“BB”信號(hào)后,開始發(fā)送數(shù)據(jù),一個(gè)數(shù)據(jù)塊發(fā)送完后再發(fā)出和校驗(yàn)信號(hào)。④乙機(jī)接收數(shù)據(jù)并轉(zhuǎn)存到數(shù)據(jù)區(qū),起始地址也為30H,同時(shí)每接收一次也計(jì)算一次“檢查和”。當(dāng)一個(gè)數(shù)據(jù)塊收齊后,再接收甲機(jī)發(fā)來的和校驗(yàn)信號(hào),并將它與乙機(jī)的“檢查和”進(jìn)行比較。若兩者相等,說明接收正確,乙機(jī)回答一個(gè)00;若兩者不相等,說明接收不正確,乙機(jī)回答一個(gè)FF,請求重發(fā)。⑤甲機(jī)收到00的答復(fù)后,結(jié)束發(fā)送;若收到的答復(fù)非0,則重新將數(shù)據(jù)發(fā)送一次。(3)雙方均以1200b/s的速率傳送。假設(shè)晶振頻率為6MHz,計(jì)算定時(shí)器1的計(jì)數(shù)初值:X=256-6×106×1384×1200=256-13=243=0F3H為使波特率不倍增,設(shè)定PCON寄存器的SMOD=0,則PCON=00H。任務(wù)二制作雙機(jī)通信系統(tǒng)(4)編寫甲、乙兩機(jī)通信程序。①甲機(jī)發(fā)送甲機(jī)采用查詢方式發(fā)送,主頻6MHz,波特率1200b/s,初始化子程序如下:/************************************************************甲機(jī)串口初始化程序(查詢方式)************************************************************/voidinit_UART(void){SCON=0x50;//串口方式1,允許接收TMOD=0x20;//T1工作方式2TH1=0xF3;//波特率1200b/sTL1=TH1;TR1=1;//啟動(dòng)T1}任務(wù)二制作雙機(jī)通信系統(tǒng)/************************************************************甲機(jī)發(fā)送子程序************************************************************/voidsend_jia(void){unsignedchari;unsignedcharsum=0;//累加和SBUF=10;//發(fā)送數(shù)據(jù)塊長度while(!TI);TI=0;for(i=0;i<10;i++)//發(fā)送數(shù)據(jù){SBUF=fabuf[i];//將發(fā)數(shù)據(jù)區(qū)中的數(shù)據(jù)依次發(fā)送sum+=fabuf[i];//計(jì)算累加校驗(yàn)和while(!TI);TI=0;}SBUF=sum;//發(fā)送累加校驗(yàn)和while(!TI);TI=0;}任務(wù)二制作雙機(jī)通信系統(tǒng)/************************************************************甲機(jī)主程序************************************************************/voidmain(){bitfa_ok=0;//定義發(fā)送成功標(biāo)志位,發(fā)送成功為1init_UART();//串口初始化while(!fa_ok){send_jia();//發(fā)送數(shù)據(jù)及校驗(yàn)while(!RI);//等待乙機(jī)回復(fù)RI=0;if(SBUF==0)fa_ok=1;//回復(fù)00,則發(fā)送成功}}任務(wù)二制作雙機(jī)通信系統(tǒng)②乙機(jī)接收乙機(jī)采用中斷方式接收,主頻6MHz,波特率1200b/s,初始化子程序如下:/************************************************************乙機(jī)串口初始化程序(中斷方式)************************************************************/voidinit_UART(void){
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度棉布產(chǎn)品環(huán)保包裝設(shè)計(jì)與應(yīng)用合同4篇
- 二零二五年度可打印PAD設(shè)備研發(fā)與投資合同2篇
- 2025年度船舶船員勞動(dòng)合同及船舶消防演練服務(wù)合同3篇
- 二零二五年度模具鋼材綠色采購及環(huán)保責(zé)任合同3篇
- 2025年度鋁材產(chǎn)品安全認(rèn)證檢測服務(wù)合同4篇
- 2025年綠色有機(jī)農(nóng)產(chǎn)品連鎖加盟管理規(guī)范合同范本3篇
- 二零二五年度食品添加劑生產(chǎn)委托協(xié)議4篇
- 2025年度船舶船員勞動(dòng)合同及船舶應(yīng)急演練服務(wù)合同3篇
- 2025年度碼頭貨物裝卸及駁運(yùn)合同4篇
- 二零二五版?zhèn)€人應(yīng)急借款擔(dān)保服務(wù)協(xié)議3篇
- 綿陽市高中2022級(jí)(2025屆)高三第二次診斷性考試(二診)歷史試卷(含答案)
- 露天礦山課件
- 經(jīng)濟(jì)效益證明(模板)
- 銀行卡凍結(jié)怎么寫申請書
- 果樹蔬菜病害:第一章 蔬菜害蟲
- 借條借款合同帶擔(dān)保人
- 人工地震動(dòng)生成程序
- 創(chuàng)意綜藝風(fēng)脫口秀活動(dòng)策劃PPT模板
- SSB變槳系統(tǒng)的基礎(chǔ)知識(shí)
- 大五人格量表(revised)--計(jì)分及解釋
- CFA考試(LevelⅠ)歷年真題詳解2015LevelⅠMockExamAfternoonSession
評(píng)論
0/150
提交評(píng)論