2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩52頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  本科學(xué)生畢業(yè)論文(設(shè)計)</p><p> 題目(中 文):基于安卓的藍牙RGB燈</p><p> (英 文):Bluetooth RGB Lights Based on Android</p><p> 姓 名</p><p> 學(xué) 號</p><p> 院 (

2、系)電子工程系</p><p> 專業(yè)、年級電子信息工程 級</p><p> 指導(dǎo)教師</p><p>  xx科技學(xué)院本科畢業(yè)論文(設(shè)計)誠信聲明</p><p>  本人鄭重聲明:所呈交的本科畢業(yè)論文(設(shè)計),是本人在指導(dǎo)老師的指導(dǎo)下,獨立進行研究工作所取得的成果,成果不存在知識產(chǎn)權(quán)爭議,除文中已經(jīng)注明引用的內(nèi)容外,本論文不含任

3、何其他個人或集體已經(jīng)發(fā)表或撰寫過的作品成果。對本文的研究做出重要貢獻的個人和集體均已在文中以明確方式標明。本人完全意識到本聲明的法律結(jié)果由本人承擔(dān)。</p><p>  本科畢業(yè)論文(設(shè)計)作者簽名:</p><p>  年 月 日</p><p>  畢業(yè)論文(設(shè)計)任務(wù)書</p><p>  xx科技學(xué)院本科畢業(yè)論文

4、(設(shè)計)任務(wù)書</p><p>  注:本任務(wù)書一式三份,由指導(dǎo)教師填寫,經(jīng)教研室審批后一份下達給學(xué)生,一份交指導(dǎo)教師,一份留系里存檔。</p><p>  xx科技學(xué)院本科畢業(yè)論文(設(shè)計)開題報告書</p><p>  注:此表由學(xué)生本人填寫,一式三份,一份留系里存檔,指導(dǎo)老師和本人各保存一份</p><p>  xx科技學(xué)院畢業(yè)論文(設(shè)計

5、)中期檢查表</p><p>  注:此表用于指導(dǎo)教師在學(xué)生畢業(yè)論文(設(shè)計)初稿完成后對學(xué)生執(zhí)行任務(wù)書情況進行中期檢查時用,由指導(dǎo)教師填寫。</p><p>  xx科技學(xué)院畢業(yè)設(shè)計(論文)指導(dǎo)過程記錄表</p><p>  注:本表與畢業(yè)論文一起裝訂存檔。</p><p>  xx科技學(xué)院本科畢業(yè)論文(設(shè)計)評審表</p>&

6、lt;p>  說明:評定成績分為優(yōu)秀、良好、中等、及格、不及格五個等級,實評總分90—100分記為優(yōu)秀,80—89分記為良好,70—79分記為中等,60—69分記為及格,60分以下記為不及格。</p><p>  說明:評定成績分為優(yōu)秀、良好、中等、及格、不及格五個等級,實評總分90—100分記為優(yōu)秀,80—89分記為良好,70—79分記為中等,60—69分記為及格,60分以下記為不及格。</p>

7、;<p>  xx科技學(xué)院本科畢業(yè)論文(設(shè)計)答辯記錄表</p><p><b>  目 錄</b></p><p><b>  緒論1</b></p><p>  1、藍牙RGB硬件控制3</p><p><b>  1.1開發(fā)工具3</b></p

8、><p>  1.1.1 電路設(shè)計軟件protel3</p><p>  1.1.2 軟件開發(fā)工具keil3</p><p>  1.2控制芯片STC12A32S23</p><p>  1.3 藍牙通信原理3</p><p><b>  1.4電路原理4</b></p>&l

9、t;p>  1.5 RGB LED變色原理6</p><p>  1.6 下位機軟件需求分析7</p><p>  1.7與上位機通信接口7</p><p>  1.8下位機程序流程圖8</p><p>  2、上位機Android軟件介紹10</p><p>  2.1 Android開發(fā)工具Ecli

10、pse10</p><p>  2.2 Android軟件需求分析10</p><p>  2.3 Android頁面布局11</p><p>  2.4 Android 控制下位機的實現(xiàn)11</p><p>  2.5 基于Android 藍牙RGB燈實物展示12</p><p><b>  結(jié)論

11、13</b></p><p><b>  參考文獻14</b></p><p><b>  附錄A15</b></p><p><b>  致 謝28</b></p><p><b>  插圖索引</b></p><

12、;p>  圖 1 設(shè)計模型2</p><p>  圖 3 主控原理圖4</p><p><b>  圖 4 藍牙5</b></p><p>  圖 5 電源電路5</p><p>  圖 6 RGB驅(qū)動電路5</p><p>  圖 7 PCB板圖6</p><

13、;p>  圖 8 PWM調(diào)色結(jié)構(gòu)6</p><p>  圖 9 需求分析圖7</p><p>  圖 10 與上位機通信接口結(jié)構(gòu)7</p><p>  圖 11 主程序流程圖8</p><p>  圖 12 定時器中斷執(zhí)行流程圖8</p><p>  圖 13 接收中斷流程圖9</p>

14、<p>  圖 14 上位機需求分析10</p><p>  圖 15 安卓頁面11</p><p>  圖 16 實物圖12</p><p>  基于安卓的藍牙RGB燈</p><p><b>  摘 要</b></p><p>  本文詳細闡述了基于android藍牙RGB燈

