《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于單片機無線電子點菜系統硬件設計及實現
基于單片機無線電子點菜系統硬件設計及實現
摘要: 隨著人民生活水平的提高和生活方式的轉變,餐飲業具有巨大的投資市場,被稱為中國的黃金產業。無線電子點菜系統是無線通信技術的典型應用,把無線技術用于餐飲業將會極大提高餐館的工作效率和服務質量。論文給出了
Abstract:
Key words :

隨著人民生活水平的提高和生活方式的轉變,餐飲業具有巨大的投資市場,被稱為中國的黃金產業。無線電子點菜系統是無線通信" title="無線通信">無線通信技術的典型應用,把無線技術用于餐飲業將會極大提高餐館的工作效率和服務質量。
論文給出了無線電子點菜系統的完整的硬件平臺的設計和實現方案。整個系統有主機端和移動端兩部分組成,無線通信的雙方依托一定的硬件平臺,按照約定好的協議來實現數據交換。設計的硬件平臺時,首先詳細介紹了平臺將要用到的一些芯片,然后使用Protel 99 SE設計出了系統的原理圖和PCB(Print Circuit Broad,印刷電路板)圖;在設計的硬件平臺的基礎上,依據所用芯片的編程原則,在Windows環境下,以C51語言為編程語言,開發出了無線通信系統的驅動程序來實現雙方約定的通信協議。文中還附帶簡要介紹了用到的軟件開發工具,以及系統的局限性,并提出了進一步改進的方案。
為了使整個系統更加完善,用Visual C++ 6.0開發了串口調試工具,實現了將遠端數據發送到計算機并以窗口形式顯示和通過窗口形式將計算機上的數據發送到遠端,基本達到了論文的設計目的。

關鍵詞 無線通信,ZigBee" title="ZigBee">ZigBee,單片機" title="單片機">單片機,nRF2401


目 錄
摘 要 IV
ABSTRACT V
第一章 緒論 1
1.1 研究背景和意義 1
1.3 論文的研究內容 4
1.4 內容安排 4
第二章 ZIGBEE協議分析 6
2.1 ZIGBEE協議框架 6
2.2 ZIGBEE協議優缺點和應用前景 8
2.2.1 ZigBee協議的優點 9
2.2.2 ZigBee協議存在的問題及解決方案 9
2.2.3 ZigBee協議應用前景 10
2.3基于ZIGBEE協議的芯片 10
第三章 基于ZIGBEE協議的硬件系統的設計及實現 14
3.1 STC89C58RD+單片機概述 14
3.2 開發板的各個組成部分原理圖以及功能 15
3.2.1 單片機最小系統組成電路 15
3.2.2 串行口電平轉換部分 16
3.2.3 LED部分 17
3.2.4 開發板和無線數據傳輸模塊接口部分 17
3.2.5 鍵盤部分 18
3.3 無線數據傳輸模塊 19
3.4 無線數據傳輸模塊和開發板的PCB圖設計 20
3.4.1 開發板的PCB圖 20
3.4.2 無線數據傳輸模塊的PCB圖 22
第四章 硬件驅動程序和串行口調試工具 24
4.1 硬件驅動程序 24
4.1.1 主機端硬件驅動程序 24
4.1.2 移動端驅動程序 28
4.2 串行口調試工具 28
4.2.1串行通信的基本原理 28
4.2.2程序設計原理 30
第五章 總結與展望 37
5.1 全文總結 37
5.2 研究展望 38
致 謝 39
參考文獻 40
附錄 41

摘 要

Abstract
Along with the enhancement of the level of the people’s lives and the transformation of the lifestyle, the dining industry which is called gold industry in China has the huge investment market. The wireless electronic ordering food system is the typical use of the technology of wireless communication. Using the technology of wireless communication in the dining industry will largely improve the working efficiency and the grade of service.
The present paper brings up the plan of the hardware design of the the wireless electronic ordering food system and how to realize. The overall system is made up of two parts, one is the main end and the other is the mobile end. Both sides of wireless correspondence depend on certain hardware platforms. They exchange data according to the protocol which both sides have agreed on before, and the data is transformed in specific frame form. When designing the hardware platform, first analyzes the CMOS chips that will be used in the system. Then, the paper uses Protel 99 SE to design the principle picture and the PCB picture of the system. In this foundation, according to the programming rules of the CMOS chips used in the system, the paper exploits the driving program of the system using C51 programming language in the Windows operating system. By the way, this paper also briefly introduces the software development kits which will be used next, analyzes the limitations of system, and also proposes how to improve it.
In order to make the entire system more comprehensive,the paper also exploits the serial debugging tool in Visual C++ 6.0 to display the data from remote end in the window on computer and send data to remote end in the window form. This basically achieves the goal.

KEY WORLD wireless communication, ZigBee,Single-Chip Microcomputer, nRF2401

第一章 緒論
1.1 研究背景和意義

人類利用無線通信技術的歷史已經有幾千年了,古時候用的烽火臺就是最原始的無線通信。但這時候的無線通信技術還只是處于萌芽階段,只有到19世紀末意大利人馬可尼發明無線電報開始,人類才真正開始大規模地利用無線通信技術[1]。近數十年來隨著計算機技術和電子技術的發展,無線通信技術更是以日新月異的速度向前發展,它也成為了通信領域的一個重點研究方向。
現代的無線通信技術是建立在硬件電路的基礎上的,因此微電子技術[2]的發展直接制約著無線通信技術的發展。回顧集成電路的發展歷程,我們可以看到,自發明集成電路至今40多年以來,”從電路集成到系統集成”這句話是對IC產品從SSI(Small Scale Integrated,小規模集成電路)到VLSI(Very Large Scale Integrated超大規模集成電路)今天特大規模集成電路發展過程的最好總結,即整個集成電路產品的發展經歷了從傳統的板上系統(System-on-board)到片上系統(System-on-a-chip)的過程。隨著集程度的提高,芯片的體積能耗和成本在逐步降低。這也使電子產品向便攜式和低端市場發展。
雖然微電子的發展歷史已經有半個多世紀,但是射頻芯片[1][2]的發展卻是近幾年的事。從分類上來看,射頻芯片屬于專用集成電路。目前國際上有很多專門生產射頻芯片的公司,例如Nordic公司和Chipcon公司。這些芯片一般工作在免費頻段,采用專門的調制解調技術,內部集成了很多電路。像Nordic公司的NRF2401" title="NRF2401">NRF2401芯片,它是單片射頻收發芯片,工作于2.4~2.5GHz ISM(Industry Science medicine,工業、科學、醫學)頻段,芯片內置頻率合成器、功率放大器、晶體振蕩器和調制器等功能模塊,輸出功率和通信頻道可通過程序進行配置。芯片能耗非常低,以-5dBm的功率發射時,工作電流只有10.5mA,接收時工作電流只有18mA,多種低功率工作模式,節能設計更方便。其DuoCeiverTM技術使nRF2401可以使用同一天線,同時接收兩個不同頻道的數據。
無線電子點菜系統是無線通信技術的一個典型應用。近些年來,隨著人民生活水平的提高和生活方式的轉變,餐飲業具有巨大的投資市場,被稱為中國的黃金產業。人們在消費過程中對服務質量也有了更高的要求,同時餐館之間的激烈競爭也促進了無線通信技術在餐飲業中的應用。無線電子點菜系統的目的就是利用最先進的2.4GRF無線通信技術、嵌入式移動數據庫技術[3][4]、以及觸摸屏的掌上電腦技術, 為餐飲業走向全面數字化提供了完整的解決方案。該系統能夠提高餐館檔次、提高效率、自動結賬、避免人為錯誤、避免跑單、實時監控餐館狀況、提供各種各樣統計信息、精簡人手、管理庫存、提高服務品質等,為餐飲行業帶來嶄新的管理理念與服務手段,優化業務流程,為客戶提供更好的服務,實現企業價值最大化同時又使成本最低化,是餐飲行業向信息化發展的一個重要標志。由于使用無線技術通信,可以不用進行復雜的布線,這也大大降低了餐館的建設成本,減少了對線路維護的開支。同時,無線通信的可以移動性也使服務員隨時可以和吧臺聯系。
無線電子點菜系統基于目前很熱門的技術–嵌入式技術[3],依托一定的硬件平臺。因此微電子技術的發展對系統的性能有很大的限制,目前微電子技術已經發展到了SOC(System On Chip,片上系統),集成度獲得了極大的提高。同時,芯片的價格,體積和能耗進一步降低,這些都使無線電子點菜系統向移動化和大眾化方向發展。可以說,隨著微電子技術的進一步發展,無線電子點菜系統仍然有很大的發展空間。

1.2 無線通信技術的發展現狀

