基于430單片機(jī)控制的智能遙控小車論文_第1頁
基于430單片機(jī)控制的智能遙控小車論文_第2頁
基于430單片機(jī)控制的智能遙控小車論文_第3頁
基于430單片機(jī)控制的智能遙控小車論文_第4頁
基于430單片機(jī)控制的智能遙控小車論文_第5頁
已閱讀5頁,還剩26頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、. . . . 2013年電子工程學(xué)院“MSP430單片機(jī)”設(shè)計競賽競 賽論 文作品題目 905無線智能遙控小車 組員:睿智郭晉陽撥2013年6月17日31 / 31目錄一、引言3二、論證方案42.1無線遙控論證方案42.2 電機(jī)驅(qū)動論證方案4三、系統(tǒng)設(shè)計53.1 系統(tǒng)需求分析53.2 無線模塊63.3 功能芯片430.7 3.4 驅(qū)動電路與驅(qū)動芯片LM298.8 3.5 編程軟件與其下載器.9四、系統(tǒng)實(shí)現(xiàn)94.1 系統(tǒng)實(shí)現(xiàn)概述9五、軟件設(shè)計105.1 主控程序流程圖11六、系統(tǒng)調(diào)試與測試126.1 系統(tǒng)功能檢測.126.2 檢測過程.12七、總結(jié)13附錄:程序.14參考文獻(xiàn)30 905無線智

2、能小車設(shè)計1引言無線通信主要包括微波通信和衛(wèi)星通信。微波是一種無線電波,它傳送的距離一般只有幾十千米。但微波的頻帶很寬,通信容量很大。微波通信每隔幾十千米要建一個微波中繼站。衛(wèi)星通信是利用通信衛(wèi)星作為中繼站在地面上兩個或多個地球站之間或移動體之間建立微波通信聯(lián)系。無線通信(Wireless Communication)是利用電磁波信號可以在自由空間中傳播的特性進(jìn)行信息交換的一種通信方式,近些年信息通信領(lǐng)域中,發(fā)展最快、應(yīng)用最廣的就是無線通信技術(shù)。在移動中實(shí)現(xiàn)的無線通信又通稱為移動通信,人們把二者合稱為無線移動通信。從最初的電報開始,經(jīng)過150多年的現(xiàn)代電信的發(fā)展是來自各界的成千上萬科學(xué)家、工程

3、師和研究人員的辛勤勞動的結(jié)果。他們當(dāng)中只有少數(shù)獨(dú)立負(fù)責(zé)發(fā)明的人成了名,而大多數(shù)達(dá)到頂點(diǎn)的發(fā)明是許多個人的成果。nRF905采用Nordic公司的VLSI ShockBurst技術(shù)。ShockBurst技術(shù)使nRF905能夠提供高速的數(shù)據(jù)傳輸,而不需要昂貴的高速M(fèi)CU來進(jìn)行數(shù)據(jù)處理/時鐘覆蓋。通過將與RF協(xié)議有關(guān)的高速信號處理放到芯片,nRF905提供給應(yīng)用的微控制器一個SPI接口,速率由微控制器自己設(shè)定的接口速度決定。nRF905通過ShockBurst工作模式在RF以最大速率進(jìn)行連接時降低數(shù)字應(yīng)用部分的速度來降低在應(yīng)用中的平均電流消耗。在ShockBurst RX模式中,地址匹配AM和數(shù)據(jù)準(zhǔn)

4、備就緒DR信號通知MCU一個有效的地址和數(shù)據(jù)包已經(jīng)各自接收完成。在ShockBurst TX模式中,nRF905自動產(chǎn)生前導(dǎo)碼和CRC校驗(yàn)碼,數(shù)據(jù)準(zhǔn)備就緒DR信號通知MCU數(shù)據(jù)傳輸已經(jīng)完成??傊?,這意味著降低MCU的存儲器需求也就是說降低MCU成本,又同時縮短軟件開發(fā)時間。而且在433MHz的頻段它是可以免費(fèi)的使用,最高的共工作速率達(dá)到50kbps,高效的GFSK調(diào)制,抗干擾能力強(qiáng),特別適合工業(yè)控制場合。智能作為現(xiàn)代的新發(fā)明,是以后的發(fā)展方向,他可以按照預(yù)先設(shè)定的模式在一個環(huán)境里自動的運(yùn)作,不需要人為的管理,可應(yīng)用于科學(xué)勘探等等的用途。本次設(shè)計的無線智能小車,采用MSP430單片機(jī)作為小車的檢