15、的整個構(gòu)成,該設(shè)計主要是用于智能家居、舞臺燈光或者音樂燈光,其控制方式是藍牙控制。下位機主芯片為STC12A32S2,藍牙部分為BMX-02C模塊?;赼ndroid藍牙RGB燈主要包括兩個部分:1、下位機控制RGB 燈部分;2、上位機android應(yīng)用部分。本文依次從下位機的電路設(shè)計、藍牙通信方式、軟件通信接口、控制RGB燈變色的PWM原理、與上位機通信接口、android上位機軟件需求分析、android布局、android控制變色

16、的實現(xiàn)方法、android音樂幻燈的實現(xiàn)方法、android短信和來電提醒功能的實現(xiàn)等介紹了藍牙幻燈的原理和設(shè)計過程,最后將基于android藍牙RGB燈的下位機的程序源碼附上。</p><p>  【關(guān)鍵詞】:android,RGB,PWM,智能家居,藍牙 </p><p>  Bluetooth RGB Lights Based on Android</p><p&

17、gt;<b>  Abstract</b></p><p>  This paper expounds on the Android Bluetooth RGB of the lamp in detail, and this design is mainly used for smart home, stage lighting or light music, whose control m

18、ode is Bluetooth control. The main chip of lower machine is STC12A32S2, and the Bluetooth part is BMX- 02c module. Based on the Android Bluetooth, the RGB lamp mainly includes two parts : One is lower machine control RG

19、B lights part; The other is Android application part. This paper introduces the theory of Bluetooth slideshows and </p><p>  【Key words】 Android,RGB,PWM,Smart home,Bluetooth </p><p><b>  緒

20、論</b></p><p>  隨著現(xiàn)在科技的發(fā)展,電子產(chǎn)品的發(fā)展也隨之發(fā)生劇烈變革,自從2008年開始手機就開始往智能方向發(fā)展,到達今日中國的普及率已經(jīng)超過了66%,而每一臺智能機都配備了藍牙通信。近幾年來平板電腦等手持智能設(shè)備也得到了長足的發(fā)展,而這些設(shè)備都基本配備了藍牙,這使得我們開發(fā)這個藍牙幻燈有了堅實的硬件依靠基礎(chǔ)。</p><p>  另外隨著近幾年環(huán)境的惡化和能源

21、危機的不斷凸顯,人們也越來越注重對環(huán)境的保護和能源的節(jié)約,所以家電走向低能耗時代是不爭的事實,而家中燈光等照明設(shè)備是我們?nèi)粘J褂米疃嗟碾娮釉O(shè)備,所以在照明設(shè)備采用低能耗設(shè)計有著非常重大的意義!由于LED的半通性和低電壓的特性使之成為了當(dāng)之無愧的低能耗的照明元件,另外LED有著多種顏色,所以對于裝飾來說是不可多得的良材。近年來由于科技的發(fā)展,智能化的推進非常明顯,特別是在物聯(lián)網(wǎng)等技術(shù)的影響下智能家居應(yīng)運而生,智能家居通過物聯(lián)網(wǎng)技術(shù)將家中的

22、各種設(shè)備(如音視頻設(shè)備、照明系統(tǒng)、窗簾控制、空調(diào)控制、安防系統(tǒng)、數(shù)字影院系統(tǒng)、網(wǎng)絡(luò)家電以及三表抄送等)連接到一起,提供家電控制、照明控制、窗簾控制、電話遠程控制、室內(nèi)外遙控、防盜報警、環(huán)境監(jiān)測、暖通控制、紅外轉(zhuǎn)發(fā)以及可編程定時控制等多種功能和手段給人帶給智能化的方便和時尚,提高人們的生活水平。但是就現(xiàn)在而言,智能家居系統(tǒng)還是一個比較昂貴的系統(tǒng),對于平常老百姓來說是不現(xiàn)實的,所以這也成為了設(shè)計這個產(chǎn)品的一個契機。</p>&

23、lt;p>  鑒于以上限制和發(fā)展要求,基于Android藍牙LED燈的設(shè)計出現(xiàn)在了我的眼前。對于這個設(shè)計國內(nèi)外的一些廠家在加緊研究之中,就國外來說,國外制作公司準備這項技術(shù)進行專利申請,而國外的產(chǎn)品的價格向來居高不下,所以這將影響這個產(chǎn)品市場普及。況且就目前來說,仍沒有成熟的產(chǎn)品面世,現(xiàn)在研究的熱點幾乎都在Iphone手機上,暫時沒有基于Android的相關(guān)產(chǎn)品。所以我就想通過設(shè)計一款可以通過手機藍牙來進行控制的LED,使之將現(xiàn)代

24、的智能高科技融入我們現(xiàn)實生活,提升我們的生活質(zhì)量。這款藍牙LED不但可以用手機來控制,而且還可以將其加入到智能家居系統(tǒng)之中,使之有很好的擴展和兼容性!通過分離組件方法開拓生產(chǎn)各個部件的廠家,有利于整體價格的下降。</p><p>  雖然藍牙LED有如此多的優(yōu)點,但是有一個不爭的事實是RGB LED還存在很大的色差。如果要解決這個問題有兩種方法,一種是在軟件上進行修正,在軟件上進行修正的話,效果不是很好而且算法

