




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、TMOD = 0x02;/定時器 0,工作模式 2,8 位定時模式基于藍(lán)牙控制的的燈光控制系統(tǒng)第一章 功能描述1 、本設(shè)計采用藍(lán)牙作為上位機(jī)和下位機(jī)之間的通信方式,本設(shè)計使用手機(jī) APP 作為上位機(jī)控制下位機(jī)(單片機(jī)) 。2、采用 DS1302 時鐘芯片,通過開發(fā)板上的數(shù)碼管顯示時分秒,即使斷開電源,DS1302芯片中的時間也會正常走,不需要重復(fù)寫入時間。3、手機(jī)連接藍(lán)牙后,手機(jī) APP 可以控制 LED 燈顯示紅綠藍(lán)三種顏色,還可以 向單片機(jī)發(fā)送 LED 燈亮的時間以及燈滅的時間。4、當(dāng)燈亮的時候,可以通過按鍵調(diào)節(jié)占空比調(diào)節(jié)燈光亮度也就是PWM 調(diào)光。在燈光開啟之前以及燈滅之后 PWM 調(diào)光
2、按鍵無效。第二章 下位機(jī)軟件設(shè)計思路以及原理本設(shè)計使用了 STC12C5A60S2 單片機(jī)、數(shù)碼管、 HC-05 藍(lán)牙模塊、 LED 彩 燈、 DS 1 302時鐘模塊。2.1 單片機(jī)程序設(shè)計單片機(jī)部分程序設(shè)計主要包括定時器 0和定時器 1 以及串口部分程序設(shè)計2.1.1 定時器以及 PWM 調(diào)光部分程序設(shè)計定時器主要用到了定時器 0 以及定時器 1,在本設(shè)計中有一項(xiàng)功能是 PWM調(diào)光功能, 由于單片機(jī)沒有 PWM 模塊,所以在本設(shè)計中我們采用定時器 0 來模 擬實(shí)現(xiàn) PWM 的功能,其中定時器 0 的初始化程序如下所示。void Timer0Init()TH0=210;TL0=210;/寫入
3、預(yù)置初值(取值 1-255,數(shù)越大 PWM 頻率越高)TR0=1;/啟動定時器 0/ 寫入預(yù)置值 (取值 1-255,數(shù)越大 PWM 頻率越高)PWM_T=0;void timer0() interrupt 1t+;/每次定時器溢出加 1 if(t=250) /PWM 周期 100 個單位 t=0; /使 t=0 ,開始新的 PWM 周期P1=0x07&P1; /輸出端口 if(PWM_T=t) /按照當(dāng)前占空比切換輸出為高電平 P1=0xf8|P1; 這一部分程序主要是讓單片機(jī)每個 45 微秒進(jìn)入一次定時器 0 中斷,其中 t每隔45微秒加一次,計數(shù)到250的時候重新置零,并讓P1的
4、高五位置零,也就 是亮度達(dá)到最大。PWM_T是調(diào)節(jié)占空比的,初始值是0,是通過按鍵控制PWM_T 數(shù)值的增加與減少的。當(dāng) PWM_T 的數(shù)值與 t 相等的時候?qū)?P1 的高五位置為高 電平。定時器 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;
5、/設(shè)置定時初值TH1 = 0xEE;/設(shè)置定時初值keyscan();t1+;if(t1 = 100)write_1302(0x8e,0x00);hour=read_1302(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è)計中只用到了獨(dú)立按鍵, 所以只需要掃描兩個按鍵就行了。 沒進(jìn) 入一次 t1 就加 1,當(dāng) t1 等于 100 的時候也就是 500ms
6、 的時候讀取一次 DS1302的時,分,秒。因?yàn)?DS1302 的時,分,秒三個變量每隔一秒種才變化一次,所 以每個 500ms 讀取一次是比較節(jié)省資源的做法,而且可以保證數(shù)據(jù)讀取無誤。2.1.2 串口部分程序設(shè)計void 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 &= OxFB;/獨(dú)立波特率發(fā)生器時鐘為Fosc/12即12TBRT
7、 = OxFD;/設(shè)定獨(dú)立波特率發(fā)生器重裝值A(chǔ)UXR |= OxO1;/串口 1 選擇獨(dú)立波特率發(fā)生器為波特率發(fā)生器AUXR |= Ox1O;/啟動獨(dú)立波特率發(fā)生器由于本設(shè)計中兩個定時器都用到了, 所以我們無法使用定時器作為波特率發(fā) 生器,本設(shè)計中使用的是 STC12C5A6OS2 單片機(jī),內(nèi)部含有獨(dú)立波特率發(fā)生器BRT,所以本設(shè)計使用獨(dú)立波特率發(fā)生器。設(shè)置波特率9600。本設(shè)計中串口發(fā)送程序是單片機(jī)測視的時候使用的, 是為了直觀的看到上位機(jī)與下位機(jī)之間通信 的內(nèi)容。2.2 通信協(xié)議部分程序設(shè)計由于上位機(jī)與下位機(jī)之間每次通信的內(nèi)容有很多字節(jié), 所以手機(jī)和單片機(jī)之 間使用藍(lán)牙通信必須按照一定的協(xié)
8、議, 這樣才能成功的將數(shù)據(jù)打包, 數(shù)據(jù)打包完 成之后,我們才能夠正確的區(qū)分?jǐn)?shù)據(jù)類型,區(qū)分出該數(shù)據(jù)是切換 LED 顏色的還 是 LED 的定時開關(guān)時間。void uart() interrupt 4 / 串口中斷if(RI)RI = O;rec_data = SBUF;if(k = 1) shuzui = rec_data; i+; if(i = 6) i = O,k = O; if(rec_data = 0xee)k = 1;void rsckongzhi() 串口數(shù)據(jù)處理switch(shuzu0)case 1:if(shuzu1 = 1) P25 = 1;P24 = 0;P22 = 0;r
9、ed = 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:onshi = shuzu2; onshi = ZhuanHuan(onshi);onfen = shuzu3; onfen = ZhuanHuan(onfen);offshi = shuzu4; offshi= ZhuanHuan(offshi);offfen = shuzu5; offfen= ZhuanHuan(offfen);串口中斷里面的
10、內(nèi)容是把OXee當(dāng)作一包數(shù)據(jù)的識別碼,當(dāng)我們檢測到OXEE的時候也就找到了一包數(shù)據(jù)的開頭。 不過我們將 0XEE 后面的六個字節(jié)的內(nèi)容放 進(jìn)數(shù)組里面。我們使用rskongzhi函數(shù)對數(shù)組里面的內(nèi)容進(jìn)行處理,當(dāng)檢測到shuzu0是1的時候就說明他是燈管顏色切換信息,然后我們再對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)中不 斷地對比實(shí)
11、時時間和定時開關(guān)時間, 當(dāng)時實(shí)時時間與定時開時間相等的時候就將PWM_T 值賦為 250,也就是占空比為百分之百,同時開定時器中斷。當(dāng)定時關(guān)時間與實(shí)時時間相等的時候?qū)?LED 燈引腳電平拉高( LED 燈是共陽的),關(guān)定時器中斷。2.3 DS1302時鐘程序設(shè)計由于DS1302讀寫程序過多,所以我在這里就不顯示讀寫程序了,只對其原理進(jìn) 行介紹單字節(jié)慎ECLKnjrLrLrm_n_rLmTnLRrLrLnBRfilVl AOA1 A2 A3A4 RQ I 1 H DO I 01 I D; D3 I DA DS 口6 07單字節(jié)寫&CLKrLnnrLrmjLnLRTLnrLnnjirA2A
12、3 I A4R/C I 1 W DO I D1 D2二3D4 I D5 I D6D7其讀取時序圖如上所示對于數(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 軟件制作3.1 開發(fā)軟件介紹易安卓,Easy For An d
13、roid,簡稱E4A,是國內(nèi)首款中文可視化安卓應(yīng)用開發(fā)工具。E4A的核心編譯器和支持庫擴(kuò)展自谷歌開源的Sim pie項(xiàng)目。編程者使用的是中文編程語言,可以在沒有 java 編程語言的基礎(chǔ)上快速實(shí)現(xiàn)一個簡單的安 卓手機(jī) APP 的開發(fā)。本APP軟件的設(shè)計,主要實(shí)現(xiàn)了手機(jī)連接HC-05藍(lán)牙模塊,通過三個按鍵分別 控制三個不同顏色的燈的開關(guān) ,通過窗口切換 ,定時控制燈的開啟時間和關(guān)閉時間 .在藍(lán)牙連接成功后能夠進(jìn)入主窗口 ,在主窗口有三個控制燈光的按鈕 ,小組成員的介紹標(biāo)簽 ,APP 軟件的標(biāo)題 .其中按鈕定時設(shè)置 ,點(diǎn)擊之后能夠進(jìn)入定時設(shè)置的界面,此界面可以輸入燈光定時的開啟時間和關(guān)閉時間,從而
14、實(shí)現(xiàn)對燈光的定時控制.3.2 軟件整體設(shè)計軟件的整體設(shè)計主要包括設(shè)計的思路 ,整體的框架 ,內(nèi)容的布局等等 .軟件設(shè)計思路從實(shí)現(xiàn)的功能出發(fā) ,主要包括了藍(lán)牙搜索的顯示界面 ,主窗口和時鐘窗口 .其中主窗口主要用來顯示APP功能標(biāo)題,小組成員介紹標(biāo)簽,三個顏色燈光的控制按 鈕,窗口切換提示標(biāo)簽 ,定時設(shè)置切換窗口按鈕等等 .登陸的顯示界面主要用于顯示搜索到的藍(lán)牙設(shè)備 ,點(diǎn)擊藍(lán)牙設(shè)備便可以實(shí)現(xiàn)連接設(shè)備 .界面有兩個按鈕 ,分別是搜素設(shè)備和停止搜索 ,點(diǎn)擊搜索設(shè)備 ,即可顯示當(dāng)前發(fā)現(xiàn)的藍(lán)牙設(shè)備名稱,點(diǎn)擊藍(lán)牙便可以實(shí)現(xiàn)連接 ,如果藍(lán)牙連接成功 ,便可以進(jìn)入主窗口界面 ,點(diǎn)擊定時設(shè)置按鈕,能夠進(jìn)入定時窗
15、口界面 .定時窗口界面主要有標(biāo)簽定時設(shè)置 ,輸入開關(guān)開的定時時間 ,開關(guān)關(guān)閉的定時時間 ,以及保存并發(fā)送的按鈕 ,如果點(diǎn)擊了這個按鈕 ,便可以將輸入的時間設(shè)置按照規(guī)定的協(xié)議發(fā)送給單片機(jī),從而實(shí)現(xiàn)單片機(jī)的定時控制.軟件的操作流程圖如下圖 3-1 所示.* 開始圖3-1軟件操作流程圖3.3 軟件編程設(shè)計軟件的編程采用的是中文的編程方法,通過模塊化編程實(shí)現(xiàn)整個APP的功能 調(diào)用其中軟件的模塊主要分為主窗口 ,登陸設(shè)備窗口,定時窗口 .331登陸窗口編程設(shè)計在登陸設(shè)備窗口,主要是藍(lán)牙的搜索顯示和連接.其代碼如下:事件按鈕_搜索設(shè)備.被單擊()列表框1.清空項(xiàng)目()藍(lán)牙1.搜索設(shè)備()'搜索設(shè)備
16、 彈出提示("正在搜索")結(jié)束事件事件按鈕_停止搜索.被單擊()藍(lán)牙1.停止搜索()結(jié)束事件事件藍(lán)牙1.發(fā)現(xiàn)設(shè)備(設(shè)備名稱為文本型,設(shè)備地址為文本型,是否已配對為邏輯型)列表框1.添加項(xiàng)目(設(shè)備名稱& " " & 設(shè)備地址& " " &是否已配對)結(jié)束事件上述代碼分別為藍(lán)牙的搜索,停止搜索以及藍(lán)牙的正確連接.APP的登陸界面如下圖3-2所示.n - -iMi 貲 V3WaK0:Dp66:De,a9 F麗F? !丫三弓尋2e:祀-5呑謠. .:£側(cè)酗 A0:DEI : ! till |-AC
17、39;HC;:Be;Fe.!rnill7A FF BOgUO貿(mào)44*論e3-2登陸界面332主窗口代碼編程如果APP成功連接了藍(lán)牙設(shè)備,便可以自動進(jìn)入主窗口界面.主窗口主要有三個燈光控制按鈕,一個定時設(shè)置窗口切換按鈕,小組成員顯示標(biāo)簽和APP主題標(biāo)簽.其中按鈕的操作是窗口的重點(diǎn),其代碼如下:事件按鈕_開關(guān)1.被單擊()'開關(guān)控制的命令為:ef ee 01開關(guān)控制00 00 00 00'開關(guān)控制為8個二進(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ù)(
18、十六進(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)單片機(jī)通過串口接收到數(shù)據(jù)后 ,通過對數(shù)據(jù)的讀取 ,便可以實(shí)現(xiàn)三個燈光的控制 .協(xié)議的定義見如下編程代碼 :事件 主窗口.切換完畢 ()'判斷設(shè)置需重刷新窗口控件如果 讀取設(shè)置 (" 傳保存參數(shù) ")="1" 則 保存設(shè)置("傳保存參數(shù) ",&qu
19、ot;0")結(jié)束 如果'判斷是否為定時設(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è)置 (&quo
20、t;定時關(guān)分 ") '發(fā)送消息保存設(shè)置("傳保存參數(shù) ","0")結(jié)束 如果結(jié)束 事件主窗口的界面設(shè)計如下圖 3-3 所示 .基于藍(lán)牙控制的燈極制慕統(tǒng)E刃套璇孚懂怡15曲么I O H圖3-3主窗口界面如果點(diǎn)擊了定時設(shè)置的按鈕,便可以進(jìn)入開關(guān)定時設(shè)置按鈕,窗口的切換代碼 如下所示.事件按鈕_定時設(shè)置.被單擊()變量臨時文本為文本型 臨時文本=字節(jié)集到十六進(jìn)制(串口數(shù)據(jù)組合)'由于沒有全局參數(shù),所以在這增加保存設(shè)置保存設(shè)置("定時使能",取文本中間(臨時文本,14,2) 保存設(shè)置("定時開時"
21、,取文本中間(臨時文本,16,2) 保存設(shè)置("定時開分",取文本中間(臨時文本,18,2) 保存設(shè)置("定時關(guān)時",取文本中間(臨時文本,20,2) 保存設(shè)置("定時關(guān)分",取文本中間(臨時文本,22,2)如果 讀取窗口 ("窗口 2")=空 則保存窗口 ("窗口 2",創(chuàng)建 窗口 2)結(jié)束如果 切換窗口(讀取窗口 ("窗口 2")結(jié)束事件如果點(diǎn)擊定時按鈕之后,便可以切換至開關(guān)定時設(shè)置窗口 ,窗口的設(shè)計如下圖 3-4所示:- ' l_I."1、圖3-4定時
22、開關(guān)設(shè)置界面如上圖所示,當(dāng)需要輸入開啟時間和關(guān)閉時間的時候,便會調(diào)用系統(tǒng)的數(shù)字輸入,從而能夠輸入開關(guān)的開啟時間和關(guān)閉時間.實(shí)現(xiàn)開關(guān)的定時操作.3.4軟件測試軟件的調(diào)試通過軟件的編譯,如果編譯成功,便會生成APK文件,從而能夠在,便手機(jī)端安裝.通過連接藍(lán)牙,用串口助手接收手機(jī)端發(fā)送的數(shù)據(jù)格式是否正確可以測試手機(jī)APP是否能夠正常工作.本系統(tǒng)采用的串口助手是STC官方網(wǎng)站提供的ISP軟件,軟件的操作界面如下圖3-5所示.A iTC-ISP 珈SbCj Ikft史二帕NSttMCUD屮 Ace H*珈OaQDCJ形片 Hen.AtlEe3B32 GP聯(lián) +n* “ICMJ)V tJffiMU *Ji時E IXT .iMrtiu«<««:i7#(t(r?FtmE f”-v«TlrL iTSenF-w-H牛凹 tiM,TTtn)Mr Wfftiiftfi cH '二耳樂|=血爭2伽!ris呂-!* mXjlFflWJrtF iMUm 丹距i3ciT»CTtt;vi,«!ir、.用 擬旱裁說" Ld I*型工UMUJ&I打E tJWSTMRrI r.7油川才sn犧sLd BtSWPbiLEi殊匕甌t負(fù)釉 eiftslETk ifeEiUitticfltfr-E匚上陷E潮由廿BOEBs 陋利3*
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 幼兒園膳食委員會會議記錄
- 廚余垃圾智能收運(yùn)處置系統(tǒng)項(xiàng)目可行性分析
- 商鋪?zhàn)夥亢贤瑓f(xié)議書
- 更換合同協(xié)議書
- 解除借錢合同協(xié)議書
- 樓頂防水合同協(xié)議書范本
- 林地合同終止協(xié)議書范本
- 打印店合同協(xié)議書
- 復(fù)婚合同協(xié)議書
- 畫室宿管合同協(xié)議書
- (四檢)廈門市2025屆高三畢業(yè)班第四次質(zhì)量檢測英語試卷(含答案)
- 人人講安全個個會應(yīng)急全國防災(zāi)減災(zāi)日主題宣教課件
- 叉車介紹課件
- 2025-2030半月板植入物行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報告
- 2024年Adobe設(shè)計師考試網(wǎng)頁設(shè)計重要性試題及答案
- 《激光切割技術(shù)》課件
- 2025屆深圳市高三二模英語試題(含答案)
- 2025年有限空間作業(yè)安全防護(hù)措施測試題庫試題
- 抗凝劑皮下注射技術(shù)臨床實(shí)踐指南(2024版)解讀 2
- 2025年福建省福州市電子信息集團(tuán)有限公司招聘筆試參考題庫含答案解析
- 設(shè)備采購方案投標(biāo)文件(技術(shù)方案)
評論
0/150
提交評論