多臺(tái)單片機(jī)的通信系統(tǒng),,已有很多資料做了介紹,,在這些系統(tǒng)中的數(shù)據(jù)通訊一般采用的是串行通信方式。串行通信可采用有線與無線兩種方式,,作者根據(jù)單片機(jī)串行通信原理,、脈沖編碼調(diào)制(PCM)技術(shù)和紅外無線通信技術(shù),開發(fā)設(shè)計(jì)了單片機(jī)編解碼紅外無線通信接口,。用該接口構(gòu)成的新型無線抄表系統(tǒng),,利用紅外線這種非電信號(hào)作為傳輸介質(zhì),來傳送數(shù)據(jù)信息,,可以在那些不適合或不方便架設(shè)電纜線及電磁干擾較強(qiáng)的工作環(huán)境,,來實(shí)現(xiàn)單相電度表的抄表系統(tǒng),完成電度表用電量的抄錄,、設(shè)置表底數(shù),、電度表校準(zhǔn)等工作。本文就利用單片機(jī)紅外通信技術(shù)實(shí)現(xiàn)無線抄表系統(tǒng)做一介紹,。
1.紅外線通信原理
在抄表機(jī)數(shù)據(jù)通信系統(tǒng)中,,單片機(jī)之間的數(shù)據(jù)通信采用一對(duì)多的主從模式,利用波長為940μm的遠(yuǎn)紅外波通信,。其原理示意圖如圖1,。主機(jī)(即抄表機(jī)單片
機(jī))負(fù)責(zé)發(fā)送從機(jī)(即電度表單片機(jī))地址、控制命令及調(diào)度,,從機(jī)則負(fù)責(zé)收集現(xiàn)場(chǎng)信息,,進(jìn)行一定的數(shù)據(jù)處理,根據(jù)主機(jī)的要求返回?cái)?shù)據(jù),,并執(zhí)行主機(jī)發(fā)出的命令,。抄表機(jī)單片機(jī)與電度表單片機(jī)之間的信息交換是通過串行通信來實(shí)現(xiàn)。在采用主從式多機(jī)串行通信系統(tǒng)中,,從機(jī)不主動(dòng)發(fā)送命令或數(shù)據(jù),,一切都由主機(jī)控制。由于發(fā)送和接收共用同一物理信道因此在任意時(shí)刻只允許一臺(tái)從機(jī)處于發(fā)送狀態(tài),,其余的從機(jī)不能發(fā)送,。只有被主機(jī)呼叫的從機(jī)才能占用總線,對(duì)主機(jī)做出應(yīng)答,。
每臺(tái)從機(jī)均分配有一個(gè)唯一的從機(jī)地址,,主機(jī)與從機(jī)通信時(shí),主機(jī)先呼叫某從機(jī)地址,,喚醒被叫從機(jī)后,,主、從兩機(jī)之間進(jìn)行數(shù)據(jù)交換,,而未被呼叫的從機(jī)則繼續(xù)處于等待狀態(tài),。主機(jī)發(fā)送的信息可以傳到多個(gè)從機(jī)或指定的從機(jī),,各從機(jī)發(fā)送的信息只能被主機(jī)接收。為了完成上述功能需通過設(shè)置單片機(jī)的串口控制寄存器SCON來實(shí)現(xiàn),,在此將單片機(jī)設(shè)置在工作方式3,,即SM0=1、SM1=1,。
通信的數(shù)據(jù)格式為每幀11位,,包括1位起始位、8位數(shù)據(jù)位,、1位奇偶校驗(yàn)位和1位停止位,;片內(nèi)定時(shí)器T1作為波特率發(fā)生器,選擇傳送的波特率為1200bps,,則定時(shí)器T1的初值應(yīng)設(shè)置為TL1=TH1=E8H,,另外應(yīng)禁止定時(shí)器T1中斷,以免因定時(shí)器T1溢出而產(chǎn)生不必要的中斷錯(cuò)誤,。當(dāng)主機(jī)發(fā)送一幀地址信息時(shí),,應(yīng)保持這幀數(shù)據(jù)的第9位TB8為“1”;發(fā)送一幀數(shù)據(jù)信息時(shí),,應(yīng)保持這幀數(shù)據(jù)的第9位TB8為“0”,所有從機(jī)最初均處于接收狀態(tài),,即SM2=1狀態(tài),,當(dāng)接收的一幀數(shù)據(jù)的9位為1,所有從機(jī)均產(chǎn)生中斷,,接收這一幀地址數(shù)據(jù)并與各自的從機(jī)地址進(jìn)行比較,,以判斷主機(jī)是否要與本機(jī)通訊。接收到的地址數(shù)據(jù)與從機(jī)地址相等的為被呼叫從機(jī),,該從機(jī)將串行口控制寄存器SCON中的控制位SM2清0,,去接收主機(jī)發(fā)來的數(shù)據(jù)幀(數(shù)據(jù)幀的第9位為0),此時(shí)不管接收到的第9位數(shù)據(jù)是否為1,,都要產(chǎn)生串口中斷,,保證了主機(jī)與被叫從機(jī)間的正常數(shù)據(jù)通訊。通訊結(jié)束后,,該從機(jī)又重新將串行口控制寄存器SCON中的控制位SM置為1,,為下一次與主機(jī)進(jìn)行通訊做好準(zhǔn)備。其它從機(jī)則一直在SM2=1下繼續(xù)自己的等待,,不會(huì)受到其它從機(jī)與主機(jī)通訊的干擾,。
在通信協(xié)議中規(guī)定:
(1)單片機(jī)以方式3進(jìn)行通信,一幀數(shù)據(jù)的第9位為“1”代表地址幀,,為“0”代表數(shù)據(jù)幀,。
(2)設(shè)定通信波特率為1200bps,。迎訪問無由電子開發(fā)網(wǎng)(技術(shù)文章 在線閱讀 在線商城
(3)00H是以地址幀形式發(fā)送的一條對(duì)所有從機(jī)起作用的控制命令,命令各從機(jī)恢復(fù)SM2=1,,等待接收狀態(tài),。
(4)主機(jī)與從機(jī)的聯(lián)絡(luò)過程為;
主機(jī)下發(fā)地址幀,,被呼叫從機(jī)向主機(jī)返回地址幀,,以便主機(jī)確定與從機(jī)聯(lián)絡(luò)上了。
主機(jī)下發(fā)控制命令,,從機(jī)根據(jù)命令或接收主機(jī)的數(shù)據(jù)塊,,或向主機(jī)發(fā)送數(shù)據(jù)塊。
(5)主機(jī)發(fā)送的控制命令代碼為:
AAH:設(shè)置表底數(shù),;BBH:讀取表數(shù),;CCH:開表設(shè)置;DDH: 關(guān)表設(shè)置
EEH:校驗(yàn)出錯(cuò),;EDH:傳送結(jié)束符,。
(6)數(shù)據(jù)塊組成格式為:數(shù)據(jù)塊最后一幀為結(jié)束符EDH,結(jié)束符之前本數(shù)據(jù)塊內(nèi)容可以是操作碼幀,、地址碼幀和數(shù)據(jù)幀,。
為了實(shí)現(xiàn)多機(jī)通信,所有發(fā)射電路的振蕩頻率和所有的接收電路的振蕩頻率都必須調(diào)整一致,,為保證正常通信,,防止自己發(fā)自己接,數(shù)據(jù)傳送方向必須為半雙工傳送,,收發(fā)器在發(fā)射時(shí),,必須屏蔽自己的接收中斷,發(fā)射結(jié)束后再開放中斷,。
多機(jī)通信過程為:
(1)所有從機(jī)的SM2=1,,處于地址幀接收狀態(tài)。
(2)主機(jī)發(fā)送一幀地址信息,,其中包含8位地址,,第9位為“1”,與所需的從機(jī)進(jìn)行聯(lián)絡(luò),。
(3)從機(jī)接收到地址信息后,,各自將其與自己的地址相比較;對(duì)于地址相符的從機(jī)使RI=0,,TB8=1,,發(fā)送自身地址,并使SM2=0,TI=1,,以等待接收主機(jī)隨后發(fā)來的所有信息,;對(duì)于地址不相符的從機(jī)仍保持SM2=1狀態(tài),對(duì)主機(jī)隨后發(fā)來的數(shù)據(jù)不理睬直至發(fā)送新的一幀地址信息,。
(4)主機(jī)接收到地址后將SCON第9位TB8清“0”,,然后進(jìn)行地址校對(duì),若地址校對(duì)通過,,說明從機(jī)已經(jīng)聯(lián)絡(luò)上,,發(fā)送進(jìn)一步的通信控制命令信號(hào);地址校對(duì)出錯(cuò),,說明從機(jī)沒有聯(lián)絡(luò)上,,發(fā)送結(jié)束本次通信命令,修改SCON第9位,,,,將TB8置“1”。主機(jī)向被尋址的從機(jī)發(fā)送控制指令與數(shù)據(jù),,一幀數(shù)據(jù)的第9位為“0”,,表示發(fā)送的是數(shù)據(jù)或控制指令。
(5)被叫從機(jī)接收到命令后進(jìn)行命令分析,,收集現(xiàn)場(chǎng)信息,,進(jìn)行一定的數(shù)據(jù)處理,根據(jù)主機(jī)的要求返回?cái)?shù)據(jù),,并執(zhí)行主機(jī)發(fā)出的命令,。若為結(jié)束通信的命令,則立即置SM2=1,,結(jié)束本次通信,等待下一次通信,,否則執(zhí)行相應(yīng)的動(dòng)作,,對(duì)于要求返回信息的命令,置TB8=0,,返回正確的響應(yīng)信息后置SM2=1,,恢復(fù)其只接收地址幀數(shù)據(jù)狀態(tài)。
(6)主機(jī)接收結(jié)束通信命令的返回信息后修改SCON第9位,,將TB8置“1”,,準(zhǔn)備進(jìn)行下一輪的通信。
2.硬件構(gòu)成
主要包括紅外發(fā)射電路和紅外接收電路兩部分:
紅外發(fā)射電路
在紅外數(shù)據(jù)傳輸?shù)男盘?hào)調(diào)制方式上,,采用脈沖調(diào)制的二進(jìn)制不歸零碼,。這種調(diào)制方式比較簡單,編碼解碼都比較方便,有利于電路簡化,。紅外發(fā)射電路如圖2所示,。
由455KHZ的晶振CRY,反相器74HC04及電阻,、電容構(gòu)成的振蕩器產(chǎn)生455KHZ的方波信號(hào),。經(jīng)脈沖分頻器74LS92,六分頻成為75.83KHZ的脈沖信號(hào),。再經(jīng)過D觸發(fā)器構(gòu)成的2分頻/整形電路變成38KHZ的方波信號(hào),。由單片機(jī)的異步串行口TX輸出的串行數(shù)據(jù)信號(hào),送到與非門74HC00的輸入端,。與非門的另一輸入端接38KHZ的載波信號(hào),。與非門的輸出信號(hào)用來控制三極管的開通或關(guān)斷,從而控制紅外發(fā)射管發(fā)送信息,。這樣就達(dá)到了用串行口TX輸出的串行數(shù)據(jù)信號(hào)直接調(diào)制載波,,進(jìn)行紅外數(shù)據(jù)傳輸?shù)哪康摹0l(fā)射電路的調(diào)制采用的是時(shí)分制幅度鍵控調(diào)制方式,。因單片機(jī)在復(fù)位后,,TXD腳為高電平,為滿足同步的要求,,采用低電平同步脈沖,,經(jīng)與非門(U3)后變成高電平同步脈沖。所以單片機(jī)TXD發(fā)送的編碼應(yīng)是反碼,。
紅外接收電路
設(shè)計(jì)中采用一種高效能的紅外接收器——德律風(fēng)根TFMS5380,。德律風(fēng)根所開發(fā)的微型接收器TFMS5380是近期市場(chǎng)上最高效能的紅外接收器。同一組件內(nèi)已裝上了接收二級(jí)管和前置放大器,。TFMS5380特點(diǎn):(1)單一的接收器和前置放大器的組合,。(2)超敏感度和傳送距離。(3)內(nèi)置PCM頻率過濾器,。(4)無外置組件需要,。(5)特強(qiáng)光及電場(chǎng)干擾屏蔽。(6)TTL及CMOS兼容,,適用于微處理器操作控制,。(7)可選頻率由30KHZ至56KHZ。(8)低功耗,。(9)ISO9000認(rèn)可,。TFMS5380適用于數(shù)據(jù)傳送、電視機(jī),、錄像機(jī),、組合音響及衛(wèi)星接收器等。TFMS5380的內(nèi)部框圖及構(gòu)成的接收電路。如圖3所示,。
該接收電路要求被接收的紅外光波長在950μm左右,,被調(diào)制信號(hào)的脈沖寬度不小于600μs。TFMS5380的應(yīng)用電路非常簡單,。實(shí)驗(yàn)證明,,TFMS5380的性能良好,完全可以滿足數(shù)據(jù)傳輸?shù)男枰?。S3C2410 ARM9開發(fā)板800元 SOC開發(fā)平臺(tái)360元 豪華單片機(jī)開發(fā)系統(tǒng)498元 單片機(jī)學(xué)習(xí)板138 無線nRF-9E5模塊100元 51單片機(jī)試驗(yàn)開發(fā)板238元 Genius NSP通用編程器260元 Mini ARM Debugger330元 LABTOOL-48UXP2800元 S3C2410 ARM9開發(fā)板800
3.軟件設(shè)計(jì)
該系統(tǒng)軟件設(shè)計(jì)主要包括手持抄表器主機(jī)軟件和電度表端從機(jī)軟件兩部分,。在本設(shè)計(jì)中手持抄表器單片機(jī)發(fā)送字符與接受字符均采用查詢方式,發(fā)送前先讀取通信狀態(tài)寄存器,,查詢發(fā)送保持寄存器空否,,接收前先讀取通信狀態(tài)寄存器,查詢一幀數(shù)據(jù)收完否,。電度表單片機(jī)采用中斷方式,,即接收到地址幀后就進(jìn)行串行口中斷申請(qǐng),中斷響應(yīng)后,,進(jìn)入中斷服務(wù)程序,。
手持抄表器軟件設(shè)計(jì):
在紅外通信過程中,手持抄表器作為主機(jī),,是通信的發(fā)起者,,其發(fā)送和接收都是主動(dòng)的,它的具體工作過程為:不斷掃描鍵盤,,若發(fā)現(xiàn)有命令鍵按下,,則調(diào)用發(fā)送子程序發(fā)送相應(yīng)的操作命令,發(fā)送結(jié)束后即啟動(dòng)接收子程序,,以接收電度表回送的信息,,然后對(duì)接收到的信息進(jìn)行后續(xù)處理。手持抄表器通信程序包括初始化子程序和串行通訊程序,,其流程如圖4所示,。
初始化子程序SP-INIA,主要是對(duì)通訊波特率及方式的設(shè)置,,程序源代碼如下:
SP_INIA:MOV TMOD,,#20H ,;選擇定時(shí)器T1模式2,,計(jì)時(shí)方式
MOV TH1,#0E8H ,;預(yù)置時(shí)間常數(shù)
MOV TL1,,#0E8H
CLR ET1 ;禁止定時(shí)中斷
SETB TR1 ;啟動(dòng)計(jì)時(shí)器
MOV PCON,,#80H ,;SMOD=1
MOV SCON,#0D8H ,;方式3,,SM2=0,,REN=1,TB8=1
SETB EA ,;開總中斷
SETB ES ;開串口中斷
RET
抄表機(jī)串行通訊程序略,;
電度表端軟件設(shè)計(jì):電度表端作為從機(jī),,其軟件程序包括主程序和中斷服務(wù)程序,流程圖如圖5所示,;
主程序源代碼為:
ORG 0023H
LJMP SUB_COM ,;串口中斷服務(wù)程序入口
ORG 0050H
SM_COM:LCALL SP_INIB ;調(diào)串口初始化子程序
MOV 08H,,#50H ,;選工作寄存器區(qū)1
MOV 09H,#60H
SETB EA ,;開總中斷
SETB ES ,;開串口中斷
LOOP:SJMP $ ;等待中斷
SP_INIB:MOV TMOD,,#20H ,;選擇定時(shí)器T1模式2,計(jì)時(shí)方式
MOV TH1,,#0E8H
MOV TL1,,#0E8H
CLR ET1
SETB TR1
MOV PCON,#80H
MOV SCON,,#0F0H ,;方式3,SM2=1,,REN=1
RET
中斷服務(wù)程序:限于篇幅,,略。
4.結(jié)束語
本文介紹的應(yīng)用于電度表抄表系統(tǒng)中單片機(jī)紅外串行通信接口,,具有硬件電路簡單,、成本低廉、編程方便,、通信可靠性高的特點(diǎn),。利用手持抄表器可以方便地完成對(duì)電度表的抄錄和校準(zhǔn)等工作,,大大提高了抄表工作的效率,而且抄表準(zhǔn)確度高并杜絕了估抄和誤抄的問題,。本文提出的通訊協(xié)議能夠在多臺(tái)單片機(jī)間安全地傳送數(shù)據(jù),,實(shí)現(xiàn)了通信雙方非接觸式的數(shù)據(jù)傳送,也可用于其他遙控,、遙測(cè)的單片機(jī)應(yīng)用場(chǎng)合,。