国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于STC12C5A60S2單片機(jī)智能窗簾控制系統(tǒng)的設(shè)計

2018-10-30 07:59:10郭占苗
微型電腦應(yīng)用 2018年10期
關(guān)鍵詞:液晶窗簾時鐘

郭占苗

(西安航空職業(yè)技術(shù)學(xué)院 電子工程學(xué)院, 西安 710089)

0 引言

智能家居是在現(xiàn)代時尚家居的基礎(chǔ)上,將組合智能、電子智能、機(jī)械智能和物聯(lián)智能巧妙的融入家居產(chǎn)品當(dāng)中,使家居更加智能化、國際化、時尚化,是未來國際家居發(fā)展的潮流和趨勢。智能窗簾是智能家居的一個重要組成部分,設(shè)計一款人性化、智能化、便捷化和多樣化的智能窗簾不僅可以改變?nèi)藗兊纳罘绞?,還能提高生活質(zhì)量。經(jīng)過實踐驗證,基于STC12C5A60S2 單片機(jī)系統(tǒng)的智能窗簾可以很好地完成窗簾的智能控制,較傳統(tǒng)靠人為去拉開和關(guān)閉窗簾的方式更方便,且不易損壞,具有廣闊的應(yīng)用前景。

1 硬件設(shè)計原理框圖

智能窗簾系統(tǒng)設(shè)計由達(dá)林頓管電路構(gòu)成的ULN2003芯片驅(qū)動步進(jìn)電機(jī)28BYJ控制窗簾的開啟和閉合狀態(tài),用霍爾傳感器控制窗簾開啟和關(guān)閉的最大位移。利用光敏電阻采集外界光的強(qiáng)度,利用溫度傳感器采集環(huán)境溫度,結(jié)合I2C協(xié)議和1-wire總線編程,經(jīng)PCF8591AD轉(zhuǎn)換器輸入單片機(jī)進(jìn)行控制,由單片機(jī)輸出控制電機(jī)的正反轉(zhuǎn),并將窗簾狀態(tài)、溫度和光照度參數(shù)結(jié)果顯示在LCD12864液晶上[1],同時,可通過按鍵模塊調(diào)整時間,也可設(shè)定窗簾自動開關(guān)的時間,時鐘顯示模塊能夠準(zhǔn)確顯示實時時間,在時鐘模塊安裝紐扣電池可實現(xiàn)掉電后數(shù)據(jù)不丟失功能。智能窗簾具體原理框圖,如圖1所示。

圖1 智能窗簾系統(tǒng)框圖

2 軟件設(shè)計程序

2.1 主函數(shù)設(shè)計

main函數(shù)里主要調(diào)用“BS18B20.h”溫度采集頭文件函數(shù)、“LCD12864.h”液晶顯示、“DS1302.h”時鐘函數(shù)和“PCF8591.h”模數(shù)轉(zhuǎn)換函數(shù),在液晶第一行顯示“智能窗簾控制系統(tǒng)”,第二行上顯示出“窗簾狀態(tài)”是“打開”或者“關(guān)閉”,第三行顯示當(dāng)前時間,第四行顯示溫度和光照度。液晶時間顯示主要代碼如下:

void sfm_show() //時間顯示行