按照發射功率的不同,無線通信技術可分為短距離無線通信技術和長距離無線通信技術,它們各自依托的硬件平臺和通信協議也有很大不同。幾種常見的長距離無線通信系統如GPRS系統和我國即將投入使用的3G系統,它們都有一些共同的特點:使用專門的頻段,需要專門的公司進行運營。由于本系統要求傳輸距離有限,而且對成本有限制,因此長距離無線通信協議不在考慮的范圍之內,下面就重點闡述幾種常見的短距離無線通信協議:
1 藍牙[5]
愛立信在1994年開始研究一種能使手機與其附件(如耳機)之間互相通信的無線模塊,4年后,愛立信、諾基亞、IBM等公司共同推出了藍牙技術,主要用于通信和信息設備的無線連接。藍牙工作頻率為2.4GHz,有效范圍大約在10m半徑內。在此范圍內,采用藍牙技術的多臺設備,如手機、微機、激光打印機等能夠無線互聯,以約1Mb/s的速率相互傳遞數據,并能方便地接入互聯網。目前藍牙技術開發重點是多點連接,即一臺設備同時與多臺(最多7臺)其他設備互聯。今后,市場上不同廠商的藍牙產品將能夠相互聯通。
藍牙技術的應用主要有以下3類:
1 語音/數據接入 是指將一臺計算機通過安全的無線鏈路連接到通信設備上,完成與廣域網的連接。
2外圍設備互連 是指將各種設備通過藍牙鏈路連接到主機上。
3 PAN(Personal Area Net,個人局域網)如圖1所示,主要用于個人網絡與信息的共享與交換。
藍牙協議有以下技術特點:
(1)藍牙工作在全球開放的2.4GHz ISM頻段;
(2)使用跳頻頻譜擴展技術,把頻帶分成若干個跳頻信道(hop channel),在一次連接中,無線電收發器按一定的碼序列不斷地從一個信道跳到另一個信道;
(3)一臺藍牙設備可同時與其它七臺藍牙設備建立連接;
(4)數據傳輸速率可達1Mbit/s;
(5)低功耗、通訊安全性好;
(6)在有效范圍內可越過障礙物進行連接,沒有特別的通訊視角和方向要求;
(7)支持語音傳輸;
(8)組網簡單方便
正是由于藍牙協議有以上特點,藍牙產品涉及PC、筆記本電腦、移動電話等信息設備和A/V設備、汽車電子、家用電器和工業設備領域。藍牙的支持者們預言說,一旦支持藍牙的芯片變得非常便宜,藍牙將置身于幾乎所有產品之中,從微波爐一直到衣服上的紐扣。
但是藍牙的傳輸距離比較短,而且藍牙是一種還沒有完全成熟的技術,盡管被描述得前景誘人,但還有待于實際使用的嚴格檢驗。藍牙的數據傳輸速率也不是很高,在當今這個數據爆炸的時代,可能也會對它的發展有所影響。目前主流的軟件和硬件平臺均不提供對藍牙的支持,這使得藍牙的應用成本升高,普及難度增大。從以上各點綜合考慮,藍牙協議不適合本系統。
2 超寬帶技術UWB(Ultra Wide band)[6]
超寬帶技術UWB(Ultra Wide band)是另一個新發展起來的無線通信技術。UWB通過基帶脈沖作用于天線的方式發送數據。窄脈沖(小于1ns)產生極大帶寬的信號。脈沖采用脈位調制(Pulse Position Modulation,PPM)或二進制移相鍵控(BPSK)調制。UWB被允許在3.1~10.6GHz的波段內工作。它主要應用在小范圍、高分辨率、能夠穿透墻壁、地面和身體的雷達和圖像系統中。除此之外,這種新技術適用于對速率要求非常高(大于100Mb/s)的LAN(Local Area Net,本地局域網)s或PANs。
軍事部門已對UWB進行了多年研究,開發出了分辨率極高的雷達。直到2002年2月14日,美國聯邦通信委員會才準許該技術進入民用領域。所以對于商業和消費領域,UWB還是新鮮事物。UWB有可能在10m范圍內,支持高達110Mb/s的數據傳輸率,不需要壓縮數據,可以快速、簡單、經濟地完成視頻數據處理。雖然說UWB技術的數據傳輸距離相比藍牙技術已經獲得很大提高,但是仍然不能滿足本系統的技術要求。
3 ZigBee [1][7]
Zigbee是一種短距離、低功耗的無線通信技術名稱。這一名稱來源與蜜蜂的八字舞。其特點是近距離、低復雜度、低功耗、低數據速率、低成本。主要適合用于自動控制和遠程控制領域,可以嵌入各種設備。
ZigBee協議的技術特點和應用前景將在下一章詳細敘述。
4 IrDA (infrared data association,紅外數據標準協會)技術[5][6]
紅外線是波長在750nm至1mm之間的電磁波,它的頻率高于微波而低于可見光,是一種人的眼睛看不到的光線。由于紅外線的波長較短,對障礙物的衍射能力差,所以更適合應用在需要短距離無線通訊的場合,進行點對點的直線數據傳輸,傳輸速率最快可達16Mbps。IRDA將紅外數據通訊所采用的光波波長的范圍限定在850nm至900nm之內。IRDA技術有以下特點:
(1)它是目前在世界范圍內被廣泛使用的一種無線連接技術,被眾多的硬件和軟件平臺所支持;
(2)通過數據電脈沖和紅外光脈沖之間的相互轉換實現無線的數據收發。
(3)主要是用來取代點對點的線纜連接;
(4)新的通訊標準兼容早期的通訊標準;
(5)小角度(30度錐角以內),短距離,點對點直線數據傳輸,保密性強
(6) 傳輸速率較高,目前4M速率的FIR技術已被廣泛使用,16M速率的VFIR技術已經發布。
雖然目前IRDA技術發展已經很成熟,而且有很多公司的產品都支持這種協議。但是由于紅外線的波長較短,對障礙物的衍射能力差,所以它只能用于視距傳輸,傳輸距離比較短,因此也不適合本系統的技術要求。
綜合比較以上各個短距離無線通信協議的技術特點和本系統的要求,只有ZigBee協議能基本滿足要求。而且目前支持ZigBee協議的廠商比較多,技術發展也很成熟,可以作成低成本的嵌入式產品。

1.3 論文的研究內容

無線電子點菜系統的實現是建立在硬件電路的基礎上的,為了降低誤碼率,提高頻率資源的利用律,數據必須按照一定協議傳輸。在發送端,數據按照一定的格式編碼,然后調制到一約定的頻率后發送;接受端將接收到的信號經過解調和解碼后,將數據還原。
本論文的研究內容主要有兩部分組成:
1.經過討論各種無線通信協議的特點和電子技術的發展現狀,在此基礎上,提出了基于ZigBee協議的硬件平臺。并詳細分析了平臺組成部分各自的原理以及功能。
2.分析了平臺的編程規則,開發出了相應的驅動程序。

1.4內容安排

本文對無線電子電菜系統的硬件設計進行了深入的研究,全文共分為五章,各章節的內容安排如下:
第一章介紹了本文的研究背景和各章節的內容安排情況。
第二章介紹ZigBee協議的詳細內容和一種基于ZigBee協議的芯片。
第三章在上一章的基礎上提出了自己的硬件平臺,詳細介紹了平臺的組成部分和各自的功能。
第四章和第三章相對應的,主要講了硬件平臺的驅動程序以及PC機端串行口調試工具的開發,并簡單介紹了相應的軟件開發工具。
第五章是總結與展望。對本文工作進行了總結,并探討可以進一步深入研
究的方向。
第二章 ZigBee[7]協議分析
ZigBee協議是一種近距離、低復雜度、低功耗、低數據速率、低成本的無線網絡技術。
在標準規范制訂方面,主要是IEEE 802.15.4小組與ZigBee Alliance兩個組織,兩者分別制訂硬體與軟體標準。在IEEE 802.15.4方面,2000年12月IEEE成立了802.15.4小組,負責制訂MAC(Media Access Control,媒體存取控制層)與物理層規范, 2003年5月通過802.15.4標準;在ZigBee 聯盟方面,ZigBee[7]聯盟是在2002年10月由Honeywell、Mitsubishi、Motorola、Philips與Invensys共同成立,ZigBee聯盟負責制訂網路層、安全管理、應用界面規范,其次也肩負互通測試,目前ZigBee聯盟已推出第1.0版規范(Version 1.0),成員已達150多個。
ZigBee協議依據802.15.4標準[8][9],在數千個微小的傳感器之間相互協調實現通信。這些傳感器只需要很少的能量,以接力的方式通過無線電波將數據從一個傳感器傳到另一個傳感器,所以它們的通信效率非常高。IEEE802.15.4規范是一種經濟、高效、低數據速率(<250 kbps)、工作在2.4 GHz和868/915 MHz的無線技術,它是ZigBee應用層和網絡層協議的基礎。
相對于現有的各種無線通信技術,ZigBee技術將是最低功耗和成本的技術,同時由于ZigBee技術的低數據速率和通信范圍較小的特點,也決定了ZigBee技術適合于承載數據流量較小的業務。所以ZigBee聯盟預測的主要應用領域包括工業控制、消費性電子設備、汽車自動化、農業自動化和醫用設備控制等。

