雙機(jī)通信系統(tǒng)單片機(jī)課程設(shè)計(jì)(優(yōu)選.)_第1頁
雙機(jī)通信系統(tǒng)單片機(jī)課程設(shè)計(jì)(優(yōu)選.)_第2頁
雙機(jī)通信系統(tǒng)單片機(jī)課程設(shè)計(jì)(優(yōu)選.)_第3頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、設(shè)計(jì)概況 21 總體設(shè)計(jì) 31.1 設(shè)計(jì)要求 31.2 設(shè)計(jì)方案 32 雙機(jī)通信硬件設(shè)計(jì) 42.1 AT89C51 簡(jiǎn)介 42.2 AT89C51 串行口的工作方式 52.3 晶振電路設(shè)計(jì) 82.4 復(fù)位電路設(shè)計(jì) 82.5 接口電路的設(shè)計(jì) 92.6 輸入輸出電路設(shè)計(jì) 113 雙機(jī)通信軟件設(shè)計(jì) 133.1 串行通信軟件實(shí)現(xiàn) 133.2 串行通信程序流程 133.3 程序清單 164 軟件仿真 205 硬件連接 216 設(shè)計(jì)總結(jié) 23參考文獻(xiàn) 24設(shè)計(jì)概況要構(gòu)成一個(gè)較大規(guī)模的控制系統(tǒng), 常常需要采用多機(jī)控制實(shí)現(xiàn), 而 AT89C51 單片機(jī)有一個(gè)異步通信方式的全雙工串行接口,可以方便地構(gòu)成雙機(jī)、多

2、機(jī)系 統(tǒng)。而串行通信也成為單片機(jī)與單片機(jī)、單片機(jī)與上位機(jī)之間進(jìn)行數(shù)據(jù)傳輸?shù)?主要方式,是一種適用于遠(yuǎn)距離通信的數(shù)據(jù)傳輸方式。串行通信是單片機(jī)的一個(gè)重要應(yīng)用。本次課程設(shè)計(jì)就是要利用單片機(jī)來完 成一個(gè)系統(tǒng),實(shí)現(xiàn)雙片單片機(jī)串行通信。通信的結(jié)果實(shí)用數(shù)碼管進(jìn)行顯示,數(shù) 碼管采用查表方式顯示。兩個(gè)單片機(jī)之間采用RS232進(jìn)行雙機(jī)通信。在通信過程中,使用通信協(xié)議進(jìn)行通信。關(guān)鍵詞:?jiǎn)纹瑱C(jī);串行通信;接口1總體設(shè)計(jì)1.1 設(shè)計(jì)要求設(shè)計(jì)一個(gè)單片機(jī)雙機(jī)通信系統(tǒng),單片機(jī) A接1個(gè)8位按鍵開關(guān),單片機(jī)B 接8個(gè)發(fā)光二極管,通過串行通信實(shí)現(xiàn)由 A機(jī)撥碼開關(guān)控制B機(jī)發(fā)光二極管的 亮火。1.2 設(shè)計(jì)方案本次設(shè)計(jì),對(duì)于兩片 A

3、T89C51,采用RS-232進(jìn)行雙機(jī)通信。如圖1所示, 發(fā)送方的數(shù)據(jù)由串行口 TXD段輸出,經(jīng)過電平轉(zhuǎn)換芯片MAX232各TTL電平轉(zhuǎn)換 為RS-232電平輸出,經(jīng)過傳輸線將信號(hào)傳送到接收端。接收方也使用MAX232芯片進(jìn)行電平轉(zhuǎn)換后,信號(hào)到達(dá)接收方串行口的接收端。 接收方接收后,在LED 二極管上顯示接收的對(duì)應(yīng)信息。晶振電路復(fù)位電路8路撥碼開關(guān)電路接收機(jī)晶振電路復(fù)位電路顯示 電路圖1雙機(jī)通信系統(tǒng)原理框圖軟件部分,通過通信協(xié)議進(jìn)行發(fā)送接收,發(fā)送機(jī)先送聯(lián)絡(luò)信號(hào)給接收機(jī), 當(dāng)接收機(jī)接收到聯(lián)絡(luò)信號(hào)后,向發(fā)送機(jī)回答一個(gè)應(yīng)答信號(hào),表示同意接收。發(fā) 送機(jī)收到應(yīng)答信號(hào)后開始發(fā)送數(shù)據(jù),每發(fā)送一個(gè)數(shù)據(jù)塊字節(jié)都