5、測和控制核心;采用紅外蔽障模塊,從而把小車前方反饋到的信號送單片機(jī),使單片機(jī)按照預(yù)定的工作模式控制小車的運(yùn)動與停止,當(dāng)無線遙控控制小車運(yùn)行時,如果前方出現(xiàn)障礙物,紅外蔽障模塊會自動感應(yīng)并將信號傳給單片機(jī),單片機(jī)控制使小車強(qiáng)行靜止,彩燈閃爍,以便于操作者與時發(fā)現(xiàn)問題更好的控制小車。雖然制作簡單,但具有高度的智能化、人性化,一定程度體現(xiàn)了智能。2 無線智能遙控車設(shè)計方案論證無線智能遙控車對于控制芯片的實(shí)時性,穩(wěn)定性,快速性,準(zhǔn)確性都達(dá)到了一個很高的要求,介于本設(shè)計對于主控芯片的要求,我們選擇了MSP430這款單片機(jī)。它的部資源也比較豐富,性能全面而且適用性強(qiáng),能覆蓋多種應(yīng)需求。用戶可以根據(jù)設(shè)計的需

6、要設(shè)計成各種不同的應(yīng)用的控制系統(tǒng)。2.1 無線遙控方案論證當(dāng)前遙控器模型一般都采用連線、紅外、無線這三種方式來進(jìn)行對被控制器的控制。連線遙控式的遙控器它的遙控器和被控制端通過導(dǎo)線直接連接起來,但缺點(diǎn)很明顯,由于是由到導(dǎo)線直接連接,這就很容易引起導(dǎo)線的纏繞,打結(jié),連接,最突出的是它的受到導(dǎo)線長度的制約,不能進(jìn)行遠(yuǎn)距離的遙控。紅外遙控器的特點(diǎn)是通過遙控器發(fā)射紅外光進(jìn)行傳遞信息,它的應(yīng)用很廣泛,比如:電視機(jī)等一些家用電器。紅外線在介質(zhì)中傳播會產(chǎn)生衰減,特別在金屬中傳播衰減很大,它的穿透力有限。另外由于其存在定向性的問題,并且它不能穿透物體,而且在使用紅外線傳送信號時,容易受到照明光和外來雜波的影響和

7、干擾,所以不適合這個項(xiàng)目開發(fā)的要求。無線遙控方式遙控器和接受器兩端通過無線電波傳送控制信息。但是市面上那種簡單的無線遙控,它的無線遙控方式很容易受到其它的無線電波的干擾,因此必須采用抗干擾能力強(qiáng)的無線發(fā)射裝置來提高系統(tǒng)的穩(wěn)定性。2.2電機(jī)驅(qū)動部分的方案論證電機(jī)驅(qū)動部分通過單片機(jī)輸出的脈沖信號來控制小車的方向,和它的正轉(zhuǎn)和反轉(zhuǎn)。這個問題有兩種方案來解決。第一種:是我們經(jīng)常玩的,可以隨處買到的遙控車玩具,它包括兩個電機(jī):一個用于控制小車的轉(zhuǎn)向;另一個電機(jī)是作為小車的動力系統(tǒng),控制小車的前進(jìn)和后退。但是這種小車對于機(jī)械部分的要很高的,由于設(shè)備的不足和資金的缺乏,最終果斷放棄了這種方案。第二種是在小車