25、很復(fù)雜;另一種是在LED的設(shè)計上進行改進,但是這種方法的已不是我能實現(xiàn)的。</p><p>  基于Android藍牙RGB燈主要是通過藍牙與Android主機進行通信,下位機使由STC12A32S2芯片通過PWM控制方式控制RGB LED燈,通過控制RGB三個顏色的燈亮滅的時間長短混出不同的顏色。下位機使用藍牙BMX-02C模塊與上位機通信,上位機軟件是Android APP應(yīng)用。基于Android藍牙RGB

26、燈具體設(shè)計模型如圖1。</p><p><b>  圖 1 設(shè)計模型</b></p><p>  1、藍牙RGB硬件控制</p><p><b>  1.1開發(fā)工具</b></p><p>  1.1.1 電路設(shè)計軟件protel</p><p>  PROTEL是Altiu

27、m公司在80年代末推出的EDA軟件,在電子行業(yè)的CAD軟件中,它當(dāng)之無愧地排在眾多EDA軟件的前面,是電子設(shè)計者的首選軟件,Protel99 SE共分5個模塊,分別是原理圖設(shè)計、PCB設(shè)計(包含信號完整性分析)、自動布線器、原理圖混合信號仿真、PLD設(shè)計。</p><p>  1.1.2 軟件開發(fā)工具keil</p><p>  Keil C51是美國Keil Software公司出品的5

28、1系列兼容單片機C語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在功能上、結(jié)構(gòu)性、可讀性、可維護性上有明顯的優(yōu)勢,因而易學(xué)易用。Keil提供了包括C編譯器、宏匯編、連接器、庫管理和一個功能強大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過一個集成開發(fā)環(huán)境(uVision)將這些部分組合在一起。uVision與Ishell分別是C51 for Windows和for Dos的集成開發(fā)環(huán)境(IDE),可以完成編輯、編譯、連接、調(diào)試、仿真等整個開發(fā)流程。開發(fā)人

29、員可用IDE本身或其它編輯器編輯C或匯編源文件。然后分別由C51及C51編譯器編譯生成目標文件(.OBJ)。目標文件可由LIB51創(chuàng)建生成庫文件,也可以與庫文件一起經(jīng)L51連接定位生成絕對目標文件(.ABS)。ABS文件由OH51轉(zhuǎn)換成標準的Hex文件,以供調(diào)試器dScope51或tScope51使用進行源代碼級調(diào)試,也可由仿真器使用直接對目標板進行調(diào)試,也可以直接寫入程序存貯器如EPROM中。</p><p>

30、  1.2控制芯片STC12A32S2</p><p>  STC12A32S2單片機是宏晶科技生產(chǎn)的單時鐘/機器周期(1T)的單片機,是高速、低功耗、超抗干擾的新一代8051單片機,指令代碼完全兼容傳統(tǒng)8051,但速度快8-12倍。其主要具有以下特點</p><p>  內(nèi)部集成MAX810專用復(fù)位電路,2路PWM,8路高速10位A/D轉(zhuǎn)換,兩路串口。</p><p&

31、gt;  工作頻率范圍:0~35MHz,相當(dāng)于普通8051的0~420MHz,片上集成1280字節(jié)RAM,有EEPROM功能。</p><p>  具有Power Down模式,在該模式下可由外部中斷喚醒,功耗更低。</p><p>  1.3 藍牙通信原理</p><p>  藍牙,是一種支持設(shè)備短距離通信(一般10m內(nèi))的無線電技術(shù)。能在包括移動電話、PDA、無

32、線耳機、筆記本電腦、相關(guān)外設(shè)等眾多設(shè)備之間進行無線信息交換。利用“藍牙”技術(shù),能夠有效地簡化移動通信終端設(shè)備之間的通信,也能夠成功地簡化設(shè)備與因特網(wǎng)Internet之間的通信,從而數(shù)據(jù)傳輸變得更加迅速高效,為無線通信拓寬道路。藍牙采用分散式網(wǎng)絡(luò)結(jié)構(gòu)以及快跳頻和短包技術(shù),支持點對點及點對多點通信,工作在全球通用的2.4GHz ISM(即工業(yè)、科學(xué)、醫(yī)學(xué))頻段。其數(shù)據(jù)速率為1Mbps。采用時分雙工傳輸方案實現(xiàn)全雙工傳輸。</p>

33、<p><b>  1.4電路原理</b></p><p>  下位機電路主要包括四個部分:STC12A32S2主控,藍牙部分,電源部分,RGB控制電路。</p><p>  主控采用STC12A32S2單片機,該單片機的電路比較簡單,其供電電壓為5V,接上晶振和復(fù)位電路就可以工作了,基本工作電路如圖2。</p><p>  圖

34、2 主控原理圖</p><p>  藍牙部分是采用BMX03C藍牙模塊,與單片機連接的方式是串口連接。BMX-02/03系列藍牙模塊采用CSR BlueCore芯片配置6-8Mbit的軟件存儲空間支持AT指令用戶可根據(jù)需要更改SPP角色主從模式以及串口波特率、設(shè)備名稱、配對密碼等參數(shù)。其供電電壓為3.3V。具體電路如圖3。</p><p><b>  圖 3 藍牙</b&