4、要計(jì)算“校驗(yàn)和”, 假定數(shù)據(jù)長(zhǎng)度為16個(gè)字節(jié),起始地址為40H, 個(gè)數(shù)據(jù)塊發(fā)送完畢后立即發(fā)送 “校驗(yàn)和”。接收機(jī)接收數(shù)據(jù)并存入數(shù)據(jù)緩沖區(qū)起始地址也為40H,每接收到一個(gè)數(shù)據(jù)字節(jié)便計(jì)算一次“校驗(yàn)和”,當(dāng)接收到一個(gè)數(shù)據(jù)塊后,在接受發(fā)送機(jī) 發(fā)來的“校驗(yàn)和”,并將它與接收機(jī)計(jì)算的校驗(yàn)和進(jìn)行比較。若二者相等,說 明接受正確,接收機(jī)回答 00H,發(fā)送機(jī)結(jié)束發(fā)送;若二者不等,說明接受不正 確,接收機(jī)回答0FFH請(qǐng)求重發(fā),發(fā)送機(jī)重新發(fā)送數(shù)據(jù)一次。接收機(jī)接收到數(shù) 據(jù)后通過發(fā)光二極管LED顯示發(fā)送機(jī)的發(fā)送狀態(tài)。2雙機(jī)通信硬件設(shè)計(jì)2.1 AT89C51 簡(jiǎn)介AT89C51是一個(gè)帶有4k字節(jié)存儲(chǔ)器的單片機(jī),它具有12

5、8字節(jié)內(nèi)部 RAM ; 32個(gè)I/O 口線和;兩個(gè)16位定時(shí)/計(jì)數(shù)器,一個(gè)5向量?jī)杉?jí)中斷結(jié)構(gòu), 一個(gè)全雙工串行通信口,片內(nèi)振蕩器及時(shí)鐘電路。同時(shí),AT89C51可降至OHz 的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電工作模式??臻e方式停止CPU的工作,但允許RAM,定時(shí)/計(jì)數(shù)器,串行通信口及中斷系統(tǒng)繼續(xù)工作。掉電 方式保存RAM中的內(nèi)容,但振蕩器停止工作并禁止其它所有部件工作直到下 一個(gè)硬件復(fù)位。如圖2所示,DIP40封裝的AT89C51的各個(gè)引腳及其功能。P1.01FL 1J'S?P1.2336PL3-437P1.45A36PLB635PL 67T54PL7833RST/Vn9ft32

6、P久“臨1U31P3,1/IXD1130P3. 2/INTQ12y29P3. 3/INT113c28F3. 4/T01427P3.5/T1155P3.6/V!R1625P3打麗1724XT 肚 218123KTAL119222021P0.0P0. 1P0. 2P0. 3P0.4FD. 5P0. 6P0. 7麗ALE/PROGPSOP2.7P2.5F乙4F2_3F2.2:F2.1P2.0圖2 AT89C51單片機(jī)引腳封裝AT89C5仲片機(jī)各個(gè)引腳功能如下:(1)電源幾時(shí)鐘引腳?VCC( 40號(hào)引腳):電源接入引腳?VSs (20號(hào)引腳):接地引腳?XTAL1( 19號(hào)引腳):晶振接入的一個(gè)引腳?

7、XTAL2( 18號(hào)引腳):晶振接入的另一個(gè)引腳(2)控制線引腳?RST/VPd(9號(hào)引腳):復(fù)位信號(hào)輸入引腳/備用電源輸入引腳?ALE/PROG(30號(hào)引腳):地址鎖存允許信號(hào)輸出引腳/編程脈沖輸入引?EA/VPP(31號(hào)引腳):內(nèi)外存儲(chǔ)器選擇引腳/片內(nèi)EPROMS程電壓輸入引腳? PSEN (29號(hào)引腳):外部程序存儲(chǔ)器選通信號(hào)輸出引腳(3)I/O引腳 P0.0 P0.7 (3932號(hào)引腳):一般I/O 口引腳/低位地址總線引腳 P1.0 P1.7(1 8號(hào)引腳):一般 I/O 口引腳 P2.0 P2.7(21 28號(hào)引腳):一般I/O 口引腳/高位地址總線引腳 P3.0 P3.7(10

8、17號(hào)引腳):一般I/O 口引腳或第二功能引腳P3.0 (10號(hào)引腳):RXD串行口輸入P3.1 (11號(hào)引腳):TXD串行口輸出P3.2 (12號(hào)引腳):INT0外部中斷0輸入P3.3 (13號(hào)引腳):外部中斷1輸入P3.4 (14號(hào)引腳):T0定時(shí)器0的外部輸入P3.5 (15號(hào)引腳):T1定時(shí)器1的外部輸入P3.6 (16號(hào)引腳):WR片外數(shù)據(jù)存儲(chǔ)器“寫”選通控制輸出P3.7 (17號(hào)引腳):RD片外數(shù)據(jù)存儲(chǔ)器“讀”選通控制輸出2.2 AT89C51串行口的工作方式AT89C51的串行口是一個(gè)可編程全雙工的通信接口, 具有通信異步接受和 發(fā)送的全部功能,能同時(shí)進(jìn)行數(shù)據(jù)的接收和發(fā)送,也可作

