當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]隨著人民生活水平的提高和生活方式的轉(zhuǎn)變,餐飲業(yè)具有巨大的投資市場,被稱為中國的黃金產(chǎn)業(yè)。無線電子點(diǎn)菜系統(tǒng)是無線通信技術(shù)的典型應(yīng)用,把無線技術(shù)用于餐飲業(yè)將會極大提高餐館的工作效率和服務(wù)質(zhì)量。 論文給出了

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

關(guān)鍵詞 無線通信,ZigBee,單片機(jī),nRF2401


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

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

1.2 無線通信技術(shù)的發(fā)展現(xiàn)狀

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

1.3 論文的研究內(nèi)容

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

1.4內(nèi)容安排

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

2.1 ZigBee協(xié)議框架

ZigBee協(xié)議同其它網(wǎng)絡(luò)通信協(xié)議一樣采用分層模型,對各層所實(shí)現(xiàn)的功能和在整個協(xié)議中起的作用做了明確的劃分,每層為其上層提供一組特定的服務(wù)。ZigBee的協(xié)議架構(gòu)大致如表2.1所列。

表2.1 ZigBee的協(xié)議架構(gòu)
第四層 應(yīng)用層
第三層 網(wǎng)絡(luò)層
第二層 媒體訪問層(MAC)
第一層 物理層

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

圖2.1 三種網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)

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

2.2 ZigBee協(xié)議優(yōu)缺點(diǎn)和應(yīng)用前景

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

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

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

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

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

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

圖2.3 nRF2401的內(nèi)部結(jié)構(gòu)原理及外部組成框圖

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

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

第三章 基于ZigBee協(xié)議的硬件系統(tǒng)的設(shè)計及實(shí)現(xiàn)
目前,51系列單片機(jī)非常流行,而且資料眾多,因此選用51系列單片機(jī)作為開發(fā)板的MCU,通過附加一定的外圍電路后,來和無線數(shù)據(jù)傳輸模塊進(jìn)行通信,實(shí)現(xiàn)數(shù)據(jù)的無線傳輸。

3.1 STC89C58RD+[10]單片機(jī)概述

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

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

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

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

3.2.5 鍵盤部分
圖3.6 鍵盤部分

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

3.3 無線數(shù)據(jù)傳輸模塊

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

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

3.4 無線數(shù)據(jù)傳輸模塊和開發(fā)板的PCB圖設(shè)計

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

圖3.9 開發(fā)板的PCB圖

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

圖3.10 鍵盤封裝 圖3.11 USB封裝

圖3.12 開關(guān)封裝 圖3.13 四位八段數(shù)碼管封裝

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

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

4.1 硬件驅(qū)動程序

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

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

表4.1 nRF2401的各種工作模式的設(shè)置方式
工作模式 PWR_UP CE CS
收發(fā)模式 1 1 0
配置模式 1 0 1
空閑模式 1 0 0
關(guān)機(jī)模式 0 * *

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

圖4.2開發(fā)板通過IO口和無線數(shù)據(jù)傳輸模塊進(jìn)行數(shù)據(jù)交換的流程圖

4.1.2 移動端驅(qū)動程序
移動端的開發(fā)板的結(jié)構(gòu)和PC機(jī)端的開發(fā)板的結(jié)構(gòu)完全相同,但由于它不需要和PC機(jī)通信,只需要和無線數(shù)據(jù)傳輸模塊進(jìn)行通信。因此相對另一端的驅(qū)動簡單一些。具體編程規(guī)則在上一節(jié)已經(jīng)詳細(xì)敘述,這里不再多說,具體的程序是PC機(jī)端程序的一部分。

4.2 串行口調(diào)試工具

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

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

