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