35、gt;</p><p>  電路輸入是12V通過7805降為5V供給主控芯片,通過AMS1117降為3.3V供給藍牙模塊使用。電路如圖4。</p><p><b>  圖 4 電源電路</b></p><p>  RGB驅(qū)動電路是通過主控的P2.0、P2.1、P2.2控制SI2302COMS管輸出。SI2302Vds=20V,Id = 3A,I

36、dm = 10A,Vgs = 8V。具體電路圖如下,當(dāng)G級的電平為高時可以點亮RGB燈,RGB燈帶是3個一組,壓降為12V,具體如圖5。</p><p>  圖 5 RGB驅(qū)動電路</p><p><b>  圖 6 PCB板圖</b></p><p>  1.5 RGB LED變色原理</p><p>  RGBLED

37、燈是由三個R、G、B燈組成一個模組,通過調(diào)節(jié)三個燈的比例調(diào)節(jié)出不同的顏色,通過PWM調(diào)節(jié)不同顏色的燈的亮燈長短即可調(diào)出顏色的比率。亮燈主要包括兩個部分:顏色部分和亮度部分,亮度部分是用延時處理的,當(dāng)延時長的時候PWM的頻率就比較高,這時候燈比較亮,反之則比較暗,具體調(diào)節(jié)顏色亮度的結(jié)構(gòu)如圖7。</p><p>  圖 7 PWM調(diào)色結(jié)構(gòu)</p><p>  1.6 下位機軟件需求分析<

38、;/p><p><b>  圖 8 需求分析圖</b></p><p>  1.7與上位機通信接口</p><p>  每一個與上位機通信的包都是一個包含12個字節(jié)的結(jié)構(gòu)體,具體結(jié)構(gòu)如圖9。</p><p><b>  類型定義和含義</b></p><p>  #define

39、ST0x1//靜態(tài)</p><p>  #define VL0x2//動態(tài)</p><p>  #define SR0xA0//序列號</p><p>  #define PASS0xA1//密碼</p><p>  #define SET0xA2//設(shè)置密碼</p><p>  #d

40、efine STATUS0xA3//獲取狀態(tài)</p><p>  RGB值:0~255</p><p>  亮度值:0~1000,值越大亮度越小</p><p>  亮燈時間值:0~0xFFFF</p><p>  圖 9 與上位機通信接口結(jié)構(gòu)</p><p>  1.8下位機程序流程圖</p>&l

41、t;p>  圖 10 主程序流程圖</p><p>  圖 11 定時器中斷執(zhí)行流程圖</p><p>  圖 12 接收中斷流程圖 </p><p>  2、上位機Android軟件介紹</p><p>  2.1 Android開發(fā)工具Eclipse</p><p>  Eclipse 是一個開放源代碼的

42、、基于Java的可擴展開發(fā)平臺。就其本身而言,它只是一個框架和一組服務(wù),用于通過插件組件構(gòu)建開發(fā)環(huán)境。幸運的是,Eclipse 附帶了一個標準的插件集,包括Java開發(fā)工具(Java Development Kit,JDK)。</p><p>  雖然大多數(shù)用戶很樂于將 Eclipse 當(dāng)作 Java 集成開發(fā)環(huán)境(IDE)來使用,但 Eclipse 的目標卻不僅限于此。Eclipse 還包括插件開發(fā)環(huán)境(Plu

43、g-in Development Environment,PDE),這個組件主要針對希望擴展 Eclipse 的軟件開發(fā)人員,因為它允許他們構(gòu)建與 Eclipse 環(huán)境無縫集成的工具。由于 Eclipse 中的每樣?xùn)|西都是插件,對于給 Eclipse 提供插件,以及給用戶提供一致和統(tǒng)一的集成開發(fā)環(huán)境而言,所有工具開發(fā)人員都具有同等的發(fā)揮場所。</p><p>  2.2 Android軟件需求分析</p&g

44、t;<p>  圖 13 上位機需求分析</p><p>  2.3 Android頁面布局</p><p><b>  圖 14 安卓頁面</b></p><p>  2.4 Android 控制下位機的實現(xiàn)</p><p>  通過Android手機自帶的系統(tǒng)接口,調(diào)用Android手機的藍牙,搜索連接

45、下位機的藍牙模塊。然后根據(jù)需求分析一個個實現(xiàn)需要的功能,對于變色來說,目前是通過三個進度條來實現(xiàn),Android有事件捕獲器,通過捕獲器我們可以實時的發(fā)送我們的顏色亮度數(shù)據(jù)。短信和電話以及音樂幻燈是通過廣播來實現(xiàn)數(shù)據(jù)的發(fā)送。</p><p>  2.5 基于Android 藍牙RGB燈實物展示</p><p><b>  圖 15 實物圖</b></p>

46、<p><b>  結(jié)論</b></p><p>  通過對藍牙幻燈的開發(fā)前的分析,通過藍牙控制RGB燈變色的控制方式是可行的。RGB調(diào)光的方式是采用PWM脈沖調(diào)制,PWM包括兩個部分,顏色比例部分和亮度調(diào)節(jié)部分。上位機采用Android手機通過APP調(diào)用藍牙跟下位機通信實現(xiàn)智能控制,該設(shè)計主要是為智能家居在燈光控制方面提供一個廉價的解決方案。通過原理圖的設(shè)計、RGB驅(qū)動程序的編