表4.4 程序中用到的所有控件,以及它們的ID
控件 ID 標(biāo)題
按鈕 ID_SEND 發(fā)送
按鈕 ID_CLEAR 清空
編輯框 IDC_EDIT_SEND
編輯框 IDC_EDIT_RCV
靜態(tài)文本 IDC_STATIC 接收緩沖區(qū)
靜態(tài)文本 IDC_STATIC 發(fā)送緩沖區(qū)
組框 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程序設(shè)計原理
第一步:初始化串行口。調(diào)用SetCommPort()函數(shù),選擇使用的端口好,然后設(shè)置波特率發(fā)送接收的處理方式,以及數(shù)據(jù)的傳輸方式,最后將串口打開。
第二步:發(fā)送數(shù)據(jù)。將要發(fā)送的字符串變成特定的類型后,調(diào)用函數(shù)SetOutput(),將數(shù)據(jù)發(fā)送到發(fā)送緩沖區(qū)
第三步:接受數(shù)據(jù)。將接收緩沖區(qū)中的數(shù)據(jù)通過GetInput()函數(shù)讀出,并將它轉(zhuǎn)換為Cstring類型,顯示在界面上。
程序的各個主要部分和一些流程圖:
(1)登陸界面后,程序首先將接收緩沖區(qū)和發(fā)送緩沖區(qū)清空
程序如下:
m_str_send=” “;
m_str_recv=” “;
UpdateData(FALSE);
(2)然后進(jìn)行串行口的初始化,也即是設(shè)置MSComm控件的各種屬性。首先要進(jìn)行端口的選擇,由于所用到的計算機(jī)只有兩個串行口,因此本程序只給了兩個選擇,具體的程序代碼如下:
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設(shè)置或返回串行端口的波特率:9600、無奇偶校驗(yàn)位、數(shù)據(jù)位數(shù)為8、1位停止位。
3) InBufferSize:設(shè)置接收緩沖區(qū)為1024字節(jié)。
4) RThreshold:設(shè)置當(dāng)接收緩沖區(qū)內(nèi)字節(jié)個數(shù)為1時,觸發(fā)MSCOMM的OnComm事件,然后由計算機(jī)將接收緩沖的數(shù)據(jù)讀出,并將接收緩沖區(qū)清空。
5) InputLen:值為0,設(shè)置INPUT讀取整個緩沖區(qū)的內(nèi)容。
6) OutBufferSize:設(shè)置發(fā)送緩沖區(qū)為512字節(jié)。
(3)發(fā)送數(shù)據(jù)的源程序代碼
void CMyDlg::OnSend()
{
if(!m_mscomm.GetPortOpen())
m_mscomm.SetPortOpen(TRUE);
UpdateData(TRUE);
m_mscomm.SetOutput(COleVariant(m_str_send)); //發(fā)送數(shù)據(jù)
}
將文本框內(nèi)的字符串送到變量m_str_send中,然后將字符轉(zhuǎn)化為ColeVariant類型的數(shù)據(jù),再通過SetOutput函數(shù)將數(shù)據(jù)發(fā)送到發(fā)送緩沖區(qū)中。
(4)接收數(shù)據(jù)的源程序代碼
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<len;i++)
safearray_tmp.GetElement(&i,buf+i);
for(i=0;i<len;i++)
{
BYTE ch=*(char*)(buf+i);
str_tmp.Format(”%c”,ch);
m_str_recv+=str_tmp;
}
}
UpdateData(FALSE);
}
當(dāng)m_mscomm.GetCommEvent()==2時候,數(shù)據(jù)到來,觸發(fā)OnComm事件,調(diào)用該函數(shù)。首先通過m_mscomm.GetInput()將接收緩沖區(qū)內(nèi)的數(shù)據(jù)讀到變量variant_tmp中,再將variant_tmp賦予safearray_tmp來實(shí)現(xiàn)數(shù)據(jù)類型轉(zhuǎn)化為ColeSafeArray。通過safearray_tmp.GetOneDimSize()求出接收到的字符的總長度,再將每個ColeSafeArray變量轉(zhuǎn)化為Byte類型的變量,最后轉(zhuǎn)化為字符類型,并將它顯示在文本框內(nèi)。
void CMyDlg::OnComm() 的流程圖:

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

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

圖4.6 通過串口接收時候的圖形界面
圖4.7 串行口調(diào)試工具的運(yùn)行界面
第五章 總結(jié)與展望
5.1 全文總結(jié)

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

5.2 研究展望

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

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