8、的左右各放一個直流電機(jī),通過控制左右兩個電機(jī)的轉(zhuǎn)動方向來控制小車的前進(jìn)后退以與它的轉(zhuǎn)向,通過實(shí)驗(yàn),發(fā)現(xiàn)如果采用這種方案,成本會很低,而且設(shè)備也是現(xiàn)成的。因此本項(xiàng)目采用這種方案。3 系統(tǒng)設(shè)計3.1系統(tǒng)需求分析系統(tǒng)主要由五大模塊構(gòu)成:控制信息產(chǎn)生模塊、控制信息發(fā)送模塊、控制信息接收模塊、驅(qū)動模塊。結(jié)構(gòu)框圖如圖3.1所示。圖 3.1 系統(tǒng)模塊組成本項(xiàng)目主要的硬件模塊有:鍵盤、發(fā)送主控制板、發(fā)射器、電源、接收主控模塊、接收模塊、電機(jī)驅(qū)動模塊與小車實(shí)體部分。主要實(shí)現(xiàn)的功能有:小車的前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)。由于這款小車是四輪驅(qū)動,它可以實(shí)現(xiàn)原地的轉(zhuǎn)向,所以根本不用擔(dān)心它的動力是否足夠和他的靈活性。3.2無

9、線模塊nRF905可以自動完成處理字頭和CRC(循環(huán)冗余碼校驗(yàn))的工作,可由片硬件自動完成曼徹斯特編碼/解碼,使用SPI接口與微控制器通信,配置非常方便,其功耗非常低,以-10dBm的輸出功率發(fā)射時電流只有11mA,在接收模式時電流為12.5mA。 nRF905單片無線收發(fā)器工作由一個完全集成的頻率調(diào)制器,一個帶解調(diào)器的接收器,一個功率放大器,一個晶體震蕩器和一個調(diào)節(jié)器組成。ShockBurst工作模式的特點(diǎn)是自動產(chǎn)生前導(dǎo)碼和CRC,可以很容易通過SPI接口進(jìn)行編程配置。nRF905管腳原理圖如圖3.2所示。圖3.2 nRF905管腳原理圖nRF905各管腳功能如表1所示。表1 nRF905各

10、管腳功能說明管腳名稱管腳功能說明1VCC電源電源+1.9-3.6V DC2TX_EN數(shù)字輸入TX_EN= 1 TX 模式 TX_EN= 0 RX 模式3TRX_CE數(shù)字輸入使能芯片發(fā)射或接收4PWR_UP數(shù)字輸入芯片上電5uCLK時鐘輸出本模塊該腳廢棄不用,向后兼容6CD數(shù)字輸出載波檢測7AM數(shù)字輸出地址匹配8DR數(shù)字輸出接收或發(fā)射數(shù)據(jù)完成9MISOSPI 接口SPI 輸出10MOSISPI 接口SPI 輸入11SCKSPI 時鐘SPI 時鐘12CSNSPI 使能SPI 使能13GND地接地14GND地接地3.3功能芯片430MSP430系列是一個16位的、具有精簡指令集的、超低功耗的混合型單

11、片機(jī)。單片機(jī)就是一塊芯片,但是這塊芯片具有一些特殊的功能,他的功能的實(shí)現(xiàn)要靠我們使用者自己編程完成。我們編寫程序的目的就是控制各個I/O 口在不同時間輸出不同電平(高電平1或者低電平0),而這個時間段相對于我們來說是很短的,至少是微秒級的時間,也就是說,單片機(jī)可以在幾個微秒的時間切換其I/O 口輸出的電平狀態(tài)。 作為用戶,我們需要做的僅僅是怎么使用單片機(jī),也就是給單片機(jī)編寫程序,控制它的I/O 口的電平狀態(tài)。MSP430G2系列是儀器近期推出的一款產(chǎn)品,在秉承MSP430超低功耗,高集成度的優(yōu)點(diǎn)的同時,具有高性價比的特點(diǎn)。該系列被稱為ValueLine,旨在以8位單片機(jī)的價格實(shí)現(xiàn)16位單片機(jī)的

