




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、工作在手動模式工作在手動模式是否按下打開否是電動機正轉(zhuǎn)否是是否按下停止是否按下關(guān)閉否是完全打開是電動機反轉(zhuǎn)否是 是否按下停止是 完全打開否否否否否否圖4. 3手動模式工作流程圖4.2 BH1750FVI數(shù)字型光強度值讀取主要程序?qū)懞肂H1750FVI的初始化程序后,主要通過Single_Read_BH1750(uchar REG_Address)和void Multiple_read_BH1750(void)子程序讀取光線強度數(shù)據(jù)。uchar Single_Read_BH1750(uchar REG_Address) /單字節(jié)讀取/ uchar REG_data; BH1750_Start()
2、; /起始信號/ BH1750_SendByte(SlaveAddress); /發(fā)送設(shè)備地址加寫信號/ BH1750_SendByte(REG_Address); /發(fā)送存儲單元地址,從最開始的單元開始/ BH1750_Start(); BH1750_SendByte(SlaveAddress+1); /發(fā)送設(shè)備地址加讀信號/ REG_data=BH1750_RecvByte(); /讀出寄存器數(shù)據(jù)/BH1750_SendACK(1); BH1750_Stop(); / /信號停止/ return REG_data; void Multiple_read_BH1750(void) /連續(xù)讀出
3、BH1750內(nèi)部數(shù)據(jù) uchar i; BH1750_Start(); /起始信號/ BH1750_SendByte(SlaveAddress+1); /發(fā)送設(shè)備地址加讀信號/ for (i=0; i2) flag_num=0; sum=sum*10+buf; for(i=0;i1) zidong=0; if(wangnianli1) wangnianli=0; for(i=0;i4;i+)/關(guān)閉接收 防止進入死循環(huán)/ ircodei=0; 4.4溫濕度傳感器工作程序void read_init() DHT=0; /使DHT11低電平并延時至少18ms/delay_ms(21);DHT=1;
4、/置DHT11高電平2040us,并等待從機相應(yīng)/delay_10us();DHT=1;if(!DHT) /從機發(fā)出響應(yīng)信號/ flag=2;while(!DHT)&flag+);/等待從機發(fā)高電平結(jié)束/flag=2;while(DHT&flag+);/開始采集數(shù)據(jù)/tr_shiZ=read_datadht(); /采集濕度整數(shù)部分/tr_shiX=read_datadht(); /采集濕度小數(shù)部分/tr_wenZ=read_datadht();/采集溫度整數(shù)部分/tr_wenX=read_datadht();/采集溫度小數(shù)部分/check=read_datadht();/采集校驗位/DHT=
5、0;delay(20); /采集完數(shù)據(jù)后/ char read_datadht()uchar i,num,tempp;num=0;for(i=0;i8;i+) flag=2;while(!DHT)&flag+);/等待50毫秒低電平/delay_10us(); /延時判斷0還是1/if(DHT=1) tempp=1;flag=2;while(DHT&flag+);elsetempp=0;num=1;num|=tempp; return(num);濕度 (shiZ)的值和預(yù)設(shè)定值shidu0進行比較,如果在設(shè)定的早晚時間之間,當shiZ大于shidu0就執(zhí)行打開窗簾通風。4.5早晚定時開窗主要程
6、序在早晚定時的程序中,如果當前時間不在早晚定時之間,dayflag為0,如果當前時間在早晚定時之間,dayflag為1。程序段為:read_init(); /讀傳感器數(shù)據(jù)/read_time(); /讀時間子程序/if(am0*10000+am1*10)(shi*10000+fen*10)(SET_guangqiang+20)|(dayflag=0)&(closeall=0)&zidong).4.6電動機模塊以打開窗簾為例,程序段為:dakai() int i,j; for(i=0;i16;i+) for(j=0;j(SET_guangqiang+20)|(dayflag=0)&(closea
7、ll=0)&zidong)while(tempshidu0)&(dayflag=1)&(openall=1)&zidong)只有closeall為低電平才能執(zhí)行第一個while循環(huán)體內(nèi)容(關(guān)閉操作),只有openall為高電平才能執(zhí)行第一個while循環(huán)體內(nèi)容(打開操作)。4.8系統(tǒng)主程序void main()uint SET_guangqiang; uchar i,j; while(1) float tempp; delay_ms(200); /延時200ms lcd_init(); /初始化LCD Init_BH1750(); /初始化BH1750 timer0init(); int0in
8、it(); while(1) if(k4flag=1) /如果按下k4即設(shè)置鍵,進入調(diào)整時間 lcd_wcmd(0 x80);xianshi(智能窗簾 時鐘 );lcd_wcmd(0 x91);xianshi(20 年 月 日);lcd_wcmd(0 x8A);xianshi(星 期 ); lcd_wcmd(0 x9a);xianshi(00: 00: 00 );while(k4flag=1)if(k1=0) read_time(); /讀時間子程序dingwei(); keyscan(); /設(shè)置退出if(key4=0)k4flag=0; if(key4=0)k4flag=0;break;
9、if(k4flag=0) read_init(); /讀傳感器數(shù)據(jù) read_time(); /讀時間子程序 /if(am0*10000+am1*10)(shi*10000+fen*10)(pm0*10000+pm1)*10) if(am0*10000+am1*10)(shi*10000+fen*10)(SET_guangqiang+20)|(dayflag=0)&(closeall=0)&zidong) guanbi(); /晚上(設(shè)定值)或者光線小于設(shè)定值關(guān)閉窗簾 while(tempshidu0)&(dayflag=1)&(openall=1)&zidong) dakai(); /早上(
10、設(shè)定值)或者光線大于設(shè)定值打開窗簾 while(zidong=0&(kai=1|guan=1) /手動 gkey();while(zidong=0&kai=1&openall=1)/手動下打開 gkey(); dakai(); if(openall=0)break; while(zidong=0&guan=1&closeall=0)/手動下關(guān)閉 gkey(); guanbi(); if(closeall=1)break; 4.9小結(jié)本設(shè)計的模塊較多,要完成整體設(shè)計,必須模塊化設(shè)計。在開始,寫一個簡單的液晶12864的程序調(diào)試,因為利用它可以調(diào)試并顯示其他模塊的工作情況并顯示出來。首先,進行顯示
11、界面的規(guī)劃、進行紅外遙控解碼、功能鍵等程序的編寫,編寫好DS1302的工作程序。然后,進行光線強度傳感器、濕度傳感器、紅外對管程序的設(shè)計。最后,把各個模塊程序加入的主程序中完成整體程序的設(shè)計。5 系統(tǒng)調(diào)試5.1各模塊調(diào)試5.1.1電機模塊調(diào)試電動機模塊P1 =(P1&0 x0f)|(0 xf0&FFWj使得P1的高字節(jié)(FFWj的值依j的變化次循環(huán))在不影響P1低字節(jié)的變化,去驅(qū)動步進電機。調(diào)節(jié)延時函數(shù)即控制電動機轉(zhuǎn)速。FFW數(shù)組的值為0 x1f,0 x3f,0 x2f,0 x6f,0 x4f,0 xcf,0 x8f,0 x9f,這樣滿足電動機正轉(zhuǎn)。同理同理可以利用REV數(shù)組的值為0 x9f,
12、0 x8f,0 xcf,0 x4f,0 x6f,0 x2f,0 x3f,0 x1f完成電動機反轉(zhuǎn)。5.1.2時鐘模塊調(diào)試經(jīng)過24小時過5秒的走時,測出和網(wǎng)絡(luò)時間吻合,如圖5.1時鐘電路和程序正常。測試前的走時測試前的走時24小時之后的走時圖5.1 時鐘走時測試調(diào)試5.1.3濕度模塊調(diào)試圖5.2所示為室內(nèi)濕度值和向濕度傳感器加濕氣的比較(濕度值55%RH增加到81%RH),濕度傳感器模塊工作正常。室內(nèi)濕度值室內(nèi)濕度值加濕氣后的濕度值圖5.2 濕度傳感器調(diào)試5.1.4光線模塊調(diào)試 在對著窗子較強的光線強度和室內(nèi)燈光調(diào)試對比(光線強度由224Lx減少到148Lx)測試圖如圖5.3所示。圖5.3 光線
13、強度傳感器測試調(diào)試圖5.3 光線強度傳感器測試調(diào)試5.1.5紅外遙控按鍵解碼及調(diào)試將遙控器按鍵面板如圖5.4所示的按鍵解碼,其對應(yīng)的鍵值為圖5.5所示。00FF400FF463900FF473800FF443B00FF403F00FF433C00FF077800FF156A00FF097600FF166900FF199600FF0D7200FF0C7300FF186700FF5E2100FF087700FF1C6300FF5A2500FF432D00FF522D00FF4A35開 開 停 關(guān) 手/自 時間 確定 0 設(shè)置 1 2 3 4 5 6 7 8 9 圖5.4 遙控版面重新設(shè)計圖5.5
14、遙控解碼值5.1.6將電路按照圖3.12連接起來,測得P00和P01的電壓都0.2V,用一張透光性不強的布料穿過紅外對管,此時,接收管截止,測得P00和P01的電壓都4.6V。2個全局變量openall(完全打開)和closeall(完全關(guān)閉)分別為P00和P01的值,用于反饋信號(0.2V為低電平、4.6V為高電平),此時能夠使得電動機在窗簾完全打開和完全關(guān)閉時停下來。5.2系統(tǒng)整體調(diào)試經(jīng)模塊調(diào)試,各模塊的工作正常。將整體程序燒錄,系統(tǒng)整體整體工作如下:首先,程序初始化,其包括單片機、液晶、各傳感器等模塊的初始化。然后,進入界面后按照DS1302原有的時間進行走時,該界面也提供一個萬年歷的功
15、能,可以有用遙控查看時間(包括年、月、日、時、分、秒、星期的查看),如果不進行時間調(diào)整,就直接進入自動模式和手動模式的任意切換,默認下為自動模式。其中,圖5.6為用遙控設(shè)置預(yù)設(shè)值(最適宜的光線強度值、最大濕度值、早晚晚開窗時間)的工作界面;圖5.7 為自動模式下光強變化工作圖片,預(yù)設(shè)置的最適宜光強為150Lx,室內(nèi)光強控制在窗簾在150+20Lx,如大于170就關(guān)閉窗簾調(diào)整,小于130則打開窗簾調(diào)整。圖5.8 是手動模式下關(guān)窗工作圖片,在此工作模式下,窗簾的開關(guān)不受預(yù)設(shè)值控制,只可以用遙控進行開關(guān)或者停等操作。圖5.6遙控設(shè)置預(yù)設(shè)值工作圖片圖5.6遙控設(shè)置預(yù)設(shè)值工作圖片圖5.7 自動模式下光強
16、變化工作圖片圖5.7 自動模式下光強變化工作圖片圖5.8 手動模式下關(guān)窗工作圖片圖5.8 手動模式下關(guān)窗工作圖片5.3小結(jié)經(jīng)過前面幾章的工作,調(diào)試階段很順利的進行。本章節(jié)先對顯示模塊、時鐘模塊、傳感器等功能模塊電路分別調(diào)試,然后整體調(diào)試直到調(diào)試成功。該控制器的顯示模塊、時鐘模塊、遙控器模塊、電動機模和各傳感器等都能正常工作,并且設(shè)計的功能和結(jié)果都達到了預(yù)期目的。該設(shè)計具體能經(jīng)行光線強度檢測、溫濕度檢測、紅外遙控遠程控制;具有時鐘定時及萬年歷功能、各參數(shù)(光線強度、濕度、手動和自動工作模式、萬年歷等)的實時顯示功能;以及窗簾完全關(guān)閉和打開的自動檢測和控制。最實用的是,其可以根據(jù)自己設(shè)定的光線強度
17、值自動控制窗簾的打開程度;當濕度過大時能打開窗簾;早晚定時開關(guān)窗簾。最終在模塊化設(shè)計和不斷調(diào)試中完成各項指標和功能。6 結(jié)束語6.1 結(jié)論本設(shè)計以STC89C54RD+為主控芯片,利用數(shù)字光強度、濕度、溫度、紅外對管等傳感器為外圍元件,經(jīng)過信號電量轉(zhuǎn)換送人單片機,然后利用單片機發(fā)送控制信號驅(qū)動電機的轉(zhuǎn)動, 最終完成了以下功能:光線強度檢測:通過光線強度傳感器實時檢測光線強弱,控制窗簾打開的合適程度,為室內(nèi)提供設(shè)定的光線強度;時鐘定時及萬年歷功能:能提供一個簡單的萬年歷功能并能夠定時早晚開關(guān)窗簾;紅外遙控遠程控制:可以用遙控進行窗簾的開和關(guān),以及各個參數(shù)的設(shè)置;濕度檢測:能完成濕度檢測,當房屋內(nèi)
18、濕度太大能自動打開窗簾進行通風;各參數(shù)(光線強度、濕度、工作模式、萬年歷等)的實時顯示; 窗簾的完全關(guān)閉和打開的自動檢測及控制等。6.2 展望本次設(shè)計的電動機模塊是模擬的有較大力矩的電動機,如果把該設(shè)計投入使用,則需要將它換成實際需要的電動機用控制脈沖控制即可。本設(shè)計本來是完成智能窗的設(shè)計,由于缺少機械的器件,換成了智能窗簾控制部分的設(shè)計,如果有需要可以加上滑輪組和玻璃窗即可完成設(shè)計。本設(shè)計還可以用IOIO for Android Google IO PIC單片機進行設(shè)計,它可以代替本設(shè)計中的紅外遙控完成無線控制。隨著Android設(shè)備的快速增加,用手機等Android設(shè)備去控制窗簾,可以顯得
19、更加智能和方便。由于本學(xué)期的時間被耽擱,很遺憾沒去整合Android知識,直接用學(xué)過的51單片機進行了設(shè)計,希望以后有空能完成Android系統(tǒng)的智能窗控制器的設(shè)計。參考文獻1 孫向濱智能家居控制系統(tǒng)展望J HYPERLINK 01:8088/QK/90436X/index.asp?CSID=%7bBB7CC176-C7F8-4E3F-A833-E07233A54A53%7d 科協(xié)論壇,2012(9):30-312 侯海濤國內(nèi)外智能家居發(fā)展現(xiàn)狀J HYPERLINK 01:8088/QK/90436X/index.asp?CSID=%7bBB7CC176-C7F8-4E3F-A833-E072
20、33A54A53%7d 建材發(fā)展導(dǎo)向,2004(5):92-933 馮旭升奧蘭AL.CK01的智能窗簾機J HYPERLINK 01:8088/QK/90436X/index.asp?CSID=%7bBB7CC176-C7F8-4E3F-A833-E07233A54A53%7d 住宅科技,2003(11):36-374 HYPERLINK javascript:WriterSearch(李勝多); 李勝多, HYPERLINK javascript:WriterSearch(張還); 張還, HYPERLINK javascript:WriterSearch(佟春明); 佟春明基于PLC的多功
21、能智能窗的設(shè)計J青島農(nóng)業(yè)大學(xué)學(xué)報(自然科學(xué)版),2010,27(1):84-885 陳海松, HYPERLINK javascript:WriterSearch(夏繼媛); 夏繼媛基于Zigbee技術(shù)的智能窗簾網(wǎng)絡(luò)化控制系統(tǒng)J電子設(shè)計工程,2012,20(15):136-1386 HYPERLINK /book/search_pub.php?category=01&key2=%CD%F5%BF%A1%BD%DC&order=sort_xtime_desc t _blank 王俊杰傳感器與檢測技術(shù)M北京: HYPERLINK /book/search_pub.php?category=01&ke
22、y3=%C7%E5%BB%AA%B4%F3%D1%A7%B3%F6%B0%E6%C9%E7&order=sort_xtime_desc t _blank 清華大學(xué)出版社,20117 HYPERLINK 08:81/ZK/search.aspx?Query=%e9%99%88%e6%97%a6%e8%8a%b1&Type=A 陳旦花單片機最小系統(tǒng)的設(shè)計與應(yīng)用J HYPERLINK 08:81/ZK/journal.aspx?q=/86302X/ t _blank 無線互聯(lián)科技,2012(10):103-1048 李偉躍基于時鐘芯片 DS1302 的萬年歷的設(shè)計J技術(shù)創(chuàng)新,2012(9):20-2
23、19 HYPERLINK javascript:WriterSearch(云中華); 云中華, HYPERLINK javascript:WriterSearch(白天蕊); 白天蕊基于BH1750FVI的室內(nèi)光照強度測量儀J HYPERLINK 01:8088/QK/83588X/index.asp?CSID=%7bF9F6BF1C-F1D1-441E-98D1-5BF0B9C77DA3%7d 單片機與嵌入式系統(tǒng)應(yīng)用,2012,12(6):27-2910 倪健,董強編碼解碼技術(shù)在紅外遙控器中的實現(xiàn)N中國民航飛行學(xué)院學(xué)報,2004,15(1):35-3611 HYPERLINK 08:81/Z
24、K/search.aspx?Query=%e6%9c%b1%e5%bf%97%e4%bc%9f&Type=A 朱志偉, HYPERLINK 08:81/ZK/search.aspx?Query=%e5%88%98%e6%b9%98%e4%ba%91&Type=A 劉湘云基AT89S51的紅外遙控解碼的實現(xiàn)J HYPERLINK 01:8088/QK/83588X/index.asp?CSID=%7bF9F6BF1C-F1D1-441E-98D1-5BF0B9C77DA3%7d 科技信息,2009(34):109-11212 郭豫榮溫濕度傳感器的原理及應(yīng)用J HYPERLINK 01:8088/
25、QK/83588X/index.asp?CSID=%7bF9F6BF1C-F1D1-441E-98D1-5BF0B9C77DA3%7d 電子元器件應(yīng)用,2012,14(11):35-5613 王曉明電動機的單片機控制M北京:北京航空航天大學(xué)出版社,200214 HYPERLINK javascript:WriterSearch(劉瑞); 王兆安,劉進軍 HYPERLINK 08:81/qk/97196A/201105/38181077.html t _blank 電力電子技術(shù)M HYPERLINK 08:81/ZK/journal.aspx?q=/97196A/ t _blank 北京:機械工
26、程出版社,201115 HYPERLINK /book/search_pub.php?category=01&key2=%CE%C2%D7%D3%EC%F7&order=sort_xtime_desc t _blank 溫子祺51單片機C語言創(chuàng)新教程M北京: HYPERLINK /book/search_pub.php?category=01&key3=%B1%B1%BE%A9%BA%BD%BF%D5%BA%BD%CC%EC%B4%F3%D1%A7%B3%F6%B0%E6%C9%E7&order=sort_xtime_desc t _blank 航空航天大學(xué)出版社,2011致 謝該控制器設(shè)計的
27、最終結(jié)果達到了預(yù)期的目的,在這過程中也遇到很多的困難,在此衷心感謝我的指導(dǎo)老師嚴文娟的悉心指導(dǎo),從論文的選題、文獻的采集、總體設(shè)計、實物的制作、元件的購買、論文結(jié)構(gòu)的布局到論文定稿,從標題到標點,內(nèi)容到格式,她都費盡了心血。感謝嚴老師的辛勤栽培和孜孜教誨,在她的支持和幫助下順利地完本設(shè)計系統(tǒng)的設(shè)計及論文撰寫。在此,還要感謝長江師范學(xué)院物理學(xué)與電子工程學(xué)院和所有老師、同學(xué)們的支持,感謝他們在技術(shù)上的指導(dǎo)和為我們提供軟硬件的支持。特別感謝實驗室的各位老師對該設(shè)計做PCB由于自身專業(yè)水平實際應(yīng)用能力及經(jīng)驗有限,整篇論文肯定存在尚未發(fā)現(xiàn)的缺點和錯誤。懇請閱讀此篇論文的老師、同學(xué),多予指正,不勝感激!附
28、錄A 原理圖、印制板圖和實物圖原理圖:印制板圖:實物圖及實物工作圖:成品圖:工作圖自動模式自動模式手動模式窗簾打開查看萬歷年窗簾打開查看萬歷年參數(shù)設(shè)置參數(shù)設(shè)置附錄B 元件清單CommentValueDesignatorFootprint晶振11.0591MHZB1R38晶振32.768KZB2R38瓷片電容CapacitorC1, C2VP32-3.2電解電容CapacitorC3CAPR5-4X53V電源3VCR2032PCBComponent_1 - duplicate - duplicate發(fā)光二極管Typical BLUE SiC LEDD13.5X2.8X1.9紅外對管發(fā)射管-D2,
29、 D43.5X2.8X1.9紅外對管接收管-D3, D5TO-220_A排阻1KR0HDR1X9電阻1K(R1,R4),10K,4.7K(R5-R8),220(R9,R11),9.1k,(R10,R12)R1, R2, R4,R5, R6, R7, R8, R9, R10, R11, R12AXIAL-0.4電位器1KR3PCBComponent_1 - duplicate3按鍵-S0 ,S1, S2, S3, S4PCBComponent_1 - duplicate4按鈕-S5PCBComponent_1 - duplicate4單片機STC89C54U1DIP40時鐘芯片Trickle C
30、harge Timekeeping Chip ,DS1302U2DIP8紅外接收頭和遙控器1838TU3HDR1X3H濕度傳感器DHT11U4HDR1X4光線強度傳感器BH1750FVIU5HDR1X5電動機驅(qū)動芯片ULN2003ADU6D016液晶顯示帶中文字庫12864液晶12864HDR1X20注:不包括電源元件清單附錄C 使用說明書接上電源后,進行初始化,默認工作在自動模式:通過按鍵可以調(diào)整萬年歷的時間設(shè)置和查看;通過遙控可完成設(shè)置改控制器的工作參數(shù)(最適宜的光線強度值、最大濕度值、早晚開窗時間等);在12864的界面上能對各參數(shù)的實時顯示;在自動模式下預(yù)設(shè)值中,到開窗時間就打開窗簾,
31、到關(guān)窗時間就關(guān)閉窗簾。有一個最適宜的光強度值,可根據(jù)實際的需要設(shè)點其值的大小。在開窗和關(guān)窗的設(shè)定值之間,如果高于設(shè)定濕度最大值,就會打開窗簾進行通風。按下遙控的手動和自動鍵,就可進行手動模式和自動模式的切換,在手動模式下可隨意開關(guān)窗簾,不受各預(yù)設(shè)參數(shù)的影響,按下“開”就打開,按下“關(guān)”就關(guān)閉,按下“?!本屯V构ぷ鳌8鶕?jù)需要可以調(diào)滑動變阻器的值,改變12864的顯示的亮暗程度。本設(shè)計包含有電源模塊、光線傳感器模塊、溫濕度傳感器模塊、紅外遙控器模塊、紅外對管模塊,必要時可分別對其維護。光線強度可以根據(jù)環(huán)境照度值(陰天室內(nèi):550;陰天室外:50500;晴天室內(nèi):1001000;夏季中午太陽光下的照
32、度:約為10*6次方;閱讀書刊時所需的照度:5060;家用攝像機標準照度:1400)進行設(shè)定自己要求??梢愿鶕?jù)最有利的防病、治病環(huán)境(40%55%RH;圖書、文物保管環(huán)境:40%-60%RH;棉毛織品存放:40%-60%RH;糖果、點心存放:50%60%RH;蔬菜、水果存放:50%70%RH;糧食存放:50%70%RH)設(shè)定開窗的最大濕度值。附錄D 程序主要程序:#include #include #include #include #include #include #define uchar unsigned char#define uint unsigned int#define Sla
33、veAddress 0 x46 uchar k4flag; uchar dayflag; uchar flag_num=0; uchar arrows_x=1; uchar line_num=4;uchar row_num=5; uchar set_flag,kai,guan,shoudong,zidong=1,wangnianli;uint disp4;uchar k1;uchar plus=0,sub=0;uchar sum=0;uchar nian,yue,ri,xq,shi,fen,miao;uchar nian1,yue1,ri1,xq1,shi1,fen1,miao1;void x
34、ianxq(uchar xq);char read_datadht(); /按鍵sbit key3=P10;sbit key2=P11;sbit key1=P12;sbit key4=P13;sbit openall=P00;sbit closeall=P01;sbit clk=P34;sbit IO=P35;sbit rst=P36;sbit ACC0=ACC0;sbit ACC7=ACC7;void delay(uchar z)uint x,y;for(x=z;x0;x-) for(y=110;y0;y-);sbit DHT= P37; sbit SCL=P30; sbit SDA=P31
35、; sbit LCD_RS=P07; sbit LCD_RW=P06;sbit LCD_EN=P05; sbit LCD_PSB = P04;sbit LCD_RST = P03;uchar idata str1= ;/用來存放濕度數(shù)據(jù)unsigned char idata str2= ;/用來存放溫度數(shù)據(jù) unsigned char idata str3= ;/用來存放光強數(shù)據(jù)unsigned char idata str4=自動; unsigned char idata str5=手動;unsigned char idata am3=7,30,0;unsigned char idata p
36、m3=20,0,0;unsigned char idata shidu1=70;unsigned char idata guangqiang2=1,50;unsigned char code dis2 = 濕度 %RH ;unsigned char code dis3 = 光強 LX ;unsigned char code dis4 = 窗簾模式: ;unsigned long idata zao_time_flag;/早上打開窗簾的時間標志unsigned long idata now_time_flag;unsigned long idata wan_time_flag; /晚上打開窗簾的
37、時間標志typedef unsigned char BYTE;typedef unsigned short WORD;typedef unsigned char unint8; typedef unsigned char unint16; BYTE BUF8; uchar ge,shi2,bai,qian,wan; int dis_data; unint8 TH_data,TL_data,RH_data,RL_data,CK_data;unint8 TH_temp,TL_temp,RH_temp,RL_temp,CK_temp;unsigned int temp_s,temp_w;unint8
38、 com_data,untemp,temp;unint8 respond; uchar shiZ,shiX,wenZ,wenX,check;uchar tr_shiZ,tr_shiX,tr_wenZ,tr_wenX;uchar flag;/定義紅外解碼所用變量char irtime; uchar startflag,bitnum,irreceok,irprosok,l;uchar idata irdata32;uchar idata ircode4;uchar idata dis88; void timer0init(void)/計時器初始化TMOD=0X02;TH0=0X00;TL0=0X0
39、0;ET0=1;EA=1;TR0=1;void int0init(void) IT1=1;EX1=1;EA=1;void irpros(void) uchar k,i,j;uchar value;k=1;for(j=0;j4;j+)for(i=0;i1;if(irdatak6)value=value | 0 x80;k+;ircodej=value;irprosok=1;/以下為中斷服務(wù)程序/void timer0() interrupt 1irtime+;void int0 () interrupt 2 if(startflag) if(irtime32) bitnum=0;irdatabi
40、tnum=irtime;irtime=0;bitnum+;if(bitnum=33)bitnum=0;irreceok=1; else startflag=1;irtime=0; /*延時程序*/void delayNOP()_nop_(); _nop_(); _nop_(); _nop_(); void delay_ms(unsigned char ms) unsigned char i; while(ms-) for(i = 0; i0)lcd_wdata(*s);s+;void lcd_pos(unsigned char X,unsigned char Y)unsigned char p
41、os; if (X=1) pos=0 x80; else if(X=2) pos=0 x90;else if(X=3)pos=0 x88; else if(X=4)pos=0 x98; lcd_wcmd(Y | pos); /*12864end*/*BH1750程序段*/void BH1750_Start()/起始信號 SDA = 1; /拉高數(shù)據(jù)線/ SCL = 1; /拉高時鐘線/ Delay5us(); /延時/ SDA = 0; /產(chǎn)生下降沿/ Delay5us(); / /延時/ SCL = 0; / /拉低時鐘線/void BH1750_Stop() /停止信號 SDA = 0;
42、SCL = 1; Delay5us(); SDA = 1; /產(chǎn)生上升沿 Delay5us(); void BH1750_SendACK(bit ack)/發(fā)送應(yīng)答信號入口參數(shù):ack (0:ACK 1:NAK) SDA = ack; SCL = 1; Delay5us(); SCL = 0; /拉低時鐘線 Delay5us(); bit BH1750_RecvACK()/接收應(yīng)答信號 SCL = 1; Delay5us(); CY = SDA; SCL = 0; Delay5us(); return CY;void BH1750_SendByte(BYTE dat) /向IIC總線發(fā)送一個字
43、節(jié)數(shù)據(jù) BYTE i; for (i=0; i8; i+) dat = 1; SDA = CY; /送數(shù)據(jù)口 SCL = 1; Delay5us(); SCL = 0; Delay5us(); BH1750_RecvACK();BYTE BH1750_RecvByte()/從IIC總線接收一個字節(jié)數(shù)據(jù) BYTE i; BYTE dat = 0; SDA = 1; /使能內(nèi)部上拉,準備讀取數(shù)據(jù), for (i=0; i8; i+) dat = 1; SCL = 1; Delay5us(); dat |= SDA; SCL = 0; Delay5us(); return dat;void Sing
44、le_Write_BH1750(uchar REG_Address) BH1750_Start(); /起始信號 BH1750_SendByte(SlaveAddress); BH1750_SendByte(REG_Address); / BH1750_SendByte(REG_data); BH1750_Stop(); /*/*單字節(jié)讀取*/*/uchar Single_Read_BH1750(uchar REG_Address) uchar REG_data; BH1750_Start(); BH1750_SendByte(SlaveAddress); BH1750_SendByte(RE
45、G_Address); BH1750_Start(); BH1750_SendByte(SlaveAddress+1); /發(fā)送設(shè)備地址+讀信號 REG_data=BH1750_RecvByte(); /讀出寄存器數(shù)據(jù)BH1750_SendACK(1); BH1750_Stop(); return REG_data; void Multiple_read_BH1750(void)/連續(xù)讀出BH1750內(nèi)部數(shù)據(jù) uchar i; BH1750_Start(); BH1750_SendByte(SlaveAddress+1); for (i=0; i3; i+) BUFi = BH1750_Rec
46、vByte(); if (i = 3) BH1750_SendACK(1); else BH1750_SendACK(0); /回應(yīng)ACK BH1750_Stop(); / /停止信號 Delay5ms();void Init_BH1750()/初始化BH1750 Single_Write_BH1750(0 x01); /*BH1750程序段end*/*DHT11溫濕度傳感器*void read_init()DHT=0; delay_ms(21);DHT=1; delay_10us();delay_10us();delay_10us();delay_10us();DHT=1;if(!DHT)
47、flag=2;while(!DHT)&flag+); flag=2;while(DHT&flag+);tr_shiZ=read_datadht();tr_shiX=read_datadht();tr_wenZ=read_datadht();tr_wenX=read_datadht();check=read_datadht();DHT=0;delay(20);/采集完數(shù)據(jù)后 char read_datadht()uchar i,num,tempp;num=0;for(i=0;i8;i+)flag=2;while(!DHT)&flag+); delay_10us();/延時判斷0還是1delay_
48、10us();delay_10us(); delay_10us();if(DHT=1) tempp=1;flag=2;while(DHT&flag+);elsetempp=0;num0;i-)IO=ACC0;clk=1;clk=0;ACC=ACC1;return;uchar OutputByte() uchar i;for(i=8;i0;i-)ACC=ACC1;ACC7=IO;clk=1;clk=0; return(ACC);void write_ds1302(uchar add,uchar date) rst=0;_nop_();clk=0;_nop_();rst=1; InputByte(
49、add);_nop_();InputByte(date);clk=1;_nop_();rst=0;uchar read_ds1302(uchar add) uchar date;rst=0;_nop_();clk=0;_nop_();rst=1;InputByte(add);date=OutputByte();clk=1;_nop_();rst=0;return(date);void BCDTO(uchar num1,uchar num2) num2=(num1&0 x70)4)*10+(num1&0 x0f);/return(num2);void TOBCD(uchar num1,uchar
50、 num2)num1=(num2/10)4|(num2%10);/return(num1);void write_time()write_ds1302(0 x8e,0 x00);/TOBCD(nian1,nian);nian1=(nian/10)4|(nian%10);write_ds1302(0 x8c,nian1);/年/TOBCD(yue1,yue);yue1=(yue/10)4|(yue%10);write_ds1302(0 x88,yue1);/月/TOBCD(ri1,ri);ri1=(ri/10)4|(ri%10);write_ds1302(0 x86,ri1);/日/TOBCD(
51、xq1,xq);xq1=(xq/10)4|(xq%10);write_ds1302(0 x8A,xq1);/星期/TOBCD(shi1,shi);shi1=(shi/10)4|(shi%10);write_ds1302(0 x84,shi1);/時/TOBCD(fen1,fen);fen1=(fen/10)4|(fen%10);write_ds1302(0 x82,fen1);/分/TOBCD(miao1,miao);miao1=(miao/10)4)*10+(miao1&0 x0f);fen1=read_ds1302(0 x83);/分/BCDTO(fen1,fen);fen=(fen1&0
52、 x70)4)*10+(fen1&0 x0f);shi1=read_ds1302(0 x85);/時/BCDTO(shi1,shi);shi=(shi1&0 x70)4)*10+(shi1&0 x0f);xq1=read_ds1302(0 x8b);/BCDTO(xq1,xq);xq=(xq1&0 x70)4)*10+(xq1&0 x0f); /write_ds1302(0 x8a,xq+1);ri1=read_ds1302(0 x87);/BCDTO(ri1,ri);ri=(ri1&0 x70)4)*10+(ri1&0 x0f);yue1=read_ds1302(0 x89);/BCDTO(
53、yue1,yue);yue=(yue1&0 x70)4)*10+(yue1&0 x0f);nian1=read_ds1302(0 x8d);/BCDTO(nian1,nian);nian=(nian1&0 xf0)4)*10+(nian1&0 x0f);void xianxq(uchar xq) lcd_wcmd(0 x8e);if(xq=1)xianshi(一);if(xq=2)xianshi(二);if(xq=3)xianshi(三);if(xq=4)xianshi(四);if(xq=5)xianshi(五);if(xq=6)xianshi(六);if(xq=7)xianshi(日);uc
54、har keyscan()/鍵盤控制if(key1=0)delay(45);if(key1=0)while(!key1);k1+;switch(k1)case 1:lcd_wcmd(0 x92);lcd_wcmd(0 x0d );break;case 2:lcd_wcmd(0 x94);break;case 3:lcd_wcmd(0 x96);break;case 4:lcd_wcmd(0 x8e);break;case 5:lcd_wcmd(0 x9a);break;case 6:lcd_wcmd(0 x9c);break;case 7:lcd_wcmd(0 x9e);break;case
55、8:k1=0;lcd_wcmd(0 x0c);write_time(); break;if(k1!=0)if(key2=0)delay(45);if(key2=0)while(!key2);if(k1=1)/niannian+;if(nian=100)nian=0;/qiehuan(1,nian);/write_sj(0 x92,nian);write_sj1(nian);lcd_wcmd(0 x92);if(k1=2)/yueyue+;if(yue=13)yue=0;/qiehuan(1,yue);/write_sj(0 x94,yue);write_sj1(yue);lcd_wcmd(0
56、x94);if(k1=3)/riri+;if(ri=31)ri=0;/write_sj(0 x96,ri);/qiehuan(1,ri);write_sj1(ri);lcd_wcmd(0 x96);if(k1=4)/xqxq+;if(xq=8)xq=1;xianxq(xq);lcd_wcmd(0 x8e);if(k1=5)/shishi+;if(shi=24)shi=0;/write_sj(0 x9a,shi);/qiehuan(1,shi);write_sj1(shi);lcd_wcmd(0 x9a);if(k1=6)/fenfen+;if(fen=60)fen=0;/write_sj(0
57、x9c,fen);/qiehuan(1,fen);write_sj1(fen);lcd_wcmd(0 x9c);if(k1=7)/miaomiao+;if(miao=60)miao=0;/write_sj(0 x9e,miao);/qiehuan(1,miao);write_sj1(miao);lcd_wcmd(0 x9e);if(key3=0)delay(45);if(key3=0)while(!key3);if(k1=1)/niannian-;if(nian=-1)nian=99;/write_sj(0 x92,nian);/qiehuan(2,nian);write_sj1(nian);
58、lcd_wcmd(0 x92);if(k1=2)/yueyue-;if(yue=0)yue=12;/write_sj(0 x94,yue);/qiehuan(2,yue);write_sj1(yue);lcd_wcmd(0 x94);if(k1=3)/riri-;if(ri=-1)ri=30;/write_sj(0 x96,ri);/qiehuan(1,ri);write_sj1(ri);lcd_wcmd(0 x96);if(k1=4)/xqxq-;if(xq=0)xq=7;xianxq(xq);lcd_wcmd(0 x8e);if(k1=5)/shishi-;if(shi=-1)shi=23
59、;/write_sj(0 x9a,shi);/qiehuan(2,shi);write_sj1(shi);lcd_wcmd(0 x9a);if(k1=6)/fenfen-;if(fen=-1)fen=59;/write_sj(0 x9c,fen);/qiehuan(2,fen);write_sj1(fen);lcd_wcmd(0 x9c);if(k1=7)/miaomiao-;if(miao=-1)miao=59;/write_sj(0 x9e,miao);/qiehuan(2,miao);write_sj1(miao);lcd_wcmd(0 x9e);/*DS1302及按鍵時間調(diào)整階段end
60、*/*電動機*/uchar code FFW=0 x1f,0 x3f,0 x2f,0 x6f,0 x4f,0 xcf,0 x8f,0 x9f; /正轉(zhuǎn)數(shù)組uchar code REV= 0 x9f,0 x8f,0 xcf,0 x4f,0 x6f,0 x2f,0 x3f,0 x1f;/正轉(zhuǎn)數(shù)組void DelayMS(uint ms) uchar i; while(ms-) for(i=0;i2) flag_num=0; sum=sum*10+buf; for(i=0;i1) zidong=0; if(wangnianli1) wangnianli=0; for(i=0;i4;i+)/ 防止進入
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 社會協(xié)同推動勞動教育的策略
- 《電路基礎(chǔ)與歐姆定律:初三物理電學(xué)入門教案》
- 圖書數(shù)字化平臺運營協(xié)議
- 中考考前指導(dǎo):最后一節(jié)地理課
- 預(yù)測模型構(gòu)建從理論到實踐
- 顧客體驗至上新零售場景的設(shè)計原則與技巧
- 非遺在線教育平臺的開發(fā)及推廣策略
- 非物質(zhì)文化遺產(chǎn)在當代建筑設(shè)計中的創(chuàng)新實踐
- 非物質(zhì)文化遺產(chǎn)的現(xiàn)代演繹主題婚禮策劃的新趨勢
- 防災(zāi)減災(zāi)及應(yīng)急管理措施分析
- 2025年春季《中華民族共同體概論》第三次平時作業(yè)-國開(XJ)-參考資料
- 會計領(lǐng)軍筆試題目及答案
- 2025年四川省成都市青羊區(qū)中考二診化學(xué)試題(原卷版+解析版)
- (人教版)2025年中考化學(xué)真題試題(含解析)
- PVC拆除施工方案
- 2025年托育服務(wù)宣傳月活動總結(jié)(普惠托育科學(xué)育兒)
- 中考數(shù)學(xué)復(fù)習-中檔題訓(xùn)練(四)(含答案)
- 醫(yī)學(xué)實驗室質(zhì)量控制知識試題及答案
- 駕駛員消防安全培訓(xùn)
- 檢驗科生物安全知識
- 滬教版五年級英語下冊期末復(fù)習總結(jié)
評論
0/150
提交評論