(1)熟悉51單片機集成開發環境,運用C語言編寫工程文件;
(2)熟練應用所選用單片機的內部結構、資源,以及軟硬件調試設備的基本方法;
(3)自行構建基于單片機的最小系統,完成相關硬件電路的設計實現;
(4)理解智能窗簾的原理和掌握實現方法。
方案一:采用LED數碼管動態掃描,LED數碼管價格雖適中,對于顯示數字也最合適,而且采用動態掃描法與單片機連接時,占用的單片機口線少。但是由于數碼管動態掃描需要借助74LS164移位寄存器進行移位,該芯片在電路調試時往往會有很多障礙,所以不采用LED數碼管作為顯示。
方案二:采用LCD液晶顯示屏,液晶顯示屏的顯示功能強大,可顯示大量文字、圖形。顯示多樣、清晰可見,對于本設計而言,一個1602的液晶屏即可,價格也還實惠,所以此設計中采用LCD1602液晶顯示屏作為顯示模塊。
1.2.2 時鐘模塊的選擇方案一:直接采用單片機定時計數器提供秒信號,使用程序實現年、月、日、星期、時、分、秒計數。采用此種方案雖然可以減少時鐘芯片的使用,節約成本,但是,實現的時間誤差較大、時間算法復雜、無法實現掉電走時。所以不采用此方案。
方案二:采用DS1302時鐘芯片實現時鐘,DS1302是美國DALLAS公司推出的一種高性能、低功耗、帶RAM的實時時鐘電路,它可以對年、月、日、周日、時、分、秒進行計時,工作電壓為2.5V~5.5V。采用三線接口與CPU進行同步通信,并可采用突發方式一次傳送多個字節的時鐘信號或RAM數據。DS1302內部有一個31×8的用于臨時性存放數據的RAM寄存器。主要特點是采用串行數據傳輸,可為掉電保護電源提供可編程的充電功能,并且可以關閉充電功能。
因此,本設計中采用方案二的DS1302提供時鐘。
1.2.3 電機的選擇方案一:使用直流電機來作為執行機構,帶動窗簾運動實現開合。此方案的優點是電機轉速能達到很高,從而實現窗簾的快速開合。其缺點是電機速度過高時,給出停轉信號后,由于慣性會繼續轉動,窗簾也隨之繼續運動,可能會對窗簾框架造成損害;速度過低,則可能會出現電機不能克服阻力,因而不能帶動窗簾運動。
方案二:使用步進電機作為來作為執行機構,帶動窗簾運動實現開合。此方案的優點是給出停轉信號后,會立即停轉,不會對窗簾框架造成損害,且其扭矩比直流電機大,便于帶動窗簾運動;其缺點是價格比直流電機稍貴。
綜上所述,選擇方案二作為系統的執行機構,帶動窗簾運動實現窗簾的開合。
2 系統硬件設計整個系統以STC89C52單片機為核心器件,配合電阻電容晶振等器件,構成單片機的最小系統。其中包括,顯示設備使用1602液晶,可以同時顯示年、月、日、時、分、控制模式、光照強度等基本信息;時鐘模塊采用DS1302芯片,初始化之后,就會開始運行計算時間,單片機只需進行時間信息的讀取即可;光照檢測電路采用光敏電阻和模數轉換芯片TLC549,將模擬量數字化并顯示出來;窗簾使用步進電機進行代替模擬,同時配有一個LED燈用來指示窗簾當前的開關狀態;本設計可以通過5個按鍵作為操作輸入設備,可以對當前時間進行調整設置和設置窗簾開關時間和光控閾值等;還可以通過遙控器來進行開關窗簾,最后是供電采用常用的USB 5V進行供電。