47、寫、制板并做出實物;Android上位機APP的編寫,最終調(diào)試成功。通過的實物和軟件的有力的驗證了該方案的可行性和合理性。在節(jié)能和智能應(yīng)用方面具有非常重要的實際意義。然而由于RGB燈自身的限制,所以對RGB顏色值的還原還是存在很大的誤差。</p><p><b>  參考文獻</b></p><p>  [1]康華光,鄒壽彬.電子技術(shù)基礎(chǔ)(數(shù)字部分)(第五版)[M].

48、北京:高等教育出版社.2005:100-201.</p><p>  [2]康華光,鄒壽彬.電子技術(shù)基礎(chǔ)(模擬部分)(第五版)[M].北京:高等教育出版社.2005:86-197.</p><p>  [3]李朝青.單片機原理及接口技術(shù)[M].北京:北京航空航天大學(xué)出版社.2005:78-92.</p><p>  [4]朱勇.單片機原理與應(yīng)用技術(shù)[M].北京:清華

49、大學(xué)出版社.2006:20-43.</p><p>  [5]張毅剛,彭喜元等.新編MCS-51單片機應(yīng)用設(shè)計(第二版) [M].哈爾濱:哈爾濱工業(yè)大學(xué)出版社.2006:34-52.</p><p>  [6]潭博學(xué),苗江靜.集成電路原理及應(yīng)用[M].北京:電子工業(yè)出版社.2003:40-62.</p><p>  [7]高峰. 單片微機應(yīng)用系統(tǒng)設(shè)計及實用技術(shù)[M]

50、.北京:機械工業(yè)出版社.2004:52-67.</p><p>  [8]樓然苗,李光飛.51系列單片機設(shè)計實例[M].北京:北京航空航天大學(xué)出版社.2006:87-135. </p><p>  [9]何書森,何華斌.實用電子線路設(shè)計速成[M].福建:福建科學(xué)技術(shù)出版社,2006:35-128.</p><p>  [10]李國厚,王春陽.自動化專業(yè)英語[M].北

51、京:北京大學(xué)出版社,2006:128-139.</p><p>  [11]陳歡慶. 電子制作理論與實踐[M].浙江:浙江大學(xué)出版社.2005:57-192.</p><p>  [12]馬淑華、王鳳文、張美金.單片機原理及接口技術(shù)[M].北京:北京郵電大學(xué)出版社.2005.10:62-116. </p><p>  [13]楊金巖,鄭應(yīng)強,張振仁.8051單片機數(shù)

52、據(jù)傳輸接口擴展技術(shù)與應(yīng)用實例[M].北京:人民郵電出版社.2005:58-92.</p><p>  [14]Paul Horwitz,Winfield Hill.The Art of Electronics.2nd..Cambridge UnixersityPress,1989:32-35.</p><p>  [10][美]GaryB.ShellyThomasJ.eashmanJuay

53、A.Hill.數(shù)據(jù)通訊教程BusinessData Communications Introductory Conceptsand Teebniques.[M]程相利,毛一心,周建宏譯.孫義審校.第1版.北京:電子工業(yè)出版社,1998:32-43</p><p><b>  附錄A:</b></p><p><b>  下位機程序:</b><

54、;/p><p><b>  //頭</b></p><p>  #define L_HEAD0xAA</p><p>  #define H_HEAD0xBB</p><p><b>  //顏色掩碼</b></p><p>  #define R 0x2</p&

55、gt;<p>  #define G 0x1</p><p>  #define B 0x4</p><p><b>  //包類型</b></p><p>  #define ST0x1//靜態(tài)</p><p>  #define VL0x2//動態(tài)</p>&l

56、t;p>  #define SR0xA0//序列號</p><p>  #define PASS0xA1//密碼</p><p>  #define SET0xA2//設(shè)置密碼</p><p>  #define STATUS0xA3//獲取狀態(tài)</p><p><b>  //輸出引腳</b>

57、</p><p>  #define LED P2</p><p>  //一個顏色的時間間隔</p><p>  #define LED_L 256</p><p>  sfr AUXR=0x8e;</p><p>  sfrBRT=0x9c;</p><p><b>

58、;  //數(shù)據(jù)包結(jié)構(gòu)</b></p><p>  struct _bag{</p><p>  unsigned char head[2];//頭</p><p>  unsigned char type; //類型</p><p>  unsigned char r;</p><p>  unsign

59、ed char g;</p><p>  unsigned char b; //</p><p>  unsigned intlight;//亮度</p><p>  unsigned int time; //亮的時間</p><p><b>  };</b></p><p><b&

60、gt;  //顯示結(jié)構(gòu)體</b></p><p>  struct _led{</p><p>  unsigned char red;//</p><p>  unsigned char green;//</p><p>  unsigned char blue;//基色控制</p><p>  un

61、signed int light;//亮燈間隔控制</p><p>  unsigned char led;//燈顏色</p><p><b>  };</b></p><p><b>  //顯示控制結(jié)構(gòu)體</b></p><p>  struct _cont{</p><p