12、性能。MSP-EXP430Launchpad是TI推出的又一套用于MSP430和電路實(shí)驗(yàn)的開發(fā)板。在該套不到名片大小的開發(fā)板上集成了一片超低功耗16位MSP430單片機(jī),USB口仿真器電路以與各引腳接口等。利用LaunchPad開發(fā)板,僅需一臺筆記本電腦,就可以在基于圖形界面的編程軟件CCS上進(jìn)行嵌入式軟硬件系統(tǒng)的開發(fā)和調(diào)試,真正做到將實(shí)驗(yàn)室裝進(jìn)口袋里,讓使用者可以隨時隨地,不受場地和設(shè)備的限制進(jìn)行430的開發(fā)工作。3.4驅(qū)動電路與驅(qū)動芯片LM2983.41驅(qū)動電路L298N是SGS公司生產(chǎn)的一種高電壓、大電流電機(jī)驅(qū)動芯片。該芯片采用15腳封裝。主要特點(diǎn)是:工作電壓高,最高工作電壓可達(dá)46V;

13、輸出電流大,瞬間峰值電流可達(dá)3A,持續(xù)工作電流為2A;額定功率25W。含兩個H橋的高電壓大電流全橋式驅(qū)動器,可以用來驅(qū)動直流電動機(jī)和步進(jìn)電動機(jī)、繼電器線圈等感性負(fù)載;采用標(biāo)準(zhǔn)邏輯電平信號控制;具有兩個使能控制端,在不受輸入信號影響的情況下允許或禁止器件工作有一個邏輯電源輸入端,使部邏輯電路部分在低電壓下工作;可以外接檢測電阻,將變化量反饋給控制電路。使用L298N芯片驅(qū)動電機(jī),該芯片可以驅(qū)動一臺兩相步進(jìn)電機(jī)或四相步進(jìn)電機(jī),也可以驅(qū)動兩臺直流電機(jī)。3.42 L298N驅(qū)動電路原理圖3.5編程軟件與其下載器當(dāng)然我們使用的編譯器IAR for MSP430,它的功能沒有CCS強(qiáng)大復(fù)雜,但勝在學(xué)習(xí)簡單

14、容易使用方便快捷。4 系統(tǒng)實(shí)現(xiàn) 系統(tǒng)實(shí)現(xiàn)概述系統(tǒng)的實(shí)現(xiàn)包括硬件和軟件兩個部分,硬件包括nRF905芯片2個、發(fā)射天線2個、430單片機(jī)開發(fā)板2塊、L298N驅(qū)動電路一塊、小車底板1塊,直流電機(jī)4個:包括小車輪胎4個、遙控鍵盤1塊、數(shù)據(jù)線1根、電池盒1個、鋰電池1個、電腦1臺,導(dǎo)線若干。軟件使用有IAR程序下載軟件。5 系統(tǒng)的軟件設(shè)計軟件要實(shí)現(xiàn)的功能是:鍵盤對單片機(jī)輸入數(shù)據(jù),單片機(jī)對獲得的數(shù)據(jù)進(jìn)行處理,送到無線模塊進(jìn)行數(shù)據(jù)的再次發(fā)送,同時接收到無線信息,發(fā)送到另一塊單片機(jī),輸出相應(yīng)的信號到L298M電機(jī)驅(qū)動模塊。系統(tǒng)框圖如圖5.1所示。鍵盤輸入單片機(jī)接收信號無線模塊接收并發(fā)送無線模塊接收并發(fā)送到

15、單片機(jī)單片機(jī)接收信號并發(fā)送到電機(jī)驅(qū)動模塊L298M驅(qū)動模塊圖5.1 系統(tǒng)框圖5.1主控程序流程圖主控發(fā)送程序首先進(jìn)行系統(tǒng)初始化,然后發(fā)送信號,輸出相應(yīng)的電壓控制字,等待鍵盤輸入。根據(jù)鍵盤的不同輸入,執(zhí)行不同的系統(tǒng)程序,執(zhí)行后,返回按鍵掃描狀態(tài),等待下一次按鍵。框圖如圖5.2所示。開 始初始化RF905初始化發(fā)送代碼發(fā)送按鍵代碼結(jié)束NY接收數(shù)據(jù)成功?N圖 5.2 控制發(fā)送流程圖主控接收程序首先進(jìn)行系統(tǒng)初始化,然后接收信號,輸出相應(yīng)的電壓控制字。根據(jù)鍵盤的不同輸入,執(zhí)行不同的系統(tǒng)程序,執(zhí)行后,返回等待狀態(tài),等待下一次接收??驁D如圖5.3所示。開始初始化RF905初始化寄存器初始化MCU接收數(shù)據(jù)成功

