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