精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

使用單片機實現收發短信的設計資料說明

Wildesbeast ? 來源:單片機教程網 ? 作者:單片機教程網 ? 2020-07-18 11:08 ? 次閱讀

借助系統模型,闡明GSM模塊收發短信的基本概念以及串口控制SMS的基本原理。詳細介紹單片機控制GSM模塊工作的軟件實現過程,對怎樣用單片機控制GSM模塊收發短信進行探討,也對程序設計的主體思想作了較為細致的分析。

GSM(GlobalSystemforMobilecommunication)系統是目前基于時分多址技術的移動通信體制中,比較成熟完善,且應用最廣泛的一種系統。目前已建成的覆蓋全國的GSM數字蜂窩移動通信網,是我國公眾移動通信網的主要方式?;贕SM的短信信息服務,是一種在移動網絡上傳送簡短信息的無線應用,是一種信息在移動網絡上存儲和轉寄的過程。由于公眾GSM網絡在全球范圍內實現了聯網和漫游,建議上述系統不需再組建專用通信網絡,所以具有實時傳輸數據功能的短信應用將得到迅速普及。筆者開發設計的基于GSM網絡的溫度數據采集與無線傳輸系統正是借助該網絡平臺,利用短信息業務實現數據的自動雙向傳遞。系統模型圖如圖1所示。

本系統由數據采集部分、數據接收和發送部分、終端處理部分三個模塊組成。數據采集模塊將采集到的溫度數據存入存儲器中。數據收發模塊采用雙單片機共用E2RPOM的方式,單片機2控制數據從存儲器轉存入E2PROM中;單片機1負責將數據從E2PROM中讀出,并經GSM模塊2借助GSM網絡將數據發送出去。單片機1不僅控制數據的發送,也控制數據的接收。在這里,E2PROM是溫度數據臨時存儲和上傳的中轉站。終端處理模塊負責將接收到的數據交給計算機處理,并將處理后的結果存放到數據庫中,以供查詢。當終端處理模塊需要向GSM模塊2發送控制命令時,GSM模塊2接收過程正好與上述過程相反,從而實現數據的自動雙向傳遞。

系統中,三個模塊相互獨立,彼此又相互依賴,共同完成數據的傳輸。數據收發模塊在系統中起著承上啟下的作用,是系統的核心模塊。該模塊以雙單片機為核心,以RS232通信接口,在物理層上實現與GSM模塊的連接。由于篇幅的限制,本文主要介紹單片機控制這一模塊工作的軟件實現過程,旨在對怎樣用單片機控制GSM模塊收發短信息進行探討。

1GSM模塊MZ28

MZ28是中興通訊推出的GSM無線雙頻調制解調器,主要為語音傳輸、短信發送和數據業務提供無線接口。MZ28集成了完整的射頻電路和GSM的基帶處理器,特別適合于迅速開發基于GSM無線網絡的無線應用產品。帶有人機接口(MMI)界面的應用產品內部與MZ28的通信可通過標準的串行接口(RS232)進行。MZ28使用簡單的20-PINZIP插座與用戶自己的應用系統相連,此ZIP連接方式提供開發所需的數據通信、音頻電源等接口信號。MZ28可以作為無線引擎,嵌入到用戶自己的產品當中,用戶可以用單片機或其它CPUUART口,使用相應的AT命令,對模塊進行控制,達到使其產品可以輕松進入GSM網絡的目的。

2串口控制SMS的工作原理

單片機與GSM模塊一般采用串行異步通信接口,通信速度可設定,通常為19200bps。采用這種RSM232電纜方式進行連接時,數據傳輸的可靠性較好。RS232接口方式連接,通過串行接口集成電路和電平轉換電路與GSM模塊連接,電路比較簡單,所涉及的芯片包括單片機89C52和電平轉換芯片MAX232,是非常常見的接口電路。需要說明的是,該接口通過I2C總線擴展了一個E2PROM存儲器芯片AT24C64,它的主要作用是存儲數據,而且斷電信息也不會丟失,這些特性正是存儲數據所必須的。