9、為同步移位寄存器使 用。AT89C51的串行口主要由兩個(gè)獨(dú)立的串行數(shù)據(jù)緩沖寄存器 SBUF(個(gè)發(fā)送 緩沖寄存器,一個(gè)接收緩沖寄存器),串行口控制寄存器、輸入移位寄存器及若 干控制門電路組成。(1)串行口數(shù)據(jù)緩沖寄存器SBUFAT89C51可以通過特殊功能寄存器SBUF的讀寫操作,實(shí)現(xiàn)對(duì)串行接收或串 行發(fā)送寄存器的訪冋,串行接收和串行發(fā)送寄存器在串行口內(nèi)部是兩個(gè)獨(dú)立的 存儲(chǔ)單元,共用同一個(gè)地址 99耳串行口數(shù)據(jù)傳送使用的是內(nèi)部數(shù)據(jù)傳送指令“ MOgSBUF或“ MOSBUF,A .當(dāng)執(zhí)行寫操作時(shí),訪問串行發(fā)送寄存器;當(dāng) 執(zhí)行讀操作時(shí),訪問串行接收寄存器。(2) 串行口控制寄存器 SCONAT89

10、C51串行口工作的設(shè)定、接收與發(fā)送控制的設(shè)置都是通過對(duì)串行口控制寄存器SCON勺編程確定的。SCON1 一個(gè)特殊功能寄存器,其地址為98H,可 位尋址,其各位的作用定義如下:表2控制寄存器SCON9FH9EH9DH9CH9BH9AH99H98HSCON(98H)SM0SM1SM2RENTB8RB8TIRISM0、SM1串行口工作方式選擇位,工作方式選擇如表2所示。其中fosc是晶體振蕩器的頻率。SM2多機(jī)通信控制位。在方式0下,SM2應(yīng)為0;在方式1下,如果SM2=0 則只有收到有效的停止位時(shí)才會(huì)激活 RI;在方式2和方式3下,如置SM2=側(cè) 只有收到第9位數(shù)據(jù)為1時(shí),RI被激活(Rl=1,申

11、請(qǐng)中斷,要求CPU取走數(shù)據(jù))。REN允許接收控制位。由軟件置位或清零。REN=1允許接收;REN=0禁 止接收。TB8:在方式2和方式3下,存放要發(fā)送的第9位數(shù)據(jù),常用作奇偶校驗(yàn)位。 在多機(jī)通信中,可作為區(qū)別地址幀或數(shù)據(jù)幀的標(biāo)識(shí)位,若為地址幀,TB8=1;若為數(shù)據(jù)幀,TB8=QRB8在方式2和方式3下,存放接收到的第9位數(shù)據(jù);在方式1下,如 SM2=0則該位為接收到的停止位;方式 0不用此位。TI:發(fā)送中斷標(biāo)志。在方式0下,發(fā)送完第8位數(shù)據(jù)位時(shí),由硬件置位;在 其他方式下,當(dāng)開始發(fā)送停止位時(shí),由硬件將 TI置位,即是向CPU申請(qǐng)中斷, CPU可以發(fā)送下一幀數(shù)據(jù)。在任何方式下, TI必須由軟件清