{ convert();

temp1=time0/10%10;

temp2=time0%10;

temp3=time1/10%10;

temp4=time1%10;

temp5=time2/10%10;

temp6=time2%10;

lcd_pos(3,1);

write_com(0x06);

write_data(ASII[temp1]);

write_data(ASII[temp2]);

chinese(s); //顯示漢字“時”

write_data(ASII[temp3]);

write_data(ASII[temp4]);

chinese(f); //顯示漢字“分”

write_data(ASII[temp5]);

write_data(ASII[temp6]);

chinese(m); //顯示漢字“秒” }

將“時分秒”的個位和十位分別取出來從液晶的第三行第一列開始一次顯示,并利用chinese( )漢字轉(zhuǎn)化函數(shù),顯示出相應(yīng)漢字[2],其它狀態(tài)顯示函數(shù)與此類同,不再贅述。通過編寫按鍵函數(shù),實現(xiàn)時間調(diào)整、光照度的閾值設(shè)定和窗簾開關(guān)的定時。

2.2 DS18B20溫度采集函數(shù)

通過DS18B20可以實時采集室內(nèi)溫度,并將結(jié)果顯示在液晶上。該溫度采集模塊主要包括DS18B20初始化、寫字節(jié)操作、讀字節(jié)和溫度采集等子函數(shù)。DS18B20的讀寫字節(jié)和初始化程序按照器件手冊1-wire工作協(xié)議時序編寫即可,初始化程序檢測1-wire總線是否存在DS18B20器件,讀寫時序要注意采樣時間[3]。溫度采集程序設(shè)計主要包括DS18B20的初始化,啟動溫度轉(zhuǎn)換和讀取寄存器的程序設(shè)計,讀取時先讀取低字節(jié)再讀取高字節(jié),最后返回溫度值,主要用語句“temp = high<<4; temp |= (low>>4); return temp;”實現(xiàn)該功能。

2.3 DS1302時鐘模塊

DS1302時鐘模塊主要實現(xiàn)實時顯示當(dāng)前時間和定時窗簾開啟與關(guān)閉時間的功能,按照DS1302時序編寫字節(jié)讀函數(shù),字節(jié)寫函數(shù),“unsigned char read_1302(unsigned char add)”地址讀函數(shù),即將寄存器地址的數(shù)據(jù)讀出來,以及地址寫函數(shù)等。DS1302的6腳雙向通信引腳I/O接單片機(jī)的P0^1,7腳通信時鐘信號引腳SCLK接單片機(jī)P0^2,5腳使能引腳CE接P0^0,在寫時鐘程序時先進(jìn)行聲明[4]。時鐘模塊芯片初始化函數(shù),主要根據(jù)DS1302的時鐘寄存器功能表編寫,向DS1302內(nèi)寫秒寄存器80H寫入初始秒數(shù)據(jù),向?qū)懛旨拇嫫?2H寫入初始分?jǐn)?shù)據(jù),向DS1302內(nèi)寫小時寄存器84H寫入初始小時數(shù)據(jù),根據(jù)實際時間分別寫入初始“時分秒”的數(shù)據(jù),最后再調(diào)用BCD碼轉(zhuǎn)換十進(jìn)制函數(shù),BCD碼轉(zhuǎn)化十進(jìn)制子函數(shù)由“unsigned char BCD_Decimal(unsigned char bcd)”BCD碼轉(zhuǎn)十進(jìn)制函數(shù)實現(xiàn),主要語句有{unsigned char Decimal;Decimal=bcd>>4;return(Decimal=Decimal*10+(bcd&=0x0F)); },實現(xiàn)第一次開啟時將寫入設(shè)置的初始時間顯示在LCD12864上的功能。

注意,為了使斷電再開機(jī)后時間不初始化成程序設(shè)置的初始時間,所以在DS1302初始化程序使進(jìn)行寫保護(hù),并用了備用電池。

2.4 PCF8591AD轉(zhuǎn)換和I2C協(xié)議

PCF8591 具有 4 個模擬輸入、1 個模擬輸出和 1個串行 I2C 總線接口。其中PCF8591的第4引腳AIN3,即模擬輸入接口3連接光敏電阻,可采集環(huán)境光強(qiáng)精確數(shù)值。在 PCF8591 器件上輸入輸出的地址、控制和數(shù)據(jù)信號都是通過雙線雙向 I2C 總線以串行的方式進(jìn)行傳輸[5]。I2C模塊化頭文件函數(shù)程序主要包括I2C起始信號程序,即在SCL高電平期間,SDA產(chǎn)生一個由高到低的下降沿;數(shù)據(jù)傳輸函數(shù),I2C協(xié)議的數(shù)據(jù)傳輸是按照高位在前低位在后的順序傳輸;以及停止信號,即SCL在高電平期間,SDA由低電平向高電平變化產(chǎn)生一個上升沿。PCF8591將光敏電阻值讀出來轉(zhuǎn)換成數(shù)字量,將光照度顯示在液晶上,轉(zhuǎn)換代碼函數(shù)主要調(diào)用“i2c_start();” I2C初始化、“i2c_sendbyte(0x91);”尋址PCF8591和“temp = i2c_receivebyte();”讀取轉(zhuǎn)換數(shù)值函數(shù),最后通過語句“return temp;”返回要顯示的溫度值。