16、?MCU向小車發(fā)送指令NY圖5.3 接收主流程圖6 系統(tǒng)檢測與調(diào)試6.1系統(tǒng)功能檢測系統(tǒng)的檢測是為了發(fā)現(xiàn)硬件和軟件中存在的問題和系統(tǒng)是否達(dá)到了項(xiàng)目的要求,在系統(tǒng)的運(yùn)行過程中發(fā)現(xiàn)問題,從而改進(jìn)更能夠提高系統(tǒng)的穩(wěn)定性。系統(tǒng)調(diào)試是系統(tǒng)到現(xiàn)場后,對系統(tǒng)硬件、組態(tài)軟件進(jìn)行現(xiàn)場檢驗(yàn)的過程,以確保供應(yīng)的硬件、軟件滿足項(xiàng)目的要求。6.2 檢測過程測試按照項(xiàng)目的要求進(jìn)行,首先組裝好小車后 ,檢測小車的硬件連接是否正常,再次檢測電源系統(tǒng)沒有問題,兩項(xiàng)都正常后,初始化無線模塊和430開發(fā)板,按下遙控器上的按鍵,而后小車的前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)都沒有問題。經(jīng)檢測小車基本實(shí)現(xiàn)了系統(tǒng)功能的要求,同時我們也實(shí)際測了905收

17、發(fā)模塊的信號傳輸距離,經(jīng)多次測量歸納,無線遙控智能小車的遙控距離在150米左右,信號收發(fā)相對穩(wěn)定。7 總結(jié)參加這次比賽讓我們受益匪淺,非常感學(xué)院舉辦的這場比賽。它拓寬了我們的知識面,接觸了許多新的知識,最重要的是提高了我們的能力,每一個小小的成功帶給我們的喜悅,讓我們有信心去面對其他未知的困難。 這個無線遙控小車是我們?nèi)齻€人的第一個作品,我們?yōu)楣餐哪繕?biāo)走到一起并且為之努力。其中遇到了不少困難,我們一起克服沒有放棄過,相信我們以后會更加團(tuán)結(jié),做出更好的作品。并且在這里由衷的感電子創(chuàng)新協(xié)會各位學(xué)長對我們的大力幫助與支持!附錄:程序列表發(fā)射#include <reg52.h> #inc

18、lude <ABSACC.h> #include <intrins.h> #include <stdio.h> #define uint unsigned int #define uchar unsigned char #define BYTE_BIT0 0x01 #define BYTE_BIT1 0x02 #define BYTE_BIT2 0x04 #define BYTE_BIT3 0x08 #define BYTE_BIT4 0x10 #define BYTE_BIT5 0x20 #define BYTE_BIT6 0x40 #define BYT

19、E_BIT7 0x80 bdata unsigned char DATA_BUF; #define DATA7 (DATA_BUF&BYTE_BIT7) != 0) #define DATA0 (DATA_BUF&BYTE_BIT0) != 0) sbit flag =DATA_BUF7; sbit flag1 =DATA_BUF0;#define TxRxBuf_Len 4 /發(fā)送數(shù)據(jù)緩沖區(qū)unsigned char TxRxBufTxRxBuf_Len= 0,0,0,0 ; char temp6; /溫度緩沖 sbit TXEN=P36; /NRF905 控制 IOsbit

20、 TRX_CE=P04; sbit PWR=P32; sbit MISO=P01; /NRF905 SPI 接口sbit MOSI=P34; sbit SCK=P00; sbit CSN=P35; sbit AM=P02; sbit DR=P33; sbit CD=P37; sbit led3=P15; sbit led2=P16; sbit led1=P17; sbit led0=P14; sbit Key0 = P20; sbit Key1 = P21; sbit Key2 = P22; sbit Key3 = P23;sbit Key4 = P24; uchar seg10=0xC0,0