12、零。RI :接收中斷標(biāo)志。在方式0下,接收完第8位數(shù)據(jù)時(shí),由硬件置位;在 其他方式下,當(dāng)接收到停止位時(shí) RI置位,即申請(qǐng)中斷,要求CPU取走數(shù)據(jù)。它 必須由軟件清零。表3串行口工作方式選擇SM0SM1方式功能波特率SM0SM1方式功能波特率000同步移位寄存器f osc/1210211位UARTfosc/16 或 fosc/3201110 位 UART可變11311位UART可變本設(shè)計(jì)發(fā)送機(jī)串行口的工作方式為方式 1,即控制寄存器SCON中內(nèi)容如下:表4發(fā)送機(jī)控制寄存器SCON9FH9EH9DH9CH9BH9AH99H98HSCON(98H)SM0SM1SM2RENTB8RB8TIRI0100

13、0000接收機(jī)的串行口的工作方式為方式 1,即控制寄存器SCON中內(nèi)容如下:表5接收機(jī)控制寄存器SCON9FH9EH9DH9CH9BH9AH99H98HSCON(98H)SM0SM1SM2RENTB8RB8TIRI01010000串口以方式1發(fā)送,由CPU執(zhí)行一條寫發(fā)送寄存器指令“ MOV SBUF”,就可將數(shù)據(jù)位逐一由TXD端發(fā)送。當(dāng)發(fā)送一幀數(shù)據(jù)后,將 TI置1。串口以方式 1接受,需控制SMO中的 REN為1(SMO為特殊功能寄存器PCON勺最高位), 此時(shí)對(duì)RXD引腳進(jìn)行采樣,當(dāng)采樣到起始位置有效時(shí),開始接收數(shù)據(jù)。當(dāng)一幀 數(shù)據(jù)接收完畢,且RI=0, SM2=0或接收到RB8=1時(shí),接收數(shù)

14、據(jù)有效,此時(shí)可利 用讀接收寄存器指令“ MOV A,SBU”將數(shù)據(jù)送入CPU同時(shí)將RI置1。若要再 次發(fā)送或接收數(shù)據(jù),必須將 TI、RI清零。(3)波特率的計(jì)算根據(jù)表2可知串口工作方式方式1時(shí)一幀數(shù)據(jù)為10位(8位數(shù)據(jù)位,起始 位、停止位各1位)。其傳輸波特率是可變的,由定時(shí)器 T1的溢出率來決定。波特率=(2sm°d /32) (T1溢出率)當(dāng)T1作為波特率發(fā)生器時(shí),最典型的用法是使T1工作在自動(dòng)再裝入的8位定時(shí)器方式(即方式2,且TCON勺TR=1,以啟動(dòng)定時(shí)器)。這時(shí)溢出率取決 于TH1中的計(jì)數(shù)值。TH1 溢出率fOsc/ 12 256 TH 1在單片機(jī)的應(yīng)用中,常用的晶振頻率

15、 f°sc為:12MHz和11.0592MHz在本設(shè)計(jì)中晶振頻率采用fosc=11,。0592MHz即波特率為SMOD波特率=右12256 (TH1)2.3 晶振電路設(shè)計(jì)AT89C51單片機(jī)內(nèi)部有一震蕩電路,只要在單片機(jī)的XTL1(19號(hào))和XTAL2 (18號(hào))引腳外接石英晶體(簡(jiǎn)稱晶振)就構(gòu)成了自激振蕩器并在單片機(jī)內(nèi)部 產(chǎn)生時(shí)鐘脈沖信號(hào)。如圖3所示,圖中電容器C1和C2的作用是穩(wěn)定頻率和快 速起振,電容值為530pF,典型值為30pF,本設(shè)計(jì)取30pF。晶振CYS的振蕩 頻率范圍為1.2MHz12MHz典型值為12MHz和6MHz本設(shè)計(jì)取12MHzP3. 7/RDXTAL2XTA

16、L1GND2.4復(fù)位電路設(shè)計(jì)AT89C5仲片機(jī)的RST( 9號(hào))引腳引入高電平并保持兩個(gè)機(jī)器周期時(shí),單 片機(jī)內(nèi)部就執(zhí)行復(fù)位操作。在實(shí)際中 AT89C51通常有兩種操作方式復(fù)位,一種 是上電復(fù)位;另一種是按鍵上電復(fù)位。在雙機(jī)通信系統(tǒng)的設(shè)計(jì)中使用按鍵上電 復(fù)位,如圖4所示。單片機(jī)復(fù)位后進(jìn)入初始化狀態(tài)。初始化后,程序計(jì)數(shù)器PC=0000H所以程序從0000H地址單元開始執(zhí)行。單片機(jī)啟動(dòng)后,片內(nèi)RAM為隨機(jī)值,運(yùn)行中的復(fù)位操作不改變片內(nèi)RAM的內(nèi)容。特殊功能寄存器復(fù)位后的狀態(tài)是確定的。P0P3為FFH, SP為07H, SBUF不定,IP、IE和PCON勺有效位為0,其余的特殊功能寄存器的狀態(tài)均為 0

