




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第一章緒論1.1本研究課題的背景隨著近年來人們生活的日益改善,早期的家用電器已經(jīng)不能滿足大家日常生活的使用了。方便、快捷、智能、安全、綠色顯然已經(jīng)成為現(xiàn)在大家追求的主流生活。傳統(tǒng)的家用或者共用加熱取暖設(shè)備不僅加熱效果差,而且還存在眾多的安全隱患,消耗能源更是浪費。幾年來隨著電子科技技術(shù)發(fā)展突飛猛進,微控制器已經(jīng)深入到各個領(lǐng)域了,在軍用設(shè)備、工廠設(shè)施、公共場合、到家用電器方面等領(lǐng)域中運用普遍。自動加熱取暖器采用AT89C51為控制處理器為核心,溫度傳感器DS18B20由有單片機隨時采集溫度值,反饋給MCU,讓液晶屏顯示出來從而可以實時測量溫度,達到控制效果。通過這樣一系列的設(shè)計,能夠形成良好的人機操作。由于現(xiàn)代電力電子技術(shù),計算機技術(shù),控制理論已經(jīng)成熟,采用單片機控制技術(shù)是實現(xiàn)家電智能化重要且流行的一部分。單片機具有體積微小,重量輕,能耗低,效率高,控制功能強、操作簡單以及價格便宜等特點,因而成為溫控,報警控制系統(tǒng)的首選微控制器。這也是未來家用電器的流行趨勢,目前已應(yīng)用于多個領(lǐng)域。1.2本課題的研究意義 取暖器的歷史已經(jīng)發(fā)展了好多年了,并且廣泛的應(yīng)用于生活、公共場合當中。目前市面上流行的自動取暖器種類非常多,在溫度控制、和人機交流方面都有非常良好的性能。不管是工業(yè),民用,和軍用上面有著出色的表現(xiàn)。隨著社會的發(fā)展,各方面的技術(shù)越來越好,大眾對自動取暖器也提出了更高的要求,采用微控制器進行控制溫度加熱設(shè)備不僅在操作過程中更智能,它還體現(xiàn)在節(jié)能、安全等細節(jié)上,在自動控制和電子領(lǐng)域依然被廣泛使用。在今天的社會中,伴隨著與自動控制系統(tǒng)的不同要求的生產(chǎn)工藝的改進,通過改變用微控制器的智能設(shè)備便應(yīng)運而生,并得到了更快更好的發(fā)展。微控制器智能加熱系統(tǒng)需要較少的元件,電路結(jié)構(gòu)簡單,控制靈活,堅固耐用,應(yīng)用范圍廣,各種不同的控制通道,和數(shù)字信號兼容的通信,因此得到了業(yè)界的廣泛應(yīng)用,推動產(chǎn)業(yè)化發(fā)展,使得今后我們工作學(xué)習(xí)研究物聯(lián)網(wǎng)智能家用系統(tǒng)變得非常重要。采用單芯片作為主控制裝置,實現(xiàn)了“智能自動取暖器”的主題,通過這樣的設(shè)計,我們可以進一步加深我們理解和運用理論知識能力,而且對我們今后的工作學(xué)習(xí)和研究具有重要的意義。1.3單片機微控制技術(shù) 單片機,全稱單片微型計算機,又稱微控制器,是把中央處理器CPU、存儲器(RAM/ROM)、多種I/O口、定時/計數(shù)器和中斷系統(tǒng)等功能集成在一塊集成電路芯片上的微型計算機系統(tǒng),采用了超大規(guī)模集成技術(shù),廣泛應(yīng)用于工業(yè)控制領(lǐng)域。單片的使用要追溯到從上世紀80年代,由當時的4位、8位單片機,發(fā)展到現(xiàn)在的300M的高速單片機。本款采用的是AT89C51芯片設(shè)計,以下單片機外部引腳的分布:電源和時鐘引腳。如Vcc、GND、XTAL1、XTAL2。編程控制引腳。如RST、PSEN、ALE/PROG、EA/VppI/O口引腳。如P0、P1、P2、P3,四組8位I/O口。各引腳的功能如下:Vcc(第40引腳)、GND(第20引腳)它們是單片機的一對電源引腳。不同型號的單片機對應(yīng)的電壓源也不同,AT89C81對電源的需求范圍比較寬,最低可以是+3.3V,最高為5V都可以,對電源兼容性很強。XTAL1(第19引腳)和XTAL2(第18引腳)是單片機對外的時鐘引腳,其中XTAL1是單片機片內(nèi)振蕩電路的輸入端,XTAL2為單片機片內(nèi)振蕩的輸出端,AT89C51的時鐘選擇方式有兩種,一種是片內(nèi)振蕩方式,需要將這兩個引腳接石英晶振加上瓷片電容,這里我們選用的是12MHZ的晶振和33PF的瓷片電容作為時鐘振蕩源。一種是外部時鐘方式,將XTAL1接地,外部時鐘信號從XTAL2腳輸入。圖1-1時鐘振蕩電路源RST(第9腳)為單片機復(fù)位引腳。改引腳需要連續(xù)從外部輸入兩個機器周期以上的高電平才有效,一般啟動單片機復(fù)位有兩種方式,一種為自動上電復(fù)位,一種為按鍵復(fù)位,本次設(shè)計為按鍵復(fù)位方式。不管哪種方式當單片機復(fù)位后,無論出于什么狀態(tài),都將從頭開始執(zhí)行程序。圖1-2按鍵復(fù)位電路AT89C51一共有4個I/O口,這些I/O口又分別有8位,總共32個。 P0口(第39腳32引腳)它是雙向的8位三態(tài)I/O,每一位都可以單獨控制,由于P0口內(nèi)部沒有上拉電阻,默認時為高阻態(tài),不能正常的輸出高低電平,因此在使用P0口時一定要外接上拉電阻,在本次設(shè)計中,我們采用10K的電阻。 P1口(第1腳—8引腳)它是準雙向8位I/O口,跟P0一樣,每個口都可獨立控制,由于內(nèi)帶上拉電阻,所以輸出是沒有高阻態(tài)。之所以稱他為準雙向,是因為改口在輸入使用前,要進行寫1,這是才能讀取外部信號。也就是說要有個“準備”的過程。 P2口(第21腳—28引腳)該口和P1口使用一樣,這里不再細說。 P3口(第10引腳—17腳)該口與P1相式,但是值得注意的是該口有復(fù)用功能,作為第二功能時如圖所示:標號引腳第二功能說明P3.010RXD串行輸入口P3.111TXD串行輸出口P3.212INT0外部中斷0P3.313INT1外部中斷1P3.414T0定時器/計數(shù)器0外部輸入端P3.515T1定時器/計數(shù)器1外部輸入端P3.616WR外部數(shù)據(jù)存儲器寫脈沖P3.717RD外部數(shù)據(jù)存儲器讀脈沖表1-1P3口引腳復(fù)用功能1.4課題內(nèi)容本產(chǎn)品設(shè)計了八級加熱功能,八個加熱器分別有八個繼電器控制,這八個繼電器由AT89C51單片機的P1口控制。當環(huán)境溫度與設(shè)定溫度相差10度時,8路加熱器同時工作,相差5度時,4路加熱器工作,相差2度時2路加熱器工作,相差1度時只有1路加熱器工作,當環(huán)境溫度大于設(shè)定溫度時,所有加熱器停止工作。這樣不僅升溫速度快,而且節(jié)能,更重要的是安全,絕不會引發(fā)火災(zāi)。系統(tǒng)設(shè)有數(shù)碼顯示模塊,能顯示環(huán)境的溫度和設(shè)計的溫度。系統(tǒng)設(shè)有蜂鳴器模塊,可進行提示或報警。系統(tǒng)設(shè)有按鍵模塊,其由三個按鍵組成,分別是溫度加、溫度減和定時。系統(tǒng)設(shè)有定時指示模塊,其由八個條形LED指示燈組成,能進行0.5~4小時的定時恒溫控制。
第二章系統(tǒng)設(shè)計2.1系統(tǒng)整體設(shè)計思路取暖器首先必須考慮安全問題,為此加入DS18B20溫度傳感器。首先由溫度傳感器采集當前環(huán)境溫度,再根據(jù)用戶設(shè)定的溫度控制加熱器,當環(huán)境溫度達到設(shè)定溫度時,停止加熱。傳統(tǒng)的取暖器升溫慢,因此該系統(tǒng)設(shè)計了八級加熱功能,八個加熱器分別有八個繼電器控制,這八個繼電器由AT89C51單片機的P1口控制。當環(huán)境溫度與設(shè)定溫度相差10度時,8路加熱器同時工作,相差5度時,4路加熱器工作,相差2度時2路加熱器工作,相差1度時只有1路加熱器工作,當環(huán)境溫度大于設(shè)定溫度時,所有加熱器停止工作。這樣不僅升溫速度快,而且節(jié)能,更重要的是安全,絕不會引發(fā)火災(zāi)。最后通過顯示模塊將環(huán)境的溫度和設(shè)計的溫度顯示出來。系統(tǒng)設(shè)有定時指示模塊和蜂鳴器模塊,定時指示模塊由八個條形LED指示燈組成,能進行0.5~4小時的定時恒溫控制。蜂鳴器模塊在定時時間到達之后啟動報警。整個系統(tǒng)的設(shè)計主要以單片機為核心,由溫度采集模塊、按鍵模塊、加熱模塊、蜂鳴器報警模塊、液晶顯示模塊和定時顯示模塊所組成。電路整體設(shè)計原理圖如圖所示:圖2-1系統(tǒng)框圖2.2溫度采集模塊該模塊由數(shù)字溫度傳感器DS18B20和上拉電阻組成。DS18B20的數(shù)據(jù)輸入輸出端DQ引腳接在AT89C51的P2.3口,負責(zé)采集環(huán)境的溫度。經(jīng)過DQ端,將溫度信號傳遞給微控芯片,經(jīng)單片機處理將數(shù)據(jù)傳送給LCD顯示模塊顯示數(shù)據(jù)。具體電路圖如圖2-2所示,DQ短接STC89C52的P2.3端口。圖2-2溫度檢測原理圖DS18B20溫度傳感器是DALLAS美國半導(dǎo)體公司最新模型的智能溫度傳感器,與傳統(tǒng)熱敏電阻的溫度測量設(shè)備相比,它可以直接讀出所測量的溫度,并且可以基于通過簡單的編程實現(xiàn)要求9-12位數(shù)字讀數(shù)模式。DS18B20具有如下所示的性能:(1)獨特的接口方式只需要用一個引腳在通信上;(2)多個DS18B20可以被并聯(lián)連接在獨有的一條三線上,達到多點組網(wǎng)的功能;(3)不需要其他的外部元器件;(4)能通過外接數(shù)據(jù)線來提供電源,電壓的范圍:3.0~5.5V;(5)測溫范圍-55℃~+125℃,在-10~+85℃時精度為±0.5℃;(6)零待機功耗;(7)溫度用9位或12位的數(shù)字量讀出;(8)可用于用戶定義的非易失性溫度報警設(shè)置;(9)報警搜索命令識別并且標志出超過程序限定的溫度(溫度報警條件)的元器件;(10)負電壓特性,電源極性反向,溫度計將不會燒毀,但不會正常工作。DS18B20采用8腳SOIC的封裝或3腳PR-35的封裝。DS18B20內(nèi)部存儲器還包括溫度傳感器暫存RAM和非易失性電可擦除EERAM。暫存RAM配置為8字節(jié)的存儲器,在表3.4.1中所示的結(jié)構(gòu)中。前兩個字節(jié)包含測得的溫度信息,第3和第4字節(jié)TH和TL是揮發(fā)性的,每次上電復(fù)位刷新。其中的第5個字節(jié)的配置寄存器,其內(nèi)容溫度值被用來確定數(shù)字轉(zhuǎn)換的分辨率。DS18B20工作寄存器中的分辨率轉(zhuǎn)換為相應(yīng)精度的溫度值。在圖中所示的字節(jié)。成員的定義如下。低5位一直設(shè)置為1,TM是工作模式位,設(shè)置溫度計為工作模式或在測試模式。DS18B20工廠初始設(shè)置被設(shè)置為0,用戶要改變,R1和R0決定溫度轉(zhuǎn)換的精度位數(shù),設(shè)置這兩位來決定分辨率。DS18B20高速暫存器共9個存存單元,如表2-1所示。表2-1寄存功能序號寄存器名稱作用序號寄存器名稱0溫度低字節(jié)以16位補碼形式存放4、5保留字節(jié)1、21溫度低字節(jié)6計數(shù)器余值2TH用戶字節(jié)1存放溫度上限7計數(shù)器℃3TH用戶字節(jié)2存放溫度上限8CRC用12位的轉(zhuǎn)化為例說明溫度高低字節(jié)的存放形式以及計算12位的轉(zhuǎn)化后所得到的12位數(shù)據(jù),18B20的兩個高低8位的RAM中存放數(shù)據(jù),在二進制中符號位是最前面的5位數(shù)字。所測得到的溫度如果大于0℃,那這5位就設(shè)置為0,只需將所得的數(shù)值乘以0.0625就可以得到實際的溫度;如果所測得到的溫度小于0℃,那就將這5位數(shù)字設(shè)置為1,將測到的數(shù)值取反再加1,然后乘以0.0625才能得到實際的溫度。表2-2轉(zhuǎn)換時間R1R0轉(zhuǎn)換精度(16進制)轉(zhuǎn)換精度(10進制)轉(zhuǎn)換時間009bit0.593.75ms0110bit0.25187.5ms1011bit0.125375ms1112bit0.0625750ms當S(符號位)等于0時,說明所測得的溫度值為正數(shù),能夠直接將得到的二進制位轉(zhuǎn)換為十進制數(shù);當S(符號位)等于1時,說明所測得的溫度值為負數(shù),需要先將得到的補碼轉(zhuǎn)換成原碼,再計算十進制數(shù)。表3.3是溫度值對應(yīng)于二進制溫度數(shù)值。表2-3溫度轉(zhuǎn)換表溫度/℃二進制表示十六進制表示+125000001111101000007D0H+8500000101010100000550H+25.062500000001100100000191H+10.125000000001010000100A2H+0.500000000000000100008H000000000000010000000H-0.51111111111110000FFF8H-10.1251111111101011110FF5EH-25.06251111111001101111FE6FH-551111110010010000FC90H2.3液晶顯示模塊 該模塊由LCD1602液晶屏和10K的排阻組成。液晶屏的8個數(shù)據(jù)端口D0-D7分別連接到P0的8個I/O口,加上10K的上拉電阻,另外LCD的RS、RW和E分別與微控芯片的P2.0、P2.1、P2.2相連,主要是顯示溫度傳感器返回的示數(shù)。電路圖如圖2-4所示。圖2-4液晶顯示電路1602液晶顯示器是工業(yè)字符型液晶,能夠同時顯示32個字符。(16列2行)液晶顯示模塊可以分為字段,字符點陣,圖形點陣3種。一般情況下,只有后者可以顯示漢字和圖形。LCD1602液晶顯示器是最常見的16×2行,6×8字符的點陣液晶顯示模塊,其廣泛用于智能儀表、辦公設(shè)備和通信中。其字符發(fā)生器ROM中自帶數(shù)字和英文字母及特殊符號的字符庫,沒有漢字。表2-4LCD引腳表編號符號引腳說明編號符號引腳說明1VCC電源地9D2數(shù)據(jù)2VDD電源正極10D3數(shù)據(jù)3VL液晶顯示偏壓11D4數(shù)據(jù)4RS數(shù)據(jù)/命令選擇12D5數(shù)據(jù)5R/W讀/寫選擇13D6數(shù)據(jù)6E使能信號14D7數(shù)據(jù)7D0數(shù)據(jù)15VDD電源正極8D1數(shù)據(jù)16VCC電源地第1腳:VSS為接地電源。第2腳:VDD接5V正電源。第3腳:VL為液晶顯示器調(diào)整對比度的端口,當接入為正電源時其對比度最弱,在接地時其對比度為最高,一旦對比度過高時,就會產(chǎn)生“鬼影”,使用時可以由一個10K大小的電位器進行對比度的調(diào)整。第4腳:RS端口作為寄存器的選擇端,要選用數(shù)據(jù)寄存這一功能時就將端口置為高電平、用指令寄存這一功能時就將端口置為低電平。第5腳:R/W是用于讀或?qū)懙男盘柧€,執(zhí)行讀操作需將其置為高電平,執(zhí)行寫操作需將其置為低電平。在將R/W和RS都設(shè)置為低電平時就可以顯示地址或者寫入指令,在R/W設(shè)為高電平、RS設(shè)為低電平時就顯示讀忙信號,在RS為高電平、R/W設(shè)為低電平就可用于寫入數(shù)據(jù)。第6腳:E端口作為使能端,當E端口從高電平變?yōu)榈碗娖綍r,液晶模塊開始執(zhí)行命令。第7~14腳:D0~D7為8位雙向的數(shù)據(jù)線。2.5加熱模塊為了實現(xiàn)分級加熱功能,系統(tǒng)設(shè)計了8個加熱模塊,這八個加熱模塊由AT89C51的P3口的八個引腳控制。1個加熱模塊主要由1個繼電器、1個三極管和1個加熱電阻絲組成。圖1中繼電器RL1由三極管Q1驅(qū)動,Q1的基極鏈接在AT89C51的P1.0口,當該端口輸出低電平時,三極管Q1導(dǎo)通,繼電器RL1閉合,加熱電阻絲L1工作,當該端口輸出高電平時,三極管Q1截止,繼電器RL1斷開,加熱電阻絲L1停止工作。圖2-5繼電器加熱電路圖2.4按鍵模塊 為了簡化系統(tǒng)的操作控制,我們只設(shè)計了三個按鍵,分別是溫度加、溫度減和定時,通過前面兩個按鍵我們可以改變?nèi)∨鞯哪繕斯ぷ鳒囟?,通過后者我們可以設(shè)定取暖器恒溫定時的時間。 電路圖如圖2-5所示,K1、K2、K3分別接單片機的P2.5、P2.6和P2.7口。圖2-5按鍵電路圖2.6定時顯示模塊 該模塊由八個條形LED燈U3和限流排阻RP2組成,鏈接在AT89C51的P3口的八個引腳上,恒溫定時的時間等于亮的LED燈的個數(shù)乘以0.5小時。圖2-6定時顯示電路圖2.7蜂鳴器報警模塊該模塊主要由蜂鳴器、PNP三極管和一些外圍元件組成。蜂鳴器由PNP三極管Q5驅(qū)動,Q5的基極鏈接在AT89C51的P2.4口,當該端口輸出低電平時,三極管Q5導(dǎo)通,蜂鳴器發(fā)聲,當該端口輸出高電平時,三極管Q5截止,蜂鳴器停止發(fā)聲。由于蜂鳴器位感性元件,故并聯(lián)了一個反向的二極管。電路圖如圖2-3所示。三極管PNP的基極連接在單片機的P2.4口。圖2-3蜂鳴器報警電路
第三章軟件設(shè)計開發(fā)環(huán)境本次程序代碼的編寫是在keil軟件的環(huán)境下完成,在ProteusIsis7軟件環(huán)境下進行仿真。3.1.1Keiluvision4軟件使用1、首先在桌面打開keiluvision4軟件圖標。2、選擇Project,點擊NewuvisionProject新建項目工程,保存。圖3-1打開keil軟件3、選擇File,點擊New…,新建文本,保存文本,后綴名為“.C”文件。圖3-2新建文本編寫C程序,編譯、生成Hex文件。3.1.2ProteusIsis7的使用1、打開proteusIsis7軟件。圖3-3新建仿真文件2、選擇File,點擊NewDesign,新建文本,保存。3、在彈出的PickDevices對話框中,選擇需要的元器件。圖3-4選取元器件4、最后連接元器件,完成仿真圖的繪制。圖3-5繪制仿真原理圖3.2系統(tǒng)主流程設(shè)計本程序包含主程序、DS18B20驅(qū)動程序、LCD1602液晶驅(qū)動程序、加熱控制程序、按鍵掃描程序等。主程序采用模塊化編程方案,包含延時、溫度數(shù)據(jù)轉(zhuǎn)換為字符串、1602顯示等函數(shù),系統(tǒng)主流程如下圖4.1所示。開始開始LCD1602初始化LCD1602初始化DS18B20初始化DS18B20初始化溫度數(shù)據(jù)掃描溫度數(shù)據(jù)掃描繼電器加熱繼電器加熱溫度的顯示溫度的顯示蜂鳴器報警蜂鳴器報警延時10ms延時10ms圖3-6主程序流程圖液晶屏顯示程序當為產(chǎn)品通上電時,即啟動該溫度控制模式,溫度傳感器會采集周邊的環(huán)境,然后將其通過P2.3引腳將數(shù)據(jù)傳送到單片機,通過液晶顯示屏顯示當前的溫度。具體程序框架如下圖:開始開始溫度數(shù)據(jù)采集溫度數(shù)據(jù)采集單片機數(shù)據(jù)處理單片機數(shù)據(jù)處理液晶屏顯示液晶屏顯示圖3-7溫度模塊流程圖通過溫度傳感器,將采集的溫度數(shù)據(jù)傳送到單片機上,然后不斷更新當下溫度的狀態(tài),且在液晶顯示屏上顯示出來,實現(xiàn)其功能的主要程序如下:voidDs18b20ReadTempCom(){ Ds18b20Init(); Delay1ms(1); Ds18b20WriteByte(0xcc); Ds18b20WriteByte(0xbe); }intDs18b20ReadTemp(){ inttemp=0; unsignedchartmh,tml; Ds18b20ChangTemp(); Ds18b20ReadTempCom(); tml=Ds18b20ReadByte(); tmh=Ds18b20ReadByte(); temp=tmh; temp<<=8; temp|=tml; returntemp;}按鍵掃描程序該模塊由三個按鍵K1、K2、K3組成,分別于單片機的P2.5,92.6,P2.7相時,用戶可以通過按下K1、K2鍵分別進行溫度加和溫度減,每次溫度變化1度。按下K3鍵對加熱的時間進行設(shè)置。每次增加0.5個小時,最多定時4小時。具體程序流程圖如下:開始開始否K1是否按下否K1是否按下是是溫度加1溫度加1否K2是否按下否K2是否按下是是溫度減1溫度減1否K3是否按下否K3是否按下是是改變定時狀態(tài)改變定時狀態(tài)繼續(xù)繼續(xù)圖3-8按鍵掃描程序流程圖在手動設(shè)置模式下,當用戶按下按鍵就會啟動按鍵掃描函數(shù),將掃描后的數(shù)據(jù)傳送到單片機,通過液晶屏顯示返回值。具體程序如下:if(k1==0) //判斷按鍵操作{Delay1ms(10); a++; while(!k1); } if(k2==0) //判斷按鍵操作 { Delay1ms(10); a--; while(!k2); } if(k3==0) //判斷按鍵操作 { Delay1ms(10); i++; if(i==9) i=1; while(!k3); }加熱控制程序 當溫度傳感器將環(huán)境的溫度采集發(fā)送到單片機,用戶通過按鍵自定義來設(shè)置加熱溫度的上限值,程序自動會執(zhí)行相應(yīng)程序,當環(huán)境溫度與設(shè)定溫度相差10度時,8路加熱器同時工作,相差5度時,4路加熱器工作,相差2度時2路加熱器工作,相差1度時只有1路加熱器工作,當環(huán)境溫度大于設(shè)定溫度時,所有加熱器停止工作。程序執(zhí)行流程圖如下:開始開始判斷溫度判斷溫度環(huán)境設(shè)計相差10度環(huán)境設(shè)計相差1度環(huán)境設(shè)計相差2度環(huán)境設(shè)計相差5度環(huán)境設(shè)計相差10度環(huán)境設(shè)計相差1度環(huán)境設(shè)計相差2度環(huán)境設(shè)計相差5度2路加熱2路加熱4路加熱8路加熱 2路加熱2路加熱4路加熱8路加熱繼續(xù)繼續(xù)圖3-9加熱控制程序流程圖
第四章系統(tǒng)測試4.1系統(tǒng)仿真測試在完成電路設(shè)計和程序設(shè)計,我們再用PROTEUS仿真軟件進行仿真,仿真的結(jié)果與我們所設(shè)定的電路和程序幾乎一致,達到了自動、智能的要求。仿真圖如下:圖4-1電路仿真原理圖通過該圖可以看出當環(huán)境的溫度超過了預(yù)設(shè)置的溫度時,8路加熱管均不加熱,同時蜂鳴器報警。圖4-21路加熱通過該圖我們可以看出當設(shè)定的溫度大于環(huán)境溫度1時,只有一個加熱管啟動加熱。圖4-32路加熱通過該圖我們可以看出當設(shè)定的溫度大于環(huán)境溫度2時,有兩個加熱管啟動加熱。圖4-44路加熱通過該圖我們可以看出當設(shè)定的溫度大于環(huán)境溫度5時,有四個加熱管啟動加熱。圖4-58路加熱通過該圖我們可以看出當設(shè)定的溫度大于環(huán)境溫度10時,8個加熱管全部啟動。4.2實物測試本次產(chǎn)品用萬能板焊接,由于產(chǎn)品功能豐富,外圍電路較多,因此采用兩塊萬能板焊接,一塊板焊接好主要電路,另一塊板焊接繼電器加熱模塊。焊接過程中要注意各個引腳不能焊錯,在焊接LCD1602過程中將引腳接錯,導(dǎo)致無法正常顯示,由于條件有限,將圖中的發(fā)熱管替換成發(fā)光二極管代替,最后經(jīng)過硬件調(diào)試,確實能實現(xiàn)預(yù)期功能,完成了本次畢業(yè)設(shè)計的要求。以下是各個模塊具體調(diào)試過程中的實物圖:(由于材料原因,本產(chǎn)品用發(fā)光二極管代替發(fā)熱管)圖4-6一個加熱管工作如上圖所示,當液晶屏上環(huán)境溫度與自定義溫度相差1度時,繼電器啟動1根加熱管,進行升溫加熱,當環(huán)境溫度大于等于自定義溫度時,加熱管停止加熱。圖4-7兩個加熱管工作如上圖所示,當液晶屏上環(huán)境溫度與自定義溫度相差2度時,繼電器啟動2根加熱管,進行升溫加熱,當環(huán)境溫度大于等于自定義溫度時,加熱管停止加熱。圖4-8四個加熱管工作如上圖所示,當液晶屏上環(huán)境溫度與自定義溫度相差5度時,繼電器啟動4根加熱管,進行升溫加熱,當環(huán)境溫度大于等于自定義溫度時,加熱管停止加熱。圖4-9一個加熱管工作如上圖所示,當液晶屏上環(huán)境溫度與自定義溫度相差10度時,繼電器啟動8根加熱管,進行升溫加熱,當環(huán)境溫度大于等于自定義溫度時,加熱管停止加熱。實物測試都能符合畢業(yè)設(shè)計的要求,并且性能穩(wěn)定,實現(xiàn)了仿真的預(yù)期功能。
第五章總結(jié)與展望本次論文是設(shè)計一個基于51單片機新型智能自動取暖器。本產(chǎn)品是通過AT89c51單片機為微控制器處理中心的,外圍電路有溫度傳感器DS18B20來采集環(huán)境溫度,LCD1602液晶屏用于人機交換界面顯示當前溫度和預(yù)先設(shè)置溫度,蜂鳴器報警電路當環(huán)境溫度超過了預(yù)先設(shè)置的溫度蜂鳴器報警,還提供了3個按鍵按鍵1用來加溫度;按鍵2用來減溫度;按鍵3用來定時加熱時間的長短;繼電器加熱管模塊用于加熱升溫,共有8路,可以根據(jù)用戶自己的需求分別來啟動,到達節(jié)能的效果。8個發(fā)光二極管LED分別表示定時時間的長短,每個LED代表半個小時,最長定時時間可達到4小時。通過了本次的論文設(shè)計我學(xué)到了很多的東西,主要可以分為以下幾個方面:(1)在大學(xué)前三年多的時間里都是在課上學(xué)習(xí)理論基礎(chǔ)知識,并沒有機會真正地去應(yīng)用和實踐。但是由于這次畢業(yè)設(shè)計,給了我一個理論與實踐相結(jié)合的機會,特別是在設(shè)計硬件電路時,學(xué)習(xí)了許多的知識,也請教了很多人,這次經(jīng)歷也為我將來從事電子設(shè)計方面的工作有了重新的認識。(2)此次設(shè)計由于要用到電路原理圖的繪制,程序代碼的編寫,電路仿真圖的設(shè)計。我學(xué)會了protel99se軟件的使用,用于繪制原理圖;keil軟件的使用,程序的調(diào)試都是在該軟件下執(zhí)行的;PROTEUS是用來畫電路仿真原理圖的,本次使用的元件都能找到,最后在KEIL軟件中生成的HEX文件調(diào)入仿真圖中,就能實現(xiàn)電路圖的仿真了。(3)本次本業(yè)設(shè)計中很多都是大學(xué)課堂上沒有學(xué)到的,有的也不是理解的特別深入,所以如何快速學(xué)習(xí)入門一個知識點,是我本次設(shè)計中得到最大的收獲,如何學(xué)一個軟件,如何使用傳感器等,通過這些問題的解決,收獲了很多解決問題的方法,也認識了一些單片機專業(yè)知識很深的人,請教了他們的學(xué)習(xí)經(jīng)驗和專業(yè)知識。(4)大學(xué)的畢業(yè)設(shè)計是對每一個大學(xué)生的一次綜合能力的考核,在最初接到任務(wù)時,我不知道該從哪方面的著手,也是身邊的同學(xué),老師和朋友們熱情的幫助我,分享了他們的經(jīng)驗,本次畢業(yè)論文設(shè)計才可以完成,但是,不管是硬件電路還是程序設(shè)計中還是有點缺陷的,并不是很完美,還需改進。
參考文獻[1]曾岐,彭楚武,劉輝.單片機原理與應(yīng)用(第二版)[M].長沙:中南大學(xué)出版社,2009.[2]郭天祥.新概念51單片機C語言教程[M].北京:電子工業(yè)出版社,2009.[3]朱定華,黃松,蔡苗.Protel99SE原理圖和印制板設(shè)計[M].北京:清華大學(xué)出版社,2007.[4]沈紅衛(wèi).基于單片機的智能系統(tǒng)設(shè)計與實現(xiàn)[M].北京:電子工業(yè)出版社,2005.[5]元增民.單片機原理與應(yīng)用[M].長沙:國防科學(xué)大學(xué)出版社,2006.[6]劉仁宇.單片微型計算機原理及應(yīng)用[M].西安:西安電子科技大學(xué)出版社,2003.[7]馬忠梅.單片機外圍電路設(shè)計[M].北京:北京航空航天大學(xué)出版社,2005.[8]尹勇,王洪成.單片機開發(fā)環(huán)境μVision2的使用指南[M].北京:北京航空航天大學(xué)出版社,2004.[9]范立南.PROTUES仿真軟件實例使用指南[M].北京:電子工業(yè)出版社,2004.[10]李全利.單片機原理及接口技術(shù)[M].北京:北京航空航天大學(xué)出版社,2004.[11]焦玉朋.基于51單片機的PWM直流電機調(diào)速系統(tǒng).內(nèi)蒙古大學(xué)碩士論文,2013.[12]徐愛鈞,彭秀華.單片機高級語言C51應(yīng)用程序設(shè)計[M].北京:北京航空航天大學(xué)出版社,2006.[13]樓然苗.51系列單片機設(shè)計實例[M].北京:北京航空航天大學(xué)出版社,2006.[14]AT89C51DATASHEEPPhilipsSemiconductors1999.dec.
致謝三個多月的畢業(yè)設(shè)計已經(jīng)完美結(jié)束了,在做畢業(yè)設(shè)計的過程中,非常感謝梅老師的悉心指導(dǎo)。從最初的選題開始,梅老師多次詢問研究進度,并且為我指點迷津,精心點撥了我的研究思路。梅老師以其精益求精的工作作風(fēng),嚴肅的教學(xué)態(tài)度,深深的鼓勵和激勵著我,使得我對于所學(xué)的知識有了一個更為深入的了解。對梅老師的感激之情是無法用言語來表達的。另外,感謝我的同學(xué)和朋友,在我寫論文的過程中給予我了很多有用素材,還在論文的撰寫和排版過程中提供熱情的幫助。向幫助和指導(dǎo)我的各位老師表示最衷心的感謝!四年的學(xué)習(xí)生涯就要到此劃上句號,時光荏苒,青春不再,在學(xué)校的時光永遠是那么的讓人懷念。在學(xué)校里面不僅學(xué)到了書本上的知識,更重要的是學(xué)會了生活上的其他知識。當然,學(xué)無止境,在什么時候都不能停下學(xué)習(xí)的腳步,活到老學(xué)到老,這是我們生活的目標,也是做一個四有青年的關(guān)鍵因素。感謝這篇論文所涉及到的各位學(xué)者,本文引用了數(shù)位學(xué)者的文獻,如果沒有各位學(xué)者的研究成果的幫助和啟發(fā),我將很難完成本篇論文的寫作。最后,向在百忙之中抽出時間對本文進行評審并提出寶貴意見的各位專家表示衷心的感謝!附錄附錄一:電路原理圖
附錄二:電路仿真原理圖附錄三:源程序主函數(shù):#include<reg51.h>#include"lcd.h"#include"temp.h"voidLcdDisplay(int);uinta=27,b,c,d,e,f,g,h,i=1,j,h;voidmain(){ LcdInit(); //初始化LCD1602 LcdWriteCom(0x8a); //寫地址80表示初始地址 LcdWriteData('C');LcdWriteCom(0xc2); //寫地址80表示初始地址 LcdWriteData('S'); LcdWriteCom(0xc3); //寫地址80表示初始地址 LcdWriteData('e'); LcdWriteCom(0xc4); //寫地址80表示初始地址 LcdWriteData('t'); LcdWriteCom(0xc6); //寫地址80表示初始地址 LcdWriteData('U'); LcdWriteCom(0xc7); //寫地址80表示初始地址 LcdWriteData('p'); TMOD=0x00; TH0=(8192-4607)/32; TL0=(8192-4607)%32; EA=1; ET0=1; TR0=1; while(i) { LcdDisplay(Ds18b20ReadTemp()); //顯示操作 if(k1==0) //判斷按鍵操作 { Delay1ms(10); a++; while(!k1); } if(k2==0) //判斷按鍵操作 { Delay1ms(10); a--; while(!k2); } if(k3==0) //判斷按鍵操作 { Delay1ms(10); i++; if(i==9) i=1; while(!k3); } if(i==1) P3=0xfe; if(i==2) P3=0xfc; if(i==3) P3=0xf8; if(i==4) P3=0xf0; if(i==5) P3=0xe0; if(i==6) P3=0xc0; if(i==7) P3=0x80; if(i==8) P3=0x00; e=a-d; if(d>=a) { //繼電器控制 P1=0xff; } else{ if(e>=10) P1=0x00; else { if(e>=5) P1=0xf0; else{ if(e>=2) P1=0xfc; else { if(e>=1) P1=0xfe; } } } } }}voidT0_time()interrupt1{TH0=(8192-4607)/32;TL0=(8192-4607)%32;f++; if(f==10){ if(d>=a) buzz=~buzz;}if(f==200){f==0;g++;} if(g==60) { g==0; h++; } if(h==30) { h=0; i--; }}voidLcdDisplay(inttemp) //lcd顯示{ unsignedchardatas[]={0,0,0,0,0};//定義數(shù)組 floattp; if(temp<0) //當溫度值為負數(shù) { LcdWriteCom(0x80); //寫地址80表示初始地址 LcdWriteData('-'); //顯示負 temp=temp-1; temp=~temp; tp=temp; temp=tp*0.0625*100+0.5; } else { LcdWriteCom(0x83); //寫地址80表示初始地址 LcdWriteData('+'); //顯示正 tp=temp; temp=tp*0.0625*100+0.5; } datas[0]=temp/10000; datas[1]=temp%10000/1000; datas[2]=temp%1000/100; datas[3]=temp%100/10; datas[4]=temp%10; b=a/10; c=a%10; LcdWriteCom(0x84); //寫地址80表示初始地址 LcdWriteData('0'+datas[0]);//百位 LcdWriteCom(0x85); //寫地址80表示初始地址 LcdWriteData('0'+datas[1]);//十位 LcdWriteCom(0x86); //寫地址80表示初始地址 LcdWriteData('0'+datas[2]);//個位 LcdWriteCom(0x87); //寫地址80表示初始地址 LcdWriteData('.'); //顯示‘.’ LcdWriteCom(0x88); //寫地址80表示初始地址 LcdWriteData('0'+datas[3]);//顯示小數(shù)點 LcdWriteCom(0x89); //寫地址80表示初始地址 LcdWriteData('0'+datas[4]);//顯示小數(shù)點 d=temp/100;LcdWriteCom(0xcb); //寫地址80表示初始地址 LcdWriteData('0'+b); LcdWriteCom(0xcc); //寫地址80表示初始地址 LcdWriteData('0'+c);}LCD顯示函數(shù):#include"lcd.h"/********************************************************************************函數(shù)名:Lcd1602_Delay1ms*函數(shù)功能 :延時函數(shù),延時1ms*輸入:c*輸出:無*說名:該函數(shù)是在12MHZ晶振下,12分頻單片機的延時。*******************************************************************************/voidLcd1602_Delay1ms(uintc)//誤差0us{uchara,b; for(;c>0;c--) { for(b=199;b>0;b--) { for(a=1;a>0;a--); } }}/********************************************************************************函數(shù)名:LcdWriteCom*函數(shù)功能 :向LCD寫入一個字節(jié)的命令*輸入:com*輸出:無*******************************************************************************/#ifndef LCD1602_4PINS //當沒有定義這個LCD1602_4PINS時voidLcdWriteCom(ucharcom) //寫入命令{ LCD1602_E=0;//使能 LCD1602_RS=0; //選擇發(fā)送命令 LCD1602_RW=0; //選擇寫入 LCD1602_DATAPINS=com;//放入命令 Lcd1602_Delay1ms(1); //等待數(shù)據(jù)穩(wěn)定 LCD1602_E=1; //寫入時序 Lcd1602_Delay1ms(5); //保持時間 LCD1602_E=0;}#elsevoidLcdWriteCom(ucharcom) //寫入命令{ LCD1602_E=0; //使能清零 LCD1602_RS=0; //選擇寫入命令 LCD1602_RW=0; //選擇寫入 LCD1602_DATAPINS=com; Lcd1602_Delay1ms(1); LCD1602_E=1; //寫入時序 Lcd1602_Delay1ms(5); LCD1602_E=0; LCD1602_DATAPINS=com<<4;//發(fā)送低四位 Lcd1602_Delay1ms(1); LCD1602_E=1; //寫入時序 Lcd1602_Delay1ms(5); LCD1602_E=0;}#endif/********************************************************************************函數(shù)名:LcdWriteData*函數(shù)功能 :向LCD寫入一個字節(jié)的數(shù)據(jù)*輸入:dat*輸出:無*******************************************************************************/ #ifndef LCD1602_4PINS voidLcdWriteData(uchardat) //寫入數(shù)據(jù){ LCD1602_E=0; //使能清零 LCD1602_RS=1; //選擇輸入數(shù)據(jù) LCD1602_RW=0; //選擇寫入 LCD1602_DATAPINS=dat;//寫入數(shù)據(jù) Lcd1602_Delay1ms(1); LCD1602_E=1;//寫入時序 Lcd1602_Delay1ms(5);//保持時間 LCD1602_E=0;}#elsevoidLcdWriteData(uchardat) //寫入數(shù)據(jù){ LCD1602_E=0; //使能清零 LCD1602_RS=1; //選擇寫入數(shù)據(jù) LCD1602_RW=0; //選擇寫入 LCD1602_DATAPINS=dat; //由于4位的接線是接到P0口的高四位,所以傳送高四位不變 Lcd1602_Delay1ms(1); LCD1602_E=1; //寫入時序 Lcd1602_Delay1ms(5); LCD1602_E=0; LCD1602_DATAPINS=dat<<4;//寫入低四位 Lcd1602_Delay1ms(1); LCD1602_E=1; //寫入時序 Lcd1602_Delay1ms(5); LCD1602_E=0;}#endif/********************************************************************************函數(shù)名:LcdInit()*函數(shù)功能 :初始化LCD屏*輸入:無*輸出:無*******************************************************************************/ #ifndef LCD1602_4PINSvoidLcdInit() //LCD初始化子程序{ LcdWriteCom(0x38);//開顯示 LcdWriteCom(0x0c);//開顯示不顯示光標 LcdWriteCom(0x06);//寫一個指針加1 LcdWriteCom(0x01);//清屏 LcdWriteCom(0x80);//設(shè)置數(shù)據(jù)指針起點}#elsevoidLcdInit() //LCD初始化子程序{ LcdWriteCom(0x32); //將8位總線轉(zhuǎn)為4位總線 LcdWriteCom(0x28); //在四位線下的初始化 LcdWriteCom(0x0c);//開顯示不顯示光標 LcdWriteCom(0x06);//寫一個指針加1 LcdWriteCom(0x01);//清屏 LcdWriteCom(0x80);//設(shè)置數(shù)據(jù)指針起點}#endif環(huán)境溫度采集函數(shù):#include"temp.h"/********************************************************************************函數(shù)名:Delay1ms*函數(shù)功能 :延時函數(shù)*輸入:無*輸出 :無*******************************************************************************/voidDelay1ms(unsignedinty){ unsignedintx; for(y;y>0;y--) for(x=110;x>0;x--);}/***************************************************************************函數(shù)名:Ds18b20Init*函數(shù)功能 :初始化*輸入:無*輸出 :初始化成功返回1,失敗返回0**************************************************************************/unsignedcharDs18b20Init(){ unsignedinti; DSPORT=0; //將總線拉低480us~960us i=70; while(i--);//延時642us DSPORT=1;//然后拉高總線,如果DS18B20做出反應(yīng)會將在15us~60us后總線拉低 i=0; while(DSPORT) //等待DS18B20拉低總線 { i++; if(i>5000)//等待>5MS return0;//初始化失敗 } return1;//初始化成功}/***************************************************************************函數(shù)名:Ds18b20WriteByte*函數(shù)功能 :向18B20寫入一個字節(jié)*輸入:com*輸出 :無**************************************************************************/voidDs18b20WriteByte(unsignedchardat){ unsignedinti,j; for(j=0;j<8;j++) { DSPORT=0; //每寫入一位數(shù)據(jù)之前先把總線拉低1us i++; DSPORT=dat&0x01;//然后寫入一個數(shù)據(jù),從最低位開始 i=6; while(i--);//延時68us,持續(xù)時間最少60us DSPORT=1; //然后釋放總線,至少1us給總線恢復(fù)時間才能接著寫入第二個數(shù)值 dat>>=1; }}/***************************************************************************函數(shù)名:Ds18b20ReadByte*函數(shù)功能 :讀取一個字節(jié)*輸入:com*輸出 :無**************************************************************************/unsignedcharDs18b20ReadByte(){ unsignedcharbyte,bi; unsignedinti,j; for(j=8;j>0;j--) { DSPORT=0;//先將總線拉低1us i++; DSPORT=1;//然后釋放總線 i++; i++;//延時6us等待數(shù)據(jù)穩(wěn)定 bi=DSPORT; //讀取數(shù)據(jù),從最低位開始讀取 byte=(byte>>1)|(bi<<7); i=4; //讀取完之后等待48us再接著讀取下一個數(shù) while(i--); } returnbyte;}/***************************************************************************函數(shù)名:Ds18b20ChangTemp*函數(shù)功能 :讓18b20開始轉(zhuǎn)換溫度*輸入:com*輸出 :無**************************************************************************/voidDs18b20ChangTemp(){ Ds18b20Init(); Delay1ms(1); Ds18b20WriteByte(0xcc); //跳過ROM操作命令 Ds18b20WriteByte(0x44); //溫度轉(zhuǎn)換命令}/***************************************************************************函數(shù)名:Ds18b20ReadTempCom*函數(shù)功能 :發(fā)送讀取溫度命令*輸入:com*輸出 :無**************************************************************************/voidDs18b20ReadTempCom(){ Ds18b20Init(); Delay1ms(1); Ds18b20WriteByte(0xcc); //跳過ROM操作命令 Ds18b20WriteByte(0xbe); //發(fā)送讀取溫度命令}/***************************************************************************函數(shù)名:Ds18b20ReadTemp*函數(shù)功能 :讀取溫度*輸入:com*輸出 :無**************************************************************************/intDs18b20ReadTemp(){ inttemp=0; unsignedchartmh,tml; Ds18b20ChangTemp(); //先寫入轉(zhuǎn)換命令 Ds18b20ReadTempCom(); //然后等待轉(zhuǎn)換完后發(fā)送讀取溫度命令 tml=Ds18b20ReadByte(); //讀取溫度值共16位,先讀低字節(jié) tmh=Ds18b20ReadByte(); //再讀高字節(jié) temp=tmh; temp<<=8; temp|=tml; returntemp;}目錄TOC\o"1-2"\h\z\u第一章總論 1一、項目概況 1二、項目所在區(qū)域簡介 1三、報告編制依據(jù) 2四、編制內(nèi)容 3五、簡要結(jié)論 3第二章項目建設(shè)背景及必要性 5一、項目建設(shè)背景 5二、項目建設(shè)必要性 5第三章服務(wù)對象與需求分析 8第四章建設(shè)內(nèi)容及規(guī)模 9一、建設(shè)內(nèi)容 9二、建設(shè)規(guī)模 9第五章項目選址及建設(shè)條件 10一、項目選址 10二、什邡市概況 10三、建設(shè)條件 11第六章項目建設(shè)規(guī)劃和工程方案設(shè)計 15一、項目建設(shè)規(guī)劃的指導(dǎo)思想、基本原則和重建目標 15二、項目建設(shè)規(guī)劃實施的保障措施 16三、工程方案設(shè)計原則 16四、總
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年新型鋁鎂合金材料項目發(fā)展計劃
- 第二章第一節(jié)《制作簡易地球儀》實驗教學(xué)設(shè)計-2024-2025學(xué)年中圖版地理七年級上冊
- 2025年兩性離子聚合物泥漿處理劑項目建議書
- 2024年水發(fā)水電第三季度社會招聘筆試參考題庫附帶答案詳解
- 《游戲編程的奧秘》教學(xué)設(shè)計
- 2024年江蘇省連云港市贛榆區(qū)和安中學(xué)中考三模語文試卷
- 老式唱片機:聆聽音樂里的似水流年
- 第二章第二節(jié)海陸的變遷教學(xué)設(shè)計第1課時 2023-2024學(xué)年人教版地理七年級上冊
- 全國電子工業(yè)版初中信息技術(shù)第六冊第3單元3.2活動1《輸入圖像訓(xùn)練分類模型》教學(xué)設(shè)計
- 2025年礦物質(zhì)類藥項目合作計劃書
- (新版教材)粵教粵科版六年級下冊科學(xué)全冊教案(教學(xué)設(shè)計)
- 精品污水處理廠工程重難點分析及應(yīng)對措施
- (完整版)泄洪渠施工方案
- 幼兒園廚房人員培訓(xùn)計劃
- 博士、博士后簡歷模板
- 《房屋面積測算技術(shù)規(guī)程》DGJ32TJ131-2022
- 預(yù)應(yīng)力空心板吊裝專項施工方案
- 鞍鋼鲅魚圈鋼鐵項目38m生產(chǎn)線工程設(shè)計思想
- 《藥劑學(xué)》-阿昔洛韋軟膏的制備
- 畢業(yè)設(shè)計-膽囊結(jié)石患者的護理計劃
- 倒排工期計劃表
評論
0/150
提交評論