2.1 ZigBee協議框架

ZigBee協議同其它網絡通信協議一樣采用分層模型,對各層所實現的功能和在整個協議中起的作用做了明確的劃分,每層為其上層提供一組特定的服務。ZigBee的協議架構大致如表2.1所列。

表2.1 ZigBee的協議架構
第四層 應用層
第三層 網絡層
第二層 媒體訪問層(MAC)
第一層 物理層

ZigBee協議雖然是基于標準的七層OSI(Open System Interconnect,開放式系統互聯)模型[10],但僅對那些涉及ZigBee的層予以定義。IEEE802.15.4-2003標準定義了最下面的兩層:物理層和MAC。ZigBee聯盟提供了網絡層和應用層框架的協議。
相比于常見的無線通信標準,ZigBee協議套件緊湊而簡單,具體實現的要求很低。以下是ZigBee協議套件的需求估計:硬件需要8位處理器,如廣泛使用的80C51系列單片機[12];軟件需要32KB的ROM(Read Only Memory,只讀存儲器),最小軟件需要4KB的ROM;網絡主節點需要更多的ROM以容納網絡內所有節點的設備信息,數據包轉發表,設備關聯表,與安全有關的密鑰存儲等。
1 物理層
IEEE802.15.4標準在物理層設計中面向低成本和更高層次的集成需求,才用的工作頻段分別為2.4 GHz和868/915 MHz。各個頻段可以使用的信道數目分別為16、10、1,各自提供250kbps,40kbps和20kbps的傳輸速率,其傳輸范圍介于10-100米之間。
為了避免干擾,在各個頻段均使用DSSS(Direct Sequence Spread Spectrum,直接序列擴頻技術)[13],以化整為零方式將一個信號分為多個信號,再經由編碼方式傳送信號以避免干擾,這對大部分較低端的實現來說,直接序列的應用可以使模擬電路更加簡單,具有更高的容錯性能。
2 媒體訪問層
IEEE802.15.4標準在媒體訪問層(MAC)方面,主要沿用無線局域網WLAN中IEEE802.11系列標準的CSMA/CA(Carrier Sense Multiple Access/Collision Avoidance,載波監聽多路訪問與沖突避免)方式以提高系統的兼容性。這種MAC層的設計不但是多種拓撲結構網絡的應用變得簡單,還可以實現非常有效的功耗控制。
3 網絡層
網絡功能是ZigBee協議的重要特點,也是與其他無線局域網標準不同的地方。在網絡層方面其主要工作在于負責網絡機制的建立與管理,并且具有自我組態與自我修復功能。在網絡層中ZigBee協議定義了三種角色:第一個是網絡協調器,負責網絡的建立以及網絡位置的分配;第二個是路由器,主要負責找尋建立以及修復信息包的路由路徑,并負責轉發信息包;第三個是末端裝置,只能選擇加入他人已經形成的網絡,可以收發信息包,但是不能轉發,不具備路由的功能。通常,路由器和網絡協調器由全功能裝置(FFD)實現,而末端裝置由簡化功能裝置(RFD)實現。在組網方式上,ZigBee主要采用圖2.1所示三種方式:其一為主從方式的星形網,它需要一個能負責管理和維護網絡的網絡協調器和不超過65535個從屬裝置;其二為簇形網絡,它可以是擴展的單個星形網或者互連多個星形網絡;其三為網狀網(Mesh),網絡中的每個FFD可以做為路由器,根據AD hoc網絡路由協議來優化最短和最可靠的路徑。

圖2.1 三種網絡拓撲結構

4 應用層
對于應用層,主要有三個部分:與網絡層相連的應用支持(APS),ZigBee設備對象(ZDO)以及裝置應用行規。ZigBee的應用層架構最重要的是已經覆蓋了服務的觀念。
對于ZigBee裝置而言,當加入到一個WPAN(Wireless Personal Area Net,個人無線局域網)后,應用層的ZMO會發起一系列的初始化動作,先通過APS進行裝置收尋以及服務收尋后,然后根據事先定義好的描述信息,將與其相關的裝置或是服務記錄在APS里的綁定表中;之后所有服務的使用,都要通過這個綁定表來查詢資料的服務或者行規。而裝置應用行規則是根據不同的產品設計出的不同的描述信息,以及ZigBee各層協議的參數設定。
5 安全層
安全層并非單獨獨立的協議,ZigBee為其提供了一套基于128位AES算法的安全類和軟件,并且集成了IEEE802.15.4標準的安全元素,用來保證MAC層禎的機密性,一致性和真實性。
另外ZigBee聯盟也負責ZigBee產品互通性測試與認證規則的制定,讓開發ZigBee產品的廠商有一個公開的場合,能夠互相測試互通性。而在認證部分,ZigBee聯盟一共定義了三種層次的認證,第一級認證物理層和MAC,與芯片廠有著最直接的關系;第二級認證ZigBee協議棧;第三級認證ZigBee產品。只有通過第三級認證的產品才能貼上ZigBee的標志,所以也稱作ZigBee注冊認證。

2.2 ZigBee協議優缺點和應用前景

ZigBee協議是從WLAN發展過來的,經過近幾年來ZigBee聯盟成員[7]對標準的不斷修改和完善,已經顯示出了強大的生命力,但是本身還有一些缺點,這也限制了ZigBee協議的使用范圍。
2.2.1 ZigBee協議的優點
功耗低:由于ZigBee網絡節點設備工作周期較短、收發信息功耗較低,并且采用了休眠模式(當不傳送數據時處于休眠狀態,當需要接收數據時由ZigBee網絡中的協調器設備負責喚醒它們),可以確保兩節五號電池支持長達六個月到兩年左右的使用時間。避免了頻繁更換電池或者充電,從而減輕了網絡維護的負擔 。
數據傳輸可靠性高:采用了碰撞避免機制,同時為需要固定帶寬的通信業務預留了專用時隙,避免了發送數據時的競爭和沖突。而且MAC層采用了完全確認的數據傳輸機制,發送的每個數據包都必須等待接收方的確認信息,從而從根本上確保了數據傳輸的可靠性,最大限度地降低信息損失的概率。
網絡容量大:一個Zigbee網絡可以容納最多65536個從設備和一個主設備[14],一個區域內可以同時存在最多100個Zigbee網絡。
時延小:針對時延敏感的應用做了優化,通信時延和休眠狀態激活的時延都非常短。設備搜索時延典型值為30ms,休眠激活時延典型值為15ms,活動設備信道接入時延為15ms。

表2.2 Zigbee與藍牙協議時延比較
設備收索時延典型值(ms) 休眠激活時延典型值(ms) 活動設備信道接入時延(ms)
ZigBee技術 30 15 15
藍牙技術 >=3000 3000 2