17、0Ho2.5接口電路的設(shè)計(jì)(1) 直接通信單片機(jī)與單片機(jī)進(jìn)行雙擊串行通行時(shí),可將兩個(gè)單片機(jī)的串口直接連接, 接線圖如圖5所示,這種接線傳輸距離短,抗干擾能力差。圖5直接通信接線圖(2) 串口通信單片機(jī)與單片機(jī)進(jìn)行雙擊串行通行時(shí),AT89C51串行接口的信號(hào)電平為TTL 類型,抗干擾性差、傳輸距離短。為了提高串行通信的靠抗性,延長(zhǎng)通信距離, 一般設(shè)計(jì)采用標(biāo)準(zhǔn)的串行接口。RS-232C接口是1969年EIA推出的串行通信標(biāo)準(zhǔn),目前是 PC機(jī)與通信工 業(yè)中應(yīng)用最廣的一種串行接口。數(shù)據(jù)傳輸速率在020kbps范圍內(nèi)的通信,最大傳輸距離可達(dá)15m能實(shí)現(xiàn)一發(fā)一收通信,目前常用的 RS- 232C接口連接器

18、 有9針串口( DB-9)和25針串口( DB-25)。最常用的的是 DB-9,常采用三 線制接法,即發(fā)送數(shù)據(jù)線、接受數(shù)據(jù)線和接地線三腳相連。傳輸線采用屏蔽雙 絞線,如圖6所示。DB-9DB-9GKD屏蔽線O *社1TXDE:也蛙RID紅色竦4O?右TRXDil色找丁知籃邑登T2 °LLj01<<9Elu圖6 DB 9三線制接法RS 232C信號(hào)的電平與單片機(jī)串口信號(hào)的電平不一致,二者之間必須進(jìn)行電平轉(zhuǎn)換。使用電平轉(zhuǎn)換芯片 MAX23就可以實(shí)現(xiàn)RS232C/TTL電平的雙向轉(zhuǎn)換。 MAX232芯片使用單一的+5V電源供電,配接5個(gè)1uF電解電容即可完成 RS232C 電平

19、的TTL電平之間的轉(zhuǎn)換,其電路接線圖如圖 7所示。圖7 MAX232電平轉(zhuǎn)換芯片電路接線圖表6 DB 9常用信號(hào)引腳說明DB-9引腳信號(hào)名稱符號(hào)功能1載波檢測(cè)DCD接收遠(yuǎn)程載波2接收數(shù)據(jù)RXD接受串行數(shù)據(jù)3發(fā)送數(shù)據(jù)TXD發(fā)送串行數(shù)據(jù)4數(shù)據(jù)準(zhǔn)備就緒DTR準(zhǔn)備就緒5信號(hào)的SGND信號(hào)公共地6數(shù)據(jù)準(zhǔn)備就緒DSR準(zhǔn)備就緒7發(fā)送請(qǐng)求RTS請(qǐng)求將線路切換到發(fā)送發(fā)式8允許發(fā)送CTS線路已接通,可以發(fā)送數(shù)據(jù)9振鈴指示RI數(shù)據(jù)通信接通,終端設(shè)備被呼叫2.6輸入輸出電路設(shè)計(jì)P1 口是AT89C51單片機(jī)的唯一的單功能口,僅能用作數(shù)據(jù)輸入 /輸出口 P1 口的位結(jié)構(gòu)如圖8所示P1 XVu 二Rb 5PIX彌圖8 P

20、1 口的位結(jié)構(gòu)由圖8可知,P1 口由一個(gè)輸出鎖存器,兩個(gè)三態(tài)輸入緩沖器和輸出驅(qū)動(dòng)電 路組成。內(nèi)部設(shè)有上拉電阻。P1 口是通用的準(zhǔn)雙向I/O 口。輸出高電平時(shí),能 向外提供拉電流負(fù)載,不必再接上拉電阻。當(dāng)口用于輸入時(shí),須向口鎖存器寫 入“1”輸入低電平有效。因此其輸入電路如圖9,輸出電路圖10:F1.01234n5_,H7,巳&亠11pi.iPZ.2PL3P1.4P1.&pi.aPT.?P0_63S1ST亦PX1H1DP3.z/iirrofy.MoF3.5I1P3.a/1B Pl 7/to jnx:muGHT-PO+T05 WGPL5P2.6也4P2-3P2-2P2.134Q32

