AT89C51單片機在無(wú)線(xiàn)數據傳輸中的應用
摘要:介紹無(wú)線(xiàn)數據傳輸系統的組成、AT89C51單片機串行口的工作方式及其與無(wú)線(xiàn)數字電臺接口的軟硬件設計與實(shí)現方法。 關(guān)鍵詞:AT89C51 串行口 無(wú)線(xiàn)數字電臺 串行通信 一般的數字采集系統,是通過(guò)傳感器將捕捉的現場(chǎng)信號轉換為電信號,經(jīng)模/數轉換器ADC采樣、量化、編碼后,為成數字信號,存入數據存儲器,或送給微處理器,或通過(guò)無(wú)線(xiàn)方式將數據發(fā)送給接收端進(jìn)行處理。無(wú)線(xiàn)數據傳輸系統就是 樣一套利用無(wú)線(xiàn)手段,將采集的數據由測量站發(fā)送到主控站的設備。 1 系統組成 系統組成如圖1、圖2所示。 2 AT89C51與數字電臺的串行通信 Atmel公司的AT89C51單片機,是一種低功耗、高性能的、片內含有4KB Flash ROM的8位CMOS單片機,工作電壓范圍為2.7~6V(實(shí)際使用+5V供電),8位數據總線(xiàn)。它有一個(gè)可編程的全雙工串行通信接口,能同時(shí)進(jìn)行串行發(fā)送和執著(zhù)收。通過(guò)RXD引腳(串行數據接收端)和TXD引腳(串行數據發(fā)送端)與外界進(jìn)行通信。 2.1 通信協(xié)議與波特率 數字電臺與單片機、終端主控機的通信協(xié)議為: 通信接口――標準串行RS232接口,9線(xiàn)制半雙工方式; 通信幀格式――1位起始位,8位數據位,1位可編程數據位,1位停止位; 波特率――1200 baud。 數字電臺選用Motorola公司的GM系列車(chē)載電臺,工作于VHF/UHF頻段,可進(jìn)行無(wú)線(xiàn)數傳(9線(xiàn)制標準串行RS232接口),也可進(jìn)行話(huà)音通信;采用二進(jìn)制移頻鍵控(2FSK)調制解調方式,符合國際電報電話(huà)咨詢(xún)委員會(huì )CCITT.23標準。在話(huà)帶內進(jìn)行數字傳輸時(shí),推薦在不高于1200b/s數據率時(shí)使用。實(shí)際使用時(shí),電臺工作于220~240MHz頻率范圍,采用半雙工方式(執行收、發(fā)操作,但不能同時(shí)進(jìn)行)即可滿(mǎn)足系統要求。 2.2 AT89C51串行口工作方式 AT89C51串行口可設置四種工作方式,可有8位、10位和11位幀格式。本系統中,AT89C51串行口工作于方式3,即鳘幀11位的異步通信格式:1位起始位,8位數據位(低位在前),1位可編程數據位,1位停止位。 發(fā)送前,由軟件設置第9位數據(TB8)作奇偶校驗位,將要發(fā)送的數據寫(xiě)入SBUF,啟動(dòng)發(fā)送過(guò)程。串行口能自動(dòng)把TB8取出,裝入到第9位數據的位置,再逐一發(fā)送出去。發(fā)送完畢,使TI=1。 接收時(shí),置SCON中的REN為1,允許接收。當檢測到RXD(P3.0端有“1”到“0”的跳變(起始位)時(shí),開(kāi)始接收9位數據,送入移位寄存器(9位)。當滿(mǎn)足RI=0且SM2=0或接收到的9位數據為1時(shí),前8位數據送入SBUF,第9位數據送入SCON中的RB8,置RI為1;否則,這次接收無(wú)效,不置位RI。 方式3波特率=T1溢出率/n 當SMOD=0時(shí),n=32;SMOD=1時(shí),n=16。T1溢出率取決于T1的計數速率(計數速率=fosc/12)和TI預置的初值。 定時(shí)器T1用作波特率發(fā)生器,工作于模式2(自動(dòng)重裝初值)。設TH1和TL1定時(shí)計數初值為X,則每過(guò)“2 8-X”個(gè)機器周期,T1就會(huì )發(fā)生一次溢出。初值X確定如下: X=256-fosc(SMOD+1)/384BTL 本系統中,SMOD=0,波行率BTL=1200,晶振fosc=6MHz,所以初值X=F3H。 2.3 AT89C51與數字電臺的硬件連接 AT89C51與數字電臺的硬件連接如圖3所示。 系統采用異步串行通信方式傳輸測量數據。利用單片機串口與數字電臺RS232數據口相連。電臺常態(tài)為收狀態(tài)(PPT=0,收狀態(tài);PPT=1,發(fā)狀態(tài)),單片機P3.5腳輸出高電平。單片機使用TTL電平,電臺使用RS232電平,由MAX232完成TTL電平與RS232電平之間的轉換。3片光電耦合器6N137實(shí)現單片機與電臺之間的電源隔離,增強系統抗干擾性能。 單片機通過(guò)帶控制端的三態(tài)緩沖門(mén)74HC125、非門(mén)74HC14控制電臺的收發(fā)轉換,以及指令的接收和數據發(fā)送。接收時(shí),P3.5=1,c2=1,74HC125B截止;P3.5經(jīng)74HC14反相、光電隔離,使電臺PPT腳為低電平,將其置為接收狀態(tài);同時(shí)c1=0,74HC125A導通,接收的指令由電臺的RXD端輸入,經(jīng)MAX232電平變換、光電隔離、74HC125A緩沖門(mén),送入單片機RXD腳。發(fā)射時(shí),P3.5=0,經(jīng)74HC14反相、光電隔離,使電臺PPT腳為高電平,將其置為發(fā)射狀態(tài);同時(shí)c1=1,74HC125A截止,c2=0,74HC125B導通,數據由單片機TXD腳輸出,經(jīng)74HC125B緩沖門(mén)、光電隔離、MAX232電平變換,通過(guò)電臺TXD端口將數據發(fā)送出去。 3 通信軟件設計 通信軟件至關(guān)重要,一旦出現問(wèn)題,整個(gè)系統就會(huì )癱瘓。采取差錯控制與容錯技術(shù)是非常重要的。 *主控站發(fā)送的指令中包含一定數量的同步符55H和3字節的密碼。測量站在連續收到5個(gè)同步符后進(jìn)行密碼驗證,驗證通過(guò)后正式接收指令字節;如未通過(guò),則測量站發(fā)一信號讓主控站重發(fā),三次驗證不過(guò)則停發(fā)該命令。測量站發(fā)/主控站收時(shí),驗證方式與此相同。驗證通過(guò)后,測量站開(kāi)始發(fā)送數據。 *一個(gè)指令由3字節構成,第二字節等于第一字節加上35H,第3字節等于第二字節加上36H。如果收到的指令不符合此規則,則重發(fā)該命令,連續三次錯誤時(shí)停發(fā)。 *主控站每發(fā)一個(gè)指令,測量站都回送一個(gè)應答信號。該應答信號中包含原指令樣本。 下面給出單片機串行口與電臺的基本通信程序。 初始化程序: BTL EQU 2FH ;波特率放在內部RAM的2FH單元 MOV TMOD,#21H;T0方式1,16位計數器,T1方式2,串口用 SETB TR0 ;啟動(dòng)T0 MOV BTL,#0F3H ;波特率設定為1200 MOV SCON,#0C0H;串口方式3,9位數據,禁止接收 接收及驗證程序: NUM EQU 2BH ;同步符個(gè)數值存放在內部RAM的2BH單元 TEMP EQU 2CH ROM-CH:DB 55H,55H,55H,55H,55H,55H,55H,55H,55H,55H DB 55H,55H,55H,55H,55H,55H,55H,55H,55H,55H ;20字節同步符 MIM DB 'WSC':3字節密碼“WSC” SETB P3.5 ;置電臺收狀態(tài) SETB REN ;允許串口接收 A1:MOV NUM,#0 ;記錄連續到同步符55H的個(gè)數 A2:JB RI,A2 ;串口有數據轉A3 A3:CLR RI ;清接收中斷標志 MOV A,SBUF ;讀串口數據 CJNE A,#55H,A1;不是同步符轉A1 INC NUM ;收到的同步符個(gè)數加1 MOV A,NUM ;取收到的同步符個(gè)數 CJNE A,#5,A2 ;未收夠連續5個(gè)55H轉A2 A4:MOV NUM,#0 ;密碼驗證,記錄收到密碼字節數 A5:MOV DPTR,#MIM;密碼字符首址 MOV A,NUM MOVC A,@A+DPTR;查表取密碼 MOV TEMP,A ;保存密碼 JB RI,A6 ;串口收完一個(gè)字節轉A6 … A6:CLR RI ;清接收中斷標志 MOV A,SBUF ;讀串口數據 CJNE A,TEMP,A4;與密碼不符轉A4 INC NUM ;收到的密碼個(gè)數加1 MOV A,NUM ;取已收到的密碼字節數 CJNE A,#3,A5 ;密碼未收完轉A5 發(fā)送程序: CLR P3.5 ;置電臺發(fā)狀態(tài) MOV B,#23 MOV DPTR,#ROM-CH B1:CLR A MOVC A,@A+DPTR;查表發(fā)送同步符和密碼共24字節 INC DPTR LCALL SEND-CH ;調發(fā)送單字節子程序 DJNZ B,B1 … CLR A MOV DPTR,#7000H;外部RAM數據首址,發(fā)送外部RAM中的數據到電臺 B2:CJNE R4,#0,B3 CJNE R3,#0,B3;R4R3=發(fā)送字節數 B3:MOVX A,@DPTR;取數據 INC DPTR LCALL SEND-CH CJNE R3,#0,B4 CJNE R4,#0,B5 B4:DEC R3 LJMP B2 DEC R3 DEC R4 LJMP B2 … SEND-CH:SETB TB8 MOV SBUF,A DB 0,0,0,0,0,0,0,0 JNB TI,$ ;延時(shí)4μs CLR TI RET 結語(yǔ) 無(wú)線(xiàn)數據傳輸系統建成后,已經(jīng)使用了兩年多,運行結果表明,系統工作穩定可靠。由于采用了較完善的軟硬件設計和抗干擾措施,保證了系統工作的安全性和可靠性。測量站把采集的現場(chǎng)信號及時(shí)傳送到主控站,提高了數據處理的實(shí)時(shí)性。單片機和數字電臺接口的軟硬件設計具有很強的適用性,可廣泛應用于無(wú)線(xiàn)數傳設備。 |
評論