2.5 步進(jìn)電機(jī)與霍爾傳感器模塊

因為電機(jī)功耗比較大,所以用驅(qū)動芯片為電機(jī)提供較大電流,步進(jìn)電機(jī)的A、B、C、D四相通過驅(qū)動ULN2003分別與單片機(jī)的P1^0、P1^1、P1^2和P1^3依次相連,并采用雙四拍模式工作。當(dāng)窗簾閉合時,步進(jìn)電機(jī)的AB、BC、CD、DA相依次導(dǎo)通,達(dá)到霍爾傳感器控制下限位移時電機(jī)停轉(zhuǎn);當(dāng)窗簾開啟時,步進(jìn)電機(jī)的DA、CD、BC、AB相依次導(dǎo)通,達(dá)到霍爾傳感器控制上限位移時,電機(jī)停轉(zhuǎn)??梢姡ㄟ^控制電機(jī)正反轉(zhuǎn)動來控制窗簾開啟與閉合狀態(tài),并由霍爾傳感器限定窗簾位移的極限[6]。主要在“void T0_time() interrupt 1”定時器T0中斷函數(shù)里實現(xiàn)該功能。

2.6 液晶顯示模塊

窗簾狀態(tài)和相關(guān)參數(shù)用LCD12864液晶顯示,液晶顯示模塊主要包括寫指令、寫數(shù)據(jù)和初始化子函數(shù)。以時間顯示為例,時間顯示在液晶的第三行第一列,主要包括寫指令和寫數(shù)據(jù)代碼,讀寫指令時,發(fā)送數(shù)據(jù)分高四位、第四位兩次發(fā)送,通過語句“send_byte(0xf0&com);”(高四位)、“send_byte(0xf0&com<<4);”(第四位)實現(xiàn)。

編程實現(xiàn)第一行漢字顯示從0X80地址開始,第二行從0X90,第三行從0X88,第四行從0X98地址開始,聲明時依次定義漢字位置地址,當(dāng)顯示漢字不再變化時,定義時加關(guān)鍵字“code”,存儲在flash里。液晶的5腳讀/寫位接單片機(jī)P2^0引腳,3腳在模塊上接電位器調(diào)整背光,6腳E使能引腳接P2^1引腳,因為采用串口方式編寫程序[7],所以15腳PSB接地,19腳背光源正端接智能窗簾系統(tǒng)電源VCC,20腳背光源負(fù)端接地GND。

3 電路實物制作與調(diào)試

PCF8591的14腳接智能窗簾系統(tǒng)5V電源,電路擴(kuò)展時,可以給PCF8591的AIN0,AIN1,AIN2分別接入濕度傳感器、煙霧傳感器和氣敏傳感器等傳感器,輸入的模擬量通過PCF8951AD采集轉(zhuǎn)換送給單片機(jī),設(shè)定閾值,超過閾值時,窗簾“開啟”或“閉合”,設(shè)計思路與光敏電阻采集光照度類似[8],A/D轉(zhuǎn)換電路圖,如圖2所示。

圖2 PCF8591A/D轉(zhuǎn)換模塊電路圖

步進(jìn)電機(jī)控制窗簾原理圖如圖3所示。

圖3 步進(jìn)電機(jī)控制窗簾原理圖

