版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、基于藍(lán)牙控制的的燈光控制系統(tǒng)第一章 功能描述1、本設(shè)計采用藍(lán)牙作為上位機和下位機之間的通信方式,本設(shè)計使用手機APP作為上位機控制下位機(單片機)。2、采用DS1302時鐘芯片,通過開發(fā)板上的數(shù)碼管顯示時分秒,即使斷開電源,DS1302芯片中的時間也會正常走,不需要重復(fù)寫入時間。3、手機連接藍(lán)牙后,手機APP可以控制LED燈顯示紅綠藍(lán)三種顏色,還可以向單片機發(fā)送LED燈亮的時間以及燈滅的時間。4、當(dāng)燈亮的時候,可以通過按鍵調(diào)節(jié)占空比調(diào)節(jié)燈光亮度也就是PWM調(diào)光。在燈光開啟之前以及燈滅之后PWM調(diào)光按鍵無效。第二章 下位機軟件設(shè)計思路以及原理本設(shè)計使用了STC12C5A60S2單片機、數(shù)碼管、H
2、C-05藍(lán)牙模塊、LED彩燈、DS1302時鐘模塊。2.1 單片機程序設(shè)計單片機部分程序設(shè)計主要包括定時器0和定時器1以及串口部分程序設(shè)計2.1.1 定時器以及PWM調(diào)光部分程序設(shè)計定時器主要用到了定時器0以及定時器1,在本設(shè)計中有一項功能是PWM調(diào)光功能,由于單片機沒有PWM模塊,所以在本設(shè)計中我們采用定時器0來模擬實現(xiàn)PWM的功能,其中定時器0的初始化程序如下所示。void Timer0Init()TMOD = 0x02; /定時器0,工作模式2,8位定時模式TH0=210; /寫入預(yù)置初值(取值1-255,數(shù)越大PWM頻率越高)TL0=210; /寫入預(yù)置值 (取值1-255,數(shù)越大PW
3、M頻率越高)TR0=1; /啟動定時器0PWM_T=0;void timer0() interrupt 1 t+; /每次定時器溢出加1 if(t=250) /PWM周期 100個單位 t=0; /使t=0,開始新的PWM周期 P1=0x07&P1; /輸出端口 if(PWM_T=t) /按照當(dāng)前占空比切換輸出為高電平 P1=0xf8|P1; 這一部分程序主要是讓單片機每個45微秒進(jìn)入一次定時器0中斷,其中t每隔45微秒加一次,計數(shù)到250的時候重新置零,并讓P1的高五位置零,也就是亮度達(dá)到最大。PWM_T是調(diào)節(jié)占空比的,初始值是0,是通過按鍵控制PWM_T數(shù)值的增加與減少的。當(dāng)PWM_T的數(shù)
4、值與t相等的時候?qū)1的高五位置為高電平。定時器1部分程序設(shè)計如下所示void Timer1Init(void)/timer1初始化程序TMOD &= 0x0F;/設(shè)置定時器模式TMOD |= 0x10;/設(shè)置定時器模式TL1 = 0x00;/設(shè)置定時初值TH1 = 0xEE;/設(shè)置定時初值TF1 = 0;/清除TF1標(biāo)志TR1 = 1;/定時器1開始計時void timer1() interrupt 3TL1 = 0x00;/設(shè)置定時初值TH1 = 0xEE;/設(shè)置定時初值keyscan();t1+;if(t1 = 100)write_1302(0x8e,0x00);hour=read_13
5、02(0x85);minute=read_1302(0x83);second=read_1302(0x81);write_1302(0x8e,0x80);t1 = 0;/if(t1 = 20) t = 0;定時器1設(shè)置每5ms進(jìn)入一次中斷,進(jìn)入中斷之后先重裝初值,然后進(jìn)行按鍵掃描,本設(shè)計中只用到了獨立按鍵,所以只需要掃描兩個按鍵就行了。沒進(jìn)入一次t1就加1,當(dāng)t1等于100的時候也就是500ms的時候讀取一次DS1302的時,分,秒。因為DS1302的時,分,秒三個變量每隔一秒種才變化一次,所以每個500ms讀取一次是比較節(jié)省資源的做法,而且可以保證數(shù)據(jù)讀取無誤。2.1.2 串口部分程序設(shè)計v
6、oid send_data(uchar byte) /串口發(fā)送函數(shù)SBUF = byte;while(!TI);TI = 0;void UartInit(void)/串口初始化 baud = 9600;PCON &= 0x7F;/波特率不倍速SCON = 0x50;/8位數(shù)據(jù),可變波特率AUXR &= 0xFB;/獨立波特率發(fā)生器時鐘為Fosc/12,即12TBRT = 0xFD;/設(shè)定獨立波特率發(fā)生器重裝值A(chǔ)UXR |= 0x01;/串口1選擇獨立波特率發(fā)生器為波特率發(fā)生器AUXR |= 0x10;/啟動獨立波特率發(fā)生器由于本設(shè)計中兩個定時器都用到了,所以我們無法使用定時器作為波特率發(fā)生器,
7、本設(shè)計中使用的是STC12C5A60S2單片機,內(nèi)部含有獨立波特率發(fā)生器BRT,所以本設(shè)計使用獨立波特率發(fā)生器。設(shè)置波特率9600。本設(shè)計中串口發(fā)送程序是單片機測視的時候使用的,是為了直觀的看到上位機與下位機之間通信的內(nèi)容。2.2 通信協(xié)議部分程序設(shè)計由于上位機與下位機之間每次通信的內(nèi)容有很多字節(jié),所以手機和單片機之間使用藍(lán)牙通信必須按照一定的協(xié)議,這樣才能成功的將數(shù)據(jù)打包,數(shù)據(jù)打包完成之后,我們才能夠正確的區(qū)分?jǐn)?shù)據(jù)類型,區(qū)分出該數(shù)據(jù)是切換LED顏色的還是LED的定時開關(guān)時間。void uart() interrupt 4 / 串口中斷 if(RI) RI = 0;rec_data = SBU
8、F;if(k = 1)shuzui = rec_data; i+; if(i = 6) i = 0,k = 0; if(rec_data = 0xee)k = 1; void rsckongzhi() 串口數(shù)據(jù)處理 switch(shuzu0) case 1: if(shuzu1 = 1) P25 = 1;P24 = 0;P22 = 0;red = 1; else if (shuzu1 = 2) P25 = 0;P24 = 1;P22 = 0;green = 1; else if (shuzu1 = 4) P25 = 0;P24 = 0;P22 = 1;blue = 1; case 3: on
9、shi = shuzu2;onshi = ZhuanHuan(onshi); onfen = shuzu3;onfen = ZhuanHuan(onfen); offshi = shuzu4;offshi= ZhuanHuan(offshi); offfen = shuzu5;offfen= ZhuanHuan(offfen); 串口中斷里面的內(nèi)容是把0Xee當(dāng)作一包數(shù)據(jù)的識別碼,當(dāng)我們檢測到0XEE的時候也就找到了一包數(shù)據(jù)的開頭。不過我們將0XEE后面的六個字節(jié)的內(nèi)容放進(jìn)數(shù)組里面。我們使用rskongzhi函數(shù)對數(shù)組里面的內(nèi)容進(jìn)行處理,當(dāng)檢測到shuzu0是1的時候就說明他是燈管顏色切換信息
10、,然后我們再對shuzu1進(jìn)行判斷,如果shuzu1是1,則是紅燈亮;如果shuzu1是2,則是綠燈亮;shuzu2是4,則是藍(lán)燈亮。如果shuzu0是3,就代表該信息是LED定時開關(guān)信息。此時我們分別將shuzu2到shuzu5分別賦值給onshi,onfen,offshi,offfen。然后while循環(huán)中不斷地對比實時時間和定時開關(guān)時間,當(dāng)時實時時間與定時開時間相等的時候就將PWM_T值賦為250,也就是占空比為百分之百,同時開定時器中斷。當(dāng)定時關(guān)時間與實時時間相等的時候?qū)ED燈引腳電平拉高(LED燈是共陽的),關(guān)定時器中斷。2.3 DS1302時鐘程序設(shè)計由于DS1302讀寫程序過多
11、,所以我在這里就不顯示讀寫程序了,只對其原理進(jìn)行介紹其讀取時序圖如上所示對于數(shù)據(jù)寫入:開始的 8 個 SCLK 周期,輸入寫命令字節(jié),數(shù)據(jù)字節(jié)在后 8 個 SCLK 周期的上升沿輸入。數(shù)據(jù)輸入位 0 開始。對于數(shù)據(jù)讀?。洪_始的 8 個 SCLK 周期,輸入一個讀命令字節(jié),數(shù)據(jù)字節(jié)在后 8 個 SCLK 周期的下降沿輸出。注意,第一個數(shù)據(jù)字節(jié)的第一個下降沿發(fā)生后,命令字的最后一位被寫入命令字節(jié)的最后一位被寫入。當(dāng) CE 仍為高時。如果還有額外的SCLK 周期,DS1302 將重新發(fā)送數(shù)據(jù)字節(jié),這使 DS1302 具有連續(xù)突發(fā)讀取能力。第三章 APP軟件制作.開發(fā)軟件介紹易安卓,Easy For
12、Android,簡稱E4A,是國內(nèi)首款中文可視化安卓應(yīng)用開發(fā)工具。E4A的核心編譯器和支持庫擴展自谷歌開源的Simple項目。編程者使用的是中文編程語言,可以在沒有java編程語言的基礎(chǔ)上快速實現(xiàn)一個簡單的安卓手機APP的開發(fā)。本APP軟件的設(shè)計,主要實現(xiàn)了手機連接HC-05藍(lán)牙模塊,通過三個按鍵分別控制三個不同顏色的燈的開關(guān),通過窗口切換,定時控制燈的開啟時間和關(guān)閉時間.在藍(lán)牙連接成功后能夠進(jìn)入主窗口,在主窗口有三個控制燈光的按鈕,小組成員的介紹標(biāo)簽,APP軟件的標(biāo)題.其中按鈕定時設(shè)置,點擊之后能夠進(jìn)入定時設(shè)置的界面,此界面可以輸入燈光定時的開啟時間和關(guān)閉時間,從而實現(xiàn)對燈光的定時控制.軟件
13、整體設(shè)計軟件的整體設(shè)計主要包括設(shè)計的思路,整體的框架,內(nèi)容的布局等等.軟件設(shè)計思路從實現(xiàn)的功能出發(fā),主要包括了藍(lán)牙搜索的顯示界面,主窗口和時鐘窗口.其中主窗口主要用來顯示APP功能標(biāo)題,小組成員介紹標(biāo)簽,三個顏色燈光的控制按鈕,窗口切換提示標(biāo)簽,定時設(shè)置切換窗口按鈕等等.登陸的顯示界面主要用于顯示搜索到的藍(lán)牙設(shè)備,點擊藍(lán)牙設(shè)備便可以實現(xiàn)連接設(shè)備.界面有兩個按鈕,分別是搜素設(shè)備和停止搜索,點擊搜索設(shè)備,即可顯示當(dāng)前發(fā)現(xiàn)的藍(lán)牙設(shè)備名稱,點擊藍(lán)牙便可以實現(xiàn)連接,如果藍(lán)牙連接成功,便可以進(jìn)入主窗口界面,點擊定時設(shè)置按鈕,能夠進(jìn)入定時窗口界面.定時窗口界面主要有標(biāo)簽定時設(shè)置,輸入開關(guān)開的定時時間,開關(guān)關(guān)
14、閉的定時時間,以及保存并發(fā)送的按鈕,如果點擊了這個按鈕,便可以將輸入的時間設(shè)置按照規(guī)定的協(xié)議發(fā)送給單片機,從而實現(xiàn)單片機的定時控制.軟件的操作流程圖如下圖3-1所示.圖 3-1 軟件操作流程圖.軟件編程設(shè)計軟件的編程采用的是中文的編程方法,通過模塊化編程實現(xiàn)整個APP的功能調(diào)用.其中軟件的模塊主要分為主窗口,登陸設(shè)備窗口,定時窗口.3.3.1 登陸窗口編程設(shè)計在登陸設(shè)備窗口,主要是藍(lán)牙的搜索顯示和連接.其代碼如下:事件 按鈕_搜索設(shè)備.被單擊() 列表框1.清空項目()藍(lán)牙1.搜索設(shè)備() 搜索設(shè)備彈出提示(正在搜索)結(jié)束 事件事件 按鈕_停止搜索.被單擊() 藍(lán)牙1.停止搜索()結(jié)束 事件事
15、件 藍(lán)牙1.發(fā)現(xiàn)設(shè)備(設(shè)備名稱 為 文本型,設(shè)備地址 為 文本型,是否已配對 為 邏輯型) 列表框1.添加項目(設(shè)備名稱 & & 設(shè)備地址 & & 是否已配對)結(jié)束 事件上述代碼分別為藍(lán)牙的搜索,停止搜索以及藍(lán)牙的正確連接.APP的登陸界面如下圖3-2所示. 3-2 登陸界面3.3.2 主窗口代碼編程如果APP成功連接了藍(lán)牙設(shè)備,便可以自動進(jìn)入主窗口界面.主窗口主要有三個燈光控制按鈕,一個定時設(shè)置窗口切換按鈕,小組成員顯示標(biāo)簽和APP主題標(biāo)簽.其中按鈕的操作是窗口的重點,其代碼如下:事件 按鈕_開關(guān)1.被單擊()開關(guān)控制的命令為:ef ee 01 開關(guān)控制 00 00 00 00開關(guān)控制為8個
16、二進(jìn)制各為1為相對應(yīng)的開關(guān)藍(lán)牙1.發(fā)送數(shù)據(jù)(十六進(jìn)制到字節(jié)集(feee010100000000) 發(fā)送消息結(jié)束 事件事件 按鈕_開關(guān)2.被單擊()藍(lán)牙1.發(fā)送數(shù)據(jù)(十六進(jìn)制到字節(jié)集(feee010200000000) 發(fā)送消息結(jié)束 事件事件 按鈕_開關(guān)3.被單擊()藍(lán)牙1.發(fā)送數(shù)據(jù)(十六進(jìn)制到字節(jié)集(feee010400000000) 發(fā)送消息結(jié)束 事件通過定義三個按鈕的發(fā)送協(xié)議,當(dāng)單片機通過串口接收到數(shù)據(jù)后,通過對數(shù)據(jù)的讀取,便可以實現(xiàn)三個燈光的控制.協(xié)議的定義見如下編程代碼:事件 主窗口.切換完畢()判斷設(shè)置需重刷新窗口控件如果 讀取設(shè)置(傳保存參數(shù))=1 則保存設(shè)置(傳保存參數(shù),0)結(jié)束
17、 如果判斷是否為定時設(shè)置保存,如是就發(fā)送串口命令如果 讀取設(shè)置(傳保存參數(shù))=2 則定時數(shù)據(jù)發(fā)送命令為 EF EE 03 狀態(tài) 開時 開分 關(guān)時 關(guān)分藍(lán)牙1.發(fā)送數(shù)據(jù)(十六進(jìn)制到字節(jié)集(feee03 & 讀取設(shè)置(定時使能) & 讀取設(shè)置(定時開時) & 讀取設(shè)置(定時開分) & 讀取設(shè)置(定時關(guān)時) & 讀取設(shè)置(定時關(guān)分) 發(fā)送消息保存設(shè)置(傳保存參數(shù),0)結(jié)束 如果結(jié)束 事件主窗口的界面設(shè)計如下圖3-3所示.圖3-3 主窗口界面如果點擊了定時設(shè)置的按鈕,便可以進(jìn)入開關(guān)定時設(shè)置按鈕,窗口的切換代碼如下所示.事件 按鈕_定時設(shè)置.被單擊()變量 臨時文本 為 文本型臨時文本=字節(jié)集到十六進(jìn)制
18、(串口數(shù)據(jù)組合)由于沒有全局參數(shù),所以在這增加保存設(shè)置保存設(shè)置(定時使能,取文本中間(臨時文本,14,2)保存設(shè)置(定時開時,取文本中間(臨時文本,16,2)保存設(shè)置(定時開分,取文本中間(臨時文本,18,2)保存設(shè)置(定時關(guān)時,取文本中間(臨時文本,20,2)保存設(shè)置(定時關(guān)分,取文本中間(臨時文本,22,2) 如果 讀取窗口(窗口2)=空 則 保存窗口(窗口2,創(chuàng)建 窗口2)結(jié)束 如果切換窗口(讀取窗口(窗口2)結(jié)束 事件如果點擊定時按鈕之后,便可以切換至開關(guān)定時設(shè)置窗口,窗口的設(shè)計如下圖3-4所示: 圖3-4 定時開關(guān)設(shè)置界面如上圖所示,當(dāng)需要輸入開啟時間和關(guān)閉時間的時候,便會調(diào)用系統(tǒng)的數(shù)字輸入,從而能夠輸入開關(guān)的開啟時間和關(guān)閉時間.實現(xiàn)開關(guān)的定時操作.軟件測試軟件的調(diào)試通過軟件的編譯,如果編譯成功,便會生成APK文件,從而能夠在
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 給水系統(tǒng)故障應(yīng)急處理方案
- 2026年運城幼兒師范高等專科學(xué)校單招職業(yè)傾向性考試題庫及答案1套
- 演出安全規(guī)章制度培訓(xùn)課件
- 科技企業(yè)人力資源年度工作總結(jié)
- 2025年事業(yè)編3月和12月考試及答案
- 2025年交行南京筆試及答案
- 2025年事業(yè)編醫(yī)學(xué)檢驗筆試題目及答案
- 2025年廣東公務(wù)員確認(rèn)參加筆試及答案
- 學(xué)術(shù)風(fēng) 國家獎學(xué)金答辯 20
- 滑板車安全培訓(xùn)教案中班課件
- 重力式、擋墻施工方案
- JJG 705-2014液相色譜儀行業(yè)標(biāo)準(zhǔn)
- 媽媽產(chǎn)后營養(yǎng)平衡的課件
- NB-T 20619-2021 壓水堆核電廠放射性廢液處理系統(tǒng)設(shè)計準(zhǔn)則
- 《李彥宏個人介紹》課件
- 糖尿病核心信息知識講座
- 美容外科臨床診療指南診療規(guī)范2023版
- 【語文】西安高新一小小學(xué)四年級上冊期末試題
- GB/T 9439-2023灰鑄鐵件
- YY/T 0992-2023內(nèi)鏡清洗工作站
- 建筑工程材料見證取樣以及試驗檢測內(nèi)容大全
評論
0/150
提交評論