GSM的短信息業務SMS利用信令信道傳輸,這是GSM通信網所特有的。它不用撥號建立連接,把要發的信息加上目的數據發送到短信息服務中心,經短信服務中心完成存儲后再發送給最終的信宿。所以當目的GSM終端沒開機時信息不會丟失。每個短信的信息量限制為160字節。

現在市場上大多數手機均支持GSM07.05規定的AT指令集。該指令集是ETSI(歐洲通信技術委員會)發布的,其中包含了對SMS的控制。利用GSM手機的串行接口,單片機向手機收發一系列的AT命令,就能達到控制GSM模塊收發SMS的目的。必須注意的是,用單片機實現時,編程必須注意它發送指令與接收到的響應都是字符的ASCII碼。用單片機控制GSM模塊收發短信息所涉及以的AT指令如表1所列。

表1AT指令AT指令

功能描述AT+OFF關機并重新啟動AT+CSDH=0在TEXT模式下在返回值中不顯示詳細的頭信息ATE0關閉回顯AT+CMGF=1選擇短信格式為TEXT模式AT+CMGS發送短信息AT+CMGR讀取短信息AT+CMGD=0刪除全部短信息

3軟件實現

3.1上位機模塊和下位機模塊半雙工通信協議的實現

3.1.1應答和重發

上位機模塊和下位模塊的通信雙方遵照半雙工通信方式進行,即數據傳送是雙向的。但是,任何時刻只能由其中的一方發送數據,另一方接收數據,因為E2PROM的讀出和寫入不能同時進行。為了避免一方在發送信息幀時(這里的信息幀指的是下位機模塊發送的數據幀和上位機模塊發送的命令幀,下同),另一方也會發送數據,必須把信道變成半雙工方式。盡管這樣效率可能不如全雙工方式,但通過此舉犧牲效率可以換取模塊工作性能的穩定。雙方采取的順序是:發→收到應答后→再發。

按照整個系統的設計思路,上位機模塊(即圖1中的GSM模塊1,下同)發送的幀包括命令癥確認幀和非確認幀;下位機模塊(即圖1中的GSM模塊2,下同)發送的幀包括數據癥確認幀和非確認鄭其中確認幀和非確認幀是發送數據后等待對方發送的應答幀,以此作為繼續發送下一幀和重新發送上一幀的依據。命令幀和數據幀是信息幀,當一方先發送完信息幀,如果收方接收到對方的信息幀,而又沒有信息幀需要發送,那么情況就比較簡單,收方將根據信息幀的正確與否決定發送確認幀還是非確認幀,以使對方決定是繼續發送還是重新發送;如果此刻收方也有信息幀需要發送,那么收方將不立即發送應答幀,而是立即發送本方的信息幀給對方,并等待對方對此幀的應的應答幀,在收到對方的應答幀后,收方將依據應答幀的內容(即確認幀或者是非確認幀,下同)決定是繼續發送下一信息幀,還是重新發送原來的信息鄭如果由于鏈路本身不可靠等因素造成應答幀的丟失,收方將在一定時間內因為沒有收到應答幀而延時重發原來的信息鄭在收到對方的應答幀后,收方將繼續發送下一信息幀,并等待對方的應答幀,如此反復,直到收方全部發送完信息鄭在本方收到對方最后一個應答幀后,表明本方全部的信息幀發送完畢。然后收方將發送對方仍然等待的應答幀,通知對方收到的信息幀正確與否。

圖2

3.1.2延時重發

在雙方通信過程中,有兩個時間t1和t2,分別表示重新發送信息幀的最大延時。t1表示一方發送完信息幀到收到對方應答幀的時間,如果等待應答幀的時間超過了t1,則發方會重新發送原來的信息幀;當收方接收到對方發送的信息幀,如果收方此時有需要發送的信息幀,則收方此記得不發送應答幀,而是發送信息幀給對方。也就是說,利用對方等待收方應答幀的時間t1內,收方插入發送本文的信息幀,同樣本方的發送也存在一個延時重發的問題。在規定的時間內,如果沒有收到對方應答幀,收方也同樣需要重發原來的信息幀,這個規定的時間就是t2。顯然由于收方是利用間隙時間發送本方信息幀,所以t2《t1。