兼容性:與現有的控制網絡標準無縫集成。通過網絡協調器(Coordinator)自動建立網絡,采用CSMA-CA方式進行信道存取。為了可靠傳遞,提供全握手協議。
安全性:Zigbee提供了數據完整性檢查和鑒權功能,加密算法采用AES-128,同時各個應用可以靈活確定其安全屬性,是網絡安全得到有效的保障。
實現成本低:模塊的初始成本估計在6美元左右,很快就能降到1.5~2.5美元,且Zigbee協議是免專利費的。
協議套件緊湊而簡單:其具體實現的要求很低。Zigbee協議套件的需求估計:8位微處理器,如80C51[10];全協議套件軟件需要32K字節的ROM;最小協議套件軟件大約4K字節的ROM。
2.2.2 ZigBee協議存在的問題及解決方案
802.15.4標準是ZigBee協議的基礎,用它實現無線數據采集,主要有以下兩個問題:
1、網絡內傳感器節點時鐘需要同步,監控系統的多傳感器信息融合時,上位機需要知道每個原始數據是何時采集的,采樣的觸發要求每個節點有統一的時鐘;
2、其通信速率較低,而且又受到接口通信速率的限制,加之受糾錯碼的編碼效率影響,真正的數據發送量是很低的。
解決此問題可以通過如下的途徑: 傳感器節點采用DSP處理器,盡可能在傳感器節點一級多做些數據處理工作,盡量減少原始數據的發送量,只發送有用信息。例如,對于平穩狀態的原始數據可以不發送到上位機中,只發送可疑狀態前后的原始數據,這樣就大大減少了數據的通信量。
2.2.3 ZigBee協議應用前景
ZigBee協議特別適合數據吞吐量小,網絡建設投資少,網絡安全要求較高,不便頻繁更換電池或者充電的場合,預計將在消費類電子設備,家庭智能化,工業控制,醫療設備控制,農業自動化和無線點菜系統等領域獲得廣泛的應用。
消費類電子產品和家庭智能化將是ZigBee技術最有潛力的市場,家庭可以聯網的設備包括電視,錄象機,PC外設,兒童玩具,游戲機,門禁系統,窗戶和窗簾,照明設備,空調設備和其他家用電器等。家用設備引進ZigBee協議后將極大改善人們的居住環境和舒適度。
在工業控制領域,利用傳感器和ZigBee網絡,可是數據的自動采集,分析和處理變得更加容易;可以作為決策輔助系統的重要組成部分,例如危險化學成分的檢測,火警的早期檢測和預報,高速旋轉機器的檢測和維護。這些應用不需要很高的數據吞吐量和連續的狀態更新,重點在于低功耗,可最大限度地延長電池的壽命,減少ZigBee網絡的維護成本。
在醫學領域,利用傳感器和ZigBee網絡可以準確,實時地監測每個病人的血壓,心率等情況,有助于醫生快速做出反應,減少醫生查房的工作負擔,特別適合對重,危病患者的監護和治療。
在現代農業中,利用傳感器可以將土壤溫度,氮濃度,PH值,降水量,氣溫,氣壓和采集信息的地理位置經由ZigBee網絡傳送到中央的控制部分,使農民能及早而且準確地發現問題,從而有助于保持并提高農作物的產量,減少發生災害的概率。
本系統是將ZigBee協議用于餐館的無線點菜系統,這樣能夠提高餐館檔次、提高效率、自動結賬、避免人為錯誤、避免跑單、實時監控餐館狀況、提供各種各樣統計信息、精簡人手、管理庫存、提高服務品質等,為餐飲行業帶來嶄新的管理理念與服務手段,優化業務流程,為客戶提供更好的服務,實現企業價值最大化同時又使成本最低化,是餐飲行業向信息化發展的一個重要標志。

2. 3基于ZigBee協議的芯片[1][4][5]

2002年8月ZigBee聯盟成立時Honeywell,Invensys,三菱電器,摩托羅拉和飛利浦等國際上知名的大公司就是ZigBee協議的支持者。目前,ZigBee已經吸引了上百家芯片研發公司和無線設備制造公司,并且不斷有新的公司加盟這一聯盟。現在國際上有很多公司生產基于ZigBee協議的芯片,芯片的集成度也越來越高。例如挪威的Nordic公司的nRF系列芯片,還有Chipcon公司的無線數據傳輸芯片等。各個公司的芯片原理基本相同,編程規則大致相同,因此選用Nordic公司的nRF2401,下面詳細敘述一下nRF2401芯片的特點。
nRF2401無線收發一體芯片和藍牙一樣,都工作在2.4GHZ自由頻段,能夠在全球無線市場暢通無阻。nRF2401支持多點間通信,最高傳輸速率超過1Mbit/s,而且比藍牙具有更高的傳輸速度。它采用SOC方法設計,只需少量外圍元件便可組成射頻收發電路。與藍牙不同的是,nRF2401沒有復雜的通信協議,它完全對用戶透明,同種產品之間可以自由通信。更重要的是,nRF2401比藍牙產品更便宜。所以nRF2401是業界體積最小、功耗最少、外圍元件最少的低成本射頻系統級芯片。
nRF2401的引腳排列如圖2.2(頂視圖)所示。它采用5mm×5mm的24引腳QFN封裝。nRF2401的主要特點如下:
圖2.2 nRF2401的引腳排列

(1)采用全球開放的2.4GHZ頻段,有125個頻道,可滿足多頻及跳頻需要;
(2)速率(1Mbps)高于藍牙,且具有高數據吞吐量;
(3)外圍元件極少,只需一個晶振和一個電阻即可設計射頻電路;
(4)發射功率和工作頻率等所有工作參數可全部通過軟件設置;
(5)電源電壓范圍為1.9-3.6V,功耗很低;
(6)電流消耗很小,-5dBm輸出功率時的典型峰值電流為10.5mA;
(7)芯片內部設置有專門的穩壓電路,因此,使用任何電源(包括DC/DC開關電源)均有很好的通信效果;
(8)每個芯片均可以通過軟件設置最多40bit地址,而且只有收到本機地址時才會輸出數據(提供一個中斷指示),同時編程也很方便;
(9)內置CRC(Cyclic Redundancy Check,循環冗余校驗)[16]糾檢錯硬件電路和協議;
(10)采用DuoCever技術可同時接收兩個nRF2401的數據;
(11)采用ShockBurst TM模式時,能適用極低的功率操作和不嚴格的MCU執行;
(12)無需外部SAW濾波器;
(13)可100%RF檢驗;
(14)帶有數據時隙和數據時鐘恢復功能。
nRF2401的內部結構原理及外部組成框圖如圖2.3所示,下面介紹其工作原理。

圖2.3 nRF2401的內部結構原理及外部組成框圖

1 ShockBurst TM[16]模式
nRF2401的ShockBurst TM模式采用片上FIFO(First-In First-Out,先進先)出來進行低數據率的時鐘同步和高數據率的傳輸,因此極大的降低了功耗。
ShockBurst TM發射主要通過MCU接口引腳CE、CLK1和DATA來完成。當MCU請求發送數據時,置CE為高電平,此時的接收機地址和有效載荷數據作為nRF2401的內部時鐘,可用請求協議或MCU將速率調至1Mbps;置CE為低電平可激活ShockBurst TM發射。
ShockBurst TM接收主要使用MCU接口引腳CE、DR1、CLK1、DATA來實現。當正確設置射頻包輸入載荷的地址和大小后,置CE為高電平可激活RX。此后便可在nRF2401監測信息輸入200μs,若收到有效數據包,則給MCU一個中斷并置DR1為高電平,以使MCU 以時鐘形式輸出有效載荷數據,待系統收到全部數據后, nRF2401再置DR1為低?此時如果CE保持高電平,則等待新的數據包。若CE置低電平,則開始接收新的序列
nRF2401的 DuoCeiver TM[17]技術為RX提供了兩個獨立的專用數字信道,因而可代替兩個單獨接收系統。圖4所示是DuoCeiver TM同時雙接收信道結構圖。 nRF2401可以通過一個天線接口從相隔8MHZ的兩1Mbps接收機上接收數據。同時將兩個數字信道的輸出反饋到兩個單獨的MCU接口。具體的兩個信道如下:
圖2.4 DuoCeiver TM同時雙接收信道結構圖

數字信道1:CLK1,DATA,DR1;
數字信道2:CLK2,DOUT2,DR2;
應當說明的是,數字信道2的頻率只有在比數字信道1的頻率高出8MHZ時,才能保證正常接收。

第三章 基于ZigBee協議的硬件系統的設計及實現
目前,51系列單片機非常流行,而且資料眾多,因此選用51系列單片機作為開發板的MCU,通過附加一定的外圍電路后,來和無線數據傳輸模塊進行通信,實現數據的無線傳輸。

3.1 STC89C58RD+[10]單片機概述

STC89C58RD+系列單片機是宏晶科技推出的新一代超強抗干擾,高速,低功耗的單片機,指令代碼完全兼容傳統8051單片機,12時鐘/機器周期和6時鐘/機器周期可任意選擇。
它具有以下特點:
1. 增強型6時鐘/機器周期,12時鐘/機器周期 8051 CPU(Central Process Unit,中央處理器)。
2. 工作電壓:5.5V - 3.4V(5V單片機)
3. 工作頻率范圍:0 - 40 MHz,相當于普通8051的 0~80MHz.實際工作頻率可達48MHz.
4. 用戶應用程序空間32K字節
5. 片上集成 1280 字節RAM(Random Access Memory,隨機存儲器)。
6. 通用I/O口32個,復位后為: P1/P2/P3是準雙向口/弱上拉(普通8051傳統I/O口),P0口是開漏輸出,作為總線擴展用時,不用加上拉電阻,作為I/O口用時,需加上拉電阻。
7. ISP(在系統可編程)/IAP(在應用可編程),無需專用編程器/ 仿真器 可通過串口(P3.0/P3.1)直接下載用戶程序,8K程序3秒即可完成一片
8. EEPROM 功能
9. 看門狗
10.共3個16位定時器/計數器,其中定時器0還可以當成2個8位定時器使用
11.外部中斷4路,下降沿中斷或低電平觸發中斷,Power Down模式可由外部中斷低電平觸發中斷方式喚醒
12. 通用UART(Universal Asynchronous Receiver/Transmitter ,通用串行接口),還可用定時器軟件實現多個UART
14.工作溫度范圍: 0 - 75℃ / -40 - +85℃
15.封裝: PDIP-40,PLCC-44,PQFP-44
使用這種單片機做開發板,最大的優勢就在于它支持ISP,這樣不用購買昂貴的編程器/ 仿真器,直接通過串口線就能實現在線編程。而且內部集成了看門狗和Flash,簡化了PCB板的制作。指令代碼與51單片機兼容,這樣可以用常用的51單片機軟件開發工具開發驅動程序。

