999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于STC12C5A60S2單片機智能窗簾控制系統的設計

2018-10-30 07:59:10郭占苗
微型電腦應用 2018年10期
關鍵詞:單片機智能

郭占苗

(西安航空職業技術學院 電子工程學院, 西安 710089)

0 引言

智能家居是在現代時尚家居的基礎上,將組合智能、電子智能、機械智能和物聯智能巧妙的融入家居產品當中,使家居更加智能化、國際化、時尚化,是未來國際家居發展的潮流和趨勢。智能窗簾是智能家居的一個重要組成部分,設計一款人性化、智能化、便捷化和多樣化的智能窗簾不僅可以改變人們的生活方式,還能提高生活質量。經過實踐驗證,基于STC12C5A60S2 單片機系統的智能窗簾可以很好地完成窗簾的智能控制,較傳統靠人為去拉開和關閉窗簾的方式更方便,且不易損壞,具有廣闊的應用前景。

1 硬件設計原理框圖

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

圖1 智能窗簾系統框圖

2 軟件設計程序

2.1 主函數設計

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

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( )漢字轉化函數,顯示出相應漢字[2],其它狀態顯示函數與此類同,不再贅述。通過編寫按鍵函數,實現時間調整、光照度的閾值設定和窗簾開關的定時。

2.2 DS18B20溫度采集函數

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

2.3 DS1302時鐘模塊

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

注意,為了使斷電再開機后時間不初始化成程序設置的初始時間,所以在DS1302初始化程序使進行寫保護,并用了備用電池。

2.4 PCF8591AD轉換和I2C協議

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

2.5 步進電機與霍爾傳感器模塊

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

2.6 液晶顯示模塊

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

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

3 電路實物制作與調試

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

圖2 PCF8591A/D轉換模塊電路圖

步進電機控制窗簾原理圖如圖3所示。

圖3 步進電機控制窗簾原理圖

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

實物制作如圖4所示。

圖4 智能窗簾實物制作

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

4 總結

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

猜你喜歡
單片機智能
基于單片機的SPWM控制逆變器的設計與實現
電子制作(2019年13期)2020-01-14 03:15:28
基于單片機的層次漸變暖燈的研究
電子制作(2019年15期)2019-08-27 01:12:10
智能制造 反思與期望
基于單片機的便捷式LCF測量儀
電子制作(2019年9期)2019-05-30 09:42:02
智能前沿
文苑(2018年23期)2018-12-14 01:06:06
智能前沿
文苑(2018年19期)2018-11-09 01:30:14
智能前沿
文苑(2018年17期)2018-11-09 01:29:26
智能前沿
文苑(2018年21期)2018-11-09 01:22:32
智能制造·AI未來
商周刊(2018年18期)2018-09-21 09:14:46
小議PLC與單片機之間的串行通信及應用
電子制作(2018年12期)2018-08-01 00:48:04
主站蜘蛛池模板: 99精品在线看| 亚洲综合色区在线播放2019| 99热线精品大全在线观看| 免费人成网站在线观看欧美| 热99精品视频| 国内精品一区二区在线观看| 玖玖免费视频在线观看| 日韩高清成人| 久草青青在线视频| 欧美精品v欧洲精品| 亚洲精品成人片在线播放| 玖玖免费视频在线观看| swag国产精品| 亚洲日本在线免费观看| 欧美不卡视频在线| 亚洲日韩久久综合中文字幕| 大学生久久香蕉国产线观看| 大陆精大陆国产国语精品1024| 久久不卡国产精品无码| 国产成人精品亚洲日本对白优播| 在线精品自拍| 一级毛片无毒不卡直接观看| 成人字幕网视频在线观看| 国产波多野结衣中文在线播放 | 欧美午夜视频在线| 国产欧美日韩另类| 久久精品电影| 性色一区| 一级毛片免费不卡在线| 全免费a级毛片免费看不卡| 亚洲Av激情网五月天| 欧美v在线| a色毛片免费视频| 99久久精彩视频| 精品国产毛片| av手机版在线播放| 亚洲中文字幕久久精品无码一区| 无码 在线 在线| 日本高清免费不卡视频| 99视频只有精品| 天天躁狠狠躁| 日韩欧美中文字幕在线韩免费| 欧美日韩中文字幕二区三区| 免费一级全黄少妇性色生活片| 欧美日韩精品在线播放| 99热这里只有精品免费| 毛片视频网址| 国产精品永久久久久| 中国毛片网| 国产成人在线无码免费视频| 亚洲国产天堂久久综合| 一本大道香蕉久中文在线播放| 国产区在线看| 四虎免费视频网站| 亚洲综合日韩精品| 成人在线亚洲| 国产在线91在线电影| 午夜三级在线| 亚洲美女一区| 欧美一区福利| 国产精品精品视频| 四虎影视无码永久免费观看| 国产免费看久久久| 欧美中文字幕在线视频| 成人年鲁鲁在线观看视频| 色偷偷一区| 欧美午夜一区| 高清精品美女在线播放| 亚洲伊人久久精品影院| 在线毛片网站| 黄色免费在线网址| a级毛片在线免费| 欧美精品v| 亚洲青涩在线| 毛片在线看网站| 亚洲av无码人妻| 亚洲AV一二三区无码AV蜜桃| 色天天综合| 国产成a人片在线播放| 欧美黄网在线| 日韩在线观看网站| 久久人妻xunleige无码|