21、xCF,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90; /09 段碼 #define WC 0x00 /nrf905 控制指令#define RC 0x10 #define WTP 0x20 #define RTP 0x21 #define WTA 0x22 #define RTA 0x23 #define RRP 0x24 unsigned char idata RFConf11= 0x00, /配置命令/ 0x4c, /CH_NO,配置頻段在 430MHZ 0x0c, /輸出功率為 10db,不重發(fā),節(jié)電為正常模式 0x44, /地址寬度設(shè)置,為 4 字節(jié)

22、 0x04,0x04, /接收發(fā)送有效數(shù)據(jù)長度為 32 字節(jié) 0xCC,0xCC,0xCC,0xCC, 0x58, /CRC 充許,8 位 CRC 校驗(yàn),外部時鐘信號不使 能,16M 晶振 ;bit lcdbit; code TxAddress4=0xcc,0xcc,0xcc,0xcc; static void Delay(uchar n) uint i; while(n-) for(i=0;i<80;i+); void SpiWrite(unsigned char send) unsigned char i; DATA_BUF=send; for (i=0;i<8;i+) if

23、(DATA7) /總是發(fā)送最高位 MOSI=1; else MOSI=0; SCK=1; DATA_BUF=DATA_BUF<<1; SCK=0; void nRF905Init(void) /初始化 nRF905 CSN=1; / Spi disable SCK=0; / Spi clock line init low DR=0; / Init DR for input AM=0; / Init AM for input CD=0; / Init CD for input PWR=1; / nRF905 power on TRX_CE=0; / Set nRF905 in sta

24、ndby mode TXEN=0; / set radio in Rx mode void Config905(void) /初始化寄存器 uchar i; CSN=0; / Spi enable for write a spi command /SpiWrite(WC); / Write config command 寫放配置命令 for (i=0;i<11;i+) / Write configration words 寫放配置字 SpiWrite(RFConfi); CSN=1; / Disable Spi void TxPacket(uchar *TxRxBuf) uchar i;

25、 /Config905(); CSN=0; SpiWrite(WTP); / Write payload command for (i=0;i<4;i+) SpiWrite(TxRxBufi); / Write 32 bytes Tx data CSN=1; Delay(1); / Spi disable CSN=0; / Spi enable for write a spi command SpiWrite(WTA); / Write address command for (i=0;i<4;i+) / Write 4 bytes address SpiWrite(TxAddre

26、ssi); CSN=1; / Spi disable TRX_CE=1; / Set TRX_CE high,start Tx data transmission Delay(1); /while (DR!=1); TRX_CE=0; / Set TRX_CE low void SetTxMode(void) TRX_CE=0; TXEN=1; Delay(1); / delay for mode change(>=650us) void init() nRF905Init(); Config905(); P0= seg8; led0=0; led1=0; led2=0; led3=0;

27、 void main(void) uchar i; init(); while(1) if(Key0=0) /鍵 0 按下 /Delay(5); if(Key0=0) TxRxBuf0=0x28; P0= seg1; led0=1; led1=1; led2=1; led3=0; while(!Key0);for(i=0;i<2;i+) SetTxMode();/ Set nRF905 in Tx mode TxPacket(TxRxBuf);/ Send data by nRF905 if(Key1=0) /Delay(5); if(Key1=0) TxRxBuf0=0x29; P0=

28、 seg2; led0=1; led1=1; led2=0; led3=1; while(!Key1); for(i=0;i<2;i+) SetTxMode();/ Set nRF905 in Tx mode TxPacket(TxRxBuf);/ Send data by nRF905 / if(Key2=0) / while(!Key2); /Delay(5); if(Key2=0) TxRxBuf0=0x30; P0= seg3; led0=1; led1=0; led2=1; led3=1; while(!Key2); for(i=0;i<2;i+) /有鍵 1 按下 /等

29、待按鍵松開 GREEN SetTxMode();/ Set nRF905 in Tx mode TxPacket(TxRxBuf);/ Send data by nRF905 / if(Key3=0) /Delay(5); if(Key3=0) TxRxBuf0=0x31; P0= seg4; led0=0; led1=1; led2=1; led3=1; while(!Key3); for(i=0;i<2;i+) SetTxMode();/ Set nRF905 in Tx mode TxPacket(TxRxBuf);/ Send data by nRF905 /Delay(250)

