版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 1總體方案設計</b></p><p> 隨著人們生活水平的提高,人們對空調的舒適性和空氣品質的要求越來越高,分體式空調已不能滿足人們的要求,戶式中央空調得到了迅猛的發(fā)展。就室內居住環(huán)境而言,恒溫環(huán)境并非是衛(wèi)生和舒適的。因為除了溫度外,還有濕度、空氣流速、空氣潔凈度等諸多因素影響到舒適的程度。而傳統(tǒng)的中央空調靠設置機械溫控開關來實現(xiàn)房間的恒溫控制。這種控制方法
2、,一方面操作不方便;另一方面溫度波動范圍大,不但影響人的舒適感,而且會造成一定的能量損耗。采用單片機溫度控制系統(tǒng)控制的戶式中央空調系統(tǒng),可以根據(jù)室內的環(huán)境因素,調節(jié)風機的轉速,為人們創(chuàng)造一個舒適的室內環(huán)境,同時又節(jié)省電。</p><p> 隨著電子技術的發(fā)展,特別是隨著大規(guī)模集成電路的產(chǎn)生,給人們的生活帶來了根本性的變化,如果說微型計算機的出現(xiàn)使現(xiàn)代的科學研究得到了質的飛躍,那么單片機技術的出現(xiàn)則是給現(xiàn)代工業(yè)控
3、制測控領域帶來了一次新的革命。目前,單片機在工業(yè)控制系統(tǒng)諸多領域得到了極為廣泛的應用。特別是其中的C51系列的單片機[3]的出現(xiàn),具有更好的穩(wěn)定性,更快和更準確的運算精度,推動了工業(yè)生產(chǎn),影響著人們的工作和學習。而本次設計就是要通過以C51系列單片機為控制核心,實現(xiàn)空調機溫度控制系統(tǒng)的設計。</p><p><b> 1.1方案一</b></p><p> 選用A
4、T89C51單片機為中央處理器,通過溫度傳感器DS18B20對空氣進行溫度采集,將采集到的溫度信號傳輸給單片機,由單片機控制顯示器,并比較采集溫度與設定溫度是否一致,然后驅動空調機的加熱或降溫系統(tǒng)對空氣進行處理,從而模擬實現(xiàn)空調溫度控制單元的工作情況。在整個設計中,涉及到溫度檢測電路、驅動控制電路、顯示電路、鍵盤電路以及電源的設計等電路。其中單片機的控制程序是起到各個電路之間的相互協(xié)調,控制各個電路正常工作的至關重要的作用。其方框圖如下
5、:</p><p> 圖1-1 方案一設計圖框</p><p> 該圖控制簡單,思路清晰,各單元模塊的相互銜接較簡單,同時成本低廉,用的各種器件都是常用器件,更具有使用性。</p><p><b> 1.2方案二</b></p><p> 該方案采用的是AT89C51單片機為核心控制器件,用它來處理各個單元電路的
6、工作以及檢測其運行情況。本方案中采用的是LM35DZ溫度傳感器,通過溫度采集電路采集相關溫度數(shù)值,再由ADC0809組成的A/D轉換電路進行轉換,最終得到數(shù)字信號,將其直接傳輸給單片機,然后由單片機根據(jù)內部程序判斷,執(zhí)行相關控制程序,驅動各單元電路的工作。其方框圖如下:</p><p> 圖1-2 方案二設計圖框</p><p> 該方案容易控制,系統(tǒng)原理比較簡單,電路可靠。但其中的溫
7、度測量電路、譯碼電路復雜,容易產(chǎn)生誤差和由電路復雜而導致的設備使用壽命低等一系列問題。</p><p> 1.3總體方案選擇及實現(xiàn)</p><p> 1.3.1 方案選擇</p><p> 選擇方案一。控制簡單,思路清晰,各單元模塊的相互連接較簡單,同時成本低廉,用到的各種器件都是常用器件,更具有使用性。</p><p> 1.3.2
8、 具體的實現(xiàn)方案</p><p> 實現(xiàn)方案的技術線路為:用按鈕輸入標準溫度值,用LED實時顯示環(huán)境空氣溫度,用驅動電路控制壓縮機完成加熱和制冷調節(jié),用ISIS軟件對設計進行仿真,用C語言完成軟件編程。單片機AT89S51中央處理器如圖所示:</p><p> 圖1-3 單片機AT89C51</p><p> Vcc、Vss:用于外接單片機的工作電源,電源電壓
9、為5V。XTAL1、XTALL2:用于外接晶振構成振蕩電路或直接輸入時鐘信號。RST:復位信號輸入引腳,高電平有效。ALE:地址鎖存信號輸出引腳,固定輸出1/6振蕩頻率的脈沖,可作為脈沖信號源使用。/EA:片內、片外程序存儲器選擇控制引腳。 </p><p> 輸入部分:AT89S51、A/D轉換 、驅動控制、溫度控制器、加熱、制冷。空氣顯示部分:4/PSEN:片外程序存儲器讀允許控制器。P0.0~P0.7:P
10、0口I/O引腳,或數(shù)據(jù)線/低8位地址總線復用引腳。P1.0~P1.7:P1口I/O引腳。P2.0~P2.7:P2口I/O引腳,或高8位地址總線引腳。P3.0~P3.7:P3口I/O引腳,此外,每個引腳都有第二功能。</p><p><b> 2硬件設計</b></p><p> 2.1硬件各單元方案設計與選擇</p><p> 2.1.1
11、 溫度傳感部分</p><p> 要求對溫度和與溫度有關的參量進行檢測,應該考慮用熱電阻傳感器。按照熱電阻的性質可以分為半導體熱電阻和金屬熱電阻兩大類,前者通常稱為熱敏電阻,后者稱為熱電阻。</p><p> 半導體熱敏電阻是利用某些半導體材料的電阻值隨溫度的升高而減?。ɑ蛏撸┑奶匦灾瞥傻?,大多數(shù)的半導體熱敏電阻具有負溫度系數(shù)。負溫度系數(shù)熱敏電阻器的特點是:在工作溫度范圍內電阻阻值隨
12、溫度的升高而降低。可滿足40℃~90℃測量范圍,具有靈敏度高,電阻值高,體積小,結構簡單,價格低廉,化學穩(wěn)定性好,使用壽命長等優(yōu)點;但其互換性較差,而且線性度也很差,不能直接用于A/D轉換,應該用硬件或軟件對其進行線性化補償。</p><p> 金屬熱電阻中屬鉑電阻和銅電阻最為常用,這里以鉑電阻Pt1000為例。鉑熱電阻的物理化學性能在高溫和氧化性介質中很穩(wěn)定,它能用作工業(yè)測溫元件,且此元件線性較好,在0℃~1
13、00℃時,最大非線性偏差小于0.5℃。鉑熱電阻與溫度的關系是,Rt=R0(1+At+Bt×t);其中Rt是溫度為t攝氏度時的電阻,R0是溫度為0攝氏度時的電阻,t為任意溫度值,A、B為溫度系數(shù)。但其電阻與溫度為非線性關系,且成本太貴,不適合做普通設計。</p><p> 集成溫度傳感器是利用晶體管的PN結的電流電壓特性與溫度的關系,把敏感元件、放大電路和補償電路等部分集成化,并把它們封裝在同一殼體里的
14、一種一體化溫度檢測元件。它除了與半導體熱敏電阻一樣有體積小、反應快的優(yōu)點外,還具有線性好、性能高、價格低等特點,如DS18B20智能溫度控制器。單線數(shù)字溫度傳感器DS18B20簡介:新的“一線器件”體積更小、適用電壓更寬、更經(jīng)濟、數(shù)字化。一線總線獨特而且經(jīng)濟的特點,使用戶可輕松地組建傳感器網(wǎng)絡,為測量系統(tǒng)的構建引入全新概念。DS18B20“一線總線”數(shù)字化溫度傳感器,支持“一線總線”接口,測溫范圍為 -55℃~+125℃,現(xiàn)場溫度直接以
15、“一線總線”的數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性。適合于各種環(huán)境的現(xiàn)場溫度測量,如:環(huán)境控制、設備或過程控制、測溫類消費電子產(chǎn)品等。DS18B20可以程序設定9~12位的分辨率,設定的報警溫度存儲在 EEPROM中,掉電后依然保存。DS18B20使電壓特性及封裝有更多的選擇,讓我們可以構建適合自己的經(jīng)濟的測溫系統(tǒng),并且應用電路電但便于設計。</p><p> 在本設計中我采用的是集成溫度傳感器DS18B20
16、,其電路簡單可靠,不需要A/D轉換,直接可以與單片機相連。</p><p> 2.1.2 數(shù)字顯示部分</p><p> 通常的LED顯示器有7段或8段和“米”字段之分。這種顯示器有共陽極和共陰極兩種。共陰極LED顯示器的發(fā)光二極管的陰極連接在一起,通常此公共陰極接地,當某個發(fā)光二極管的陽極為高電平時,發(fā)光二極管點亮,相應的段被顯示。同樣,共陽極LED顯示器的工作原理也一樣。LED顯示
17、器有兩種顯示方式:</p><p> 靜態(tài)顯示方式:在這種方式下,各位LED顯示器的共陰極(或共陽極)連接在一起并接地(或電源正),每位的段選線分別與一個8位的鎖存器輸出相連,各個LED的顯示字符一經(jīng)確定,相應鎖存器的輸出將維持不變,直到顯示另一個字符為止,正因為如此,靜態(tài)顯示器的亮度都較高。若用I/O口接口,這需要占用N×8位I/O口(LED顯示器的個數(shù)為N)。這樣的話,如果顯示器的個數(shù)較多,那使用
18、的I/O接口就更多,因此在顯示位數(shù)較多的情況下,一般都不用靜態(tài)顯示。</p><p> 動態(tài)顯示方式:當多位LED顯示時,通常將所有位的段選線相應的并聯(lián)在一起,由一個8位I/O口控制,形成段選線的多路復用。而各位的共陽極或共陰極分別由相應的I/O口控制,實現(xiàn)各位的分時選通。其中段選線占用一個8位I/O口,而位選線占用N個I/O口(N為LED顯示器的個數(shù))。由于各位的段選線并聯(lián),段碼的輸出對各位來說都是相同的,因
19、此,同一時刻,如果各位選線都處于選通狀態(tài)的話,那LED顯示器將顯示相同的字符。若要各位LED能顯示出與本位相應的字符,就必須采用掃描顯示方式,即在某一時刻,只讓某一位的位選線處于選通狀態(tài),而其他各位的位選線處于關閉狀態(tài),同時,段選線上輸出相應位要顯示字符的段碼。</p><p> 這種顯示方式占用的I/O口個數(shù)為8+N(N為LED顯示器的個數(shù)),相對靜態(tài)顯示少了很多,但需要占用大量的CPU資源,當CPU處理別的
20、事情時,顯示可能出現(xiàn)閃爍或者不顯示的情況。</p><p> 為了節(jié)約硬件資源,降低電路板的成本,本人采用的是節(jié)約硬件資源的動態(tài)掃描顯示方式。</p><p> 2.1.3 加熱降溫驅動控制電路</p><p> 采用開關量控制,如繼電器、雙向可控硅、光耦等,控溫快速,但是雙向可控硅驅動電路比較麻煩,調試也麻煩,若用現(xiàn)成的固態(tài)繼電器價格十分昂貴。用繼電器時要注
21、意其電感的反向電動勢,和開關觸點對電源的影響,以及開關脈沖對整個電路的影響等,應該加入必要的防止干擾的措施。</p><p> 1、采用單向晶閘管,這是一種大功率半導體器件,它既有單向導電的整流作用,又有可以控制的開關作用。利用它可以用較小的功率控制較大功率,在交、直流電動機調速系統(tǒng)、調功系統(tǒng)、隨動系統(tǒng)和無觸點開關等方面均獲得了廣泛的應用。</p><p> 這種晶閘管與二極管不同的是
22、,當其兩端加上正向電壓而控制極不加電壓時,晶閘管并不導通,其正向電流很小,處于正向阻斷狀態(tài);當其兩端加上正向電壓、且控制極上(與陰極間)也加上一正向電壓時,晶閘管便進入導通狀態(tài),這時管壓降很?。?V左右)。這時即使控制電壓消失,仍然保持導通狀態(tài),所以控制電壓沒有必要一直存在,通常采用脈沖形式,以降低觸發(fā)功耗。它不具有自關斷能力,要切斷負載電流,只有使陽極電流減小到維持電流以下,或加上反向電壓實現(xiàn)關斷。若在交流回路中應用,當電流過零和進入
23、負半周時,自動關斷,為了使其再次導通,必須重加控制信號。</p><p> 2、采用光耦合雙向可控硅驅動電路,這種器件是一種單片機輸出與雙向可控硅之間較理想的接口器件,它由輸入和輸出兩部分組成,輸入部分是一個砷化鎵發(fā)光二極管,該二極管在5mA~15mA正向電流作用下發(fā)出足夠強度的紅外光,觸發(fā)輸出部分。輸出部分是一個硅光敏雙向可控硅,在紅外線的作用下可雙向道通。</p><p> 光電耦
24、合器也常用于較遠距離的信號隔離傳送。一方面光耦合器可以起到隔離兩個系統(tǒng)地線的作用,使兩個系統(tǒng)的電源相互獨立,消除地電位不同所產(chǎn)生的影響;另一方面,光電耦合器的發(fā)光二極管是電流驅動器件,可以形成電流環(huán)路的傳送形式。由于電流環(huán)電路是低阻抗電路,對噪音的敏感度低,因此提高通訊系統(tǒng)的抗干擾能力,常用于有噪音干擾的環(huán)境里傳輸信號。</p><p> 達到同樣的加熱效果,開關量控制容易,驅動簡單,驅動電路的抗干擾能力強。所
25、以我采用的是光耦合雙向可控硅驅動電路。</p><p><b> 2.2單元電路設計</b></p><p> 2.2.1 溫度采集電路</p><p> 本設計的溫度采集系統(tǒng)主要是數(shù)字溫度傳感器DS18B20,如圖2-1所示。</p><p> 本設計以DS18B20為傳感器,AT89C51單片機為控制核心組成
26、的溫度巡回檢測系統(tǒng),在圖2-1中,DS18B20的供電方式為外部電源,其I/O數(shù)據(jù)線與P3.4相連。在DS18B20接入系統(tǒng)之前,應分別從激光ROM中讀出其序號,然后分別賦予在系統(tǒng)中的編號1~n。該系統(tǒng)需要用鍵盤來設置溫度報警的門限值,并用七段LED顯示器顯示DS18B20的編號和測量的溫度值。 </p><p> 圖2-1溫度采集電路</p><p> 溫度檢測系統(tǒng)原理圖如圖2-1所
27、示,采用外接電源供電方式。為保證在有效的DS18B20時鐘周期內提供足夠的電流,我們用一個電阻R30和89C51的一個I/O口(P3.4)來完成對DS18B20總線的上拉。當DS18B20處于寫存儲器操作和溫度A/D變換操作時,總線上必須有強的上拉,上拉開啟時間最大為10μs。采用外接電源供電方式時Vcc接外部電源,GND接地,I/O與單片機的I/O線相連。</p><p> 在本設計中,我采用的是單個DS18
28、B20測室內溫度,并把它直接與單片機的I/O口相連,將測得的溫度值送入CPU與鍵盤輸入的設定值進行比較,然后通過CPU來控制負載電路的工作。一般來說CPU 對DS18B20的訪問流程是:先對DS18B20初始化,再進行ROM操作命令,最后才能對存儲器和數(shù)據(jù)操作。DS18B20每一步操作都要遵循嚴格的工作時序和通信協(xié)議,如主機控制DS18B20完成溫度轉換這一過程,根據(jù)DS18B20的通信協(xié)議,須經(jīng)三個步驟:每一次讀寫之前都要對 DS18
29、B20進行復位,復位成功后發(fā)送一條ROM指令,最后發(fā)送RAM指令,這樣才能對DS18B20進行預定的操作。</p><p> 2.2.2 LED顯示電路</p><p> LED顯示電路如圖2-2所示,LED電路采用4只共陰極七段數(shù)碼管。顯示方式有動態(tài)掃描和靜態(tài)掃描,兩種都可以實現(xiàn)顯示功能,但由于靜態(tài)掃描要用到多片串入并出芯片,考慮到電路板成本計算,本人采用節(jié)約硬件資源的動態(tài)掃描顯示方
30、式。P2口的P2.0至P2.3接限流電阻作為段選控制,P2口的P2.4至P2.7經(jīng)三極管驅動后作為位選控制,在10ms定時中斷服務程序中分別對顯示的各位進行動態(tài)掃描顯示。LED分別對室內溫度和時間進行動態(tài)顯示,其相互顯示間隔設定為1分鐘,即顯示溫度時第一、二位為十位、個位,第三、四位為小數(shù)位;而顯示時間時第一、二位為小時,第三、四位為分鐘,顯示數(shù)據(jù)由CD4511譯碼器輸出。 </p><p> 由4個共陰極的數(shù)
31、碼管組成溫度和時間交替顯示。P2口的四條數(shù)據(jù)線P2.0至P2.3分別與CD4511譯碼器的ABCD口相接,P2口的P2.4至P2.7分別通過電阻R6至R9與Q1至Q4的基極相連接。這樣通過P2口送出一個存儲單元的高位,低位BCD顯示代碼,通過P2口另幾位送出掃描選通代碼輪流點亮LED1至LED4,就會將要顯示的數(shù)據(jù)在數(shù)碼管中顯示出來。</p><p> 圖2-2 LED顯示電路</p><p
32、> 所謂LED靜態(tài)驅動:是指每個數(shù)碼管的每一個段碼都由一個單片機的I/O端口進行驅動,或者使用如BCD碼二-十進制譯碼器譯碼進行驅動;其點亮和關閉由該I/O口來對其控制,互不干涉,對I/O驅動能力弱的MCU,必須增加外部驅動芯片或三極管等器件。此種設計一般應用在單個LED的驅動或LED數(shù)量較少,且所選的MCUI/O口比較充裕的情況下。由于每一個LED均由獨立的I/O口控制,因此優(yōu)點是軟件編程簡單,顯示亮度高,缺點是占用I/O端口
33、多,如驅動5個數(shù)碼管靜態(tài)顯示則需要5×8=40根I/O端口來驅動,要知道一個 AT89C51單片機可用的I/O端口才32個,實際應用時必須增加譯碼驅動器進行驅動,增加了硬件電路的復雜性。</p><p> LED的動態(tài)顯示方式: 數(shù)碼管動態(tài)顯示接口是單片機中應用最為廣泛的一種顯示方式,動態(tài)驅動是將所有數(shù)碼管的8個顯示筆劃"a,b,c,d,e,f,g,dp"的同名端連在一起,另外為每
34、個數(shù)碼管的公共極增加位選通控制電路,位選通由各自獨立的I/O線控制,當單片機輸出字形碼時,所有數(shù)碼管都接收到相同的字形碼,但究竟是那個數(shù)碼管會顯示出字形,取決于單片機對位選通端電路的控制,所以我們只要將需要顯示的數(shù)碼管的選通控制打開,該位就顯示出字形,沒有選通的數(shù)碼管就不會亮。通過分時輪流控制各個數(shù)碼管的公共極,就使各個數(shù)碼管輪流受控顯示,這就是動態(tài)驅動。在輪流顯示過程中,每位數(shù)碼管的點亮時間為1~2ms,由于人的視覺暫留現(xiàn)象及發(fā)光二極
35、管的余輝效應,盡管實際上各位數(shù)碼管并非同時點亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù),不會有閃爍感,動態(tài)顯示的效果和靜態(tài)顯示是一樣的,卻能夠節(jié)省大量的I/O端口,而且功耗更低。 </p><p> 由于所有的 LED模塊共用了驅動端,因此LED的驅動不再像靜態(tài)法一樣為每個LED所獨享,因此其驅動的設計方法也與靜態(tài)法完全不同,需要采用分時掃描方法來實現(xiàn)對所有LED的顯示驅動,其原理如下:<
36、;/p><p> a.將A0設置為高電平,也即允許第一組LED顯示,同時將A2,A3,A4設置為低電平,也即關閉該陰極所對應的LED組顯示;</p><p> b.在P2口輸出A0組對應的顯示數(shù)據(jù),如字符點陣數(shù)據(jù)、7段碼對應的數(shù)字的數(shù)據(jù)等,該數(shù)據(jù)可以通過ROM表的形式預先定義;</p><p> c.保持一定的時間T,該時間即為所設定的定時器的中斷時間;</
37、p><p> d.將A0口設置為低電平,關閉A0組的LED顯示;</p><p> e.將A1設置為高電平,其他幾個設置為低電平,開啟A1組對應的LED顯示;</p><p> f.在P0口輸出A1組對應的顯示數(shù)據(jù);</p><p> g.重復以上步驟,直到所有組被掃描一遍,然后又從A0組開始下一個循環(huán),如此周而復始,實現(xiàn)所有LED的動態(tài)
38、顯示。</p><p> 該方法的原理利用了人眼對物體的視覺延遲來達到所有LED的同時顯示,實際應用時,在同一個時刻,只有一組LED處于顯示狀態(tài),而其他LED處于關閉狀態(tài)。理論上,若兩次顯示之間的時間間隔小于32ms時,人眼既無法分辨,因此,為了達到此要求,LED的掃描頻率一般可以按照下式計算得出:f=32*N。式中,f為掃描的頻率,對應為定時器的時間(T=1/ f);32則是由32ms換算而來,32ms對應的
39、頻率剛好為32Hz;N則時總的LED的組數(shù)(此例中N=4)。</p><p> 根據(jù)此式算出的掃描頻率f實際是LED驅動掃描的最小頻率,若低于此頻率,則有可能導致LED的閃爍; f也不可能越高越好,掃描的頻率太高,每組LED的點亮時間就越短,因此有可能導致LED的亮度不夠或顯示效果不理想等一些問題。當然提高LED的驅動電壓也可以補償由此造成的亮度不夠的問題。</p><p> 數(shù)據(jù)與代
40、碼轉換。由前述可知,P2口的P2.0至P2.3輸出段選碼,P2口的P2.4至P2.7輸出位選碼,LED就會顯示出數(shù)字來。但P2口輸出的數(shù)據(jù)是BCD碼,各存儲器存儲的數(shù)據(jù)是二進制,也就是和要顯示出的字符表達的含義是不一致的??梢姡瑢⒁@示的存儲器單元的數(shù)據(jù)直接送到P2口去驅動LED數(shù)碼管顯示是不能正確表達的,必須在系統(tǒng)內部將要顯示的數(shù)據(jù)經(jīng)過BCD碼轉換后,將各個單元數(shù)據(jù)的段選代碼送入P2口,給CD4511譯碼后去驅動數(shù)碼管顯示。具體轉換過
41、程如下:我們先將要顯示的數(shù)據(jù)裝入累加器A中,再將A中的數(shù)據(jù)轉換成高低兩位的BCD碼,再放回A中,然后將A中的值輸出。如:有一個單元存儲了45這樣一位數(shù),則需轉換成四位BCD碼(0100) (1001)然后放入A中,A中BCD碼,高四位代表4,低</p><p> 四位代表5,同時送給兩個譯碼器中,譯碼后45字就在兩個LED中顯示出來。</p><p> 2.2.3 電源電路</p
42、><p> 1.電源變壓器:將220V,50HZ的交流電壓轉換成5V直流電壓。</p><p> 2.濾波電路:利用電感和電容的阻抗特性,將整流后的單向脈動電流中的交流分量濾去,使單向脈動電流變換成平滑的直流電。</p><p> 3.穩(wěn)壓電路:當電網(wǎng)電壓波動或負載的變動會導致負載上得到的直流電不穩(wěn)定,影響電子設備的性能,用穩(wěn)壓管,即采用一些負反饋方式的穩(wěn)壓電路,
43、使之自動調節(jié)不穩(wěn)定因素,從而得到穩(wěn)定電壓。</p><p> 供電部分輸入220V、50HZ的交流電,輸出電壓+5V,供給整個電路電源,電流最大為400mA; LM17812和LM17805負載重,功率大,加裝了散熱片。</p><p> 本設計的電源電路設計圖如下:</p><p><b> 圖2-3電源電路</b></p>
44、<p> 2.2.4 外部晶振電路</p><p> 外部晶振電路由2個33pF的電容和一個12MHz的晶體振蕩器構成。</p><p> 片內電路與片外器件構成一個時鐘產(chǎn)生電路,CPU的所有操作均在時鐘脈沖下同步進行。片內振蕩器的振蕩頻率非常接近晶振頻率,一般在1.2MHz~12MHz之間選取,C5,C6是反饋電容,起穩(wěn)定振蕩頻率,快速起振的作用,其值在5pF~33p
45、F之間選取,典型值為33pF。本電路選用的電容為33pF,晶振頻率為12MHz。</p><p> 在引腳XTAL1和XTAL2外接晶體振蕩器,就構成了內部震蕩方式,內部震蕩方式所得的時鐘信號比較穩(wěn)定,實用電路中使用較多。由于單片機內部有一個高增益反相放大器,當外接晶振后,就構成了自激振蕩器并產(chǎn)生震蕩時鐘脈沖。內部震蕩方式的外部電路如圖2-4所示:</p><p> 圖2-4外部晶振電
46、路</p><p> 外部振蕩信號由X2引入,X1和X2:片內振蕩電路輸入、輸出引腳,這兩個端子用來外接石英晶體和微調電容。在石英晶體的兩個管腳加交變電場時,它將會產(chǎn)生一定頻率的機械變形,而這種機械振蕩又會產(chǎn)生交變電場,上述物理現(xiàn)象稱為壓電效應。一般情況下,無論是機械振動的振幅,還是交變電場的振幅都非常小。但是,當交變電場的頻率為某一特定值時,振幅驟然增大,產(chǎn)生共振,稱之為壓電振蕩。這一特定頻率就是石英晶體的固
47、有頻率,也稱諧振頻率,即用來連接89C51片內OSC的定時反饋回路。石英晶振起振后要能在X2線上輸出一個3V左右的正弦波,以便使MCS-51片內的OSC電路按石英晶振相同頻率自激振蕩。通常OSC的輸出時鐘頻率fosc為0.5MHz~16 MHz,典型值為12 MHz或者11.0592 MHz。電容C5,C6可以幫助起振,典型值為33 pF,調節(jié)它們可以達到微調fosc的目的。</p><p><b>
48、 3軟件設計</b></p><p> 3.1軟件設計原理及設計所用工具</p><p> 本設計中采用的處理器是AT89C51單片機,由此可采用面向MCS-51的程序設計語言,包括ASM51匯言和C語言,這兩種語言各有特點。C語言更接近機器語言,常用來編制與系統(tǒng)硬件相關的程序,如訪問I/O端口、中斷處理程序、實時控制程序、實時通信程序等;而數(shù)學運算程序則適合用C51高級語
49、言編寫,因為用高級語言編寫運算程序可提高編程效率和應用程序的可靠性。 </p><p> 與以往的80C51單片機不同,AT89C51具有在線調試和下載功能,它由支持AT89C51的開發(fā)工具包Keil uVersion2.0開發(fā)系統(tǒng)來提供。也就是說,在用戶系統(tǒng)保留AT89C51的情況下,通過開發(fā)系統(tǒng)與AT89C51的串行接口通信,直接對用戶系統(tǒng)進行調試,并在調試完成后將調試好的程序下載到AT89C51中。Kei
50、l uVersion2.0開發(fā)系統(tǒng)提供四項功能:編譯、下載、調試和模擬,分別由Keil uVersion2.0提供的編譯器、在線串行下載器、調試器和模擬器來實現(xiàn)。Keil uVersion2.0編譯器可在Windows操作系統(tǒng)下直接使用,編譯匯編源程序,并生成16進制文件和列表文件。串行下載器是一個軟件程序,它允許通過標準PC機上的串口串行下載匯編程序到片內8kB的閃速程序存儲器中。調試器采用Windows系統(tǒng),允許用戶使用AT89C5
51、1的UART串行接口在芯片上調試代碼執(zhí)行。在典型調試對話中,調試器提供對片內所有外圍設備的訪問、單步和設置斷點的代碼執(zhí)行控制方式。模擬器采用Windows系統(tǒng),能完全模擬AT89C51的所有功能。模擬器使用簡單,結合了許多標準調試特征,</p><p> 主程序功能單一化,只對各子程序進行控制、調動,使整個程序成為有機的整體。軟件主程序是系統(tǒng)的監(jiān)控程序,主要工作流程為:系統(tǒng)在上電以后進入初始化狀態(tài),將系統(tǒng)中所有
52、的接口模式、狀態(tài)以及有關的存儲單元置位成初始狀態(tài),然后恢復AT89C51的P1口(控制輸出)的工作狀態(tài)。</p><p> 3.2部分程序的流程圖</p><p> 3.2.1 主程序流程圖</p><p> 本設計主程序流程如圖3-1所示。</p><p> 程序啟動后,首先清理系統(tǒng)內存,然后對溫度進行采集,通過溫度采集芯片內部轉換
53、后,傳輸?shù)絾纹瑱C,由單片機控制顯示設備,顯示現(xiàn)在的溫度,然后系統(tǒng)進入待機狀態(tài),等待鍵盤輸入設定溫度,系統(tǒng)將設定溫度與現(xiàn)在溫度進行比較,得出結果,啟動制冷系統(tǒng)或者加熱系統(tǒng)。</p><p> 圖3-1 主程序流程圖</p><p> 3.2.2 DS18B20的溫度采樣程序流程圖</p><p> CPU對DS18B20的訪問流程是:先對DS18B20初始化,再
54、進行ROM操作命令,最后才能對存儲器和數(shù)據(jù)進行操作。DS18B20每一步操作都要遵循嚴格的工作時序和通信協(xié)議。如主機控制DS18B20完成溫度轉換這一過程,根據(jù)DS18B20的通訊協(xié)議,須經(jīng)三個步驟:每一次讀寫之前都要對DS18B20進行復位,復位成功后發(fā)送一條ROM指令,最后發(fā)送RAM指令,這樣才能對DS18B20進行預定的操作。DS18B20工作的流程如圖3-2。</p><p> 圖3-2 溫度采樣框&l
55、t;/p><p><b> 程序如下:</b></p><p> float tt; </p><p> Init_DS18B20(); // 初始化ds18b2子函數(shù) </p><p> delay_MS(1); </p><p> WriteOneChar(0x
56、cc); // 跳過ROM命令 </p><p> WriteOneChar(0xbe); // 發(fā)送讀取數(shù)據(jù)命令 </p><p> temp_data[0]=ReadOneChar(); // 連續(xù)讀兩個字節(jié)數(shù)據(jù) </p><p> temp_data[1]=ReadOneChar(); </p><p&
57、gt; temp1=temp_data[1]; </p><p> temp1<<=8; </p><p> temp1=temp1|temp_data[0]; // 兩字節(jié)合成一個整型變量。 </p><p> return temp1;
58、 // 返回溫度值 </p><p><b> } </b></p><p> void tem_deal(uint tem) /* 溫度數(shù)據(jù)顯示處理函數(shù) */ </p><p><b> { </b></p><p> if
59、(tem>6348) // 溫度值正負判斷 </p><p><b> {</b></p><p> tem=65536-tem;</p><p><b> flag1=1;</b></p><p> } // 負溫度求補碼,
60、標志位置1 </p><p> else flag1=0;</p><p> Dis_ram[0]=tem&0x0f; // 取小數(shù)部分的值 </p><p> Dis_play[3]=Dis_ram[0]; // 存入小數(shù)部分顯示值 </p><p> Dis_ram[0]=tem>&
61、gt;4; // 取中間八位,即整數(shù)部分的值 </p><p> Dis_play[0]=Dis_ram[0]/100; // 取百位數(shù)據(jù)暫存 </p><p> Dis_play[2]=Dis_ram[0]%100; // 取后兩位數(shù)據(jù)暫存 </p><p> if(Dis_play[2]<=XX) <
62、;/p><p> Dis_play[4]=1 ;</p><p><b> else </b></p><p> Dis_play[4]=0 ;</p><p> if(Dis_play[2]>=SX) </p><p> Dis_play[5]=1 ;</p&
63、gt;<p> else Dis_play[5]=0 ;</p><p> Dis_play[1]=Dis_play[2]/10; // 取十位數(shù)據(jù)暫存 </p><p> Dis_play[2]=Dis_play[2]%10; // 取個位數(shù)據(jù)暫存 </p><p> if(!Dis_play[0]) //
64、 最高位為0都不顯示 </p><p><b> { </b></p><p> Dis_play[0]=0x0a; // 先判斷百位是否為0 </p><p> if(!Dis_play[1]) </p><p><b> { </b></p><p> Di
65、s_play[1]=0x0a; // 再判斷十位是否為0</p><p> 3.2.3 LED顯示部分程序流程圖</p><p> LED軟件設計的主要功能是將DS18B20所測數(shù)據(jù)經(jīng)過模糊控制以后用LED顯示出來。其流程圖如圖3-3:</p><p> 圖3-3 LED顯示流程圖</p><p><b> 程序如下: &
66、lt;/b></p><p> LED1=~LED1;</p><p><b> {</b></p><p> LED2=~LED2;</p><p><b> }</b></p><p> void display() /*****顯示溫度子程序***
67、**/</p><p><b> { </b></p><p><b> char k; </b></p><p> for(k=0;k<4;k++) //4位LED掃描控制 </p><p><b> { </b
68、></p><p> if(table[Dis_play[k]] != 0)</p><p><b> {</b></p><p> Disdata=table[Dis_play[k]]; //數(shù)據(jù)顯示 </p><p><b> }</b></p>
69、<p> if (k==2){DIN=0;} //小數(shù)點顯示</p><p> discan=scan_con[k+3]; //位選 </p><p> delay_MS(90); //延時 </
70、p><p> discan=0x00; </p><p><b> }</b></p><p> discan=scan_con[7]; //位選</p><p> Disdata=0xc6; //顯示C </p>
71、;<p> delay_MS(90);</p><p> discan=0x00;</p><p><b> }</b></p><p> /*****主函數(shù)*****/</p><p> void main(void)</p><p><b> {</b
72、></p><p> EA=1; //允許INT0 中斷</p><p><b> EX0=1;</b></p><p> IT0=1; //下降沿觸發(fā)</p><p>
73、;<b> do </b></p><p><b> { </b></p><p> tmpchange(); //溫度轉換 </p><p> tem_deal(tmp()); //顯示溫度值 &l
74、t;/p><p> display(); </p><p> if(Dis_play[4]==1) shengwen();</p><p> else LED1=1;</p><p> if(Dis_play[5]==1) jiangwen();</p><p> else LED2=1;</p&g
75、t;<p><b> } </b></p><p> while(1); </p><p><b> }</b></p><p><b> 結束語</b></p><p> 作為一名應用電子專業(yè)即將畢業(yè)的學生,我覺得做此次課程設計是十分必要的。幾周的課
76、程設計終于結束了,雖然很忙碌、很疲勞,但是收獲很大。這次我用單片機AT89C51作為控制器,實際了一個自動控制室內溫度的空調設備。每天的努力,喚來了我對課程設計的重新的認識,對51單片機和控制系統(tǒng)的深刻理解,實現(xiàn)了真正實踐的目的。在理論學習的過程中,我只是簡單地學到了一些理論知識,但是在實際的設計過程中才發(fā)現(xiàn)理論與實際的巨大差別。在課堂上,掌握的僅僅是專業(yè)基礎課的理論,如何把我們所學到的專業(yè)基礎理論知識用到實踐中去呢?如何去鍛煉我們的實
77、踐的一面?這次做課程設計就為我提供了一個課外學習的好平臺。在此期間我閱讀了大量的文獻,并詳細的了解了單片機AT89C51在具體實際應用中的作用及應用技術,同時我還閱讀了大量關于A/D轉換器、傳感器、轉換電路、繼電器、鍵盤、LED顯示等的相關知識。把課本的知識運用到實際中,經(jīng)過我多次努力最終完成了此次課程設計。在次之前我也接觸過相關課程設計的實驗,為此次設計奠定了知識基礎。在此次設計中收獲最大的算是分析和解決問題的能力。懂得了怎樣解決此類
78、問題,在設計過程中形成了設計理念和設計思維</p><p><b> 致謝</b></p><p> 能取得這次成功的突破,要感謝我的指導老師**對我的困難的幫助,給我設計思路的引導,辛勤地給予畢業(yè)論文的修改,通過老師介紹的一些資料書及相關文件,讓我的畢業(yè)設計更加成功地完成。 再次,要感謝我的寢室好友是他們幫助我解決了程序上的偏差,有了他們的幫助才能夠及時解決問
79、題,其中的無奈才有得解除。在此,我還要感謝在一起愉快的度過畢業(yè)設計的同學們,正是由于你們的幫助和支持,我才能克服一個一個的困難和疑惑,直至本文的順利完成。</p><p> 在論文即將完成之際,我的心情無法平靜,從開始進入課題到論文的順利完成,有多少可敬的師長、同學、朋友給了我無言的幫助,在這里請接受我誠摯的謝意!最后我還要感謝培養(yǎng)我長大含辛茹苦的父母,謝謝你們。</p><p><
80、;b> 參考文獻</b></p><p> [1] 沈紅工.單片機應用系統(tǒng)設計實例與分析[M].北京:北京航空航天大學出版社,2003.6</p><p> [2] 胡毅剛、彭喜元、姜守達、喬立巖.新編MSC-51單片機應用設計[M].哈爾濱: 哈爾濱工業(yè)大學出版社,2003.3</p><p> [3] 李光飛、樓然苗、胡佳文、謝象佐.單
81、片機課程設計實例指導[M].北京:北京航空航天大學出版社,2004.3</p><p> [4] 張大明. 單片微機控制應用技術實操指導書. 北京:機械工業(yè)出版社,2007.4</p><p> [5] 馮根生、郭教之.微機控制技術[M].北京:中國科技大學出版社,2002.9</p><p> [6] 康萬新、謝維成、楊加國. 畢業(yè)設計指導及案例剖析——應用
82、電子技術方向. 北京:清華大學出版社,2007.5</p><p> [7] 張毅剛. 《單片機原理及應用》(第二版)[M].哈爾濱:哈爾濱工業(yè)大學出版社,2003.7</p><p> [8] 余永權. 單片機在控制系統(tǒng)中的應用[M].北京:電子工業(yè)出版社,2002</p><p> [9] 張希周. 自動控制原理[M]. 重慶:重慶大學出版社,1996.6
83、</p><p> [10] 周繼明、江世明. 傳感器技術與應用[M]. 中南大學出版社,2005.3</p><p> [11] 潘新民、王燕芳. 微型計算機控制技術實用教程. 北京:電子工業(yè)出版社,2006.1</p><p> [12] 楊寧. 單片機與控制技術. 北京:北京航空航天大學出版社,2005.2</p><p> [
84、13] 侯志林.過程控制與自動化儀表.北京:機械工業(yè)出版社,1999.11</p><p> [14] 楊剛、周群.電子系統(tǒng)設計與實踐[M].北京:電子工業(yè)出版社,2004.6</p><p><b> 附錄A:電路原理圖</b></p><p><b> 附錄B:程序清單</b></p><p&
85、gt; #include <reg52.h></p><p> #include<intrins.h></p><p> #define uchar unsigned char</p><p> #define uint unsigned int</p><p> sbit DQ=P3^6;
86、 // P3溫度輸入口 </p><p> uint temp1; // 定義一個變量 </p><p> uchar flag1; // 定義一個
87、標志,溫度是負或正,1為負,0為正 </p><p> uchar data temp_data[2]={0x00,0x00}; //讀出溫度暫放 </p><p> uchar data Dis_play[6]={0x00,0x00,0x00,0x00,0x0a,0x0c};//顯示單元數(shù)據(jù),共6個數(shù)據(jù)和一個運算 第4個數(shù)據(jù)為空,第6個數(shù)據(jù)顯示C&
88、lt;/p><p> uchar data Dis_ram[1]={0x00};</p><p> uchar SX=38; //上限報警溫度,默認值為38</p><p> uchar XX=15; //下限報警溫度,默認值
89、為15</p><p> sbit SET = P3^2 ; //定義調整鍵</p><p> sbit DEC = P3^1 ; //定義減少鍵</p><p> sbit ADD = P3^0 ;
90、 //定義增加鍵</p><p> //sbit KO= P3^3; //手動 報警</p><p> sbit LED1=P3^3;</p><p> sbit LED2=P3^4;</p><p> sb
91、it DIN = P0^7; //小數(shù)點</p><p> #define Disdata P0 // 段碼入口 //P0 111</p><p> #define discan P2
92、 // 數(shù)碼管位選掃描 //P2 111</p><p> uchar code table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff,0xbf};</p><p> uchar code scan_con[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,
93、0x80}; //列掃描控制字 </p><p> void delay_MS(uint i) //delay 111 / 延時子程序 / </p><p><b> { </b></p><p> while(i--); </p>
94、<p><b> } </b></p><p> void delay1(uchar y)</p><p> {uchar Y;</p><p> for( ;y>0;y--)</p><p> for(Y=0;Y<120;Y++);</p><p><b&
95、gt; }</b></p><p> void Init_DS18B20(void) /* 初始化ds18b2子函數(shù)* */</p><p><b> { </b></p><p> uchar x=0; </p><p> DQ = 1;
96、 //DQ復位 </p><p> delay_MS(8); //稍做延時 </p><p> DQ = 0; //單片機將DQ拉低 </p><p> delay_MS(80); //精確延時 大于 480us </p><p> DQ = 1;
97、 //拉高總線 </p><p> delay_MS(14); </p><p> x=DQ; //稍做延時后 如果x=0則初始化成功 x=1則初始化失敗 </p><p> //(可在此處判斷傳感器是否正常)</p><p> delay_MS(20); </p>
98、<p><b> } </b></p><p> /* 讀字節(jié)子函數(shù) */ </p><p> ReadOneChar(void) </p><p><b> { </b></p><p> uchar i
99、= 0; </p><p> uchar dat = 0; </p><p> for (i=8;i>0;i--) </p><p><b> { </b></p><p> DQ = 0; // 給脈沖信號 </p><p> dat>>=1
100、; // 數(shù)據(jù)右移一位 </p><p> DQ = 1; // 給脈沖信號 </p><p> if(DQ) // DQ為1 </p><p> dat|=0x80; // 讀出數(shù)據(jù) </p><p> delay_MS(4);
101、 // 延時 </p><p><b> } </b></p><p> return(dat); </p><p><b> } </b></p><p> void WriteOneChar(unsigned char dat) // 寫字節(jié)子函數(shù)<
102、;/p><p><b> { </b></p><p> uchar i = 0; </p><p> for (i=8; i>0; i--) </p><p><b> { </b></p><p><b> DQ = 0; </b><
103、;/p><p> DQ = dat&0x01; //寫入一位數(shù)據(jù) </p><p> delay_MS(5); </p><p><b> DQ = 1; </b></p><p> dat>>=1; //右移一位數(shù)據(jù) </p><p><b>
104、 } </b></p><p><b> } </b></p><p> void tmpchange(void) // DS18B20 begin change // 發(fā)送溫度轉換命令</p><p> { </p><p> Init
105、_DS18B20(); // 初始化DS18B20 </p><p> delay_MS(200); // 延時 </p><p> WriteOneChar(0xcc); // 跳過序列號命令 </p><p> WriteOneChar(0x44); // 發(fā)送溫度轉換
106、命令 </p><p><b> } </b></p><p> uint tmp() //get the temperature /* 讀出溫度函數(shù) */ </p><p> { </p><
107、p> // float tt; </p><p> Init_DS18B20(); // 初始化ds18b2子函數(shù) </p><p> delay_MS(1); </p><p> WriteOneChar(0xcc); // 跳過ROM命令 </p><p> WriteOneCh
108、ar(0xbe); // 發(fā)送讀取數(shù)據(jù)命令 </p><p> temp_data[0]=ReadOneChar(); // 連續(xù)讀兩個字節(jié)數(shù)據(jù) </p><p> temp_data[1]=ReadOneChar(); </p><p> temp1=temp_data[1]; </p><p> temp1<
109、<=8; </p><p> temp1=temp1|temp_data[0]; // 兩字節(jié)合成一個整型變量。 </p><p> return temp1; // 返回溫度值 </p><p><b> } &
110、lt;/b></p><p> void tem_deal(uint tem) /* 溫度數(shù)據(jù)顯示處理函數(shù) */ </p><p><b> { </b></p><p> if(tem>6348) // 溫度值正負判斷 </p>
111、<p><b> {</b></p><p> tem=65536-tem;</p><p><b> flag1=1;</b></p><p> } // 負溫度求補碼,標志位置1 </p><p> else flag1=0;</p><
112、;p> Dis_ram[0]=tem&0x0f; // 取小數(shù)部分的值 </p><p> Dis_play[3]=Dis_ram[0]; // 存入小數(shù)部分顯示值 </p><p> Dis_ram[0]=tem>>4; // 取中間八位,即整數(shù)部分的值 </p><p>
113、 Dis_play[0]=Dis_ram[0]/100; // 取百位數(shù)據(jù)暫存 </p><p> Dis_play[2]=Dis_ram[0]%100; // 取后兩位數(shù)據(jù)暫存 </p><p> if(Dis_play[2]<=XX) </p><p> Dis_play[4]=1 ;</p><p>&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中央空調控制系統(tǒng)畢業(yè)論文
- 畢業(yè)論文---基于fpga的空調控制系統(tǒng)設計
- 汽車空調控制系統(tǒng)設計本科畢業(yè)論文
- 基于單片機的空調控制系統(tǒng)設計畢業(yè)論文
- 基于plc的中央空調控制系統(tǒng)設計畢業(yè)論文
- 基于plc的中央空調控制系統(tǒng)設計畢業(yè)論文
- 畢業(yè)論文--基于單片機的智能空調控制系統(tǒng)設計
- 空調控制系統(tǒng)畢業(yè)設計
- 基于plc-的中央空調控制系統(tǒng)設計畢業(yè)論文
- 畢業(yè)論文——基于avr單片機的汽車空調控制系統(tǒng)
- 室內空調溫度控制系統(tǒng) ---畢業(yè)論文設計
- 室內空調溫度控制系統(tǒng) ---畢業(yè)論文設計
- 汽車專業(yè)畢業(yè)論文--豐田ls400空調控制系統(tǒng)分析
- 2017畢業(yè)論文-基于plc的醫(yī)院中央空調控制系統(tǒng)設計
- 基于組態(tài)軟件環(huán)境下的中央空調控制系統(tǒng)設計【畢業(yè)論文】
- 畢業(yè)論文---空調機溫度控制系統(tǒng)的設計
- 智能空調控制系統(tǒng)設計
- 溫度控制系統(tǒng)畢業(yè)論文
- 畢業(yè)設計---中央空調控制系統(tǒng)設計
- 畢業(yè)論文--溫度控制系統(tǒng)
評論
0/150
提交評論