圖2以下位機模塊先發數據幀為例,闡述雙方通信的具體實現過程。

需要說明的是,由于版面的限制,圖2所示的通信過程沒有涉及到發送非確認幀的情況,如果收方發送非常認幀,發方的發送過程跟發送數據幀是一樣的,只不過這種情況下需要重發同一幀號的數據鄭如果上位機模塊先發命令幀,雙方通信的實現過程跟圖2類似,所不同的是數據幀此時變成命令幀,命令幀變成數據鄭在延時的時間上,無論是下位機發送數據幀還是上位機發送命令幀,t2的大小都應該是一樣的,都是利用時間間隔t2發送收方信息幀,延時的時間是相同的。然而,對于t1而方,情況就有所不同。因為下位機模塊先發送數據幀時,利用t1的間隔時間上位機模塊發送的命令幀可靠較少,因此當下位機模塊先發送數據幀時所定義的t1應該小于當上位機模塊先發送命令幀時,所定義的t1。這是因為當上位機模塊先發送命令幀時,利用t1的間隔時間下位機模塊發送的數據幀可能比較多。

3.2幀格式

GSM模塊通過異步通信接口實現對SMS的控制共有三種接入協議:BlockMode;基于AT指令的TextMode;基于AT指令PDUMode。本系統發送和接收的數據都是基于數字的溫度數據和命令字,為了保證系統的適用性,SMS的收發采用TEXT模式。TEXT模式是基于字符的,更具體地說是基于ASCII碼的一種結構模式。在該模式下,模塊發送和接收的信息幀格式如下:

幀頭幀序號數據校驗子

信息幀包括數據幀和命令鄭

幀頭表示數據幀的標記,是由固定的字符“WQ”構成。

幀序號表示數據幀的序號,由兩個字節組成。幀序號表示下位機模塊發送的遞增數據幀序號和上位機模塊發送的命令幀序號。為了簡化幀結構,命令幀的序號統一為00H。

數據字段的長度為154字節,最多發送77個字符(采用TEXT模式,不能發送漢字)。

檢驗子為數據字段所有字節累加和的初碼(原碼取反加1),由一個字節組成。

除了信息幀外,雙向傳遞的還有應答幀,它包括確認幀和非確認鄭確認幀是雙方反饋給發方的應答幀,表示收方已經正確接收到了發方發送的信息鄭確認幀格式僅包括兩個字段,且兩個字段的內容都是固定的,即幀頭“WQ”和數據字段“ACK”,確認幀格式如下。

WQACK

非確認幀是收方給發方的應答幀,表示收方收到的是無效的信息幀,其格式與應答幀格式類似,幀格式如下。WQNACK

3.3E2PROM空間的分配

采用8KB的E2PROM,按照每77個字節為一個塊進行劃分,共106塊,如圖3所示。

第00、01塊留作系統使用,第02塊~第105塊是數據塊,用作存放數據。

3.4收發端與采集端的握手協議

收發端與采集端共用一個存儲器,即雙CPU對同一個E2PROM進行操作。實現方案是分別使兩個微處理器的一個I/O腳相連,兩個CPU采用查詢方式對此I/O端進行查詢。如果某時候收發端查詢到本地I/O端為高電平,則單片機1擁有此存儲器的操作權,可以對E2PROM進行讀寫操作。如果采集端查詢到本地I/O端為高電平,則單片機2擁有此存儲器的操作權,可以對它進行寫操作。一方操作完畢后將I2C總線置為高電平,表明本端已經釋放I2C總線,E2PROM目前處于可用狀態。

3.5程序的設計

3.5.1主函數的設計思路

開機上電后,程序在主函數中運行,單片機和GSM模塊分別進行初始化。單片機的初始化包括設置串口工作方式、波特率,并初始化變量參數和標志位。GSM模塊初始化包括重新啟動、關閉回顯、設置在TEXT模式下的返回值中不顯示詳細的頭信息、選擇短信格式為TEXT模式、開發串口中斷準備接收數據。