3.2 開發板的各個組成部分原理圖以及功能

整個開發板是由單片機最小系統和它的一些外圍電路組成,單片機最小系統做為整個開發板的控制中心,控制各個外圍電路協調工作,完成系統設計的功能。整個系統原理圖見附錄2,下面詳細敘述各個組成部分的原理及各自實現的功能。原理圖由Protel 99SE[18][19]繪制。
3.2.1 單片機最小系統組成電路
單片機最小系統是整個開發板的控制中心,它由電源,復位電路和晶振組成。電源采用5V供電,晶振為12MHZ。為了便于調試,將P0.4-P0.7和發光管相連,發光管為共陽極連接,這是因為開發板初上電或者或者復位后,所有的I/O口均為高電平。由于不使用外部存儲器,因此將EA接高電平。為了方便調試和降低成本,因此選用USB(Universial Serial Bus,通用串口總線)方式供電。USB的即插即用特性,使對開發板供電非常方便。圖3.1所示為單片機最小系統。
圖3.1 單片機最小系統
3.2.2 串行口電平轉換部分
大多數PC機都有一個串行通訊端口RS-232用于兩臺計算機間進行串行通訊。RS - 232通訊接口是一種標準化的串行接口,是為DTE(Data Terminal Equipment,遠程通訊連接終端設備)與DCE (Data Communication Equipment,數據通訊設備)定義的物理接口。RS-232采用非平衡連接(又稱為單端線路),在這個線路中,信號電壓加到一條導線上,所有的信號電壓都使用一個公共的接地線。為了提高抗干擾能力和增加傳送距離,RS一232的每個腳線的信號和電平規定采用負邏輯電平,DC(-15一5V)規定為邏輯”1″,DC(+ 5-+15V)規定邏輯”0″, DC(-5一+5V規定為過渡區)。由于單片機的輸入、輸出電平為TTL電平,與 PC機RS-232標準串行接口的電氣規范不一致,因此要實現單片機與PC機之間的數據通讀,必須進行電平轉換。選用的電平轉換芯片為MAX232,它的工作電壓為+5V,和單片機的工作電源相同。
由于STC89C58RD+單片機支持ISP下載,因此通過這個串行口既可以用來和PC機通信,又能將程序下載到單片機,不用購買昂貴的編程器。圖3.2所示為串口電平轉換部分。
圖3.2 串口電平轉換部分
3.2.3 LED部分
由于單片機復位后,各個引腳輸出都為高電平,因此選用共陰極的LED數碼管。每個數碼管的使能端com1,com2,com3,com4分別接到P1.0,P1.1,P1.2,P1.3,當向使能端輸出低電平,即可選通相對應的數碼管。74LS244為三態輸出的八組緩沖器和總線驅動器,選用的四位八段數碼管本身已經集成了譯碼器,這樣既簡化了線路的連接,又降低了錯誤發生的概率。圖3.3為LED部分。
圖3.3 LED部分

3.2.4 開發板和無線數據傳輸模塊接口部分
這一部分有兩部分組成:由于nRF2401的工作電壓為1.9V-3.6V,工作電壓超過3.6V就會燒壞芯片。而開發板的電源為5V,因此為了使系統工作,必需要有5V電平轉換為3.3V電平的部分。為了實現這一過程,選用LM1117-MAX3.3作為核心芯片。LM1117是一個低壓差電壓調節器系列,其壓差在1.2V輸出,負載電流為800mA時為1.2V。LM1117提供電流限制和熱保護,電路包含1個齊納調節的帶隙參考電壓以確保輸出電壓的精度在±1%以內。LM1117系列具有LLP、TO-263、SOT-223、TO-220和TO-252 D-PAK封裝;此外為了使兩個模塊直接相連,將P2口的部分引腳用排針引到一起,排針間距為 100mil,標準 DIP 插針。圖3.4為開發板和無線數據傳輸模塊接口部分,圖3.5為5V電平轉3.3V電平部分。
圖3.4 開發板和無線數據傳輸模塊接口部分
圖3.5 5V電平轉3.3V電平部分

3.2.5 鍵盤部分
圖3.6 鍵盤部分

鍵盤部分用來實現人機通信。有四個按鍵開關構成,分別為S5(P3.3/INT1), S6(P3.4/T0), S7(P3.5/T0), S5(P3.2/INT0),正常情況下均為高電平。當鍵按下后,輸出為低電平。由于四個鍵盤的組成一樣,這里只畫出了S5的電路圖。圖3.6為鍵盤部分。

3.3 無線數據傳輸模塊

通過仔細的比較和反復的論證后,決定選用nRF2401芯片作為無線模塊的核心芯片,它的特點在上一章已經詳細論述,這里不在重復。nRF2401芯片的典型應用電路如圖3.7所示。

圖3.7 nRF2401芯片的典型應用電路
從圖11可以看出,只需要很少外圍電路就可以組成無線數據傳輸模塊。
它與開發板的接口電路為圖3.8
各個接口的要求如下:
(1) VCC腳接電壓范圍為 1.9V~3.6V之間,不能在這個區間之外,超過3.6V將會燒毀模塊。推薦電壓3.3V左右。
(2) 除電源 VCC 和接地端,其余腳都可以直接和普通的 5V 單片機IO 口直接相連,無需電平轉換。當然對 3V 左右的單片機更加適用了。
(3) 硬件上面沒有SPI的單片機也可以控制本模塊,用普通單片機IO口模擬SPI不需要單片機真正的串口介入,只需要普通的單片機IO口就可以了,當然用串口也可以了。
(4)6腳,12腳為接地腳,需要和開發板的邏輯地連接起來。
圖3.8 無線數據傳輸模塊與開發板的接口電路

3.4 無線數據傳輸模塊和開發板的PCB圖設計

PCB板是一塊絕緣材料,在表面合理安放各種電子元件,并安排連接電子元件引腳間的銅膜導線,在不同的表面間有連接不同表面的銅導孔。
隨著電子技術的不斷發展進步,PCB在復雜程度和應用范圍方面都有了長足的進步,按復雜程度來分,可以將PCB板分為3類:1.單面印刷電路板;2.雙面印刷電路板;3.多層印刷電路板。為了方便布線,本系統所用的開發板和無線數據傳輸模塊均為雙層印刷電路板。
PCB的生成主要由四個過程組成:其一是原理圖的生成;其二是根據已經生成的原理圖產生對應的網絡表,網絡表是PCB圖和原理圖的紐帶;第三步是新建一個PCB文件,并導入網絡表;第四步是將合理布局元件,并用導線將元件的引腳連起來。
3.4.1 開發板的PCB圖
將開發板的原理圖按照以上的步驟生成相應的PCB圖。如圖3.9所示:
在PCB圖設計的所有過程中,原理圖在上一節已經生成。網絡表的生成也比較簡單。由于PCB圖上使用元件的封裝來代表元件,因此原理圖中各個元件都要明確有自己的封裝方式,而且在繪制PCB圖前必須將用到的封裝所在的封裝庫調入。否則,在調入網絡表的過程中將會出現元件丟失的錯誤。

圖3.9 開發板的PCB圖

開發板上主要用到兩個封裝庫:Advpcb.ddb和Miscellaneous.ddb.另外由于USB電源接口,電源開關,鍵盤和四位八段數碼管沒有對應的封裝,因此需要使用元件庫編輯器建立新元件封裝。圖3.10為鍵盤封裝,圖3.11為USB封裝,圖3.12為開關封裝,圖3.13為四位八段數碼管封裝。

圖3.10 鍵盤封裝 圖3.11 USB封裝

圖3.12 開關封裝 圖3.13 四位八段數碼管封裝