30、; if(Key4=0) /Delay(5); if(Key4=0) TxRxBuf0=0x32; P0= seg5; led0=1; led1=1; led2=1; led3=1; while(!Key4); for(i=0;i<2;i+) SetTxMode();/ Set nRF905 in Tx mode TxPacket(TxRxBuf);/ Send data by nRF905 接收#include <reg52.h> #include <ABSACC.h> #include <intrins.h>#include <stdio.h

31、>#define uint unsigned int /0 255 #define uchar unsigned char#define BYTE_BIT0 0x01#define BYTE_BIT1 0x02#define BYTE_BIT2 0x04 #define BYTE_BIT3 0x08 #define BYTE_BIT4 0x10 #define BYTE_BIT5 0x20 #define BYTE_BIT6 0x40 #define BYTE_BIT7 0x80uchar data temp_data2=0x00,0x00; uchar dispaly7; bdata

32、unsigned char DATA_BUF; #define DATA7 (DATA_BUF&BYTE_BIT7) != 0) #define DATA0 (DATA_BUF&BYTE_BIT0) != 0) sbit flag =DATA_BUF7; sbit flag1 =DATA_BUF0; #define TxRxBuf_Len 4 unsigned char TxRxBufferTxRxBuf_Len;sbit TXEN=P31; sbit TRX_CE=P14; sbit PWR=P32;sbit MISO=P11; sbit MOSI=P34; sbit SCK

33、=P10; sbit CSN=P35;sbit AM=P12; /905狀態(tài)標(biāo)志sbit DR=P33; sbit CD=P37;sbit DQ = P35; sbit BELL = P34;sbit LED1=P27;sbit LED2=P26;/sbit KEY0=P36; /sbit KEY1=P37; sbit OUTA1 = P20; sbit OUTA2 = P21; sbit OUTB1 = P22; sbit OUTB2 = P23;uchar seg10=0xC0,0xCF,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90; /09 段 碼 #d

34、efine WC 0x00 #define RC 0x10 #define WTP 0x20 #define RTP 0x21 #define WTA 0x22 #define RTA 0x23 #define RRP 0x24 /code TxAddress5=0xcc,0xcc,0xcc,0xcc,0xcc;/*void delay_ms(uchar ms) int i; while(ms-) for(i=0; i<100; i+); */ unsigned char idata RFConf11= 0x00, 0x4c, 0x0c, 0x44,0x04,0x04, 0xcc,0xc

35、c,0xcc,0xcc, 0x58, ; /CRC 充許,8 位 CRC 校驗(yàn),外部時鐘信號不使 能,16M void Delay(uchar n) uint k; while(n-) for(k=0;k<8;k+); void delay1(uint i) for(;i>0;i-); unsigned char SpiRead(void) unsigned char j; for (j=0;j<8;j+) DATA_BUF=DATA_BUF<<1; SCK=1; if (MISO) /讀取最高位,保存至最末尾,通過左移位完成整個字節(jié) DATA_BUF|=BYTE

36、_BIT0; else DATA_BUF&=BYTE_BIT0; SCK=0; return DATA_BUF; void SpiWrite(unsigned char send) unsigned char i; DATA_BUF=send; for (i=0;i<8;i+) if (DATA7) /總是發(fā)送最高位 MOSI=1; else MOSI=0; SCK=1; DATA_BUF=DATA_BUF<<1; SCK=0; void nRF905Init(void) CSN=1; SCK=0; DR=0; AM=0; CD=0; PWR=1; TRX_CE=0;

37、 TXEN=0; void Config905(void) uchar i; CSN=0; / Spi enable for write a spi command /SpiWrite(WC); / Write config command 寫放配置命令 for (i=0;i<11;i+) / Write configration words 寫放配置字 SpiWrite(RFConfi); CSN=1; / Disable Spi void SetRxMode(void) TXEN=0; TRX_CE=1; Delay(1); / delay for mode change(>=650us) unsigned char CheckDR(void) /檢查是否有新數(shù)據(jù)傳入 Data Ready if (DR=1&&TRX

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論