STC89C52是一個低電壓,高性能CMOS 8位單片機,片內含8k bytes的可反復擦寫的Flash只讀程序存儲器和256 bytes的隨機存取數據存儲器(RAM),器件采用ATMEL公司的高密度、非易失性存儲技術生產,兼容標準MCS-51指令系統,片內置通用8位中央處理器和Flash存儲單元,功能強大的STC89C52單片機可為您提供許多較復雜系統控制應用場合,如圖2-3所示 。
圖2-3 STC89C52引腳圖
2.2.2 最小系統電路
STC89C52的最小系統如圖2-4所示,整個最小系統由三個部分組成,晶振電路部分、復位電路部分、電源電路等三個部分組成。由于STC89C52的P0口是漏極開路輸出,因此在P0口接了一個10K的排阻R1,使得P0口可以作為普通的I/O口使用,本設計用P0口來做液晶的數據口。
振電路包括2個30pF的電容C2和C3,以及12M的晶振X1。電容的作用在這里是起振作用,幫助晶振更容易的起振,取值范圍是15-33pF。
圖2-4 最小系統
2.3 液晶顯示電路
本系統顯示采用了工業字符型液晶模塊1602,可顯示2行16個字符,能方便顯示英文字母大小寫、阿拉伯數字、常用符號等。通過自定義還可顯示簡單的漢字。
液晶模塊的電路的連接圖如圖2-5所示,第1腳和第2腳分別接到了電路的GND和VCC,這2個腳是液晶工作的電源輸入腳。第3腳通過一個10K的電位器連接到地端,可通過調節該電位器來調節液晶的對比度。第4腳是液晶的寄存器控制腳,接到了單片機的P13腳上。第5腳是液晶的讀寫控制腳,接到了單片機的P14腳上。第6腳是液晶的使能腳,接到了單片機的P15腳上。第7腳到第14
腳是液晶的數據/地址8位總線,接到了單片機的P0口上。最后第15腳和第16腳是液晶的背光電源腳,直接連接系統VCC和GND。
2.4 時鐘模塊
本文介紹的實時時鐘電路DS1302是DALLAS公司的一種具有涓細電流充電能力的電路,主要特點是采用串行數據傳輸,可為掉電保護電源提供可編程的充電功能,并且可以關閉充電功能。采用普通32.768kHz晶振。是一種高性能、低功耗、帶RAM的實時時鐘芯片,它可以對年、月、日、周、時、分、秒進行計時,具有閏年補償功能,工作電壓為2.0V~
5.5V。采用三線接口與CPU進行同步通信,并可采
DS1302模塊的電路圖如圖2-6所示,第1腳和第4腳分別接到了電路的VCC和GND,這2個腳是芯片工作的電源輸入腳。第8腳接了一個3V的紐扣電池作為時鐘芯片的后備電池,可以保證斷掉主電源后時鐘繼續行走。第2和第3腳接了一個32.768K的晶振給芯片提供時鐘脈沖,最后,第5、6、7依次連接到單片機的IO口,進行數據的傳輸。
光敏電阻器(photovaristor)又叫光感電阻,是利用半導體的光電效應制成的一種電阻值隨入射光的強弱而改變的電阻器;入射光強,電阻減小,入射光弱,電阻增大。光敏電阻器一般用于光的測量、光的控制和光電轉換(將光的變化轉換為電的變化)。
圖2-7 光照強度采集電路 轉換速率為 40000HZ,4MHZ典型內部系統時鐘,電源為 3V至 6V。它能方便地采用三線串行接口方式與各種微處理器連接,構成各種廉價的測控應用系統。
本設計的智能窗簾有光控自動開關的功能,因此必須采集環境中的光照強度,以便進行光照強度的計算和窗簾開關的控制。光照強度采集使用的方案是光敏電阻,由于光敏電阻采集到的是光照強度的模擬量,因此使用ADC0832將光照模擬量轉為數字量再傳給單片機進行處理。該模塊的電路圖如圖2-7所示。
2.6 電機驅動模塊
步進電機是將電脈沖信號轉變為角位移或線位移的開環控制元步進電機件。
由于單片機IO口直接輸出的電流非常弱,沒辦法直接驅動步進電機進行轉
圖2-8 電機驅動電路 動,因此需要在單片機和步進電機之間加多一個TI公司生產的高耐壓、大電流達林頓陣列芯片ULN2003作為電機的驅動芯片。ULN2003具有電流增益高、工作電壓高、溫度范圍寬、帶負載能力強等特點,適應于各類要求高速大功率驅動的系統。電機驅動電路如圖2-8所示。
2.7 按鍵輸入模塊
鍵盤是人與單片機打交道的主要設備。消除在按鍵過程中產生的“毛刺”現象。這里采用最常用的方法,即延時重復掃描法,延時法的原理為:因為“毛刺”脈沖一般持續時間短,約為幾ms,而我們按鍵的時間一般遠遠大于這個時間,所以當單片機檢測到有按鍵動靜后再延時一段時間后再判斷此電平是否保持原狀態,如果是則為有效按鍵,否則無效。
本設計中由于采用的按鍵數量較少,只有5
圖2-10 按鍵電路 個按鍵,分別是“模式切換”、“設置時間”、“設置閾值”、“減”、“加”,故采用了獨立鍵盤的方式,按鍵的連接圖2-10所示。
2.8遙控模塊
遙控器用法:手動模式下按遙控器左右按鍵可以開關窗簾圖2-11 遙控模塊
3 軟件設計本系統的軟件流程圖如圖3-1所示,最開始先進行液晶和時鐘芯片的初始化,然后就進入了一個循環處理的過程。包括先讀取時鐘芯片的日期時間數據,然后在1602液晶上面顯示出來,接著讀取光照強度并顯示。再往下就是按鍵掃描,如果檢測到有按鍵按下去了,則根據不同的按鍵進行不同的任務處理。然后根據不同的模式,進行不同的窗簾開關控制。如果是手動模式的話,則根據開窗簾鍵和關窗簾鍵對窗簾進行開關控制;如果是定時模式的話,則根據設置的開啟時間和關閉時間對窗簾進行控制,而如果是光控模式的話,則判斷當前光照是否高于設置的控制閾值,是的話則關閉窗簾,相反則開啟窗簾。至此完成一次循環的過程。
4 系統測試與分析