62、>  unsigned char s_r;//</p><p>  unsigned char s_g;//</p><p>  unsigned char s_b;//</p><p>  unsigned int s_light; //亮度控制</p><p>  unsigned char v_r;</p>&

63、lt;p>  unsigned char v_g;</p><p>  unsigned char v_b;</p><p>  unsigned int v_light; //亮度控制</p><p>  unsigned int v_t; //14*256us</p><p><b>  };</b><

64、;/p><p>  #define RdCommand 0x01</p><p>  #define PrgCommand 0x02</p><p>  #define EraseCommand 0x03</p><p>  #define Ok1</p><p>  #define E

65、rror0</p><p>  #define WaitTime 0x01</p><p>  #define PerSector 512</p><p>  sfr ISP_CONTR = 0xC7;</p><p>  sfr ISP_TRIG = 0xC6;</p><p>  s

66、frISP_ADDRH = 0xC3;</p><p>  sfr ISP_ADDRL = 0xC4;</p><p>  sfr ISP_CMD = 0xC5;</p><p>  sfrISP_DATA = 0xC2;</p><p><b>  /*</b></p><p>

67、;  打開 ISP,IAP 功能</p><p><b>  */</b></p><p>  void ISP_IAP_enable(void)</p><p><b>  {</b></p><p>  EA=0;/* 關(guān)中斷*/</p><p>  // ISP_CON

68、TR|=0x18;/*0001,1000*/</p><p>  //ISP_CONTR = 0;</p><p>  ISP_CONTR|=WaitTime;/*寫入硬件延時*/</p><p>  ISP_CONTR|=0x80;/*ISPEN=1*/</p><p><b>  }</b></p>&

69、lt;p><b>  /*</b></p><p>  關(guān)閉 ISP,IAP 功能</p><p><b>  */</b></p><p>  void ISP_IAP_disable(void)</p><p><b>  {</b></p><p

70、>  ISP_CONTR&=0x7f;/* ISPEN = 0 */</p><p>  ISP_TRIG=0x00;</p><p>  EA=1;/* 開中斷 */</p><p><b>  }</b></p><p><b>  /*</b></p>&

71、lt;p><b>  公用的觸發(fā)代碼</b></p><p><b>  */</b></p><p>  void ISPgoon(void)</p><p><b>  {</b></p><p>  ISP_IAP_enable();/* 打開 ISP,IAP 功能

72、 */</p><p>  ISP_TRIG=0x5A;/* 觸發(fā)ISP_IAP命令字節(jié)1 */</p><p>  ISP_TRIG=0xA5;/* 觸發(fā)ISP_IAP命令字節(jié)2 */</p><p><b>  _nop_();</b></p><p><b>  }</b><

73、/p><p><b>  /*</b></p><p><b>  字節(jié)讀</b></p><p><b>  */</b></p><p>  unsigned char byte_read(unsigned int byte_addr)</p><p>

74、<b>  {</b></p><p>  ISP_ADDRH=(unsigned char)(byte_addr>>8); /* 地址賦值*/</p><p>  ISP_ADDRL=(unsigned char)(byte_addr&0x00ff);</p><p>  ISP_CMD&=0xFC; /* 清除

75、低2位 */</p><p>  ISP_CMD|=RdCommand;/* 寫入讀命令*/</p><p>  ISPgoon();/* 觸發(fā)執(zhí)行*/</p><p>  //r_delay();</p><p>  ISP_IAP_disable();/* 關(guān)閉ISP,IAP功能*/</p><p>  retur

76、n ISP_DATA;/* 返回讀到的數(shù)據(jù)*/</p><p><b>  }</b></p><p><b>  /*</b></p><p><b>  扇區(qū)擦除</b></p><p><b>  */</b></p><p>

77、;  void sectorerase(unsigned int sector_addr)</p><p><b>  {</b></p><p>  unsigned int iSectorAddr;</p><p>  iSectorAddr=(sector_addr&0xff00);/* 取扇區(qū)地址*/</p>&l

78、t;p>  ISP_ADDRH=(unsigned char)(iSectorAddr>>8);</p><p>  ISP_ADDRL=0x00;</p><p>  ISP_CMD&=0xFC;/* 清空低2位*/</p><p>  ISP_CMD|=EraseCommand;/* 擦除命令3*/</p><p&g

79、t;  ISPgoon();/* 觸發(fā)執(zhí)行 */</p><p>  //e_delay();</p><p>  ISP_IAP_disable();/* 關(guān)閉ISP,IAP功能*/</p><p><b>  }</b></p><p><b>  /*</b></p><p

80、><b>  字節(jié)寫</b></p><p><b>  */</b></p><p>  void byte_write(unsigned int byte_addr, unsigned char original_data)</p><p><b>  {</b></p>&l

81、t;p>  ISP_ADDRH=(unsigned char)(byte_addr>>8); /* 取地址*/</p><p>  ISP_ADDRL=(unsigned char)(byte_addr);</p><p>  ISP_CMD&=0xFC;/* 清低3位*/</p><p>  ISP_CMD|=PrgCommand;/*

82、寫命令2*/</p><p>  ISP_DATA=original_data;/* 寫入數(shù)據(jù)準備*/</p><p>  ISPgoon();/* 觸發(fā)執(zhí)行*/</p><p>  //w_delay();</p><p>  ISP_IAP_disable();/* 關(guān)閉IAP功能*/</p><p><b&

83、gt;  }</b></p><p><b>  /*</b></p><p><b>  區(qū)域擦除</b></p><p><b>  */</b></p><p>  unsigned int area_e(unsigned int addr_s , unsig

84、ned int offset)</p><p><b>  {</b></p><p>  unsigned int i , tmp;</p><p>  if(addr_s+offset > 0x17FF)</p><p>  return -1;</p><p>  i =( (addr

85、_s+offset)&0x00 ) >> 16 ;//取扇區(qū)數(shù)</p><p><b>  do{</b></p><p>  tmp = i << 16;//取扇區(qū)</p><p>  sectorerase(tmp);</p><p>  }while(i--);</p>

86、<p><b>  return 0;</b></p><p><b>  }</b></p><p>  /***********區(qū)域?qū)?************/</p><p>  void buf_w(unsigned int addr_s ,unsigned char *p ,unsigned in

87、t offset)</p><p><b>  {</b></p><p>  unsigned int addr , i;</p><p>  area_e(addr_s , offset);//擦除</p><p>  addr = addr_s;</p><p>  for(i = 0;i

88、< offset;i++,addr++)</p><p><b>  {</b></p><p>  //send_char('w');</p><p>  //send_char(' ');</p><p>  //send_char((*p)+'0');<

89、/p><p>  //send_char('\n');</p><p>  byte_write(addr ,*p);</p><p><b>  p++;</b></p><p><b>  }</b></p><p><b>  }</b>

90、;</p><p>  /***********區(qū)域讀*************/</p><p>  void buf_r(unsigned int addr_s ,unsigned char *p ,unsigned int offset)</p><p><b>  {</b></p><p>  unsigned

91、 int addr , i;</p><p>  addr = addr_s;</p><p>  for(i = 0;i < offset;i++,addr++)</p><p><b>  {</b></p><p>  *p = byte_read( addr );</p><p>

92、  //send_char('r');</p><p>  //send_char(' ');</p><p>  //send_char( (*p)+'0');</p><p>  //send_char('\n');</p><p><b>  p++;</b

93、></p><p><b>  }</b></p><p><b>  } </b></p><p>  code unsigned char serial[8]={0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8};//序列號</p><p>  unsigned char p

94、assword[8];//={8,8,8,8,8,8,8,8};//密碼</p><p>  struct _cont control;//顯示控制</p><p>  struct _led led;//顯示</p><p>  struct _bag rbag , sbag; //接收包,發(fā)送包</p><p>  unsigned

95、 long int pass = 1;//有無密碼驗證的標記</p><p>  /***獨立波特率 串口1初始化******/</p><p>  void serial_init()</p><p><b>  {</b></p><p>  SCON = 0x50; //SCON: serail mode 1,

96、8-bit UART, enable ucvr</p><p>  BRT = 0xFA; //波特率為115200</p><p>  IE = 0x90 ; //開總中斷,開串口中斷</p><p>  AUXR = 0x15; //允許獨立波特率發(fā)生器,1時鐘計數(shù)一次,串口1使用獨立</p><p><b>  }&l

97、t;/b></p><p>  /********* 字節(jié)發(fā)送 **********/</p><p>  void send_char(unsigned char ch)</p><p><b>  {</b></p><p><b>  SBUF=ch; </b></p>&

98、lt;p>  while (TI== 0 ); </p><p><b>  TI= 0 ;</b></p><p><b>  }</b></p><p><b>  //發(fā)送一串字節(jié)</b></p><p>  void send(unsigned char *p ,

99、 unsigned int len)</p><p><b>  {</b></p><p>  for(;len > 0; len--){</p><p>  send_char(*p);</p><p><b>  p++;</b></p><p><b>

100、;  }</b></p><p><b>  }</b></p><p><b>  //將小端轉(zhuǎn)為大端</b></p><p>  void ltoh(unsigned char *p , unsigned char len)</p><p><b>  {</b>

101、;</p><p>  unsigned char tmp , i;</p><p>  for(i = len-1; ; p--){</p><p><b>  tmp = *p;</b></p><p>  *p = *(p + i);</p><p>  *(p + i) = tmp;<

102、;/p><p><b>  if(i >2)</b></p><p><b>  i -=2;</b></p><p><b>  else</b></p><p><b>  break; </b></p><p><b&

103、gt;  }</b></p><p><b>  }</b></p><p>  /*****串口中斷接收****/</p><p>  void recv() interrupt 4</p><p><b>  {</b></p><p>  static un

104、signed char count;</p><p>  code unsigned char *p = (unsigned char *)&rbag;</p><p>  unsigned char i;</p><p><b>  if (RI) </b></p><p><b>  { </

105、b></p><p>  //LED = ~LED;</p><p>  switch(count){</p><p><b>  case 0:</b></p><p>  if(SBUF == H_HEAD){</p><p>  *p = SBUF;</p><p&

106、gt;<b>  count++;</b></p><p><b>  }else</b></p><p>  count = 0;</p><p><b>  break;</b></p><p><b>  case 1:</b></p>

107、<p>  if(SBUF == L_HEAD){</p><p>  *(p + count) = SBUF;</p><p><b>  count++;</b></p><p><b>  }else{</b></p><p>  if(SBUF == H_HEAD){</p

108、><p>  *p = SBUF;</p><p><b>  }else</b></p><p>  count = 0;</p><p><b>  }</b></p><p><b>  break;</b></p><p>&

109、lt;b>  case 2:</b></p><p><b>  case 3:</b></p><p><b>  case 4:</b></p><p>  case 5:</p><p><b>  case 6:</b></p>

110、;<p><b>  case 7:</b></p><p><b>  case 8:</b></p><p><b>  case 9:</b></p><p><b>  case 10:</b></p><p>  *(p + cou

111、nt) = SBUF;</p><p><b>  count++;</b></p><p><b>  break;</b></p><p><b>  case 11:</b></p><p>  *(p + count) = SBUF;</p><p&

112、gt;  ltoh((unsigned char*)&rbag.light, sizeof(rbag.light));</p><p><b>  if(1){</b></p><p>  if(rbag.type == SR){</p><p>  if((*(p+2)== serial[0])&&</p>

113、;<p>  (*(p+3)== serial[1])&&</p><p>  (*(p+4)== serial[2])&&</p><p>  (*(p+5)== serial[3])&&</p><p>  (*(p+6)== serial[4])&&</p><p

114、>  (*(p+7)== serial[5])&&</p><p>  (*(p+8)== serial[6])&&</p><p>  (*(p+9)== serial[7])){//驗證序列號</p><p>  pass = ~0;</p><p>  for(i = 0;i < 5;i++)

115、//設(shè)置為默認密碼</p><p>  password[i] = 8;</p><p>  buf_w(0x0000 ,password ,sizeof(password));//保存密碼</p><p><b>  }</b></p><p>  }else if(rbag.type == PASS){</p&

116、gt;<p>  if((*(p+2)== password[0])&&</p><p>  (*(p+3)== password[1])&&</p><p>  (*(p+4)== password[2])&&</p><p>  (*(p+5)== password[3])&&<

117、/p><p>  (*(p+6)== password[4])&&</p><p>  (*(p+7)== password[5])&&</p><p>  (*(p+8)== password[6])&&</p><p>  (*(p+9)== password[7])){//驗證密碼</p

118、><p>  pass = ~0;</p><p><b>  }</b></p><p>  }else if(1){//有密碼pass</p><p>  if(rbag.type == ST){//靜態(tài)</p><p>  control.s_r = rbag.r; </p>

119、<p>  control.s_g = rbag.g;</p><p>  control.s_b = rbag.b;</p><p>  control.s_light = rbag.light;</p><p>  }else if(rbag.type == VL){//動態(tài)數(shù)據(jù)</p><p>  ltoh((unsigne

120、d char*)&rbag.time, sizeof(rbag.time));</p><p>  control.v_r = rbag.r;</p><p>  control.v_g = rbag.g;</p><p>  control.v_b = rbag.b;</p><p>  control.v_light = rbag

121、.light;</p><p>  control.v_t = ltoh((unsigned char*)&rbag.time, sizeof(rbag.time));</p><p>  }else if(rbag.type == SET){</p><p>  for(i=0 ; i < sizeof(password) ; i++){//取密碼&

122、lt;/p><p>  password[i] = *(p + i + 2); </p><p><b>  }</b></p><p>  buf_w(0x0000 ,password ,sizeof(password));//保存密碼</p><p>  }else if(sbag.type == STATUS){<

123、;/p><p><b>  //獲取狀態(tài)</b></p><p>  sbag.type = STATUS;</p><p>  sbag.r = control.s_r;</p><p>  sbag.g = control.s_g;</p><p>  sbag.b = control.s_b;&

124、lt;/p><p>  send((unsigned char *)&sbag , sizeof(sbag));</p><p><b>  }</b></p><p><b>  }else{</b></p><p>  sbag.type = PASS;//索要密碼</p>&

125、lt;p>  send((unsigned char *)&sbag , sizeof(sbag));</p><p><b>  }</b></p><p><b>  }</b></p><p>  count = 0;</p><p><b>  break;</

126、b></p><p><b>  default:</b></p><p>  count = 0;</p><p>  break;</p><p><b>  }</b></p><p>  RI = 0 ; </p><p>&

127、lt;b>  }</b></p><p><b>  }</b></p><p>  void timer0_init()</p><p><b>  {</b></p><p>  TMOD &=0xF0;//清除</p><p>  TMOD |

128、=0x01;//定時功能,16位計數(shù)</p><p>  IP |=0x02; //定時器0高優(yōu)先級 </p><p>  IE |=0x82;//定時器0開中斷</p><p>  TH0 = 0xFF;//定時20條指令</p><p>  TL0 = 0xEB;//; 0xE1</p><p>  TR0

129、 = 1; //啟動定時器</p><p><b>  }</b></p><p>  void timer0() interrupt 1</p><p><b>  {</b></p><p>  IE &= ~0x80;//關(guān)中斷</p><p>  led

130、.led = 0;</p><p>  if(led.red){</p><p>  led.led += R;</p><p>  led.red--;</p><p><b>  }</b></p><p>  if(led.green){</p><p>  led.

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論