版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 無(wú)線投票器的設(shè)計(jì)</b></p><p> 摘要:本設(shè)計(jì)以直流電壓源為核心,STC89C52RC增強(qiáng)型單片機(jī)為主控制器。單片機(jī)系統(tǒng)是無(wú)線投票器的核心,它通過(guò)軟件的運(yùn)行來(lái)控制整個(gè)系統(tǒng)的工作,從而完成設(shè)定的功能。通過(guò)三個(gè)數(shù)字鍵盤來(lái)進(jìn)行投票,在投票結(jié)束之后,經(jīng)過(guò)編碼的投票信息由NRF24L01無(wú)線模塊發(fā)射出去。在接收端,可由液晶屏LCD1602顯示實(shí)際投票結(jié)果。實(shí)際
2、結(jié)果表明,本系統(tǒng)實(shí)際應(yīng)用于投票領(lǐng)域。</p><p> 關(guān)鍵詞:無(wú)線;投票器;單片機(jī);NRF24L01;STC89C52RC</p><p> The design of wireless voting device</p><p> Abstract: In this design, the DC voltage source is the core, th
3、e enhanced MCU STC89C52RC is the master. MCU is the core of the wireless voting device, it controls the working of the whole system through the running of the software, so it could achieve the scheduled goal. We could ca
4、st a vote through three digital buttons, the voted message will be transmitted by the wireless module NRF24L01 after the vote ends. In the receiver module, the LCD screen will show the result of the vote. It is proved<
5、;/p><p><b> 目 錄</b></p><p><b> 1.引言1</b></p><p> 2.設(shè)計(jì)要求及方案論證2</p><p> 2.1 設(shè)計(jì)要求2</p><p> 2.2 設(shè)計(jì)方案及論證2</p><p>
6、; 2.2.1 控制模塊方案及論證2</p><p> 2.2.2 顯示模塊方案及論證2</p><p> 3.系統(tǒng)的硬件電路設(shè)計(jì)4</p><p> 3.1 主控制器模塊的設(shè)計(jì)4</p><p> 3.2 NRF24L01無(wú)線模塊的設(shè)計(jì)5</p><p> 3.3 按鍵控制模塊的設(shè)計(jì)
7、7</p><p> 3.4 液晶顯示模塊的設(shè)計(jì)8</p><p> 3.4.1 LCD1602主要管腳介紹8</p><p> 3.4.2 LCD1602控制指令9</p><p> 3.4.3 液晶顯示模塊設(shè)計(jì)10</p><p> 3.4.4 讀寫控制時(shí)序表10</p>
8、<p> 3.4.5 LCD1602的一般初始化過(guò)程11</p><p> 3.4.6 LCD1602與單片機(jī)連接圖11</p><p> 3.5 振蕩電路設(shè)計(jì)模塊的設(shè)計(jì)12</p><p> 3.6 晶振電路與復(fù)位電路設(shè)計(jì)12</p><p> 3.6.1 晶振電路12</p><
9、;p> 3.6.2 復(fù)位電路13</p><p> 3.7 電源模塊的設(shè)計(jì)14</p><p> 4.系統(tǒng)軟件設(shè)計(jì)16</p><p> 4.1 用C語(yǔ)言開發(fā)單片機(jī)的優(yōu)勢(shì)16</p><p> 4.2 系統(tǒng)程序設(shè)計(jì)流程圖16</p><p> 4.3 軟件編譯與調(diào)試17</
10、p><p> 4.4 液晶顯示19</p><p> 4.5 NRF24L01模塊程序設(shè)計(jì)20</p><p> 5.調(diào)試結(jié)果與分析24</p><p> 5.1 測(cè)試儀器24</p><p> 5.2 測(cè)試方法24</p><p> 5.3 調(diào)試過(guò)程與分析24&l
11、t;/p><p> 5.4 測(cè)試結(jié)論24</p><p><b> 參考文獻(xiàn)25</b></p><p><b> 附 錄26</b></p><p><b> 謝 辭44</b></p><p><b> 1 引言<
12、;/b></p><p> 近年來(lái)隨著科技的飛速發(fā)展,單片機(jī)的應(yīng)用正在不斷地走向深入,同時(shí)帶動(dòng) 傳統(tǒng)控制檢測(cè)技術(shù)日新月益更新。</p><p> 投票器,是投票反饋系統(tǒng)中的終端設(shè)備,是一種代替常規(guī)會(huì)議舉手表決,會(huì)議舉手投票,民主舉手選舉的一種裝置。投票器系統(tǒng)主要由:基站,軟件,終端設(shè)備三部分組成。可以自由選擇實(shí)名投票與非實(shí)名投票。</p><p> 使用
13、時(shí),與會(huì)者只需按動(dòng)手中投票器上對(duì)應(yīng)的,“贊同”“反對(duì)”或者“棄權(quán)”即可,相應(yīng)的投票結(jié)果會(huì)在電腦中記錄并實(shí)時(shí)顯示的屏幕上,從而公平公正的展現(xiàn)出來(lái)。</p><p> 隨著無(wú)線技術(shù)的發(fā)展,以及有線投票器的不方便性,無(wú)線投票器逐漸取代了有線投票器的市場(chǎng)。</p><p> 基于單片機(jī)與無(wú)線技術(shù)的投票器的設(shè)計(jì)制作過(guò)程,以MCS-51系列單片機(jī)為控制核心設(shè)計(jì)投票系統(tǒng)的投票發(fā)射器與接收器。投票發(fā)射
14、器由單片機(jī)、三個(gè)按鍵、三個(gè)指示燈和NRF24L01模塊等組成.三個(gè)鍵分別表示不按代表反對(duì),按下代表同意。投票器把投票結(jié)果信息編碼后通過(guò)NRF24L01發(fā)射出去,接收器接收后,辨別發(fā)射傳輸?shù)男畔ⅲ捎梢壕罫CD1602顯示實(shí)際投票結(jié)果。</p><p> 2 設(shè)計(jì)要求及方案論證</p><p><b> 2.1 設(shè)計(jì)要求</b></p><
15、p> 單片機(jī)在各種電子產(chǎn)品中的應(yīng)用已經(jīng)越來(lái)越廣泛,很多的電子產(chǎn)品利用單片機(jī)所取得的便利性得到了人們的好評(píng),針對(duì)多路數(shù)據(jù)采集系統(tǒng)的要求提出了以下的方案:</p><p> 設(shè)計(jì)一款能進(jìn)行遠(yuǎn)程無(wú)線投票的設(shè)備,由多個(gè)投票端和一個(gè)控制端所組成,模擬遠(yuǎn)程投票。其中每一個(gè)投票端都有三個(gè)按鍵,“贊成”、“反對(duì)”和“棄權(quán)”。當(dāng)投票端進(jìn)行投票后,由控制端顯示投票結(jié)果。</p><p> 2.2
16、 設(shè)計(jì)方案及論證</p><p> 2.2.1 控制模塊方案及論證[1]</p><p> 方案1:采用各類數(shù)字電路來(lái)組成鍵盤控制系統(tǒng),進(jìn)行信號(hào)處理,如選用CPLD等可編程邏輯器件。本方案電路復(fù)雜,靈活性不高,效率低,不利于系統(tǒng)的擴(kuò)展,對(duì)信號(hào)處理比較困難。</p><p> 方案2:采用STC89C52RC單片機(jī)作為這個(gè)系統(tǒng)的控制單元,可方便利用單片機(jī)內(nèi)部的
17、定時(shí)器等各種資源,方便程序的編寫和無(wú)線射頻模塊的操作。 </p><p> 比較以上兩種方案的優(yōu)缺點(diǎn),方案1采用中、小規(guī)模器件實(shí)現(xiàn)系統(tǒng)的數(shù)控部分,使用的芯片很多,造成控制電路內(nèi)部接口信號(hào)繁瑣,中間相互關(guān)聯(lián)多,抗干擾能力差。在方案2中采用單片機(jī)完成整個(gè)數(shù)控部分的功能,也便于系統(tǒng)功能的擴(kuò)展。</p><p> 2.2.2 顯示模塊方案及論證[2] </p><p>
18、; 方案1:使用數(shù)碼管顯示</p><p> 使用多位數(shù)碼管顯示,顯示不靈活。</p><p> 方案2:使用LCD1602液晶顯示</p><p> 液晶顯示模塊具有體積小、功耗低、顯示內(nèi)容豐富、超薄輕巧等優(yōu)點(diǎn)。本方案采用LCD1602,它具有兩行顯示,每行顯示16個(gè)字符,采用單+5V供電,外圍電路簡(jiǎn)單,價(jià)格便宜,具有很高的性價(jià)比。而數(shù)碼管雖然便宜,但顯示
19、單調(diào)。占用過(guò)多的I/O。</p><p> 綜上所述,得到系統(tǒng)整體結(jié)構(gòu)框圖如圖1所示。</p><p> 圖1 系統(tǒng)整體結(jié)構(gòu)框圖</p><p> 3 系統(tǒng)的硬件電路設(shè)計(jì)</p><p> 3.1 主控制器模塊的設(shè)計(jì)[3]</p><p> 本設(shè)計(jì)采用PDIP封裝的STC89C52RC芯片為主控制器,該
20、芯片正常工作電壓為5V,支持的最高時(shí)鐘頻率為80MHz,F(xiàn)lash程序存儲(chǔ)器為8KB,RAM數(shù)據(jù)存儲(chǔ)器為512B,內(nèi)置看門狗電路,支持ISP/IAP[4]。本單片機(jī)具有以下優(yōu)點(diǎn):</p><p><b> 超低功耗。</b></p><p> ●掉電模式:典型功耗為0.5uA,可由外部中斷喚醒,中斷返回后,繼續(xù)執(zhí)行原程序。</p><p>
21、 ●空閑模式:典型功耗為2mA。</p><p> ●正常工作模式:典型功耗為4mA-7mA。</p><p><b> 超強(qiáng)抗干擾。</b></p><p> ●I/O口、電源、時(shí)鐘、看門狗、復(fù)位電路都是經(jīng)過(guò)特殊處理。</p><p> ●寬電壓,不怕電源抖動(dòng),工作電壓范圍為3.4 – 6V。</p&g
22、t;<p> ●高抗靜電(高ESD保護(hù)),輕松過(guò)2000V。</p><p><b> ●快速?zèng)_干擾。</b></p><p> 控制部分是系統(tǒng)整機(jī)協(xié)調(diào)工作和智能化管理的核心部分,采用STC89C52RC單片機(jī)實(shí)現(xiàn)控制功能是其關(guān)鍵,采用單片機(jī)不但方便監(jiān)控,并且大大減少硬件設(shè)計(jì)。由于本設(shè)計(jì)分兩個(gè)板子但上面的單片機(jī)最小系統(tǒng)電路是一樣的,所以在此僅以發(fā)射
23、板單片機(jī)電路為例。STC89C52RC芯片原理圖如圖2所示。</p><p> 圖圖2 STC89C52RC芯片原理圖</p><p> 3.2 NRF24L01無(wú)線模塊的設(shè)計(jì)[5]</p><p> NRF24L01 是 NORDIC 公司最近生產(chǎn)的一款無(wú)線通信通信芯片,采用 FSK 調(diào)制,內(nèi)部集成NORDI自己的 Enhanced Short Burs
24、t 協(xié)議??梢詫?shí)現(xiàn)點(diǎn)對(duì)點(diǎn)或是 1 對(duì) 6 的無(wú)線通信[6]。</p><p> 無(wú)線通信速度可以達(dá)到 2M(bps)。NORDIC 公司提供通信模塊的 GERBER 文件,可以直接加工生產(chǎn)。嵌入式工程師或是單片機(jī)愛好者只需要為單片機(jī)系統(tǒng)預(yù)留 5個(gè)GPIO,1個(gè)中斷輸入引腳,就可以很容易實(shí)現(xiàn)無(wú)線通信的功能,非常適合用來(lái)為 MCU 系統(tǒng)構(gòu)建無(wú)線通信功能。</p><p> 發(fā)射數(shù)據(jù)時(shí),首先
25、將nRF24L01配置為發(fā)射模式:接著把接收節(jié)點(diǎn)地址TX_ADDR和有效數(shù)據(jù)TX_PLD按照時(shí)序由SPI口寫入nRF24L01緩存區(qū),TX_PLD必須在CSN為低時(shí)連續(xù)寫入,而TX_ADDR在發(fā)射時(shí)寫入一次即可,然后CE置為高電平并保持至少10μs,延遲130μs后發(fā)射數(shù)據(jù);若自動(dòng)應(yīng)答開啟,那么nRF24L01在發(fā)射數(shù)據(jù)后立即進(jìn)入接收模式,接收應(yīng)答信號(hào)(自動(dòng)應(yīng)答接收地址應(yīng)該與接收節(jié)點(diǎn)地址TX_ADDR一致)。如果收到應(yīng)答,則認(rèn)為此次通信
26、成功,TX_DS置高,同時(shí)TX_PLD從TX FIFO中清除;若未收到應(yīng)答,則自動(dòng)重新發(fā)射該數(shù)據(jù)(自動(dòng)重發(fā)已開啟),若重發(fā)次數(shù)(ARC)達(dá)到上限,MAX_RT置高,TX FIFO中數(shù)據(jù)保留以便在次重發(fā);MAX_RT或TX_DS置高時(shí),使IRQ變低,產(chǎn)生中斷,通知MCU。最后發(fā)射成功時(shí),若CE為低則nRF24L01進(jìn)入空閑模式1;若發(fā)送堆棧中有數(shù)據(jù)且CE為高,則進(jìn)入下一次發(fā)射;若發(fā)送堆棧中無(wú)數(shù)據(jù)且CE為高,則進(jìn)入空閑模式2。</p&
27、gt;<p> 接收數(shù)據(jù)時(shí),首先將nRF24L01配置為接收模式,接著延遲130μs進(jìn)入接收狀態(tài)等待數(shù)據(jù)的到來(lái)。當(dāng)接收方檢測(cè)到有效的地址和CRC時(shí),就將數(shù)據(jù)包存儲(chǔ)在RX FIFO中,同時(shí)中斷標(biāo)志位RX_DR置高,IRQ變低,產(chǎn)生中斷,通知MCU去取數(shù)據(jù)。若此時(shí)自動(dòng)應(yīng)答開啟,接收方則同時(shí)進(jìn)入發(fā)射狀態(tài)回傳應(yīng)答信號(hào)。最后接收成功時(shí),若CE變低,則nRF24L01進(jìn)入空閑模式1[7]。</p><p>
28、 NRF24L01內(nèi)部結(jié)構(gòu)如圖3所示,NRF24L01模塊電路圖如圖4所示,NRF24L01指令系統(tǒng)由表1所示[8]。</p><p> 圖3 NRF24L01結(jié)構(gòu)圖</p><p> NRF24L01模塊電路圖如圖4所示。</p><p> 圖4 NRF24L01模塊電路</p><p> NRF24L01的指令列表如表1所示。&
29、lt;/p><p> 表1 NRF24L01令列表</p><p> 3.3 按鍵控制模塊的設(shè)計(jì)</p><p> 本設(shè)計(jì)中,采用獨(dú)立按鍵對(duì)單片機(jī)核心芯片STC89C52RC進(jìn)行輸入控制。各按鍵分別一端接地,一端接單片機(jī)引腳。實(shí)現(xiàn)功能:三個(gè)鍵分別表示不按代表反對(duì),按下代表同意。鍵盤控制電路原理圖如圖5所示。</p><p> 圖5 盤
30、控制電路原理圖</p><p> 3.4 液晶顯示模塊的設(shè)計(jì)</p><p> 3.4.1 LCD1602主要管腳介紹</p><p> 顯示模塊用于接收機(jī)實(shí)時(shí)顯示投票結(jié)果。這里采用1602液晶顯示屏,其主要參數(shù)為:顯示容量(16*2個(gè)字符),芯片工作電壓(4.5-5.5V),工作電流(2.0mA),模塊最佳工作電壓(5.0V)。LCD1602共有16個(gè)引
31、腳,LCD1602管腳功能介紹表如表2所示</p><p> 表2 LCD1602管腳功能介紹表</p><p><b> 說(shuō)明:</b></p><p> V0: 液晶顯示器對(duì)比度調(diào)整端,接正電源的對(duì)比度最弱,接地電源是對(duì)比度最高,對(duì)比度過(guò)高時(shí)會(huì)產(chǎn)生“鬼影”使用時(shí)可以通過(guò)一個(gè)10k的電位器調(diào)整對(duì)比度。</p><p
32、> RS: 寄存器選擇,高電平時(shí)選擇數(shù)據(jù)存儲(chǔ)器;低電平時(shí)選擇指令寄存器。</p><p> R/W:讀寫信號(hào)線,高電平時(shí)進(jìn)行讀操作,低電平進(jìn)行寫操作。當(dāng)RS和R/W共同為低電平時(shí)可以寫入指令或者顯示地址;當(dāng)RS為高電平,R/W為低電平時(shí)可以寫入數(shù)據(jù)。</p><p> E: 使能端,當(dāng)E端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。</p><p>
33、 3.4.2 LCD1602控制指令</p><p> 1.清屏指令如表3所示</p><p><b> 表3 清屏指令表</b></p><p> 功能:<1> 清除液晶顯示器,即將DDRAM的內(nèi)容全部填入"空白"的ASCII碼20H;</p><p> <2> 光
34、標(biāo)歸位,即將光標(biāo)撤回液晶顯示屏的左上方; <3> 將地址計(jì)數(shù)器(AC)的值設(shè)為0。</p><p> 2.顯示開關(guān)控制表如表4所示。</p><p> 表4 顯示開關(guān)控制表</p><p> 功能:設(shè)置顯示,光標(biāo)及閃爍開,關(guān)</p><p> 其中:D表示顯示:1為開,0為關(guān);</p><p&
35、gt; C表示光標(biāo):1為開,0為關(guān)</p><p> D表示閃爍:1為開,0為關(guān)</p><p> 光標(biāo),畫面移動(dòng)表如表5所示</p><p> 表5 光標(biāo),畫面移動(dòng)表</p><p> 功能:光標(biāo),畫面移動(dòng),不影響DDRAM</p><p> 其中:S/C=1,畫面平移一個(gè)字符位</p>&
36、lt;p> S/C=0,光標(biāo)平移一個(gè)字符位</p><p> R/L=1:右移;R/L=0:左移</p><p> 功能設(shè)置表如表6所示</p><p><b> 表6 功能設(shè)置表</b></p><p><b> 功能:工作方式設(shè)置</b></p><p>
37、 其中:DL=1,8位數(shù)據(jù)接口;DL=0四位數(shù)據(jù)接口;</p><p> N=1,兩行顯示;N=0,一行顯示;</p><p> F=1,5 10點(diǎn)陣字符;F=0,5 7點(diǎn)陣字符</p><p> 3.4.3 液晶顯示程序設(shè)計(jì)</p><p> 1.讀操作時(shí)序如圖6所示</p><p><b>
38、 圖6 讀操作時(shí)序</b></p><p> 2.寫操作時(shí)序如圖7所示。</p><p><b> 圖7 寫操作時(shí)序</b></p><p><b> 讀寫控制時(shí)序表</b></p><p> 讀寫控制時(shí)序如表7所示。</p><p> 表7 讀寫控制時(shí)
39、序表</p><p> 3.4.5 LCD1602的一般初始化過(guò)程</p><p><b> 1.延時(shí)15mS</b></p><p><b> 2.寫指令38H</b></p><p> 3.寫指令08H:顯示關(guān)閉</p><p> 4.寫指令01H:顯示清屏&
40、lt;/p><p> 5.寫指令06H:顯示光標(biāo)移動(dòng)設(shè)置</p><p> 6.寫指令0CH:顯示開及光標(biāo)設(shè)置</p><p> 3.4.6 LCD1602與單片機(jī)連接圖</p><p> LCD1602與單片機(jī)連接圖的連接圖如圖8所示。</p><p> 圖8 LCD1602與單片機(jī)連接圖</p>
41、<p> 數(shù)據(jù)線DB0-DB7連接單片機(jī)的P0口; RS、R/W,E,3條控制線分別接單片機(jī)的P2.5、P2.6、P2.7口。電阻R3用來(lái)設(shè)置背光的亮度。</p><p> 3.5 振蕩電路設(shè)計(jì)模塊的設(shè)計(jì)[9]</p><p> 單片機(jī)的工作是在統(tǒng)一的脈沖控制下的進(jìn)行的。這個(gè)脈沖就是由單片機(jī)控制器的時(shí)鐘電路發(fā)出的,即時(shí)鐘電路用于產(chǎn)生單片機(jī)工作所需的時(shí)鐘信號(hào)。單片機(jī)本身
42、就是一個(gè)復(fù)雜的同步時(shí)序電路,為了保證同步工作方式的實(shí)現(xiàn),電路應(yīng)在唯一的時(shí)鐘信號(hào)控制下嚴(yán)格地按時(shí)序進(jìn)行工作。時(shí)鐘電路用于產(chǎn)生單片機(jī)工作的時(shí)鐘信號(hào)。而時(shí)鐘電路又各分為兩種,即內(nèi)部時(shí)鐘方式和外部時(shí)鐘方式。</p><p> 本設(shè)計(jì)采用內(nèi)部時(shí)鐘方式此種方式時(shí),單片機(jī)內(nèi)接一個(gè)高增益反向放大器構(gòu)成內(nèi)部振蕩器。引腳XTAL1和XTAL2分別此放大器的輸入端和輸出端。同時(shí)在XTAL1和XTAL2兩端跨接晶體或陶瓷諧振器構(gòu)成穩(wěn)定
43、的自激振蕩器,其發(fā)出的脈沖信號(hào)直接送入到內(nèi)部時(shí)鐘發(fā)生器。電容C1和C2通常選擇為(30+或-10)pf左右;外接陶瓷諧振器時(shí)則選為47pf左右。電容C1和 C2對(duì)頻率有微調(diào)作用。為了減少寄生電容,更好地保證振蕩器可靠地工作,諧振器和電容應(yīng)安裝得與單片機(jī)芯片盡可能的近。內(nèi)部時(shí)鐘發(fā)生器實(shí)際上是一個(gè)二分頻的觸發(fā)器,該二分頻為單片機(jī)提供一個(gè)二相的時(shí)鐘信號(hào)即相位信號(hào)1(P1)和相位信號(hào)2(P2),驅(qū)動(dòng)CPU產(chǎn)生執(zhí)行指令功能的機(jī)器周期。這里我們采用
44、的是12MHz晶振,也就時(shí)說(shuō)單片機(jī)的時(shí)鐘周期為1/12uS,指令周期為1uS。晶體振蕩器的頻率越高,振蕩頻率就越高,振蕩電路原理圖如圖9所示。</p><p> 圖9 振蕩電路原理圖</p><p> 3.6 晶振電路與復(fù)位電路設(shè)計(jì)[10]</p><p> 3.6.1 晶振電路</p><p> 晶振電路為單片機(jī)AT89C51工
45、作提供時(shí)鐘信號(hào),芯片中有一個(gè)用于構(gòu)成內(nèi)部振蕩器的高增益反相放大器,引腳XTAL1和XTAL2分別是該放大器的輸入端和輸出端。這個(gè)放大器與作為反饋元件的片外石英晶體或陶瓷諧振蕩器一起構(gòu)成自激振蕩器。電路中的外接石英晶體及電容C5、C6接在放大器的反饋回路中構(gòu)成并聯(lián)振蕩電路。由于外接電容C5、C6的容量大小會(huì)輕微影響振蕩頻率的高低、振蕩器工作的穩(wěn)定性、起振的難易程度及溫度穩(wěn)定性,如果使用石英晶體,電容的容量大小范圍為20pF~40pF;如果
46、使用陶瓷諧振,則電容容量大小為30 pF~50 pF。本設(shè)計(jì)中使用石英晶體,電容的容值設(shè)定為30pF。</p><p> 3.6.2 復(fù)位電路</p><p> 復(fù)位電路的基本功能是:系統(tǒng)上電時(shí)提供復(fù)位信號(hào),直至系統(tǒng)電源穩(wěn)定后,撤銷復(fù)位信號(hào)。為可靠起見,電源穩(wěn)定后還要經(jīng)一定的延時(shí)才撤銷復(fù)位信號(hào),以防電源開關(guān)或電源插頭分合過(guò)程中引起的抖動(dòng)而影響復(fù)位。單片機(jī)在啟動(dòng)時(shí)都需要復(fù)位,以使CPU
47、及系統(tǒng)各部件處于確定的初始狀態(tài),并從初態(tài)開始工作。AT89C51的復(fù)位信號(hào)是從REST引腳輸入到芯片內(nèi)的施密特觸發(fā)器中的。當(dāng)系統(tǒng)處于正常工作狀態(tài)時(shí),且振蕩器穩(wěn)定后,如果REST引腳上有一個(gè)高電平并維持2個(gè)機(jī)器周期(24個(gè)振蕩周期)以上,則CPU就可以響應(yīng)并將系統(tǒng)復(fù)位。單片機(jī)系統(tǒng)的復(fù)位方式有:手動(dòng)按鈕復(fù)位和上電復(fù)位,本設(shè)計(jì)采用的是手動(dòng)按鈕復(fù)位。</p><p> 手動(dòng)按鈕復(fù)位需要人為在復(fù)位輸入端REST上加入高電
48、平,采用的辦法是在REST端和正電源Vcc之間接一個(gè)按鈕。當(dāng)人為按下按鈕時(shí),則Vcc的+5V電平就會(huì)直接加到REST端,系統(tǒng)復(fù)位。由于人的動(dòng)作再快也會(huì)使按鈕保持接通達(dá)數(shù)十毫秒,所以,設(shè)計(jì)完全能夠滿足復(fù)位的時(shí)間要求。復(fù)位電路中SW-PB為手動(dòng)復(fù)位開關(guān),電容Ch1可避免高頻諧波對(duì)電路的干擾。</p><p> 因?yàn)?MCS-51系列單片機(jī)采用高電平復(fù)位方式,其內(nèi)部復(fù)位電路如圖3-15所示,高電平復(fù)位脈沖RST引腳輸
49、入到內(nèi)部施密特觸發(fā)器整形后,送CPU內(nèi)部復(fù)位電路。CPU在每一個(gè)機(jī)器周期的S5P2相采樣施密特觸發(fā)器的輸出端,若為高電平,則強(qiáng)迫機(jī)器進(jìn)入復(fù)位狀態(tài)。為了保證CPU內(nèi)部各個(gè)單元電路可靠復(fù)位,RST引腳復(fù)位脈沖高電平維持時(shí)間必須大于等于2個(gè)機(jī)器周期(即24個(gè)振蕩周期)。內(nèi)部復(fù)位電路如圖10所示。 </p><p><b> 圖10 復(fù)位電路</b></p><p
50、> 可以使用RC分立元件或微處理器監(jiān)控芯片構(gòu)成MCS-51單片機(jī)的外部復(fù)位電路。本設(shè)計(jì)中采用RC分立元件構(gòu)成MCS-51外部復(fù)位電路,外部復(fù)位電路圖電路如圖11所示。</p><p> 圖11 外部復(fù)位電路</p><p> 按下復(fù)位按鍵K20時(shí),電容C3通過(guò)R1放電,當(dāng)電容放電結(jié)束后,RST引腳電位由R1、R2分壓比決定。由于R2>>R1,因此RST引腳為高電平,
51、CPU進(jìn)入復(fù)位狀態(tài)。松開復(fù)位按鍵后,電容C3充電,RST引腳電位下降,使CPU脫離復(fù)位狀態(tài)。R1的作用在于限制復(fù)位按鈕瞬間電容C3的放電電流,避免產(chǎn)生火花,以保護(hù)按鈕的觸點(diǎn)。</p><p> 單片機(jī)的復(fù)位都是靠外部電路實(shí)現(xiàn)的,在時(shí)鐘電路工作后,只要在單片機(jī)的RST引腳上出現(xiàn)24個(gè)時(shí)鐘振蕩脈沖以上的高電平,單片機(jī)便實(shí)現(xiàn)初始化狀態(tài)復(fù)位。為了保證應(yīng)用系統(tǒng)可靠地復(fù)位,在設(shè)計(jì)復(fù)位電路時(shí),通常使RST保持高電平。只要RS
52、T保持高電平,則單片機(jī)就循環(huán)復(fù)位。</p><p> 3.7 電源模塊的設(shè)計(jì)</p><p> 本設(shè)計(jì)兩塊板子都是用USB供電方式,以USB接口接收電腦或充電器5V電源,輸入后經(jīng)過(guò)100uf和0.1uf電容濾波后,提供給系統(tǒng)。電源模塊電路圖如圖12所示。</p><p> 圖12 電源模塊電路圖</p><p><b>
53、4 系統(tǒng)軟件設(shè)計(jì)</b></p><p> 4.1 用C語(yǔ)言開發(fā)單片機(jī)的優(yōu)勢(shì)[11]</p><p> C語(yǔ)言是一種編譯型的結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言,具有簡(jiǎn)單的語(yǔ)法結(jié)構(gòu)和強(qiáng)大的處理功能,具有運(yùn)行速度快、編譯效率高,移植性好和可讀性強(qiáng)等多種優(yōu)點(diǎn),可以實(shí)現(xiàn)對(duì)系統(tǒng)便件的直接操作。用C語(yǔ)言來(lái)編寫目標(biāo)系統(tǒng)軟件,可以大大縮短開發(fā)周期,且明顯地增加軟件的可讀性,便于改進(jìn)和擴(kuò)充,從而開發(fā)出大
54、規(guī)模、高性能的應(yīng)用系統(tǒng)。</p><p> 4.2 系統(tǒng)程序設(shè)計(jì)流程圖</p><p> 此系統(tǒng)中用到單片機(jī)的部分功能:鍵盤擴(kuò)展,程序中斷,I/O控制等。主程序基本沒什么是可做,但因鍵盤掃描時(shí)通過(guò)程序查詢的方式來(lái)實(shí)現(xiàn)的,所以在主程序中要調(diào)用鍵盤掃描程序。發(fā)射板系統(tǒng)流程圖如圖13所示,接收板流程圖如圖14所示。</p><p> 圖13 發(fā)射板程序流程圖<
55、;/p><p> 圖14 接收板程序流程圖</p><p><b> 軟件編譯與調(diào)試</b></p><p> Keil C51是美國(guó)Keil Software公司出品的51系列兼容單片機(jī)C語(yǔ)言軟件開發(fā)系統(tǒng),與匯編相比,C語(yǔ)言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢(shì),因而易學(xué)易用。用過(guò)匯編語(yǔ)言后再使用C來(lái)開發(fā),體會(huì)更加深刻。本設(shè)計(jì)軟件
56、編譯使用的是uVision2編譯器</p><p> 選擇CPU型號(hào)窗口中選擇CPU生產(chǎn)廠家及芯片型號(hào)。這里選擇的是Atmel公司的AT89C52芯片。選擇芯片界面設(shè)置如圖15所示。</p><p> 圖15 選擇芯片界面設(shè)置</p><p> 程序代碼編寫完后需要編譯鏈接生成目標(biāo)代碼,然后進(jìn)行硬件調(diào)試或模擬仿真,編譯代碼可以點(diǎn)擊或鍵盤的快捷鍵F7。編譯后
57、的結(jié)果如圖16所示。</p><p> 圖16 軟件編譯結(jié)果界面</p><p> 編譯軟件后,要對(duì)代碼進(jìn)行下載到STC89C52RC單片機(jī)中。這里選用的是STC-ISP下載軟件,STC程序下載界面如圖17所示。</p><p> 圖17 STC程序下載界面</p><p><b> 4.4 液晶顯示</b>
58、</p><p> LCD1602己很普遍了,市面上字符液晶絕大多數(shù)基于HD44780液晶芯片的,控制原理就是完全相同的,HD44780寫的控制程序可以很方便地應(yīng)用于市面上大部分的字符型液晶,字符型LCD通常有14條引腳線或16條引腳線的LCD,多出來(lái)的2條是背光電源線VCC和地線GND,其控制原理與14條引腳線的LCD完全一樣的。液晶顯示模塊的流程圖如圖18所示。</p><p>
59、圖18 LCD1602液晶顯示模塊的流程圖</p><p> 液晶部分的程序如下:</p><p> void main(void)</p><p> { uchar n;</p><p> unsigned char tf =0;</p><p> unsigned char TxBuf[20]={
60、0}; // </p><p> unsigned char RxBuf[20]={0};</p><p> InitLcd();</p><p> init_NRF24L01() ;</p><p> lcd_1602_word(0x80,16,"*****Loading****");</p>
61、<p> lcd_1602_word(0xc0,16,"*****Loading****");</p><p><b> while(1)</b></p><p><b> {</b></p><p> SetRX_Mode();</p><p> RxBuf
62、[1] = 0x00;</p><p> RxBuf[2] = 0x00;</p><p> RxBuf[3] = 0x00;</p><p> Delay(1000);</p><p> nRF24L01_RxPacket(RxBuf);</p><p> n=RxBuf[1]+RxBuf[2]+RxBuf
63、[3];</p><p><b> if(n>4)</b></p><p><b> { </b></p><p> lcd_1602_word(0x80,16,"**Pass****Pass**");</p><p> lcd_1602_word(0
64、xc0,16,"**Pass****Pass**");</p><p><b> }</b></p><p><b> if(n==3)</b></p><p><b> {</b></p><p> lcd_1602_word(0x80,16,&q
65、uot;**Down****Down**");</p><p> lcd_1602_word(0xc0,16,"**Down****Down**"); </p><p><b> }</b></p><p><b> n=0;</b></p><p> R
66、xBuf[1] = 0x00;</p><p> RxBuf[2] = 0x00;</p><p> RxBuf[3] = 0x00;</p><p> Delay(1000); //old is '1000'</p><p> 4.5 NRF24L01模塊程序設(shè)計(jì)[9]</p><p&g
67、t; 該射頻模塊集成了NORDIC公司生產(chǎn)的無(wú)線射頻芯片nRF24L01:</p><p> 1.支持2.4GHz的全球開放ISM頻段,最大發(fā)射功率為0dBm</p><p> 2.2Mbps,傳輸速率高</p><p> 3.功耗低,等待模式時(shí)電流消耗僅22uA</p><p> 4.多頻點(diǎn)(125個(gè)),滿足多點(diǎn)通信及跳頻通信需求
68、</p><p> 5.在空曠場(chǎng)地,有效通信距離:25m(外置天線)、10m(PCB天線)</p><p><b> 6.工作原理簡(jiǎn)介:</b></p><p> NRF24L01無(wú)線模塊的軟件流程圖如圖20所示。</p><p> 圖20 NRF24L01無(wú)線模塊的軟件流程圖</p><p
69、> 5 調(diào)試結(jié)果與分析</p><p><b> 5.1 測(cè)試儀器</b></p><p> 萬(wàn)用表,軟件Protues。</p><p><b> 5.2 測(cè)試方法</b></p><p> 先接通電源,看看系統(tǒng)能否正常工作,如果不能,可以在系統(tǒng)供電情況下,用萬(wàn)用表檢測(cè)發(fā)射板
70、和接收板各個(gè)模塊的電壓,如果出現(xiàn)電壓為0或者無(wú)限大的情況,則為短路或者斷路,一一排查之后可以確定是哪個(gè)地方的問題,檢修后再次接通電源調(diào)試,使用protues軟件事先調(diào)試按鍵邏輯與顯示邏輯觀察是否正常。</p><p> 5.3 調(diào)試過(guò)程與分析</p><p> 在本次設(shè)計(jì)過(guò)程中,由于使用的是宏晶的STC89C52RC芯片,這個(gè)系列的程序下載只需通過(guò)MAX232下載接口就可以。使得本次
71、設(shè)計(jì)中硬件仿真變的就比較簡(jiǎn)單,因?yàn)橛辛擞布抡婀ぞ呔涂梢噪S時(shí)修改程序,通過(guò)一步一步的調(diào)試來(lái)達(dá)到最后的目的,同時(shí)尤其學(xué)會(huì)了分部調(diào)試的思想,這就使得當(dāng)遇到問題時(shí)不會(huì)覺得無(wú)從下手,不會(huì)覺得那么迷茫,使調(diào)試變得比較有條理。</p><p> 在檢查完硬件電路沒有短路、斷路的情況下,接通電源,并且測(cè)試各個(gè)集成片的電源電壓是否符合要求,以及單片機(jī)晶振是否起振,只有晶振正常起振單片機(jī)才能工作,通過(guò)檢測(cè),上述情況均正常。<
72、;/p><p> 在protues軟件當(dāng)中以單步聯(lián)調(diào)的方法,測(cè)試按鍵邏輯與LCD1602現(xiàn)實(shí)邏輯在實(shí)際電路調(diào)試過(guò)程中,由于沒有深入的了解24l01的收發(fā)機(jī)制,導(dǎo)致第一次試驗(yàn)接收器,經(jīng)常接受到亂碼,系統(tǒng)不能正常工作。在查閱相關(guān)資料和優(yōu)化代碼后,以多次檢測(cè)接受數(shù)據(jù)的方法,成功解決了該問題。</p><p> 此外,雖然本設(shè)計(jì)可以實(shí)現(xiàn)最基本的無(wú)線投票并有智能輸出結(jié)果的功能,但作為一個(gè)無(wú)線投票器
73、的設(shè)計(jì)在功能方面還存在很多不足和需要改進(jìn)之處。譬如,投票過(guò)程中只能通過(guò)液晶顯示其投票結(jié)果,而不能顯示贊成和反對(duì)以及棄權(quán)的票數(shù)。但由于時(shí)間、硬件、經(jīng)濟(jì)等各方面條件的限制,我在此就不能作大的改動(dòng),只能附上一段程序,如果在主程序改成如下,并加之硬件條件的配合,便能實(shí)現(xiàn)無(wú)線投票并統(tǒng)計(jì)票數(shù)的功能:</p><p> void Piaoshu_View(){ uchar Piao;
74、60;if(RxBuf[1]==1) Piao++; if(RxBuf[2]==1) Piao++; if(RxBuf[3]==1) Piao++; if(Piao<2) { lcd_1602_word(0x80,16,"**Down****Down**&
75、quot;); lcd_1602_word(0xc0,1,(3-Piao+0x30)); } else { lcd_1602_word(0x80,16,"**Pass****Pass**"); lcd_1602_word(0xc
76、0,1,Piao+0x30); } }</p><p> 經(jīng)過(guò)編碼的投票信息經(jīng)發(fā)射模塊發(fā)射,然后被接收板的接收模塊接收后,又經(jīng)單片機(jī)辨別后輸出到液晶屏。任意按下兩個(gè)按鍵,液晶顯示如圖19所示。</p><p><b> 圖19液晶顯示現(xiàn)象</b></p><p><b> 5.4
77、 測(cè)試結(jié)論</b></p><p> 當(dāng)按下不同的按鍵后,接收板1602液晶屏上,能準(zhǔn)確顯示投票信息,實(shí)測(cè)傳輸有效距離超過(guò)10米。</p><p><b> 參考文獻(xiàn)</b></p><p> [1] 高偉.AT89C51單片機(jī)原理及應(yīng)用(第一版)[M].北京:國(guó)防工業(yè)出版社,2008,71-75</p><
78、;p> [2] 趙亮.液晶顯示模塊LCD1602應(yīng)用[J] .電子制作,2007年3月</p><p> [3] 江太輝.MCS-51系列單片機(jī)原理與應(yīng)用[M]. 廣州:華南理工大學(xué)出版社,1900-01,40~45</p><p> [4] 潘永雄.新編單片機(jī)原理與應(yīng)用[M].西安電子科技大學(xué)出版社,2007-02,19~25,65~66</p><p&g
79、t; [5] 英慶,王代華,張志杰.基于nRF24L01的無(wú)線數(shù)據(jù)傳輸系統(tǒng)[J].現(xiàn)代電子技術(shù),2008,31(7):68-82.</p><p> [6] 丁永紅,孫運(yùn)強(qiáng).基于nRF2401的無(wú)線數(shù)傳系統(tǒng)設(shè)計(jì)[J].國(guó)外電子測(cè)量技術(shù),2008,27(4):45-47.</p><p> [7] 時(shí)志云,蓋建平,王代華,等.新型高速無(wú)線射頻器件nRF24L01及其應(yīng)用[J].國(guó)外電子
80、元器件,2007(8):42-44.</p><p> [8] NorDic Semiconductor. nRF24L01 single chip 2.4 GHz transceiver product specification[EB/OL]. July 2007.</p><p> [9] 湯競(jìng)南,沈國(guó)琴.51單片機(jī)C語(yǔ)言開發(fā)與實(shí)例[M]. 北京:人民郵電出版社,2
81、008-02,1~4,89~95</p><p> [10] 張萌,和湘,姜斌.單片機(jī)應(yīng)用系統(tǒng)開發(fā)綜合實(shí)例(第一版)[M].北京:清華大學(xué)出版社,2007,94-97</p><p> [11] 譚浩強(qiáng).C程序設(shè)計(jì)(第二版) [M] .北京:清華大學(xué)出版社,2006-01</p><p> [12] 白倫博,陳棟,宋愛慧.一種無(wú)線通信系統(tǒng)中無(wú)線信號(hào)傳輸間歇時(shí)發(fā)
82、射數(shù)據(jù)突發(fā)的方法[Z].CN1627658:,2005.</p><p> [13]張默晗,張北,王天亮.無(wú)線信號(hào)傳輸裝置及傳輸方法[Z].CN101694740A:,2010.</p><p> [14] 林群堯. 無(wú)線信號(hào)傳輸裝置[Z]. CN301028800: ,2009.</p><p> [15] 張默晗,張北,王天亮. 無(wú)線信號(hào)傳輸裝置[Z].
83、CN201514694U: ,2010. </p><p><b> 附 錄</b></p><p> 附錄1:系統(tǒng)總體電路圖</p><p> 1.發(fā)射板電路原理圖:</p><p> 2.接收板電路原理圖:</p><p><b> 3.實(shí)物圖:</b><
84、;/p><p> 附錄2:發(fā)射板系統(tǒng)源代碼 </p><p><b> 程序:</b></p><p> /*--------------------------------------------------------------------------------------------------------------------&
85、lt;/p><p> #include <reg52.h></p><p> #include <intrins.h></p><p> typedef unsigned char uchar;</p><p> typedef unsigned char uint;</p><p> /
86、/****************************************NRF24L01端口定義***************************************</p><p> sbit MISO=P1^5;</p><p> sbit MOSI=P1^4;</p><p> sbitSCK =P1^3;</p
87、><p> sbitCE =P1^1;</p><p> sbitCSN=P1^2;</p><p> sbitIRQ=P1^6;</p><p> sbit LCD_RS =P2^5;</p><p> sbit LCD_RW =P2^6;</p><p> sb
88、it LCD_E =P2^7;</p><p> //************************************按鍵***************************************************</p><p> sbitKEY1=P3^1;</p><p> sbitKEY2=P3^3;</p>&l
89、t;p> sbitKEY3=P3^5;</p><p> //************************************數(shù)碼管位選*********************************************</p><p> sbitled1=P3^2;</p><p> sbitled2=P3^4;</p>
90、;<p> sbitled3=P3^6;</p><p> //*********************************************NRF24L01*************************************</p><p> #define TX_ADR_WIDTH 5 // 5 uints TX address wi
91、dth</p><p> #define RX_ADR_WIDTH 5 // 5 uints RX address width</p><p> #define TX_PLOAD_WIDTH 20 // 20 uints TX payload</p><p> #define RX_PLOAD_WIDTH 20 // 20 uints
92、TX payload</p><p> #define LCD_DATA P0</p><p> uint const TX_ADDRESS[TX_ADR_WIDTH]= {0x34,0x43,0x10,0x10,0x01};//本地地址</p><p> uint const RX_ADDRESS[RX_ADR_WIDTH]= {0x34,0
93、x43,0x10,0x10,0x01};//接收地址</p><p> //***************************************NRF24L01寄存器指令*******************************************************</p><p> #define READ_REG 0x00 // 讀寄存器
94、指令</p><p> #define WRITE_REG 0x20 // 寫寄存器指令</p><p> #define RD_RX_PLOAD 0x61 // 讀取接收數(shù)據(jù)指令</p><p> #define WR_TX_PLOAD 0xA0 // 寫待發(fā)數(shù)據(jù)指令</p><p> #def
95、ine FLUSH_TX 0xE1 // 沖洗發(fā)送 FIFO指令</p><p> #define FLUSH_RX 0xE2 // 沖洗接收 FIFO指令</p><p> #define REUSE_TX_PL 0xE3 // 定義重復(fù)裝載數(shù)據(jù)指令</p><p> #define NOP
96、 0xFF // 保留</p><p> //*************************************SPI(nRF24L01)寄存器地址****************************************************</p><p> #define CONFIG 0x00 // 配置收發(fā)狀態(tài),CRC校驗(yàn)?zāi)J揭约笆瞻l(fā)
97、狀態(tài)響應(yīng)方式</p><p> #define EN_AA 0x01 // 自動(dòng)應(yīng)答功能設(shè)置</p><p> #define EN_RXADDR 0x02 // 可用信道設(shè)置</p><p> #define SETUP_AW 0x03 // 收發(fā)地址寬度設(shè)置</p><p> #
98、define SETUP_RETR 0x04 // 自動(dòng)重發(fā)功能設(shè)置</p><p> #define RF_CH 0x05 // 工作頻率設(shè)置</p><p> #define RF_SETUP 0x06 // 發(fā)射速率、功耗功能設(shè)置</p><p> #define STATUS 0x07
99、 // 狀態(tài)寄存器</p><p> #define OBSERVE_TX 0x08 // 發(fā)送監(jiān)測(cè)功能</p><p> #define CD 0x09 // 地址檢測(cè) </p><p> #define RX_ADDR_P0 0x0A // 頻道0接收數(shù)據(jù)地址</p>
100、<p> #define RX_ADDR_P1 0x0B // 頻道1接收數(shù)據(jù)地址</p><p> #define RX_ADDR_P2 0x0C // 頻道2接收數(shù)據(jù)地址</p><p> #define RX_ADDR_P3 0x0D // 頻道3接收數(shù)據(jù)地址</p><p> #define RX_ADD
101、R_P4 0x0E // 頻道4接收數(shù)據(jù)地址</p><p> #define RX_ADDR_P5 0x0F // 頻道5接收數(shù)據(jù)地址</p><p> #define TX_ADDR 0x10 // 發(fā)送地址寄存器</p><p> #define RX_PW_P0 0x11 // 接收頻道0接收數(shù)
102、據(jù)長(zhǎng)度</p><p> #define RX_PW_P1 0x12 // 接收頻道0接收數(shù)據(jù)長(zhǎng)度</p><p> #define RX_PW_P2 0x13 // 接收頻道0接收數(shù)據(jù)長(zhǎng)度</p><p> #define RX_PW_P3 0x14 // 接收頻道0接收數(shù)據(jù)長(zhǎng)度</p><
103、p> #define RX_PW_P4 0x15 // 接收頻道0接收數(shù)據(jù)長(zhǎng)度</p><p> #define RX_PW_P5 0x16 // 接收頻道0接收數(shù)據(jù)長(zhǎng)度</p><p> #define FIFO_STATUS 0x17 // FIFO棧入棧出狀態(tài)寄存器設(shè)置</p><p> //******
104、********************************************************************************</p><p> void Delay(unsigned int s);</p><p> void inerDelay_us(unsigned char n);</p><p> void init
105、_NRF24L01(void);</p><p> uint SPI_RW(uint uchar);</p><p> uchar SPI_Read(uchar reg);</p><p> void SetRX_Mode(void);</p><p> uint SPI_RW_Reg(uchar reg, uchar value);
106、</p><p> uint SPI_Read_Buf(uchar reg, uchar *pBuf, uchar uchars);</p><p> uint SPI_Write_Buf(uchar reg, uchar *pBuf, uchar uchars);</p><p> unsigned char nRF24L01_RxPacket(unsign
107、ed char* rx_buf);</p><p> void nRF24L01_TxPacket(unsigned char * tx_buf);</p><p> //*****************************************長(zhǎng)延時(shí)*****************************************</p><p>
108、void Delay(unsigned int s)</p><p><b> {</b></p><p> unsigned int i;</p><p> for(i=0; i<s; i++);</p><p> for(i=0; i<s; i++);</p><p>&l
109、t;b> }</b></p><p> //******************************************************************************************</p><p> uint bdata sta; //狀態(tài)標(biāo)志</p><p> sbitRX_DR=st
110、a^6;</p><p> sbitTX_DS=sta^5;</p><p> sbitMAX_RT=sta^4;</p><p> /******************************************************************************************</p><p&g
111、t;<b> /*延時(shí)函數(shù)</b></p><p> /******************************************************************************************/</p><p> void inerDelay_us(unsigned char n)</p><p&g
112、t;<b> {</b></p><p> for(;n>0;n--)</p><p><b> _nop_();</b></p><p><b> }</b></p><p> //***************************************
113、*************************************************</p><p> /*NRF24L01初始化</p><p> //***************************************************************************************/</p><p>
114、 void init_NRF24L01(void)</p><p><b> {</b></p><p> inerDelay_us(100);</p><p> CE=0; // chip enable</p><p> CSN=1; // Spi disable </p><p
115、> SCK=0; // </p><p> SPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS, TX_ADR_WIDTH); // 寫本地地址</p><p> SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, RX_ADDRESS, RX_ADR_WIDTH); // 寫接收端地址</p&g
116、t;<p> SPI_RW_Reg(WRITE_REG + EN_AA, 0x01); // 頻道0自動(dòng)ACK應(yīng)答允許</p><p> SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x01); // 允許接收地址只有頻道0,如果需要多頻道可以參考Page21 </p><p> SPI_RW_Reg(WRITE_REG +
117、 RF_CH, 0); // 設(shè)置信道工作為2.4GHZ,收發(fā)必須一致</p><p> SPI_RW_Reg(WRITE_REG + RX_PW_P0, RX_PLOAD_WIDTH); //設(shè)置接收數(shù)據(jù)長(zhǎng)度,本次設(shè)置為32字節(jié)</p><p> SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x07); //設(shè)置發(fā)射速率為1MHZ,發(fā)射
118、功率為最大值0dB</p><p><b> }</b></p><p> /****************************************************************************************************</p><p> /*函數(shù):uint SPI_RW(uint
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 投票管理畢業(yè)論文
- 畢業(yè)論文——asp網(wǎng)上投票系統(tǒng)設(shè)計(jì)
- 畢業(yè)論文——在線投票系統(tǒng)
- 畢業(yè)論文——在線投票系統(tǒng)
- 畢業(yè)論文——在線投票系統(tǒng)
- 畢業(yè)論文---網(wǎng)上投票系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 無(wú)線傳感器系統(tǒng)的設(shè)計(jì)【畢業(yè)論文】
- 累積投票制度研究【畢業(yè)論文】
- 畢業(yè)論文——在線投票系統(tǒng) (2)
- 畢業(yè)論文——在線投票系統(tǒng) (2)
- 智能小車的無(wú)線控制器設(shè)計(jì)畢業(yè)論文
- 網(wǎng)站投票系統(tǒng)-本科畢業(yè)論文
- 基于zigbee的無(wú)線點(diǎn)菜器畢業(yè)論文
- 無(wú)線門鈴設(shè)計(jì)畢業(yè)論文
- 畢業(yè)論文---無(wú)線鼠標(biāo)設(shè)計(jì)
- 無(wú)線傳感器網(wǎng)絡(luò)畢業(yè)論文
- 畢業(yè)論文范文——無(wú)線調(diào)頻發(fā)射器的設(shè)計(jì)
- 單片機(jī)無(wú)線搶答器設(shè)計(jì)畢業(yè)論文
- 畢業(yè)論文范文——企業(yè)電子投票系統(tǒng)
- 基于arm的無(wú)線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)設(shè)計(jì)畢業(yè)論文
評(píng)論
0/150
提交評(píng)論