多臺(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)場信息,進(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)場信息,,進(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ù)哪康?。發(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是近期市場上最高效能的紅外接收器,。同一組件內(nèi)已裝上了接收二級(jí)管和前置放大器,。TFMS5380特點(diǎn):(1)單一的接收器和前置放大器的組合。(2)超敏感度和傳送距離,。(3)內(nèi)置PCM頻率過濾器,。(4)無外置組件需要。(5)特強(qiá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ù)男枰3C2410 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ù)傳送,,也可用于其他遙控,、遙測的單片機(jī)應(yīng)用場合。