3.5.2GSM返回參數的處理—SHELL函數

SHELL函數是進入時鐘中斷程序時被調用時,該函數是對GSM模塊返回參數進行處理的函數。根據系統設計的要求,需要對GSM模塊進行下列操作:呼叫對方模塊號碼、發送數據、閱讀短信、刪除短信。基于以上操作指令,如果操作成功GSM模塊會分別返回不同的參數:》、+CMGS、+CMGR、OK。根據接收到的不同參數,下位機模塊將轉向不同的操作步驟,判斷并改變標志位的值。比如,如果某時刻接收到,這表明呼叫對方模塊號碼獲得成功,接下來需要發送數據。這時SHELL函數將檢查發送不同數據所代表的標志位f_sending、f_ack、f_nack,從而決定需要發送何種類型的數據。

3.5.3短信數據的處理—ExecData函數

進入時鐘中斷調用SHELL函數時,如果接收到了返回的參數+CMTI,表明上位機模塊向下位機模塊發送了短信數據,可能是命令幀,也可能是確認幀或者非確認鄭在這種情況下,SHELL函數需要對短信內容進行分析,并根據短信的內容進行不同的處理,負責完成以上功能的就是ExecData函數,它是被SHELL函數調用的,用來分析并處理短信數據。

結語

通過以上的分析不難發現,整個程序錯綜復雜,函數之間相互牽扯。標志位在程序的實現過程中扮演著非常重要的角色,正是依靠這些標志位,程序才能很好地實現各個功能之間的切換,而標志位的值是通過OSM模塊返回的參數修改的。因此程序的實現過程應該是閱讀參數→修改標志位→發送指令。

主函數、時鐘中斷和串口中斷程序、SHELL函數、ExecData函數貫穿整個程序的主線和核心部分,對它們的分析可以理解程序的主體思想,這也正是筆者著重介紹的原因所在。然而這些函數和中斷程序的實現,還需要依靠其它函數的配合,比如基于I2C總線的E2PROM操作函數、字符串操作函數以及串口發送函數等,由于篇幅所限,在此不再介紹。GSM網絡本身是不完全可靠的,可能會發生幀發送錯誤、幀丟失的現象。但是由于重發、延時重發機制的存在,程序可以最大程度避免上述情況的發生。在實際應用過程中,模塊運行正常,性能穩定,實時性好。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6032

    文章

    44525

    瀏覽量

    633258
  • 解調器
    +關注

    關注

    0

    文章

    285

    瀏覽量

    25800
  • 存儲器
    +關注

    關注

    38

    文章

    7455

    瀏覽量

    163623
  • GSM
    GSM
    +關注

    關注

    9

    文章

    835

    瀏覽量

    122818