步進(jìn)電機(jī)的四相“ABCD”分別于單片機(jī)的“P1^0、P1^1、P1^2和P1^3”端口依次相連,通過電機(jī)的轉(zhuǎn)反轉(zhuǎn)編程實現(xiàn)窗簾的開啟與閉合,上限位霍爾傳感器和下限位霍爾傳感器分別與單片機(jī)的“P0^5”和“P0^4”相連接,編程實現(xiàn)當(dāng)窗簾打開時,設(shè)置霍爾傳感器上限開關(guān)閾值,電機(jī)正轉(zhuǎn)窗簾開啟;當(dāng)窗簾閉合時,設(shè)置下限開關(guān)閾值,電機(jī)反轉(zhuǎn)窗簾關(guān)閉;除開啟和閉合以外,則電機(jī)停轉(zhuǎn)維持原狀態(tài)不變,多次用“if…else”語句來編寫判斷電機(jī)轉(zhuǎn)動程序。

實物制作如圖4所示。

圖4 智能窗簾實物制作

系統(tǒng)電源采用手機(jī)充電器數(shù)據(jù)線接入USB端口供電,同時在電路板背面裝配電池盒,以備在不插電時由電池供電保證智能窗簾的正常運(yùn)行;DS1302時鐘芯片的2腳和3腳接32.768KHz的晶振,給DS1302提供一個時間基準(zhǔn);PCF8591AD模塊通過跳線帽給電路擴(kuò)展預(yù)留了端口;4個按鍵開關(guān)從左到右依次是菜單鍵、菜單功能鍵、減一鍵和加一鍵,菜單鍵里可以選擇“窗簾打開時間”、“窗簾關(guān)閉時間”、“光線設(shè)定”、“窗簾狀態(tài)”和“時間調(diào)整”,然后按菜單功能鍵,結(jié)合加減鍵,選擇調(diào)時間閾值和光照度的閾值,采集到的值和閾值進(jìn)行比較[9],達(dá)到條件時,由電機(jī)帶動窗簾進(jìn)行動作并在液晶上顯示狀態(tài),由于液晶采自帶字庫,所以編程時直接將要顯示的漢字直接賦給數(shù)組的地址即可顯示相應(yīng)的漢字和字符。

4 總結(jié)

基于STC12C5A60S2單片機(jī)的智能窗簾系統(tǒng)設(shè)計,通過電機(jī)正反轉(zhuǎn)來控制窗簾的升降,霍爾傳感器控制窗簾的行程,可以手動設(shè)置光照度閾值和定時時間,利用PCF8591AD轉(zhuǎn)換器采集模擬量送給單片機(jī)自動控制窗簾的開啟和閉合模式[10]。該系統(tǒng)可移植性強(qiáng)、易于擴(kuò)展、實施方便,具有較高的商業(yè)推廣和實際應(yīng)用價值。

猜你喜歡
液晶窗簾時鐘
不可壓液晶方程組的Serrin解
風(fēng)兒撩起了窗簾
黃河之聲(2021年17期)2021-12-16 01:59:54
別樣的“時鐘”
古代的時鐘
《液晶與顯示》征稿簡則
液晶與顯示(2020年8期)2020-08-08 07:01:46
巧做窗簾
有趣的時鐘
時鐘會開“花”
液晶與顯示2015年第30卷第1期 目錄
液晶與顯示(2015年1期)2015-02-28 21:15:54
感恩的窗簾
阿城市| 桐城市| 苍梧县| 密山市| 松原市| 玛纳斯县| 兴仁县| 赤水市| 丹巴县| 密山市| 延川县| 玉环县| 溆浦县| 遵化市| 定陶县| 广宁县| 罗甸县| 玉屏| 昌平区| 鹤岗市| 宿迁市| 湘潭市| 浦北县| 宁远县| 井冈山市| 孙吴县| 湘潭县| 上犹县| 长丰县| 温泉县| 若尔盖县| 盐亭县| 曲阜市| 阿巴嘎旗| 基隆市| 乐昌市| 容城县| 兰考县| 田阳县| 四川省| 正安县|