• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 手機與無線通信 > 設計應用 > 基于單片機的多機無線短信通信系統設計

    基于單片機的多機無線短信通信系統設計

    作者: 時間:2014-11-03 來源:網絡 收藏

      (3)應用層

    本文引用地址:http://www.czjhyjcfj.com/article/264813.htm

      應用層處于最高層,它為應用進程提供了接入點,直接為用戶的應用進程提供服務。在此自定義為短信通信協議(Message Communication Protocol,MCP)。

      3.1 定時器T2中斷模塊

      中斷處理采用片內CCPI中斷捕捉方式,對外部接口引腳CCP上輸入的脈沖信號上升沿或下降沿進行實時捕捉檢測。借助于這個強大的邊沿捕捉功能,很容易對信號的高電平時間進行檢測,從而實現對WTP解讀功能。中斷服務程序流程如圖7所示。

      

     

      在解讀WTP過程中只要判斷出同步碼,就對這一碼字進行初始化,把脈沖個數計數器清O;然后每捕捉到一個高電平,脈沖個數計數器就加1并保存記錄該脈沖。捕捉到一個高電平后,若高電平時間寬度為409.6~819.2μs,就認為是窄脈沖;高電平時間寬度為819.2~1 228.8μs,就認為是寬脈沖;若高電平時間寬度小于409.6μs或大于1 228.8μs,則認為該脈沖為干擾信號,當低電平時間寬度大于819.2μs時也認為是干擾信號。收到干擾信號后將脈沖個數計數器清0,并把正在接收的碼字丟棄處理。當接收到25個脈沖后對前面16個脈沖進行處理,若每個位碼不是由一個窄脈沖和一個寬脈沖組成的,就認為接收正常。接收正常后,通過一個接收到數據的標志位反饋到MCP(短信通信協議)上處理,通信協議會根據該標志位到接收緩存中取剛剛接收到的數值。

      一個字節的數據波形如圖8所示。根據無線傳輸協議定義,發送的一個完整的碼字由數據碼、校驗碼、同步碼組成(圖中用虛線隔開這3個部分)。數據碼和校驗碼都用寬度不同的脈沖來表示,2個窄脈沖表示“0”,2個寬脈沖表示“1”。每組字碼之間有同步碼隔開,同步碼用一個窄脈沖和一個比較寬的低電平表示。一個字碼由8位數據碼、4位校驗碼和1個窄脈沖組成。若每個位碼用2個脈沖來代表,則一個碼字就是由25個脈沖組成。無線傳輸協議定義窄脈沖時間寬度為 739.2μs,寬脈沖時間寬度為1 156.8μs,而脈沖之間的低電平時間統一為331.2μs,同步碼的低電平時間寬度為5 ms。

      圖8表示發送~個十六進制數“57H”,碼的“57H”表示字符“W”。圖中前16個脈沖表示“57H”的數據碼,二進制表示為 “B01010111”;中間8個脈沖表示校驗碼,在該協議中校驗碼固定定義為半個字節的“AH”,二進制表示為“B1010”;同步碼則為一個時間寬度為739.2μS的窄脈沖和一個時間寬度為5 ms的低電平。

      

     

      該協議中從以下幾個方面來提高抗干擾能力:

      ①每個碼字由25個脈沖組成;

      ②每個位碼用2個脈沖來表示;

      ③校驗碼用“B1010”(“O”、“1”間隔)來排除干擾;

      ④若數據碼大于7FH,則作為無效數據處理。

      3.2 發送短信模塊

      這個模塊實現MCP功能,編輯短信采用碼格式,短信內容取值范圍為碼的20H~7AH,ASCII碼內容可以參照ASCII碼表。 7CH~7FH作為特殊功能碼來處理。短信內容格式要求為3個字符的“名字+內容”。例如:要給名為LZX的通信器發短信,可寫成“LZX:……”。應用層的短信通信協議要求發送機發送短信順序是:

      ①發送短信開始碼(即7FH);

      ②發送短信的頭3個字符(即接收者的名字);

      ③等待接收者的短信開始應答信號(即7DH);

      ④收到應答信號后開始發送短信內容;

      ⑤短信內容發完后發短信結束碼(即7EH);

      ⑥等待接收者的短信結束應答信號(即7CH)。

      由于是無線發送與接收,有時會接收不到信號,所以當沒有收到短信開始應答信號時就從第一步再開始執行。若執行8次依舊沒有收到應答信號,就得出“無此人發送失敗”的結果。若沒有收到短信結束應答信號,就得出“發送中止失敗”的結果,否則就顯示“對方已收到”。

      因為無線發射的特點,第一組字碼非常容易受零電平干擾,往往會產生誤碼,所以剛開始發射的短信開始碼一般要發2~3次。如圖9所示,發送了5個碼字的數據:7FH,7FH,57H,44H,58H(分別為開始碼、開始碼、W、D、X,其中“WDX"’為萬能名)。然后,等待接收者的短信開始應答信號再發短信內容。

      

     

      3.3 接收短信模塊

      在這個模塊中實現對MCP解讀功能。根據MCP,在解讀中只要判斷出接收到短信開始碼,就將收短信的標志位置1,并開始設置一個通信超時值,然后繼續接收下3個字符再與本身名字或萬能名比較。應用層的短信通信協議要求接收機接收短信順序是:

      ①一旦接收到短信開始碼就進入接收短信;

      ②接收3個字符后與本身名或萬能名比較,若同名就反饋應答信號,否則返回到①;

      ③繼續接收短信內容;

      ④接收到結束碼后反饋應答信號,若沒收到結束碼且通信超時則返回到①。

      在任何狀態收到短信的結束碼后,都會在液晶顯示屏的第一行顯示“receive a mess”,并以聲、光形式提示收到短信,由用戶手動查閱新的短信。

      3. 4編輯短信模塊

      這個模塊實現對短信的編輯,類似于手機編輯短信的模式;有單字刪除鍵、快速刪除鍵、全部清除鍵、標點符號鍵、輸入狀態大小寫字母或數字的切換鍵,短信尾部可顯示光標。因為受液晶屏幕所限,規定一條短信內容長度為70個字符,編輯時限制字數為67個字符,發送時軟件上自動在短信尾部添加本機名并發送。液晶屏幕第一行顯示正在編輯狀態、現在的時間和大小寫輸入狀態。在該模塊中,主要是要定位好顯示和編輯指針,然后對各個按鍵做處理。

      結 語

      本文闡述的設計方法集編碼和解碼技術、通信協議技術、抗干擾技術、編輯短信技術、液晶點陣顯示技術于一體。實現任意兩機之間可以互發70個ASCII碼字符的短信,可以像普通手機一樣編輯短信,機子可以由用戶命名以區別其他機子,實現一機對一機的通信,也可以用萬能名(“WDX”)實現一機對多機的通信。可以存儲一條發送出去的短信,也可以存儲一條剛接收到的短信和舊的短信。整個系統人機交互界面友好,類似于普通手機系統,有操作提示,易于操作。本設計中采用分層的協議可以很容易地把無線通信模塊用其他性能更好的無線模塊替換。

    萬能遙控器相關文章:萬能遙控器代碼


    單片機相關文章:單片機教程


    單片機相關文章:單片機視頻教程


    單片機相關文章:單片機工作原理


    數字通信相關文章:數字通信原理


    通信相關文章:通信原理


    蜂鳴器相關文章:蜂鳴器原理
    脈寬調制相關文章:脈寬調制原理
    燃氣報警器相關文章:燃氣報警器原理

    上一頁 1 2 下一頁

    關鍵詞: 單片機 ASCII EEPROM

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 湖北省| 金山区| 舞阳县| 龙游县| 定襄县| 开阳县| 双鸭山市| 荥经县| 南华县| 辛集市| 阳高县| 黎城县| 晋江市| 乡宁县| 门头沟区| 清涧县| 四平市| 礼泉县| 项城市| 绥中县| 景东| 景宁| 江口县| 南汇区| 阳东县| 宁河县| 张家口市| 米易县| 安化县| 长葛市| 武鸣县| 平潭县| 珠海市| 朝阳市| 新昌县| 长海县| 万盛区| 内丘县| 全南县| 长武县| 斗六市|