收藏 人收藏

    評論

    相關推薦

    昂寶單片機相關資料

    昂寶單片機相關資料
    發表于 11-25 14:50 ?0次下載

    基于51單片機的手動數字時鐘

    眾多嵌入式控制應用系統提供靈活、高效的解決方案。本設計所使用的芯片可兼容以下所有的51系列單片機(包括AT系列和STC系列)。資料內容仿真實現(protues8.7) 本設計利
    的頭像 發表于 10-22 14:12 ?162次閱讀
    基于51<b class='flag-5'>單片機</b>的手動數字時鐘

    基于51單片機的遙控開關仿真(雙機通信)

    靈活、高效的解決方案。本設計所使用的芯片可兼容以下所有的51系列單片機(包括AT系列和STC系列)。資料內容仿真實現(protues8.7)本設計利用protues8.7軟件實現仿真設
    的頭像 發表于 10-22 14:12 ?188次閱讀
    基于51<b class='flag-5'>單片機</b>的遙控開關仿真(雙機通信)

    如何實現51單片機與PC的串行通信

    51單片機與PC的串行通信是一種常見的通信方式,它允許單片機通過串行接口與PC進行數據交換。這種通信方式在嵌入式系統、工業控制、物聯網等領域有著廣泛的應用。以下是
    的頭像 發表于 10-21 11:35 ?439次閱讀

    藍牙模塊如何實現單片機和手機端數據互傳

    藍牙模塊實現單片機和手機端數據互傳的過程可以分為以下幾個步驟: 硬件準備 : 確保你有一個支持藍牙通信的單片機開發板,如Arduino、Raspberry Pi等。 準備一個兼容的藍牙模塊,如
    的頭像 發表于 07-24 17:59 ?2174次閱讀
    藍牙模塊如何<b class='flag-5'>實現</b><b class='flag-5'>單片機</b>和手機端數據互傳

    8-Bit 觸控式 Flash 單片機中文資料

    而又有效的實現方法。 觸摸按鍵功能完全集成于單片機內,使用較少的外部元件便可實現觸摸按鍵的 應用。該系列單片機除了 Flash 程序存儲器,還包括 RAM 數據存儲器和用于存 儲串列數
    發表于 02-28 10:01 ?4次下載

    16位單片機RL78系列Rev.1.20發布說明

    電子發燒友網站提供《16位單片機RL78系列Rev.1.20發布說明.pdf》資料免費下載
    發表于 02-19 10:15 ?0次下載
    16位<b class='flag-5'>單片機</b>RL78系列Rev.1.20發布<b class='flag-5'>說明</b>

    基于單片機控制的交通燈設計

    本課程設計是在學完單片機原理及課程之后綜合利用所學單片機知識完成一個單片機應用系統設計并在實驗室實現。
    的頭像 發表于 01-22 15:31 ?1851次閱讀
    基于<b class='flag-5'>單片機</b>控制的交通燈設計

    單片機怎么能夠與手機實現遠程通訊呢?

    單片機怎么能夠與手機實現遠程通訊呢? 隨著物聯網的快速發展,單片機作為物聯網應用中最常見的控制器,與手機實現遠程通訊已成為一種趨勢。通過單片機
    的頭像 發表于 01-15 14:59 ?2872次閱讀

    基于單片機的汽車防碰撞系統設計與實現

    電子發燒友網站提供《基于單片機的汽車防碰撞系統設計與實現.rar》資料免費下載
    發表于 01-12 10:48 ?23次下載

    基于單片機的汽車防碰撞系統設計與實現

    電子發燒友網站提供《基于單片機的汽車防碰撞系統設計與實現.rar》資料免費下載
    發表于 01-02 10:04 ?1次下載

    單片機串口通信的接收與發送

    單片機串口通信是一種常見的通信方式,它可以實現單片機與外部設備的數據交換。在實際應用中,單片機串口通信常用于與電腦、傳感器、LCD顯示屏等外設進行數據傳輸。 首先,我們來了解一下
    的頭像 發表于 12-20 14:03 ?3528次閱讀

    單片機boot腳干嘛的

    單片機boot腳是單片機的引導腳,用于控制單片機的啟動和引導過程。在單片機系統中,boot腳的作用十分重要,它影響著整個單片機的工作狀態和功
    的頭像 發表于 12-19 09:47 ?9711次閱讀

    STM32單片機實現固件在線升級(IAP)

    1,固件升級方案綜述單片機的固件升級方式有很多種。1、ICP:簡單說就是在單片機開發時使用燒錄器升級程序,比如使用J-Link燒錄單片機程序。2、ISP:在單片機內部
    的頭像 發表于 12-16 08:00 ?5068次閱讀
    STM32<b class='flag-5'>單片機</b><b class='flag-5'>實現</b>固件在線升級(IAP)

    單片機如何檢測電流?

    傳感器和保護電路等相關核心概念和實施細節。希望本文可以為讀者提供一個全面了解單片機電流檢測的指南。 1. 引言 隨著電子設備功能的增強和多樣化,對電流的準確檢測和控制變得越來越重要。單片機因其高度集成的特點,成為實現電流檢
    的頭像 發表于 12-07 15:37 ?3731次閱讀