各個元件的封裝的引腳的序號必須和原理圖中引腳的序號保持一致,不然將會在調如網絡表過程中出現管腳丟失的錯誤。
下面再重點分析一下布線的過程。
布線是完成產品設計的重要步驟,可以說前面的準備工作都是為它而做的,在整個PCB中,以布線的設計過程限定最高,技巧最細、工作量最大。本系統的PCB布線為雙面布線,布線的方式有兩種:自動布線及交互式布線。但由于自動布線效果不好,往往實際的效果和預計效果有很大的出入,因此全部使用交互式布線。布線過程中充分考慮到如何降低元件字之間互相的干擾。
首先根據印制線路板電流的大小,盡量加租電源線寬度,減少環路電阻,它們的關系是:地線>電源線>信號線。同時使電源線、地線的走向和數據傳遞的方向一致,這樣有助于增強抗噪聲能力。線條有講究:有條件做寬的線決不做細;高壓及高頻線應園滑,不得有尖銳的倒角,拐彎也不得采用直角。
由于采用雙層設計,因此不可避免地將會使用到過孔。過孔太多,沉銅工藝稍有不慎就會埋下隱患。所以,設計中應盡量減少過線孔。此外,應該合理布置電源濾波/退耦電容:一般在原理圖中僅畫出若干電源濾波/退耦電容,但未指出它們各自應接于何處。其實這些電容是為開關器件(門電路)或其它需要濾波/退耦的部件而設置的,布置這些電容就應盡量靠近這些元部件,離得太遠就沒有作用了。
3.4.2 無線數據傳輸模塊的PCB圖
由于無線數據傳輸模塊的核心芯片工作在2.4GHZ,因此在設計PCB圖時對干擾的控制要格外重視。在PCB設計時,必須考慮到各種電磁干擾,注意調整電阻、電容和電感的位置,特別要注意電容的位置。
nRF2401的PCB為雙層板,底層一般不放置元件,頂層的空余地方敷上銅,這些敷銅通過過孔與底層的地相連。nRF2401的供電電源應通過電容隔開,這樣有利于給nRF2401提供穩定的電源。在PCB中,盡量多打一些通孔,使頂層和底層的地能夠充分接觸。nRF2401模塊的PCB如圖3.14所示。
圖3.14 無線數據傳輸模塊的PCB圖

第四章 硬件驅動程序和串行口調試工具
驅動程序是硬件電路的靈魂,沒有驅動的硬件電路是沒有用的。STC89C58RD+是51類單片機,可以像開發其他51單片機驅動一樣開發它的驅動程序。單片機軟件開發平臺選擇比較流行的Keil uVision2,因為現在關于Keil uVision2軟件的資料很多,這樣上手就會很快。
串行口調試工具是用來將PC機上的數據通過串行口發送到單片機,和PC機接收從單片機發送過來的數據。選用Visual C++ 6.0來開發串行口調試工具,Visual C++ 6.0是微軟公司推出的一款優秀開發工具,代碼緊湊,運行速度快,而且比較適合低層開發。

4.1 硬件驅動程序

整個數據傳輸系統有兩部分組成:與PC機相連的開發板為主機端,它不能移動,接收從機端發送過來的數據,并向從機端發送指令;可以移動的為從機端,它由開發板和無線數據傳輸模塊組成。由于兩端的地位和功能不同,因此對應的驅動程序也不同。
使用Keil uVision2開發硬件驅動程序,它支持眾多不同公司的MCS51架構的芯片,它集編輯,編譯,仿真等于一體,同時還支持,PLM,匯編和C語言的程序設計,它的界面和常用的微軟VC++的界面相似,界面友好,易學易用,在調試程序,軟件仿真方面也有很強大的功能。因此很多開發51應用的工程師或普通的單片機愛好者,都對它十分喜歡。51 的編程語言常用的有二種,一種是匯編語言,一種是 C 語言。匯編語言的機器代碼生成效率很高但可讀性卻并不強,復雜一點的程序就更是難讀懂,而 C 語言在大多數情況下其機器代碼生成效率和匯編語言相當,但可讀性和可移植性卻遠遠超過匯編語言,而且 C 語言還可以嵌入匯編來解決高時效性的代碼編寫問題。對于開發周期來說,中大型的軟件編寫用 C 語言的開發周期通常要小于匯編語言很多。綜合以上C語言的優點,在開發時選擇了C51語言.
4.1.1 主機端硬件驅動程序
主機端的硬件驅動程序主要有兩種功能:實現開發板通過串行口和PC機通信;實現開發板通過某些I/O口和無線數據傳輸模塊進行通信。
STC89C58RD+單片機的串行口是一個全雙工通信接口,即能同時進行發送和接收,它可以作UART用,也可以作為同步移位寄存器用,其禎格式和波特率可以通過軟件編程來設置,在使用上非常方便。
STC89C58RD+單片機串行口的工作方式和波特率由控制寄存器SCON和特殊功能寄存器PCON組成。
串行口控制寄存器SCON:

D7 D6 D5 D4 D3 D2 D1 D0
SM0 SM1 SM2 REN TB8 RB8 TI RI

特殊功能寄存器PCON:

D7 D6 D5 D4 D3 D2 D1 D0
SMOD

串行口可以通過軟件設置四種工作方式,各種工作方式的數據格式和波特率均有所不同,這四種工作方式如下:
1. 方式0
當設定SM1、SM0為00時,串行口工作于方式0,在方式0下,RXD為數據輸入/輸出端,TXD為同步脈沖輸出端,發送或接收的數據為8位,低位在前,高位在后,方式0的波特率固定震蕩頻率的1 /12,也就是每一機器周期傳送一位數據。方式0可以外接移位寄存器,將串行口擴展為并行口,也可以外接同步輸入/輸出設備。發送完畢后,硬件自動將TI置1。再次發送數據前,需要軟件將TI位清0。
REN為1時,單片機允許接收數據。RXD為數據接收端,接受數據保存到SBUF接收緩沖器中。發送完畢后,硬件自動將RI置1。再次接收數據前,需要通過軟件將RI清0。
2. 方式 1
當設定SM1、SM0為01時,串行口工作方式1。方式1為波特率可變的8位異步通信方式,由TXD發送RXD接收,一幀數據為10位,1位起始位(低電平),8位數據位(低位在前)和1位停止位(高電平),波特率取決于定時器 的T 溢出率(1/溢出周期)和波特率的選擇位SMOD。
3.方式2和方式3
當設定SM0、SM1為10或11時,串行口工作于方式2或方式3,這兩種方式都是9位異步通信,僅波特率不同,適用于多機通信。在方式2或方式3下,數據由TXD發送RXD接收,1幀數據為11位,1位起始位(低電平),8位數據位(低位在前),1位可編程位(第9位數據,用作奇偶校驗或地址/數據選擇),1位停止位(高電平)。與方式1相比,多了一位可編程位,發送時,第9位數據為TB8,接收時,第9位數據送入RB8。
通過以上單片機串行口各種工作方式的比較,由于使用一個開發板和PC機進行單獨的通信,因此工作方式1比較適合系統的要求。通過設置合適的波特率和幀格式,來實現開發板和PC機之間準確的數據傳遞。
由于PC機和單片機的處理速度的不同,PC機給開發板發送數據時,單片機采用中斷的方式進行數據接收。通過軟件設置單片機的傳輸屬性參數為”9600,N,8,1″,來實現和PC機端串行口傳輸速率同步。開發板向PC機發送數據時,采用查詢方式,這樣可以節省單片機有限的資源。
開發板還要通過專門的接口和無線數據傳輸模塊進行數據交換,由于系統設計為點對點通信,因此只使用了nRF2401一個信道。nRF2401的數據傳輸方式為同步傳輸,因此使用普通的I/O口通過軟件方式模擬SPI方式傳輸。
nRF2401有四種工作模式:收發模式,配置模式,空閑模式和關機模式[16][17]。工作模式由PWR_UP 、CE、TX_EN和CS三個引腳決定,詳見表4.1。

表4.1 nRF2401的各種工作模式的設置方式
工作模式 PWR_UP CE CS
收發模式 1 1 0
配置模式 1 0 1
空閑模式 1 0 0
關機模式 0 * *