21、3L21圖9發(fā)送機(jī)輸入電路i J245i陽6BTA+5V3039373635343332313029£827£&2S24232221Vkjn.oPO.Cpi. iPQ. 1FL2Fl 2Fl. 3FO 3AFl. 4P0 4ri.sF0. 5TFl. 6HL &Fl. 7FO 7EV/Vw8RST/VbP3.O/RXDale/Fr5g9P3.1/TIDPEEKT3 E/I1TT0T2. TCf3 3/INTIF2.6P3 4/T012. S5P3. E/TlF2.4F3 6/1RF2.3P3 7/KBP2. 21KTAL2P2. 1XlLlF2_DCUD09

22、10111*15161718圖10接收機(jī)輸出電路.K13 雙機(jī)通信軟件設(shè)計(jì)通過通信協(xié)議進(jìn)行發(fā)送接收。發(fā)送機(jī)先送聯(lián)絡(luò)信號(hào)給接收機(jī),當(dāng)接收機(jī)接 收到聯(lián)絡(luò)信號(hào)后,向發(fā)送機(jī)回答一個(gè)應(yīng)答信號(hào),表示同意接收。發(fā)送機(jī)收到應(yīng) 答信號(hào)后開始發(fā)送數(shù)據(jù), 每發(fā)送一個(gè)數(shù)據(jù)塊字節(jié)都要計(jì)算 “校驗(yàn)和”,假定數(shù)據(jù) 長(zhǎng)度為16個(gè)字節(jié),起始地址為40H, 個(gè)數(shù)據(jù)塊發(fā)送完畢后立即發(fā)送“校驗(yàn)和”。 接收機(jī)接收數(shù)據(jù)并存入數(shù)據(jù)緩沖區(qū)起始地址也為40H,每接收到一個(gè)數(shù)據(jù)字節(jié)便計(jì)算一次“校驗(yàn)和”,當(dāng)接收到一個(gè)數(shù)據(jù)塊后, 在接受發(fā)送機(jī)發(fā)來的 “校驗(yàn)和”, 并將它與接收機(jī)計(jì)算的校驗(yàn)和進(jìn)行比較。若二者相等,說明接受正確,接收機(jī) 回答00H,發(fā)送

23、機(jī)結(jié)束發(fā)送;若二者不等,說明接受不正確, 接收機(jī)回答0FFH 請(qǐng)求重發(fā),發(fā)送機(jī)重新發(fā)送數(shù)據(jù)一次。接收機(jī)接收到數(shù)據(jù)后通過發(fā)光二極管顯 示發(fā)送機(jī)的發(fā)送狀態(tài)。3.1 串行通信軟件實(shí)現(xiàn)( 1 )串行口工作于方式 1;用定時(shí)器 1 產(chǎn)生 9600bit/s 的波特率。(2)功能:將本機(jī)ROM中數(shù)碼表TAB16中的16個(gè)數(shù)發(fā)送到從機(jī),并保存在從 機(jī)內(nèi)部ROM中,從機(jī)收到這16個(gè)數(shù)據(jù)后送到一個(gè)數(shù)碼管循環(huán)顯示。(3)通信協(xié)議 : 發(fā)送機(jī)首先發(fā)送連絡(luò)信號(hào) (E1H), 接收機(jī)接收到之后返回一個(gè)連絡(luò)信號(hào)(E2H)表示從機(jī)已準(zhǔn)備好接收。通信過程使用第九位發(fā)送奇偶校驗(yàn)位。接 收機(jī)接收到一個(gè)數(shù)據(jù)后,立即進(jìn)行奇偶校驗(yàn),若

