版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 本科學(xué)生畢業(yè)論文(設(shè)計(jì))</p><p> 題目(中 文):基于安卓的藍(lán)牙RGB燈</p><p> (英 文):Bluetooth RGB Lights Based on Android</p><p> 姓 名</p><p> 學(xué) 號(hào)</p><p> 院 (
2、系)電子工程系</p><p> 專業(yè)、年級(jí)電子信息工程 級(jí)</p><p> 指導(dǎo)教師</p><p> xx科技學(xué)院本科畢業(yè)論文(設(shè)計(jì))誠(chéng)信聲明</p><p> 本人鄭重聲明:所呈交的本科畢業(yè)論文(設(shè)計(jì)),是本人在指導(dǎo)老師的指導(dǎo)下,獨(dú)立進(jìn)行研究工作所取得的成果,成果不存在知識(shí)產(chǎn)權(quán)爭(zhēng)議,除文中已經(jīng)注明引用的內(nèi)容外,本論文不含任
3、何其他個(gè)人或集體已經(jīng)發(fā)表或撰寫過(guò)的作品成果。對(duì)本文的研究做出重要貢獻(xiàn)的個(gè)人和集體均已在文中以明確方式標(biāo)明。本人完全意識(shí)到本聲明的法律結(jié)果由本人承擔(dān)。</p><p> 本科畢業(yè)論文(設(shè)計(jì))作者簽名:</p><p> 年 月 日</p><p> 畢業(yè)論文(設(shè)計(jì))任務(wù)書</p><p> xx科技學(xué)院本科畢業(yè)論文
4、(設(shè)計(jì))任務(wù)書</p><p> 注:本任務(wù)書一式三份,由指導(dǎo)教師填寫,經(jīng)教研室審批后一份下達(dá)給學(xué)生,一份交指導(dǎo)教師,一份留系里存檔。</p><p> xx科技學(xué)院本科畢業(yè)論文(設(shè)計(jì))開題報(bào)告書</p><p> 注:此表由學(xué)生本人填寫,一式三份,一份留系里存檔,指導(dǎo)老師和本人各保存一份</p><p> xx科技學(xué)院畢業(yè)論文(設(shè)計(jì)
5、)中期檢查表</p><p> 注:此表用于指導(dǎo)教師在學(xué)生畢業(yè)論文(設(shè)計(jì))初稿完成后對(duì)學(xué)生執(zhí)行任務(wù)書情況進(jìn)行中期檢查時(shí)用,由指導(dǎo)教師填寫。</p><p> xx科技學(xué)院畢業(yè)設(shè)計(jì)(論文)指導(dǎo)過(guò)程記錄表</p><p> 注:本表與畢業(yè)論文一起裝訂存檔。</p><p> xx科技學(xué)院本科畢業(yè)論文(設(shè)計(jì))評(píng)審表</p>&
6、lt;p> 說(shuō)明:評(píng)定成績(jī)分為優(yōu)秀、良好、中等、及格、不及格五個(gè)等級(jí),實(shí)評(píng)總分90—100分記為優(yōu)秀,80—89分記為良好,70—79分記為中等,60—69分記為及格,60分以下記為不及格。</p><p> 說(shuō)明:評(píng)定成績(jī)分為優(yōu)秀、良好、中等、及格、不及格五個(gè)等級(jí),實(shí)評(píng)總分90—100分記為優(yōu)秀,80—89分記為良好,70—79分記為中等,60—69分記為及格,60分以下記為不及格。</p>
7、;<p> xx科技學(xué)院本科畢業(yè)論文(設(shè)計(jì))答辯記錄表</p><p><b> 目 錄</b></p><p><b> 緒論1</b></p><p> 1、藍(lán)牙RGB硬件控制3</p><p><b> 1.1開發(fā)工具3</b></p
8、><p> 1.1.1 電路設(shè)計(jì)軟件protel3</p><p> 1.1.2 軟件開發(fā)工具keil3</p><p> 1.2控制芯片STC12A32S23</p><p> 1.3 藍(lán)牙通信原理3</p><p><b> 1.4電路原理4</b></p>&l
9、t;p> 1.5 RGB LED變色原理6</p><p> 1.6 下位機(jī)軟件需求分析7</p><p> 1.7與上位機(jī)通信接口7</p><p> 1.8下位機(jī)程序流程圖8</p><p> 2、上位機(jī)Android軟件介紹10</p><p> 2.1 Android開發(fā)工具Ecli
10、pse10</p><p> 2.2 Android軟件需求分析10</p><p> 2.3 Android頁(yè)面布局11</p><p> 2.4 Android 控制下位機(jī)的實(shí)現(xiàn)11</p><p> 2.5 基于Android 藍(lán)牙RGB燈實(shí)物展示12</p><p><b> 結(jié)論
11、13</b></p><p><b> 參考文獻(xiàn)14</b></p><p><b> 附錄A15</b></p><p><b> 致 謝28</b></p><p><b> 插圖索引</b></p><
12、;p> 圖 1 設(shè)計(jì)模型2</p><p> 圖 3 主控原理圖4</p><p><b> 圖 4 藍(lán)牙5</b></p><p> 圖 5 電源電路5</p><p> 圖 6 RGB驅(qū)動(dòng)電路5</p><p> 圖 7 PCB板圖6</p><
13、;p> 圖 8 PWM調(diào)色結(jié)構(gòu)6</p><p> 圖 9 需求分析圖7</p><p> 圖 10 與上位機(jī)通信接口結(jié)構(gòu)7</p><p> 圖 11 主程序流程圖8</p><p> 圖 12 定時(shí)器中斷執(zhí)行流程圖8</p><p> 圖 13 接收中斷流程圖9</p>
14、<p> 圖 14 上位機(jī)需求分析10</p><p> 圖 15 安卓頁(yè)面11</p><p> 圖 16 實(shí)物圖12</p><p> 基于安卓的藍(lán)牙RGB燈</p><p><b> 摘 要</b></p><p> 本文詳細(xì)闡述了基于android藍(lán)牙RGB燈
15、的整個(gè)構(gòu)成,該設(shè)計(jì)主要是用于智能家居、舞臺(tái)燈光或者音樂(lè)燈光,其控制方式是藍(lán)牙控制。下位機(jī)主芯片為STC12A32S2,藍(lán)牙部分為BMX-02C模塊。基于android藍(lán)牙RGB燈主要包括兩個(gè)部分:1、下位機(jī)控制RGB 燈部分;2、上位機(jī)android應(yīng)用部分。本文依次從下位機(jī)的電路設(shè)計(jì)、藍(lán)牙通信方式、軟件通信接口、控制RGB燈變色的PWM原理、與上位機(jī)通信接口、android上位機(jī)軟件需求分析、android布局、android控制變色
16、的實(shí)現(xiàn)方法、android音樂(lè)幻燈的實(shí)現(xiàn)方法、android短信和來(lái)電提醒功能的實(shí)現(xiàn)等介紹了藍(lán)牙幻燈的原理和設(shè)計(jì)過(guò)程,最后將基于android藍(lán)牙RGB燈的下位機(jī)的程序源碼附上。</p><p> 【關(guān)鍵詞】:android,RGB,PWM,智能家居,藍(lán)牙 </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年開始手機(jī)就開始往智能方向發(fā)展,到達(dá)今日中國(guó)的普及率已經(jīng)超過(guò)了66%,而每一臺(tái)智能機(jī)都配備了藍(lán)牙通信。近幾年來(lái)平板電腦等手持智能設(shè)備也得到了長(zhǎng)足的發(fā)展,而這些設(shè)備都基本配備了藍(lán)牙,這使得我們開發(fā)這個(gè)藍(lán)牙幻燈有了堅(jiān)實(shí)的硬件依靠基礎(chǔ)。</p><p> 另外隨著近幾年環(huán)境的惡化和能源
21、危機(jī)的不斷凸顯,人們也越來(lái)越注重對(duì)環(huán)境的保護(hù)和能源的節(jié)約,所以家電走向低能耗時(shí)代是不爭(zhēng)的事實(shí),而家中燈光等照明設(shè)備是我們?nèi)粘J褂米疃嗟碾娮釉O(shè)備,所以在照明設(shè)備采用低能耗設(shè)計(jì)有著非常重大的意義!由于LED的半通性和低電壓的特性使之成為了當(dāng)之無(wú)愧的低能耗的照明元件,另外LED有著多種顏色,所以對(duì)于裝飾來(lái)說(shuō)是不可多得的良材。近年來(lái)由于科技的發(fā)展,智能化的推進(jìn)非常明顯,特別是在物聯(lián)網(wǎng)等技術(shù)的影響下智能家居應(yīng)運(yùn)而生,智能家居通過(guò)物聯(lián)網(wǎng)技術(shù)將家中的
22、各種設(shè)備(如音視頻設(shè)備、照明系統(tǒng)、窗簾控制、空調(diào)控制、安防系統(tǒng)、數(shù)字影院系統(tǒng)、網(wǎng)絡(luò)家電以及三表抄送等)連接到一起,提供家電控制、照明控制、窗簾控制、電話遠(yuǎn)程控制、室內(nèi)外遙控、防盜報(bào)警、環(huán)境監(jiān)測(cè)、暖通控制、紅外轉(zhuǎn)發(fā)以及可編程定時(shí)控制等多種功能和手段給人帶給智能化的方便和時(shí)尚,提高人們的生活水平。但是就現(xiàn)在而言,智能家居系統(tǒng)還是一個(gè)比較昂貴的系統(tǒng),對(duì)于平常老百姓來(lái)說(shuō)是不現(xiàn)實(shí)的,所以這也成為了設(shè)計(jì)這個(gè)產(chǎn)品的一個(gè)契機(jī)。</p>&
23、lt;p> 鑒于以上限制和發(fā)展要求,基于Android藍(lán)牙LED燈的設(shè)計(jì)出現(xiàn)在了我的眼前。對(duì)于這個(gè)設(shè)計(jì)國(guó)內(nèi)外的一些廠家在加緊研究之中,就國(guó)外來(lái)說(shuō),國(guó)外制作公司準(zhǔn)備這項(xiàng)技術(shù)進(jìn)行專利申請(qǐng),而國(guó)外的產(chǎn)品的價(jià)格向來(lái)居高不下,所以這將影響這個(gè)產(chǎn)品市場(chǎng)普及。況且就目前來(lái)說(shuō),仍沒(méi)有成熟的產(chǎn)品面世,現(xiàn)在研究的熱點(diǎn)幾乎都在Iphone手機(jī)上,暫時(shí)沒(méi)有基于Android的相關(guān)產(chǎn)品。所以我就想通過(guò)設(shè)計(jì)一款可以通過(guò)手機(jī)藍(lán)牙來(lái)進(jìn)行控制的LED,使之將現(xiàn)代
24、的智能高科技融入我們現(xiàn)實(shí)生活,提升我們的生活質(zhì)量。這款藍(lán)牙LED不但可以用手機(jī)來(lái)控制,而且還可以將其加入到智能家居系統(tǒng)之中,使之有很好的擴(kuò)展和兼容性!通過(guò)分離組件方法開拓生產(chǎn)各個(gè)部件的廠家,有利于整體價(jià)格的下降。</p><p> 雖然藍(lán)牙LED有如此多的優(yōu)點(diǎn),但是有一個(gè)不爭(zhēng)的事實(shí)是RGB LED還存在很大的色差。如果要解決這個(gè)問(wèn)題有兩種方法,一種是在軟件上進(jìn)行修正,在軟件上進(jìn)行修正的話,效果不是很好而且算法
25、很復(fù)雜;另一種是在LED的設(shè)計(jì)上進(jìn)行改進(jìn),但是這種方法的已不是我能實(shí)現(xiàn)的。</p><p> 基于Android藍(lán)牙RGB燈主要是通過(guò)藍(lán)牙與Android主機(jī)進(jìn)行通信,下位機(jī)使由STC12A32S2芯片通過(guò)PWM控制方式控制RGB LED燈,通過(guò)控制RGB三個(gè)顏色的燈亮滅的時(shí)間長(zhǎng)短混出不同的顏色。下位機(jī)使用藍(lán)牙BMX-02C模塊與上位機(jī)通信,上位機(jī)軟件是Android APP應(yīng)用?;贏ndroid藍(lán)牙RGB
26、燈具體設(shè)計(jì)模型如圖1。</p><p><b> 圖 1 設(shè)計(jì)模型</b></p><p> 1、藍(lán)牙RGB硬件控制</p><p><b> 1.1開發(fā)工具</b></p><p> 1.1.1 電路設(shè)計(jì)軟件protel</p><p> PROTEL是Altiu
27、m公司在80年代末推出的EDA軟件,在電子行業(yè)的CAD軟件中,它當(dāng)之無(wú)愧地排在眾多EDA軟件的前面,是電子設(shè)計(jì)者的首選軟件,Protel99 SE共分5個(gè)模塊,分別是原理圖設(shè)計(jì)、PCB設(shè)計(jì)(包含信號(hào)完整性分析)、自動(dòng)布線器、原理圖混合信號(hào)仿真、PLD設(shè)計(jì)。</p><p> 1.1.2 軟件開發(fā)工具keil</p><p> Keil C51是美國(guó)Keil Software公司出品的5
28、1系列兼容單片機(jī)C語(yǔ)言軟件開發(fā)系統(tǒng),與匯編相比,C語(yǔ)言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢(shì),因而易學(xué)易用。Keil提供了包括C編譯器、宏匯編、連接器、庫(kù)管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過(guò)一個(gè)集成開發(fā)環(huán)境(uVision)將這些部分組合在一起。uVision與Ishell分別是C51 for Windows和for Dos的集成開發(fā)環(huán)境(IDE),可以完成編輯、編譯、連接、調(diào)試、仿真等整個(gè)開發(fā)流程。開發(fā)人
29、員可用IDE本身或其它編輯器編輯C或匯編源文件。然后分別由C51及C51編譯器編譯生成目標(biāo)文件(.OBJ)。目標(biāo)文件可由LIB51創(chuàng)建生成庫(kù)文件,也可以與庫(kù)文件一起經(jīng)L51連接定位生成絕對(duì)目標(biāo)文件(.ABS)。ABS文件由OH51轉(zhuǎn)換成標(biāo)準(zhǔn)的Hex文件,以供調(diào)試器dScope51或tScope51使用進(jìn)行源代碼級(jí)調(diào)試,也可由仿真器使用直接對(duì)目標(biāo)板進(jìn)行調(diào)試,也可以直接寫入程序存貯器如EPROM中。</p><p>
30、 1.2控制芯片STC12A32S2</p><p> STC12A32S2單片機(jī)是宏晶科技生產(chǎn)的單時(shí)鐘/機(jī)器周期(1T)的單片機(jī),是高速、低功耗、超抗干擾的新一代8051單片機(jī),指令代碼完全兼容傳統(tǒng)8051,但速度快8-12倍。其主要具有以下特點(diǎn)</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 藍(lán)牙通信原理</p><p> 藍(lán)牙,是一種支持設(shè)備短距離通信(一般10m內(nèi))的無(wú)線電技術(shù)。能在包括移動(dòng)電話、PDA、無(wú)
32、線耳機(jī)、筆記本電腦、相關(guān)外設(shè)等眾多設(shè)備之間進(jìn)行無(wú)線信息交換。利用“藍(lán)牙”技術(shù),能夠有效地簡(jiǎn)化移動(dòng)通信終端設(shè)備之間的通信,也能夠成功地簡(jiǎn)化設(shè)備與因特網(wǎng)Internet之間的通信,從而數(shù)據(jù)傳輸變得更加迅速高效,為無(wú)線通信拓寬道路。藍(lán)牙采用分散式網(wǎng)絡(luò)結(jié)構(gòu)以及快跳頻和短包技術(shù),支持點(diǎn)對(duì)點(diǎn)及點(diǎn)對(duì)多點(diǎn)通信,工作在全球通用的2.4GHz ISM(即工業(yè)、科學(xué)、醫(yī)學(xué))頻段。其數(shù)據(jù)速率為1Mbps。采用時(shí)分雙工傳輸方案實(shí)現(xiàn)全雙工傳輸。</p>
33、<p><b> 1.4電路原理</b></p><p> 下位機(jī)電路主要包括四個(gè)部分:STC12A32S2主控,藍(lán)牙部分,電源部分,RGB控制電路。</p><p> 主控采用STC12A32S2單片機(jī),該單片機(jī)的電路比較簡(jiǎn)單,其供電電壓為5V,接上晶振和復(fù)位電路就可以工作了,基本工作電路如圖2。</p><p> 圖
34、2 主控原理圖</p><p> 藍(lán)牙部分是采用BMX03C藍(lán)牙模塊,與單片機(jī)連接的方式是串口連接。BMX-02/03系列藍(lán)牙模塊采用CSR BlueCore芯片配置6-8Mbit的軟件存儲(chǔ)空間支持AT指令用戶可根據(jù)需要更改SPP角色主從模式以及串口波特率、設(shè)備名稱、配對(duì)密碼等參數(shù)。其供電電壓為3.3V。具體電路如圖3。</p><p><b> 圖 3 藍(lán)牙</b&
35、gt;</p><p> 電路輸入是12V通過(guò)7805降為5V供給主控芯片,通過(guò)AMS1117降為3.3V供給藍(lán)牙模塊使用。電路如圖4。</p><p><b> 圖 4 電源電路</b></p><p> RGB驅(qū)動(dòng)電路是通過(guò)主控的P2.0、P2.1、P2.2控制SI2302COMS管輸出。SI2302Vds=20V,Id = 3A,I
36、dm = 10A,Vgs = 8V。具體電路圖如下,當(dāng)G級(jí)的電平為高時(shí)可以點(diǎn)亮RGB燈,RGB燈帶是3個(gè)一組,壓降為12V,具體如圖5。</p><p> 圖 5 RGB驅(qū)動(dòng)電路</p><p><b> 圖 6 PCB板圖</b></p><p> 1.5 RGB LED變色原理</p><p> RGBLED
37、燈是由三個(gè)R、G、B燈組成一個(gè)模組,通過(guò)調(diào)節(jié)三個(gè)燈的比例調(diào)節(jié)出不同的顏色,通過(guò)PWM調(diào)節(jié)不同顏色的燈的亮燈長(zhǎng)短即可調(diào)出顏色的比率。亮燈主要包括兩個(gè)部分:顏色部分和亮度部分,亮度部分是用延時(shí)處理的,當(dāng)延時(shí)長(zhǎng)的時(shí)候PWM的頻率就比較高,這時(shí)候燈比較亮,反之則比較暗,具體調(diào)節(jié)顏色亮度的結(jié)構(gòu)如圖7。</p><p> 圖 7 PWM調(diào)色結(jié)構(gòu)</p><p> 1.6 下位機(jī)軟件需求分析<
38、;/p><p><b> 圖 8 需求分析圖</b></p><p> 1.7與上位機(jī)通信接口</p><p> 每一個(gè)與上位機(jī)通信的包都是一個(gè)包含12個(gè)字節(jié)的結(jié)構(gòu)體,具體結(jié)構(gòu)如圖9。</p><p><b> 類型定義和含義</b></p><p> #define
39、ST0x1//靜態(tài)</p><p> #define VL0x2//動(dòng)態(tài)</p><p> #define SR0xA0//序列號(hào)</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> 亮燈時(shí)間值:0~0xFFFF</p><p> 圖 9 與上位機(jī)通信接口結(jié)構(gòu)</p><p> 1.8下位機(jī)程序流程圖</p>&l
41、t;p> 圖 10 主程序流程圖</p><p> 圖 11 定時(shí)器中斷執(zhí)行流程圖</p><p> 圖 12 接收中斷流程圖 </p><p> 2、上位機(jī)Android軟件介紹</p><p> 2.1 Android開發(fā)工具Eclipse</p><p> Eclipse 是一個(gè)開放源代碼的
42、、基于Java的可擴(kuò)展開發(fā)平臺(tái)。就其本身而言,它只是一個(gè)框架和一組服務(wù),用于通過(guò)插件組件構(gòu)建開發(fā)環(huán)境。幸運(yùn)的是,Eclipse 附帶了一個(gè)標(biāo)準(zhǔn)的插件集,包括Java開發(fā)工具(Java Development Kit,JDK)。</p><p> 雖然大多數(shù)用戶很樂(lè)于將 Eclipse 當(dāng)作 Java 集成開發(fā)環(huán)境(IDE)來(lái)使用,但 Eclipse 的目標(biāo)卻不僅限于此。Eclipse 還包括插件開發(fā)環(huán)境(Plu
43、g-in Development Environment,PDE),這個(gè)組件主要針對(duì)希望擴(kuò)展 Eclipse 的軟件開發(fā)人員,因?yàn)樗试S他們構(gòu)建與 Eclipse 環(huán)境無(wú)縫集成的工具。由于 Eclipse 中的每樣?xùn)|西都是插件,對(duì)于給 Eclipse 提供插件,以及給用戶提供一致和統(tǒng)一的集成開發(fā)環(huán)境而言,所有工具開發(fā)人員都具有同等的發(fā)揮場(chǎng)所。</p><p> 2.2 Android軟件需求分析</p&g
44、t;<p> 圖 13 上位機(jī)需求分析</p><p> 2.3 Android頁(yè)面布局</p><p><b> 圖 14 安卓頁(yè)面</b></p><p> 2.4 Android 控制下位機(jī)的實(shí)現(xiàn)</p><p> 通過(guò)Android手機(jī)自帶的系統(tǒng)接口,調(diào)用Android手機(jī)的藍(lán)牙,搜索連接
45、下位機(jī)的藍(lán)牙模塊。然后根據(jù)需求分析一個(gè)個(gè)實(shí)現(xiàn)需要的功能,對(duì)于變色來(lái)說(shuō),目前是通過(guò)三個(gè)進(jìn)度條來(lái)實(shí)現(xiàn),Android有事件捕獲器,通過(guò)捕獲器我們可以實(shí)時(shí)的發(fā)送我們的顏色亮度數(shù)據(jù)。短信和電話以及音樂(lè)幻燈是通過(guò)廣播來(lái)實(shí)現(xiàn)數(shù)據(jù)的發(fā)送。</p><p> 2.5 基于Android 藍(lán)牙RGB燈實(shí)物展示</p><p><b> 圖 15 實(shí)物圖</b></p>
46、<p><b> 結(jié)論</b></p><p> 通過(guò)對(duì)藍(lán)牙幻燈的開發(fā)前的分析,通過(guò)藍(lán)牙控制RGB燈變色的控制方式是可行的。RGB調(diào)光的方式是采用PWM脈沖調(diào)制,PWM包括兩個(gè)部分,顏色比例部分和亮度調(diào)節(jié)部分。上位機(jī)采用Android手機(jī)通過(guò)APP調(diào)用藍(lán)牙跟下位機(jī)通信實(shí)現(xiàn)智能控制,該設(shè)計(jì)主要是為智能家居在燈光控制方面提供一個(gè)廉價(jià)的解決方案。通過(guò)原理圖的設(shè)計(jì)、RGB驅(qū)動(dòng)程序的編
47、寫、制板并做出實(shí)物;Android上位機(jī)APP的編寫,最終調(diào)試成功。通過(guò)的實(shí)物和軟件的有力的驗(yàn)證了該方案的可行性和合理性。在節(jié)能和智能應(yīng)用方面具有非常重要的實(shí)際意義。然而由于RGB燈自身的限制,所以對(duì)RGB顏色值的還原還是存在很大的誤差。</p><p><b> 參考文獻(xiàn)</b></p><p> [1]康華光,鄒壽彬.電子技術(shù)基礎(chǔ)(數(shù)字部分)(第五版)[M].
48、北京:高等教育出版社.2005:100-201.</p><p> [2]康華光,鄒壽彬.電子技術(shù)基礎(chǔ)(模擬部分)(第五版)[M].北京:高等教育出版社.2005:86-197.</p><p> [3]李朝青.單片機(jī)原理及接口技術(shù)[M].北京:北京航空航天大學(xué)出版社.2005:78-92.</p><p> [4]朱勇.單片機(jī)原理與應(yīng)用技術(shù)[M].北京:清華
49、大學(xué)出版社.2006:20-43.</p><p> [5]張毅剛,彭喜元等.新編MCS-51單片機(jī)應(yīng)用設(shè)計(jì)(第二版) [M].哈爾濱:哈爾濱工業(yè)大學(xué)出版社.2006:34-52.</p><p> [6]潭博學(xué),苗江靜.集成電路原理及應(yīng)用[M].北京:電子工業(yè)出版社.2003:40-62.</p><p> [7]高峰. 單片微機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)及實(shí)用技術(shù)[M]
50、.北京:機(jī)械工業(yè)出版社.2004:52-67.</p><p> [8]樓然苗,李光飛.51系列單片機(jī)設(shè)計(jì)實(shí)例[M].北京:北京航空航天大學(xué)出版社.2006:87-135. </p><p> [9]何書森,何華斌.實(shí)用電子線路設(shè)計(jì)速成[M].福建:福建科學(xué)技術(shù)出版社,2006:35-128.</p><p> [10]李國(guó)厚,王春陽(yáng).自動(dòng)化專業(yè)英語(yǔ)[M].北
51、京:北京大學(xué)出版社,2006:128-139.</p><p> [11]陳歡慶. 電子制作理論與實(shí)踐[M].浙江:浙江大學(xué)出版社.2005:57-192.</p><p> [12]馬淑華、王鳳文、張美金.單片機(jī)原理及接口技術(shù)[M].北京:北京郵電大學(xué)出版社.2005.10:62-116. </p><p> [13]楊金巖,鄭應(yīng)強(qiáng),張振仁.8051單片機(jī)數(shù)
52、據(jù)傳輸接口擴(kuò)展技術(shù)與應(yīng)用實(shí)例[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> 下位機(jī)程序:</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//動(dòng)態(tài)</p>&l
56、t;p> #define SR0xA0//序列號(hào)</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> //一個(gè)顏色的時(shí)間間隔</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; //亮的時(shí)間</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;/*寫入硬件延時(shí)*/</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ù)準(zhǔn)備*/</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};//序列號(hào)</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;//有無(wú)密碼驗(yàn)證的標(biāo)記</p><p> /***獨(dú)立波特率 串口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; //允許獨(dú)立波特率發(fā)生器,1時(shí)鐘計(jì)數(shù)一次,串口1使用獨(dú)立</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])){//驗(yàn)證序列號(hào)</p><p> pass = ~0;</p><p> for(i = 0;i < 5;i++)
115、//設(shè)置為默認(rèn)密碼</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])){//驗(yàn)證密碼</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){//動(dòng)態(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;//定時(shí)功能,16位計(jì)數(shù)</p><p> IP |=0x02; //定時(shí)器0高優(yōu)先級(jí) </p><p> IE |=0x82;//定時(shí)器0開中斷</p><p> TH0 = 0xFF;//定時(shí)20條指令</p><p> TL0 = 0xEB;//; 0xE1</p><p> TR0
129、 = 1; //啟動(dòng)定時(shí)器</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. 本站所有資源如無(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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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è)論文
- 電子信息工程畢業(yè)設(shè)計(jì)基于安卓的圖書管理系統(tǒng)
- 電子信息工程畢業(yè)設(shè)計(jì)基于安卓的圖書管理系統(tǒng)
- 電子信息工程專業(yè)畢業(yè)論文
- 電子信息工程專業(yè)畢業(yè)論文
- 汽車遠(yuǎn)近燈自動(dòng)切換裝置【電子信息工程畢業(yè)論文】
- 交通燈控制系統(tǒng)設(shè)計(jì)【電子信息工程畢業(yè)論文】
- 電子信息工程畢業(yè)設(shè)計(jì)安卓手機(jī)遙控器的設(shè)計(jì)
- 電子信息工程畢業(yè)論文帶程序
- 電子信息工程畢業(yè)論文范文
- 電子信息工程專業(yè)畢業(yè)論文(設(shè)計(jì))
- 電子信息工程系畢業(yè)論文
- 電子信息工程畢業(yè)論文-- 交通燈控制電路設(shè)計(jì)
- 電子信息工程畢業(yè)論文基于網(wǎng)絡(luò)工程實(shí)驗(yàn)論文
- 電子信息工程畢業(yè)設(shè)計(jì)(論文)基于安卓手機(jī)的遙控超聲波避障智能車
- 電子信息工程畢業(yè)論文基于agent的網(wǎng)絡(luò)教學(xué)模型
- 電子信息工程畢業(yè)論文關(guān)于網(wǎng)絡(luò)工程的論文
- 電子信息工程畢業(yè)論文關(guān)于網(wǎng)絡(luò)工程的論文
- 基于無(wú)線傳感網(wǎng)的調(diào)光系統(tǒng)設(shè)計(jì)-電子信息工程本科畢業(yè)論文
評(píng)論
0/150
提交評(píng)論