前文已經講過有關nRF2401的收發方式,這里重點討論一下它的配置方式。nRF2401的所有配置工作都是通過CS、CLK1和DATA三個引腳完成,把其配置為ShockBurstTM收發模式需要15字節的配置字。
ShockBurst TM的配置字可以分為以下四個部分:
(1) 數據寬度:聲明射頻數據包中數據占用的位數。這使得nRF2401能夠區分接收數據包中的數據和CRC校驗碼;
(2) 地址寬度:聲明射頻數據包中地址占用的位數。這使得nRF2401能夠區分地址和數據;
(3) 地址:接收數據的地址,有通道1的地址和通道2的地址;
(4) CRC:使nRF2401能夠生成CRC校驗碼和解碼。
nRF2401的配置字如表4.2所示:
在配置模式下要保持PWR_UP引腳為高電平,CE引腳為低電平,配置字從最高位開始,依次寫入nRF2401。在CS引腳的下降沿,新送入的配置字開始工作。
表4.2 nRF2401的配置字
位 位數 名字 功能
Shockb
Brst T
M 配置 143:120 24 TEST 保留
119:112 8 DATA2_W 接收頻道2有效數據長度
111:104 8 DATA1_W 接收頻道1有效數據長度
103:64 40 ADDR2 接收頻道2的地址,最高為5字節
63:24 40 ADDR1 接收頻道1的地址,最高為5字節
23:18 6 ADDR_W 接受頻道地址位數
17 1 CRC_L 8位或16位CRC校驗
16 1 CRC_EN 使能CRC校驗
常用器件配置 15 1 RX2_EN 使能第二頻道
14 1 CM 通信方式設置
13 1 RFDR_SB 發射數據速率
12:10 3 XO_F 晶震頻率
9:8 2 RF_PWR 發射輸出電源
7:1 7 RF_CH# 頻道設置
0 1 RX_EN 接收或發送操作
開發板通過串行口和PC機交換數據的流程圖如下:
圖4.1 開發板和PC機通過串行口交換數據的流程圖
開發板通過IO口和無線數據傳輸模塊進行數據交換的流程圖為圖4.2。

圖4.2開發板通過IO口和無線數據傳輸模塊進行數據交換的流程圖

4.1.2 移動端驅動程序
移動端的開發板的結構和PC機端的開發板的結構完全相同,但由于它不需要和PC機通信,只需要和無線數據傳輸模塊進行通信。因此相對另一端的驅動簡單一些。具體編程規則在上一節已經詳細敘述,這里不再多說,具體的程序是PC機端程序的一部分。

4.2 串行口調試工具

串行口調試工具是用微軟公司的visual c++6.0[20][21]開發的。幾乎所有世界級的軟件,從業界領先的Web瀏覽器到面向任務的企業應用,都是使用Microsoft Visual C++開發系統來開發的。要用C++來開發Windows和Web上的高性能應用程序,Visual C++是效率最高的首選工具。Visual C++ 6.0在不犧牲靈活性、性能和控制力度的同時,給C++帶來了更高水平的生產效率。它具有可視化的界面,封裝了大量的類,使界面制作變的很簡單,使用它可以方便快捷地開發Windows環境下的應用程序。visual c++6.0專門為串行口通信提供了Mscomm[20][21]控件,使用該控件程序員不必花時間去了解比較復雜的API函數,通過簡單修改控件的屬性和使用控件提供的方法就可以實現對串口的配置,完成串口發送和接收數據。
4.2.1串行通信的基本原理
串行端口的本質功能是作為CPU和串行設備間的編碼轉換器。當數據從CPU經過串行端口發送出去時,字節數據轉換為串行的位。在接收數據時,串行的位被轉換為字節數據。 在Windows環境下,串口是系統資源的一部分。 應用程序要使用串口進行通信,必須在使用之前向操作系統提出資源申請要求(打開串口),通信完成后必須釋放資源(關閉串口)。32位下串口通信程序可以用兩種方法實現:利用ActiveX控件;使用API通信函數。在本次課程設計中,所用到的是MFC的MSComm控件,下面先將這個關鍵的控件做一下簡單的介紹。
Microsoft Communications Control(以下簡稱MSComm)是Microsoft公司提供的簡化Windows下串行通信編程的ActiveX控件,為應用程序提供串行通信功能,它為應用程序提供了通過串行接口收發數據的簡便方法。MSComm控件在串口編程時非常方便,其實際上是調用了API函數,但我們不必再了解復雜的API函數就可控制串行通信。通信的過程,實際上是對屬性的操作和對控件事件的響應。
在Windows操作系統中,串行通信采用”事件通知”方式,支持數據按塊傳送。進行通信時,Windows開辟一個用戶定義的輸入輸出緩沖區,每接收一個字符就產生一個低級硬件中斷,串行驅動程序立即取得控制權,并將字符放入輸入數據緩沖區,然后將控制權返還正在運行的應用程序。如果輸入數據緩沖區滿了,驅動程序用當前定義的流控制機制通知發送方停止發送數據。發送數據也采用類似的處理方式,應用程序將需要發送的數據放入輸出數據緩沖區,串口每發送一個字符就產生一個低級硬件中斷。
Visual C++ 6.0通信控件Mscomm提供了功能完善的串口數據的發送和接收功能,Mscomm 控件具有兩種處理方式:一是事件驅動(Event-driven)方法,一是查詢法。
1)事件驅動方式。當通信事件發生時,MSCOMM控件會觸發OnComm事件,調用者可以捕獲該事件,通過檢查其CommEvent屬性便可確認發生的是哪種事件或錯誤,從而進行相應的處理。這種方法的優點是響應及時、可靠性高。
2)查詢方式。在程序的每個關鍵功能之后,可以通過檢查CommEvent屬性的值來查詢事件和錯誤。如果應用程序較小,這種方法可能更可取。例如,如果寫一個簡單的電話撥號程序,則沒有必要每接收1個字符都產生事件,因為惟一等待接收的字符是調制解調器的”確定”響應。
在使用MSCOMM控件時,1個MSCOMM控件只能同時對應1個串口。如果應用程序需要訪問和控件多個串口,那么必須使用多個MSCOMM控件。
在VC++中,MSCOMM控件只對應著1個C++類–CMSComm。由于MSCOMM控件本身沒有提供方法,所以CMSComm類除了Create()成員函數外,其他的函數都是Get/Set函數對,用來獲取或設置控件的屬性。MSCOMM控件也只有1個OnComm事件,用來向調用者通知有通信事件發生。
MSCOMM控件有許多很重要的屬性,限于篇幅只給出幾個較為重要和常用的屬性。

表4.3 MSCOMM控件的重要屬性
屬 性 說 明
CommPort 通信端口號
Settings 以字符串形式表示的波特率、奇偶校驗、數據位
PortOpen 通信端口的狀態,打開或是關閉
Input 接收數據
Output 發送數據
InputMode 接收數據的類型:0為文本;1為二進制

表4.4 程序中用到的所有控件,以及它們的ID
控件 ID 標題
按鈕 ID_SEND 發送
按鈕 ID_CLEAR 清空
編輯框 IDC_EDIT_SEND
編輯框 IDC_EDIT_RCV
靜態文本 IDC_STATIC 接收緩沖區
靜態文本 IDC_STATIC 發送緩沖區
組框 IDC_STATIC 端口選擇
單選按鈕 IDC_1 端口1
單選按鈕 IDC_2 端口2
mscomm IDC_MSCOMM

表4.5 用到的變量和變量的類型
Control IDS Type Member
IDC_EDIT_SEND CString m_str_send
IDC_EDIT_RCV CString m_str_recv
IDC_MSCOMM CMSComm m_mscomm

Object IDS Messages Function
ID_SEND BN_CLICKED OnSend
ID_CLEAR BN_CLICKED OnClr
IDC_1 BN_CLICKED On_Com1
IDC_2 BN_CLICKED On_Com2
IDC_MSComm OnComm OnComm