24、數(shù)據(jù)沒有錯(cuò)誤,則返回00H,否則返回FFH發(fā)送機(jī)發(fā)送一個(gè)數(shù)據(jù)后,等待接收機(jī)返回?cái)?shù)據(jù);若為 00H,則繼 續(xù)發(fā)送下一個(gè)數(shù)據(jù),若為FFH,則重新發(fā)送數(shù)據(jù)。3.2 串行通信程序流程( 1 )發(fā)送機(jī)程序流程根據(jù)通信協(xié)議發(fā)送機(jī)需向接收機(jī)發(fā)送聯(lián)絡(luò)信號(hào) “E1”, 當(dāng)接收到應(yīng)答信號(hào)后, 發(fā)送機(jī)發(fā)送數(shù)據(jù),發(fā)送數(shù)據(jù)完畢后將校驗(yàn)和發(fā)送至接收機(jī),接收機(jī)進(jìn)行校驗(yàn)如 果正確等待下一次發(fā)送;如果錯(cuò)誤重新發(fā)送數(shù)據(jù)。其流程圖如下:圖10發(fā)送流程圖(2)接收機(jī)程序流程根據(jù)通信協(xié)議,接收機(jī)等待發(fā)送機(jī)發(fā)出的聯(lián)絡(luò)信號(hào)“ E1”并向發(fā)送機(jī)發(fā)送 應(yīng)答信號(hào)“ E2',當(dāng)接收1個(gè)數(shù)據(jù)字節(jié)后求檢驗(yàn)和,發(fā)送機(jī)在發(fā)送完一個(gè)數(shù)據(jù)塊 后將發(fā)送

25、機(jī)計(jì)算的校驗(yàn)和發(fā)送至接收機(jī),接收機(jī)將兩個(gè)校驗(yàn)和進(jìn)行比較,如果 正確等待下一次接收;如果錯(cuò)誤則發(fā)送出錯(cuò)標(biāo)志重新發(fā)送數(shù)據(jù)。其流程圖如下:3.3 程序清單基于AT89C51單片機(jī)雙機(jī)通信時(shí),串行輸入輸出可直接進(jìn)行連接,實(shí)現(xiàn)雙 機(jī)通信。這樣連接方式,傳輸距離短,抗干擾能力弱,但容易實(shí)現(xiàn),其接線和 程序較為簡(jiǎn)單 , 其程序如下:( 1)發(fā)送機(jī)程序ORG 0000HAJMP MAINORG O1OOHMAIN: MOV SP,#6OHMOV SCON,#40HMOV TMOD,#20HMOV TH1,#0FDHMOV TL1,#0FDHSETB TR1MOV P1,#0FFHMOV 30H,#0FFHK0

26、: MOV A,P1CJNE A,30H,KISJMP K0KI: MOV 30H,AMOV SBUF,ASJMP K0WAIT: JBC T1,K0SJMP WAITEND(2)接收機(jī)程序ORG 0000HAJMP MAINORG O1OOHMAIN: MOV SP,#6OHMOV SCON,#50HMOV TMOD,#20HMOV TH1,#0FDHMOV TL1,#0FDHSETB TR1MOV P1,#0FFHK0: JB RI,KKSJMP K0KK: MOV A,SBUFMOV P1,ACLR RISJMP K0END發(fā)送機(jī)與接收機(jī)也可以經(jīng)過串口進(jìn)行通信, 這種通信方式較上一種方式

27、提高通信距離,抗干擾能力強(qiáng),傳輸穩(wěn)定,但其接線復(fù)雜,程序比較繁瑣。其程 序如下:( 1)發(fā)送程序清單ASTRT: CLR EAMOV TMOD,#20H MOV TH1,#0F4HMOV TL1,#0F4H MOV PCON,#00HSETB TR1MOV SCON,#50HALOOP:1 MOV SBUF,#0E1H JNB TI, $CLB TI;JNB RI,$;CLR RI;MOV A,SBUF;XRL A,#0E2 ;JNZ ALOOP1;ALOOP2: MOV P1,#0FFHMOV 30H,#0FFH ; MOV R7 , #10H MOV R6,#00H ;ALOOP:3 MO

28、V A,P1CJNE A,30H,ALOOP4 SJMP ALOOP3ALOOP:4 MOV 30H,A;定時(shí)器 1 置為方式 2 ;裝在定時(shí)器初值,波特率為 2400設(shè)定串行口方式 1,且準(zhǔn)備接受應(yīng)答信號(hào) 發(fā)送聯(lián)絡(luò)信號(hào) 等待一幀發(fā)送完畢 允許在發(fā)送 等待接收機(jī)的應(yīng)答信號(hào) 允許在接收 接收機(jī)應(yīng)答后,讀至 A 判斷接收機(jī)是否準(zhǔn)備完畢 接收機(jī)未準(zhǔn)備好,繼續(xù)聯(lián)絡(luò)設(shè)定撥碼開關(guān)初值 設(shè)定數(shù)據(jù)塊長(zhǎng)度 清校驗(yàn)和單元 讀入撥碼開關(guān)存入撥碼開關(guān)新值發(fā)送一個(gè)數(shù)據(jù)字節(jié)MOV SBUF,A ; MOV A,R6ADD A,P1 ;MOV R6 , AINC R0JNB T1, $CLB T1DJNZ R7 , ALO