說明:仿真實現了手動、定時和自動三種模式,遙控沒有實現,但實物是有遙控模式的。光照強度大小是通過改變滑動變阻器的阻值來模擬的,窗簾的開和關是通過步進電機正轉、反轉模擬的。步進電機的工作方式為四相單四拍,本次模擬的窗簾是對開的,當開的時候,左側電機正轉,右側電機反轉。當關閉窗簾時,左側電機反轉,右側電機正轉。 而且在窗簾打開的時候,P3.1口的燈會亮,關閉的時候,P3.1口的燈會滅。
首次運行時,1602第一排顯示現在的時間,第二排顯示模式手動和當前光照值。電機的角度為0°,光照值閾值設置為40。


圖4-1 手動打開窗簾 圖4-2 手動關閉窗簾
當模式切換到手動模式下,當按下加(手動開啟)按鍵,左側電機正轉,角度最后顯示為+45°,右側電機反轉,角度最后顯示為+135°,并且燈會亮。如圖4-1顯示。
當按下減(手動關閉)按鍵,左側電機反轉,角度最后顯示為+135°,右側電機正轉,角度最后顯示+45°,并且燈會滅。如圖4-2顯示。

圖4-3 定時打開窗簾 圖4-4 定時關閉窗簾
當模式切換到定時模式下,到打開時間,左側電機正轉,角度最后顯示為+45°,右側電機反轉,角度最后顯示為+135°,并且燈會亮。如圖4-3顯示。
到關閉時間,左側電機反轉,角度最后顯示為+135°,右側電機正轉,角度最后顯示+45°,并且燈會滅。如圖4-4顯示。


圖4-5 自動打開窗簾 圖4-6自動打開窗簾
當模式切換到自動模式下,光照的閾值設置為40。當光照值為43,超過設定的閾值,左側電機正轉,角度最后顯示為+45°,右側電機反轉,角度最后顯示為+135°,并且燈會亮。如圖4-5顯示。
當光照值為35,低于設定的閾值時,左側電機反轉,角度最后顯示為+135°,右側電機正轉,角度最后顯示+45°,并且燈會滅。如圖4-6顯示。
| 歡迎光臨 (http://www.raoushi.com/bbs/) | Powered by Discuz! X3.1 |