4.2.2程序設計原理
第一步:初始化串行口。調用SetCommPort()函數,選擇使用的端口好,然后設置波特率發送接收的處理方式,以及數據的傳輸方式,最后將串口打開。
第二步:發送數據。將要發送的字符串變成特定的類型后,調用函數SetOutput(),將數據發送到發送緩沖區
第三步:接受數據。將接收緩沖區中的數據通過GetInput()函數讀出,并將它轉換為Cstring類型,顯示在界面上。
程序的各個主要部分和一些流程圖:
(1)登陸界面后,程序首先將接收緩沖區和發送緩沖區清空
程序如下:
m_str_send=” “;
m_str_recv=” “;
UpdateData(FALSE);
(2)然后進行串行口的初始化,也即是設置MSComm控件的各種屬性。首先要進行端口的選擇,由于所用到的計算機只有兩個串行口,因此本程序只給了兩個選擇,具體的程序代碼如下:
void CMyDlg::On_Com1()
{
if(m_mscomm.GetPortOpen())
m_mscomm.SetPortOpen(FALSE);
m_mscomm.SetCommPort(1);
m_mscomm.SetSettings(”9600,n,8,1″);
m_mscomm.SetRThreshold(1);
m_mscomm.SetSThreshold(0);
m_mscomm.SetInputLen(0);
m_mscomm.SetInputMode(1);
m_mscomm.SetPortOpen(TRUE);
}
void CMyDlg::On_Com2()
{
if(m_mscomm.GetPortOpen())
m_mscomm.SetPortOpen(FALSE);
m_mscomm.SetCommPort(2);
m_mscomm.SetSettings(”9600,n,8,1″);
m_mscomm.SetRThreshold(1);
m_mscomm.SetSThreshold(0);
m_mscomm.SetInputLen(0);
m_mscomm.SetInputMode(1);
m_mscomm.SetPortOpen(TRUE);
}
1)CommPort:分別選1和2。
2) Setting設置或返回串行端口的波特率:9600、無奇偶校驗位、數據位數為8、1位停止位。
3) InBufferSize:設置接收緩沖區為1024字節。
4) RThreshold:設置當接收緩沖區內字節個數為1時,觸發MSCOMM的OnComm事件,然后由計算機將接收緩沖的數據讀出,并將接收緩沖區清空。
5) InputLen:值為0,設置INPUT讀取整個緩沖區的內容。
6) OutBufferSize:設置發送緩沖區為512字節。
(3)發送數據的源程序代碼
void CMyDlg::OnSend()
{
if(!m_mscomm.GetPortOpen())
m_mscomm.SetPortOpen(TRUE);
UpdateData(TRUE);
m_mscomm.SetOutput(COleVariant(m_str_send)); //發送數據
}
將文本框內的字符串送到變量m_str_send中,然后將字符轉化為ColeVariant類型的數據,再通過SetOutput函數將數據發送到發送緩沖區中。
(4)接收數據的源程序代碼
void CMyDlg::OnComm()
{
VARIANT variant_tmp;
COleSafeArray safearray_tmp;
LONG len,i;
BYTE buf[2048];
CString str_tmp;
if(m_mscomm.GetCommEvent()==2)
{
variant_tmp=m_mscomm.GetInput();
safearray_tmp=variant_tmp;
len=safearray_tmp.GetOneDimSize();
for(i=0;i safearray_tmp.GetElement(&i,buf+i);
for(i=0;i {
BYTE ch=*(char*)(buf+i);
str_tmp.Format(”%c”,ch);
m_str_recv+=str_tmp;
}
}
UpdateData(FALSE);
}
當m_mscomm.GetCommEvent()==2時候,數據到來,觸發OnComm事件,調用該函數。首先通過m_mscomm.GetInput()將接收緩沖區內的數據讀到變量variant_tmp中,再將variant_tmp賦予safearray_tmp來實現數據類型轉化為ColeSafeArray。通過safearray_tmp.GetOneDimSize()求出接收到的字符的總長度,再將每個ColeSafeArray變量轉化為Byte類型的變量,最后轉化為字符類型,并將它顯示在文本框內。
void CMyDlg::OnComm() 的流程圖:

圖4.3 void CMyDlg::OnComm() 的流程圖

(5)清空功能函數源代碼
void CMyDlg::OnClr()
{
m_str_send=” “;
m_str_recv=” “;
UpdateData(FALSE);
}
總的程序流程圖如圖4.4所示
圖4.5是PC機通過端口1向單片機發送數據時候的圖型界面。進入界面后,首先要進行根據連接的串行口選擇要初始化的端口,然后使用鍵盤在發送緩沖區內輸入一系列的字符。等單片機開發板上電后,單擊發送按鍵將數據發送出去。
圖4.6是PC機通過串口接收單片機發送過來的數據時候的圖形界面。在緩沖區接收的數據為二進制形式,程序內已經將這些二進制轉化為字符串在界面上顯示。
圖4.7是串行口調試工具初始運行時候的圖形界面。
事件驅動方式時,由計算機直接管理,字節之間不可控,而且單片機串行口和PC機串行口速率差別較大,接收程序一定要精心合理的設計,才能使傳輸穩定可靠,否則很容易出現意想不到的問題。在調試過程中,如果不小心將串行口調試工具的波特率和開發板串行口的波特率設置為不同,就會出現錯誤。程序中已經將串行口的波特率設置為9600bps,這樣可以避免錯誤。
圖4.5通過端口1進行發送時候的圖型界面

圖4.6 通過串口接收時候的圖形界面
圖4.7 串行口調試工具的運行界面
第五章 總結與展望
5.1 全文總結

通過這次畢業設計,我學到了不少課本上沒有的知識,也鍛煉了自己的動手能力,將以前學過的零散的知識串到一起。
首先在畢業設計剛開始的調研階段,我學會了怎么通過各種方式查詢相關的資料。通過對這些資料的學習,我大致了解了無線通信的發展現狀以及未來的發展趨勢,認識到目前無線通信方面的各種各樣的協議,以及它們之間的競爭。了解了無線通信方面的先進技術,這些都為我未來的學習指明了方向。
我畢業設計主要涉及硬件和軟件兩個方面的內容,通過這些我的硬件和軟件開發能力都獲得了提高。首先在硬件方面,基本了解了電子產品的開發流程和所要做的工作。基本掌握了Protel 99 SE設計原理圖和簡單的PCB圖的方法,并設計了一個單片機最小系統。通過開發板的設計和硬件搭建的過程,使我對51系列單片機的接口有了更深層次的理解,熟悉了一些單片機常用的外圍電路的引腳和連接方法,如LED數碼管,鍵盤等。
在軟件方面,通過串行口調試工具的開發,我基本掌握了Visual C++ 6.0的使用方法,加深了對類封裝的理解。通過開發板驅動程序的開發,使我熟練掌握了Keil uVision2,熟悉了51系列單片機內部的寄存器和編程規則,以及如何控制外圍電路。
當然,由于單片機功能的局限性,當面對很復雜的系統時像無線點菜系統,單片機就不太合適。這是因為單片機的引腳過少,能夠使用操作系統過于簡單,不能進行復雜的工作調度,也不能驅動復雜的外圍電路,因此使用單片機完全實現點菜系統的要求比較困難。
近幾年來,處理器已經發展到32位機,尤其是以ARM(Advanced RISC Machines)為內核的32位處理器受到越來越多嵌入式開發人員的青睞。ARM處理器支持復雜的嵌入式操作系統,例如Win CE,UClinux等。可以進行復雜的功能調度,而且能夠驅動比較復雜的外圍電路例如觸摸屏等。這樣使用ARM處理器和嵌入式操作系統,配合嵌入式移動數據庫技術,更能完成點菜系統的要求。所以,畢業設計也給我將來的學習指明了一個方向。
單就本論文而言,主要完成了以下工作:
1.在ZigBee協議的基礎上,以51系列單片機為處理器,配合一定的外圍電路構建了硬件開發平臺。
2.用C51語言為硬件部分編寫驅動程序,并用Visual C++6.0開發了串口調試工具。

5.2 研究展望

目前,無線通信的各種技術呈現百花齊放的局面。但是隨著經濟的發展,人民需求的提高,無線通信技術依然有很大的發展空間。在以下方面仍然有很長的路要走。
1隨著IP(Internet Protocol,網際協議)技術的發展,無線通信網和IP網有融合的趨勢。尤其是多媒體信息需求的增加,多媒體信息對實時性要求不高的特點,使得利用無線通信網傳輸多媒體信息成為一大熱門。
2隨著人民生活水平的提高,生活方式的轉變,無線通信技術必然向移動化和便攜化方向發展。
3由于無線頻譜資源有限和無線通信傳輸信道的特殊性,使得如何提高頻譜資源的利用率以及提高抗干擾能力成為未來很熱門的研究方向。
4 現代微電子技術發展迅猛,摩爾定理仍然有效,集成電路技術已經發展到SOC,32位的ARM處理器已經得到了廣泛的應用。因此在未來越來越復雜的嵌入式系統開發中,32位處理器和嵌入式操作系統將得到更廣泛的應用。

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 欧美性猛交xxxxx免费看 | 欧美成人免费xxx大片 | 在线免费观看黄视频 | 亚洲高清国产品国语在线观看 | 一本色道久久88 | 毛片在线观看网站 | 国产精品久久久亚洲第一牛牛 | 日韩a级毛片免费观看 | 精品剧情v国产在线麻豆 | 日韩美a一级毛片 | 一级毛片免费全部播放完整 | 日韩系列第一页 | 国产在线a不卡免费视频 | 国产一区玩具在线观看 | 久草久在线 | 德国最新精品性hd | 久草精品免费 | 亚洲欧洲国产成人精品 | 欧美一a一片一级一片 | 国产午夜精品福利 | 黄色免费在线视频 | 一级特黄视频 | 国产丶欧美丶日韩丶不卡影视 | 国产免费无遮挡精品视频 | 性xxx中文视频 | 在线观看黄色网页 | 无边泳池在线观看 | 国产亚洲sss在线观看 | 欧美视频性 | 免费国产人做人视频在线观看 | 国产黄色a| 天天搞天天色 | 日韩欧美中 | 男女性刺激爽爽免费视频 | 国产极品在线观看视频 | 亚洲精品三级 | 色综合888| 性美国xxxxx免费 | 日本xxxxxxxxx18| 亚洲一级黄色片 | 久草手机在线视频 |