29、OP3MOV SBUF,R6 ;JNB TI, $CLR TIJNB RI,$ ;CLR RIMOV A,SBUF;JNZ ALOOP2;SJMP ALOOP3;END (2)接收程序清單 BSTART: CLR EAMOV TMOA,#20HMOV TH1,#0F4HMOV TL1,#0F4HMOV PCON,#00HSETB TR1MOV SCON,#5OH BLOOP1: JNB RI,$CLR RIMOV A,SBUF;XRL A,#0E2H;JNZ BLOOP1;MOV SBUF,#0E2HJNB T1,$CLR TI BLOOP2: MOV R0,#40HMOV R7,#10H;M

30、OV R6,#00H;BLOOP3: JNB RI,$求校驗(yàn)和保存校驗(yàn)和整個(gè)數(shù)據(jù)塊是否發(fā)送完畢發(fā)送校驗(yàn)和等待接收機(jī)應(yīng)答信號(hào)接收機(jī)應(yīng)答,讀至 A 接收機(jī)應(yīng)答錯(cuò)誤,轉(zhuǎn)至重新發(fā)送 進(jìn)入下一循環(huán)傳送設(shè)定串行口工作方式 1,且準(zhǔn)備接收 等待 1 號(hào)機(jī)的聯(lián)絡(luò)信號(hào)收到 1 號(hào)機(jī)的信號(hào) 判斷是否為 1 號(hào)機(jī)聯(lián)絡(luò)信號(hào)不是 1 號(hào)機(jī)聯(lián)絡(luò)信號(hào),再等待 是 1 號(hào)機(jī)聯(lián)絡(luò)信號(hào),發(fā)應(yīng)答信號(hào)設(shè)定數(shù)據(jù)塊地址指針初值 設(shè)定數(shù)據(jù)塊長(zhǎng)度初值 清校驗(yàn)和單元CLR RIMOV A,SBUF接收數(shù)據(jù)轉(zhuǎn)儲(chǔ)求校驗(yàn)和判斷數(shù)據(jù)塊是否接收完畢 完畢,接收 1 號(hào)機(jī)發(fā)來的校驗(yàn)和比較校驗(yàn)和校驗(yàn)和相等,跳至發(fā)正確標(biāo)志 校驗(yàn)和不相等,發(fā)錯(cuò)誤標(biāo)志 轉(zhuǎn)重新接

31、收MOV R0,AINC ROADD A,R6 ;MOV R6,ADJNZ R7,BLOOP3JNB RI,$ ;CLR RI MOV A,SBUFXRL A,R6 ;JZ END1MOV SBUF,#0FFH JNB TI,#;CLR TI;SJMP BLOOP2END1: MOV SBUF,#00HRET4軟件仿真Proteus 7 Professio nal是一種低投資的電子設(shè)計(jì)自動(dòng)化軟件,它可以仿真單片機(jī)和周邊設(shè)備,可以仿真 51系列、AVR PIC等常用的MCU與KEIL 和MPLABf同的是,它還可以仿真周邊的設(shè)備。例如,示波器、RAM ROM LED等。本次設(shè)計(jì),通過兩片兩片 AT89C52單片機(jī)由8位按鍵開關(guān)分別控制8個(gè)指 示燈。具體接線如下;發(fā)送電路18、19號(hào)引腳連接晶振電路,9號(hào)引腳連接復(fù) 位電路。1-8號(hào)引腳連接8位按鍵開關(guān)。10、11號(hào)引腳連接接收電路單片機(jī)的 11、10號(hào)引腳。接收電路,18、19號(hào)引腳連接晶振電路,9號(hào)引腳連接復(fù)位電 路。1-8號(hào)引腳連接8個(gè)指示燈。單片機(jī)雙機(jī)通信系統(tǒng)wp弓增 pwsa:bs;2 ml-uE E ErllWE

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論