基于單片機的智能溫度檢測器設計_第1頁
基于單片機的智能溫度檢測器設計_第2頁
基于單片機的智能溫度檢測器設計_第3頁
基于單片機的智能溫度檢測器設計_第4頁
基于單片機的智能溫度檢測器設計_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、目錄第1章 緒論- 1 -1.1 課題研究的背景及意義- 1 -1.2 單片機的意義和本設計特點- 1 -第2章 硬件設計- 2 -2.1系統(tǒng)總設計結構圖- 2 -2.2蜂鳴器、LED和按鍵簡介- 2 -2.3主控芯片AT89C51單片機的簡介- 3 -2.4 LCD1602液晶簡介- 4 -2.5 DS18B20溫度傳感器簡介- 5 -2.6系統(tǒng)電路設計- 5 -2.7總電路設計- 12 -第3章 軟件設計- 12 -3.1系統(tǒng)軟件設計整體思路- 12 -3.2系統(tǒng)軟件設計流程圖- 18 -第4章 程序仿真調(diào)試- 19 -4.1程序調(diào)試用到的軟件及工具- 19 -4.2 KEIL C51簡介

2、- 19 -4.3軟件開發(fā)環(huán)境的搭建- 19 -4.4 Proteus介紹- 20 -4.5仿真結果- 21 -第5章 總結- 24 -參考文獻- 25 -致 謝- 26 -附錄- 27 -基于單片機的智能溫度檢測器的設計摘 要本設計研究基于單片機的智能溫度檢測器,旨在通過單片機及溫度傳感器實現(xiàn)自動檢測報警功能。設計中首先對其背景及意義進行敘述切入主題,然后對整個系統(tǒng)的硬件設計和軟件設計以及軟件調(diào)試設計重點分析,其中在硬件設計中還分別對其所選器件做了一個簡單的敘述介紹,比如按鍵,蜂鳴器,LCD1602液晶,DS18B20溫度傳感器,AT89C51單片機等,最后再對這一設計進行一個總結。設計中使

3、用4個按鍵組成獨立按鍵進行對溫度上下限的設定,采用無源蜂鳴器作為報警裝置。整個系統(tǒng)使用LCD1602液晶作為顯示裝置,實時顯示檢測溫度和設定的上下限值。本系統(tǒng)硬件結構簡單,操作靈活,以高級語言C語言開發(fā),KEIL4程序開發(fā)軟件為開發(fā)工具設計而成。關鍵詞: AT89C51單片機;溫度檢測器;DS18B20;KEIL4開發(fā)軟件;LCD1602液晶The design of intelligent temperature detector based on single-chip microcomputerABSTRACTThe design of intelligent temperature d

4、etector based on MCU, to achieve automatic detection by the microcontroller and temperature sensor alarm function. The design of the first described the background and significance of the subject, then the system hardware design and software design and debugging software design focuses on the analys

5、is, which in the hardware design of the device are selected to do a simple narrative, such as buttons, buzzer, LCD1602 LCD, DS18B20 temperature sensor, AT89C51 SCM, then the design of a summary. The 4 key components used in the design of key independent temperature limit setting, using passive buzze

6、r as the alarm device. The whole system using LCD1602 as a liquid crystal display device, display real-time temperature detection and set limit on the value of. The hardware of this system has the advantages of simple structure, flexible operation, with the language C language development, KEIL4 app

7、lication development software development tools and design.Key Words: AT89C51 microcontroller;temperature sensor;DS18B20;KEIL4 software;LCD1602 LCD銅陵學院畢業(yè)論文(設計)第1章 緒論1.1 課題研究的背景及意義溫度是一個非常重要的物理量,無論是工業(yè)控制還是家庭等場所的測量都是有十分重要的意義。在工業(yè)生產(chǎn)中,其對溫度控制要求是非常嚴格的,尤其是對一些特殊的材料的煅燒,其溫度有的在低范圍,有的在高范圍溫度,有的需要恒定的溫度。因此需要對溫度進行嚴格的控

8、制,傳統(tǒng)使用的溫度檢測僅僅是使用一些模擬溫度器件進行檢測,此溫度誤差是非常大的,而且在早期的顯示器中都是用的是指針式顯示界面,人機交互非常不方便,人們還要仔細看才知道現(xiàn)在溫度多少,也不能實現(xiàn)自動報警檢測和溫度的設定,因此需要人們在旁邊守著溫度表看,如果溫度高于一定的時候就不加燃料,否則繼續(xù)添加燃料,此種方案是非常浪費能源的。隨著科技的不斷發(fā)展,尤其是微處理器及傳感器的快速發(fā)展,于是就開啟了智能化的溫度檢測器,并且擁有一個非常好的人機交互界面,人們只需要看下液晶顯示屏就知道準確溫度,通過按鍵的操作就可以實現(xiàn)對溫度上下限值的設置。通過傳感器精確的測溫及單片機的智能控制,就可以實現(xiàn)溫度超限報警指示,

9、低于下限關閉報警指示。因此極大的節(jié)約了工業(yè)勞動力及能源的消耗。因此本設計中研究基于單片機智能溫度檢測器設計就非常有必要了。1.2 單片機的意義和本設計特點在現(xiàn)代生活的各個領域中,單片機幾乎已經(jīng)完全控制了整個行業(yè),甚至已經(jīng)潛移默化的改變了人們的生活方式和生活習慣,大到航空航天領域,小到馬路上各式各樣的花樣燈控制等等。這無不體現(xiàn)單片機的智能以及重要性??梢灶A見單片機今后的發(fā)展方向:1) 低功CMOS耗化;2) 微型單片化;3) 主流與多品種共存化;4) 大容量、高性能化:以往單片機內(nèi)的ROM為1KB4KB,RAM 為64128B;單片機又稱單片微控制器,它把一個計算機系統(tǒng)集成到一個芯片里。簡單的來

10、講,就是把我們電腦主板上是由CPU處理、程序存儲器、數(shù)據(jù)存儲器、輸入輸出電路IO、顯示設備等模塊集成到了一塊微小的芯片之內(nèi)。它體積小,價格便宜,功能豐富,調(diào)寫程序便利。因為它兼容了傳統(tǒng)的8051系列MCS-51指令單片機,移植性能強,相對高性能的單片機來講,它使用起來是很便利的。4k的flash存儲器,8bit的位寬處理,128的RAM。該設計使用它可以滿足我們的所有需求。我們在這個設計中采用了51內(nèi)核單片機AT89C51作為核心部件,主要起主控作用,引領整個系統(tǒng)的運行控制,當作控制器的核心部位。本設計主要特點采用了數(shù)字溫度傳感器DS18B20進行溫度的檢測,通過按鍵設定溫度上下限后即可實現(xiàn)自

11、動檢測報警,實現(xiàn)了其智能化特點。整個系統(tǒng)使用的是LCD1602液晶進行顯示,實時顯示測試的溫度及設定的上下限值,通過一個無源蜂鳴器和LED發(fā)光二極管作為系統(tǒng)的報警指示,當檢測溫度高于設定上限的時候驅動蜂鳴器報警,只有當溫度低于下限值報警指示燈滅。因此就可以組建成一個基于單片機的智能溫度檢測器了。第2章 硬件設計2.1系統(tǒng)總設計結構圖本設計由主控芯片AT89C51單片機,晶振電路,復位電路,電源電路,DS18B20測溫電路,LCD顯示電路,按鍵電路,聲光報警電路組成。51單片機全權負責整個系統(tǒng)的執(zhí)行控制過程。如圖1:圖2-1 系統(tǒng)總設計圖2.2蜂鳴器、LED和按鍵簡介蜂鳴器可分為2種,一種是無源

12、蜂鳴器,一種是有源蜂鳴器,此二者的區(qū)分在于,有源蜂鳴器直接給高或低電平就能驅動發(fā)聲,但是無源蜂鳴器需要給他一定的脈沖觸發(fā)信號才能使蜂鳴器發(fā)聲,在此設計中我們使用的是無源蜂鳴器,即在控制他的時候我們必須輸出一定頻率的脈沖方能時此蜂鳴器發(fā)聲報警。圖2-2 蜂鳴器LED是半導體二極管的一種,可以把電能轉換成光能。發(fā)光二極管與普通的二極管一樣是由一個PN結組成的,也具有單向導電性。當給二極管加上一個正向電壓時,二極管導通;反之,截止狀態(tài)。在正向電壓中,從P區(qū)注入到N區(qū)的空穴和N區(qū)注入到P區(qū)的電子,在PN結附近內(nèi)P區(qū)的空穴和N區(qū)的電子復合,產(chǎn)生輻射的熒光。所以這樣就有產(chǎn)生發(fā)光的電子,LED發(fā)光的原理就是

13、這樣。按鍵,它是常用控制器件的一種,通常被用來對需要控制的電路開或斷即接通狀態(tài)或者斷開狀態(tài),內(nèi)部的電流是很小的,應而可以達到手動控制的作用。在這里我們設計中使用的常用的按鍵,其按下后會有些許的波動,導致高低電平不穩(wěn),所以在后面的程序編寫過程中需要專門用軟件來消抖,一般其抖動的時間在10ms左右,如果不想再軟件上做消抖處理也可以在硬件上做消抖,可以在按鍵那并接一個RC電路,那樣就可以起到充放電延時的作用。這樣一來單片機就可以對按鍵按下和按鍵斷開有一個穩(wěn)定的判斷識別了。圖2-3 按鍵2.3主控芯片AT89C51單片機的簡介單片機又稱單片微控制器,它把一個計算機系統(tǒng)集成到一個芯片里。簡單的來講,就是

14、把我們電腦主板上是由CPU處理、程序存儲器、數(shù)據(jù)存儲器、輸入輸出電路IO、顯示設備等模塊集成到了一塊微小的芯片之內(nèi)。它體積小,價格便宜,功能豐富,調(diào)寫程序便利。因為它兼容了傳統(tǒng)的8051系列MCS-51指令單片機,移植性能強,相對高性能的單片機來講,它使用起來是很便利的。它具有以下標準功能: 4k字節(jié)Flash,256字節(jié)RAM, 32 位I/O 口線,看門狗定時器,內(nèi)置2KB EEPROM,擁有3個16位的定時器和計數(shù)器,還有外部中斷2個,和全雙工串行口等等。它的最高運作頻率35MHz,6T/12T可選。其特性有:4K字節(jié)程序存儲空間;256字節(jié)數(shù)據(jù)存儲空間;內(nèi)帶2K字節(jié)EEPROM存儲空間

15、;可直接使用串口下載;芯片參數(shù):1. 它是51單片機的加強版,擁有2種時鐘模式,一種是6個時鐘機器周期的,還有一種是12個時鐘機器周期的,它完全兼容傳統(tǒng)51單片機的指令系統(tǒng)。2. 工作電壓:5.5V3.3V(5V單片機)/3.8V2.0V(3V 單片機)。3.工作頻率范圍:040MHz,相當于普通8051 的080MHz,實際工作 頻率可達48MHz。4. 用戶應用程序空間為8K字節(jié)。5. 片上集成256 字節(jié)RAM。6. 通用I/O 口(32 個),復位后為:單片機擁有40個管腳,P0,P1,P2,P3各8個,還有復位1個,晶振2個,電源2個,EA一個,ALE一個。P0口內(nèi)部無上拉電阻,是漏

16、極開路的,所以在使用P0口的時候一定要外接上拉電阻。其他3個口都有內(nèi)部的上拉電阻,所以可以不用外接。7. 單片機可以直接通過P30 P31 RXD和TXD串口管腳下載程序。8. 具有EEPROM 功能。9. 該單片機擁有3 個定時器和計數(shù)器其為16位的。即定時器T0、T1、T2。10.有2個外部中斷,可以通過下降沿或者低電平觸發(fā)中斷。11. 可以使用定時器模擬出多個異步串行口。12. 工作溫度范圍:-40+85(工業(yè)級)/075(商業(yè)級)。13. PDIP封裝,引腳圖如下:圖2-4 AT89C51芯片圖2.4 LCD1602液晶簡介LCD1602為字符型液晶顯示器,通常只能顯示字符和數(shù)字,如果

17、想顯示漢字的話一般選擇LCD12864,LCD1602能夠顯示2行字符,每一行顯示16個字符,故得名為1602。其內(nèi)部含有許多個RAM,我們使用到的是40個。通過控制1602的控制管腳RS,RW,E我們即可向LCD1602顯示器中寫入數(shù)據(jù),具體的顯示位子第一行起始地址是0x80,第二行顯示的起始地址是0x40+0x8。其具體的圖形如下:圖2-5 LCD16022.5 DS18B20溫度傳感器簡介數(shù)字溫度傳感器DS18B20是DALLAS公司生產(chǎn)的一款超小體積并且抗干擾能力強和精度高的數(shù)字溫度傳感器。不需要將模擬量轉化為數(shù)字量A/D轉換電路,直接將溫度測量值轉換成為數(shù)字量。DS18B20的測量范

18、圍為-55-125,精度為0.5。DS18B20引腳如下,DS18B20它是單總線接口的總共有3個管腳,一個VCC 一個GND還有一個就是DQ數(shù)據(jù)管腳,在單總線通信中對時序是非常嚴格的。圖2-6 DS18B20管腳圖2.6系統(tǒng)電路設計本設計中使用51內(nèi)核芯片單片機是AT89C51,通過2個22P電容和1個12MHz的晶振組成的晶振電路,系統(tǒng)的時鐘脈沖就是由它提供,還有通過1個電阻和1個電解電容和1個按鍵組成的復位電路,使用4個按鍵組成獨立按鍵進行對溫度上下限的設定,采用無源蜂鳴器作為報警裝置。整個系統(tǒng)使用LCD1602液晶作為顯示裝置,實時顯示檢測溫度和設定的上下限值。2.6.1晶振電路電路中

19、C1無極性電容和C2無極性電容是起振電容。當12MHz晶振在高頻的情況工作時,會產(chǎn)生一定的寄生的電感。為了使電感達到平衡和產(chǎn)生諧振,那么可以加上2個10-33pf的無極性電容。具體的大小可以參考下晶振廠家提供的參數(shù)手冊。單片機的內(nèi)部有一振蕩電路,我們需要在外部接上晶振電路單片機才能工作。晶振和電容與內(nèi)部的電路組成振蕩電路。只要單片機一上電,電容啟振,晶振工作,這樣單片機就有一個持續(xù)的時鐘信號。51單片機內(nèi)部有一個12分頻器,因此時鐘周期為 t = 1/12000000 1us。圖2-7 晶振電路2.6.2復位電路此系統(tǒng)使用的51單片機是高電平復位。對于AT89C51,只需在復位引腳加上2個機器

20、周期的高電平,就能讓單片機復位。單片機的IO口顯示高電平,程序計數(shù)器從零開始執(zhí)行。采用的手動復位,按下按鈕,復位引腳獲得高電平,單片機復位,松開按鈕后,單片機重新開始工作。單片機的 9 腳 RST(Reset)復位引腳,如圖。當我們的程序運行到1000行的時候,單片機重啟啟動了,之前運行的數(shù)據(jù)將會丟失,因為RAM是不儲存在我們的flash區(qū)域的,這個時候,那么我們的單片機會重新開始運行,這個過程就是復位。當我們的程序運行中,遇到一些特殊情況造成系統(tǒng)奔潰了,我們把這種情況叫做死機,類似我們的電腦的,這個時候我們可以手動按下復位按鍵,單片機會重新運行。復位電路的存在,就是防止一些特殊情況的發(fā)生,在

21、程序跑飛的時候能夠還原。復位電路的工作原理:51單片機高電平復位。對AT89C51來說,在復位引腳加2個機器周期的高電平,可使單片機復位。單片機的IO口呈現(xiàn)高電平,程序計數(shù)器從零開始執(zhí)行。采用的手動復位,按鈕按下,復位引腳得到高電平,單片機復位,按鈕松開后,單片機開始工作。當這個電路處于穩(wěn)定狀態(tài)時,電容隔離直流電,隔離+5V。此時復位按鍵在彈起的狀態(tài),R31的電阻是沒有電壓差的。我們的這個到單片機是高電平復位,低電平工作,當按下去的時候,電容起到放電的作用,瞬間是+5V的高電平。所以,在按下的一瞬間,高電平復位成功。我們再來分析從沒有電到上電的過程。電容C1上方是5V電壓,這個時候哦電容C1進

22、行充電,正離子從上往下充電,負電子從GND往上充電,這個時候電容對電路來說是短路的,相當于一根導線,電壓都加在了R31這個電阻上,那么RST上的電壓值,Vrst = R31*I,隨著電容充電越多,在充滿的時候,電流就會越來越小的,那么此時Vrst上的電壓也會變小,直到電容充滿后,線路中不再有電流,那么這個時候Rst和GND的電位就相等了,也即是0V。從這個過程中,Rst復位引腳是先持續(xù)一段時間的高電平,然后再低電平,之后單片機正常運行。我們可以根據(jù)一條充放電的公式得到:T = 1.2RC,把我們上圖的參數(shù)帶入,求得是564us,大于2個機器周期。重要一點的是,每個單片機復位高電平的時候都是不,

23、具體的要參考手冊。圖2-8 復位電路2.6.3電源電路向單片機供電。單片機電源:AT89C51單片機的工作電壓范圍:3.3V5.5V, 一般給51單片機外接一個5V的直流穩(wěn)壓電源。連接方式為VCC(40腳):接電源+5V端VSS(20腳):接電源地端。本設計使用市電220V交流作為輸入,通過一個變壓器降壓后再經(jīng)過整流電橋整流變?yōu)橹绷?,通過電容濾波等處理,最后經(jīng)過降壓芯片7805穩(wěn)壓到5V,然后將輸出的5V接入到單片機端供電。變壓器是電源進行電源轉換的,有升壓變壓器,也有降壓變壓器,我們使用的是降壓變壓器,需要將市電220V降到50V左右,其中我們需要選擇好變壓器,變壓器有前圈和后圈,其計算公式

24、是N1/N2=V1/V2,因此我們就可以計算出后半圈的電壓輸出大小。如圖:圖2-9 變壓器將變壓器降壓后的交流電我們還需要對其整流,使其交流變?yōu)橹绷?,我們可以通過單相橋式整流電路,通過整流電路,我們就可以得到一個直流波動的電壓。正電壓經(jīng)過D3進來然后經(jīng)過D4出去,負電壓經(jīng)過D5進來,經(jīng)過D2出去,因此也就將交流變化為直流。圖2-10 單相橋式整流電路輸出電壓經(jīng)過整流電路整流為直流后,其電壓還是波動的,因此我們需要將其通過一個電源濾波電路濾波,我們使用的濾波電路時由電解電容及無極性電容組成,將整流電壓經(jīng)過一個470uf的電解電容,就可以使其波動濾除掉,因為我們需要得到一個5V電壓,所以我們還需要

25、對其進行穩(wěn)壓處理,我們使用的穩(wěn)壓芯片是7805,將其濾波后的電壓通過7805輸入端,輸出端就可以得到一個5V電壓,為了安全起見,我們還需要將其穩(wěn)壓后的電壓進行濾波,使其穩(wěn)壓通過一個470u的電解電容和一個1nf的無極性電容,最終我們就可以得到一個標準的5V直流電壓了,將其電壓供給整個系統(tǒng)作為電源。濾波電路如下:圖2-11 濾波電路總電源電路如下:圖2-12 電源電路2.6.4 LCD顯示電路此設計中采用的是字符型LCD1602,它只能顯示數(shù)字及字符,可以顯示2行,每一行可以顯示16個字符,通過控制LCD的數(shù)據(jù)命令RS管腳和讀寫RW管腳還有使能E管腳。即可實現(xiàn)對LCD1602的讀寫了。我們將LC

26、D1602的數(shù)據(jù)腳通過單片機P0口控制,數(shù)據(jù)命令及使能管腳通過單片機的P25 P26 P27口控制,通過按照LCD1602通訊時序控制,我們即可將要顯示的數(shù)據(jù)通過P0口發(fā)送到LCD上實時顯示。具體電路如下:圖2-13 LCD顯示電路2.6.5按鍵電路在本設計中我們使用了4個按鍵接到單片機管腳P32,P33, P34,P35上,另一端共地,如果有按鍵按下去了,單片機的對應管腳就會被拉為低電平,因此可以使用此方法來判斷,按鍵是否按下,然后做出相應的動作。其中我們將2個按鍵接在了單片機的P32和P33 管腳上,此管腳可以設定為單片機外部中斷0 和1模式,即當有按鍵按下時進入中斷函數(shù)進行處理,處理結束

27、后可以返回主函數(shù)繼續(xù)運行。按鍵K1是對溫度上下限值設定的切換,K2 K3是對溫度數(shù)據(jù)的加減,K4是設定確認。具體電路如下:圖2-14 按鍵電路2.6.6聲光報警電路此設計中我們使用的是無源蜂鳴器,即只有觸發(fā)一定頻率的脈沖才能使蜂鳴器發(fā)聲。我們將單片機的P37管腳接在PNP型三極管上,當單片機P37口輸出一定頻率的脈沖即可觸發(fā)蜂鳴器發(fā)聲了。同時設計中還使用了一個發(fā)光二極管進行溫度報警指示,將其陽極接在單片機的P31管腳,單片機P31輸出一個高電平的時候LED發(fā)光,反之熄滅。具體電路如下:圖2-15 聲光報警電路2.6.7測溫電路此設計中我們使用數(shù)字溫度傳感器DS18B20的數(shù)據(jù)口接到單片機的P3

28、6管腳,通過此管腳模擬單總線時序與DS18B20進行通信。管腳上拉一個電阻,使其通信更加穩(wěn)定運行,具體電路如下:圖2-16 測溫電路2.7總電路設計用Proteus仿真軟件繪制的完整電路圖如下:圖2-17 總電路第3章 軟件設計3.1系統(tǒng)軟件設計整體思路現(xiàn)在開發(fā)都是追求快速,盡最大的縮短開發(fā)周期,以前的匯編語言現(xiàn)在已經(jīng)很少使用了,現(xiàn)在開發(fā)使用最多的是高級語言,然而C語言又是高級語言中的佼佼者。本設計中我們使用的是C語言開發(fā)。硬件電路中使用到了LCD1602,如果要對LCD進行顯示,首先就要對LCD進行初始化操作,我們參考LCD1602數(shù)據(jù)手冊的初始化過程可知:首先進行一個短暫延時,然后寫指令3

29、8H,延時一段時間,然后寫入指令0CH,即顯示開和光標設置,延時一段時間然后寫入指令06H即顯示光標功能設置,最后寫入指令01H,即清屏。因此我們就對LCD進行初始化完成,就可以在LCD上面進行顯示操作了。具體程序如下:void init() /LCD初始化函數(shù)delay(1000);wrc(0x38);wrc(0x38);wrc(0x38);wrc(0x06);wrc(0x0c);wrc(0x01);根據(jù)上面LCD初始化過程的介紹,我們就可以將其過程通過流程圖的形式展現(xiàn)出來,LCD1602初始化程序流程圖如下:開始延時10ms寫入功能設定值38H寫入模式功能設置,光標開啟,06H寫入開啟開關

30、控制命令0CH寫入清屏指令01H結束硬件設計中我們使用單片機的P0口控制LCD1602的數(shù)據(jù)口D0-D7,單片機的P25,P26,P27分別控制單片機的RS,RW,E。因此如果我們要對LCD進行操作的話我們首先要明確LCD1602的讀寫函數(shù)的編寫,我們參考LCD1602讀寫時序,如下:圖3-1 LCD1602讀寫時序圖在編寫寫命令函數(shù)的時候,首先要將RS=0,此是選擇命令,在把寫打開RW=0,最后是觸發(fā)一個低脈沖的使能信號E,然后將命令發(fā)送給P2即可。在編寫寫數(shù)據(jù)函數(shù)的時候和上面一樣,只是將RS=1改變即可,其他的完全一樣。具體程序如下:void wrc(uint8 c) /LCD寫命令函數(shù)d

31、elay(1000);rs=0;rw=0;e=0;P0=c;e=1;delay(10);e=0;void wrd(uint8 dat) /LCD寫數(shù)據(jù)函數(shù)delay(1000);rs=1;rw=0;e=0;P0=dat;e=1;delay(10);e=0;rs=0;硬件中使用到了按鍵來設定溫度的上下限值,由于按鍵K1和K4接在單片機的外部中斷0和外部中斷1管腳上,因此我們需要對外部中斷0和1進行初始化及中斷函數(shù)才能使用,具體初始化函數(shù)如下:void int0init() /外部中斷0初始化EA=1;EX0=1;IT0=1;/選擇下降沿觸發(fā)void int1init() /外部中斷1初始化EA=

32、1;EX1=1;IT1=1;/選擇下降沿觸發(fā) void int0() interrupt 0delay(1000);/消抖處理mode+;sheding=0;if(mode=3)mode=1;void int1() interrupt 2delay(1000);/消抖處理mode=0;sheding=1;還有2個按鍵接在了單片機的P34和P35管腳上,我們知道按鍵按下后會有一個抖動的問題,因此我們需要在軟件內(nèi)進行消抖處理,一般是延時10ms進行濾波,具體操作如下:delay(1000);/消抖處理按鍵處理后我們還需要對按鍵是否松開來判斷,通過一個while來判別。硬件還使用到了DS18B20進

33、行溫度的檢測,由于其是單總線通信,因此我們需要嚴格按照DS18B20時序圖來進行編寫。初始化時序如下:圖3-2 DS18B20初始化時序圖針對初始化時序可以編寫如下函數(shù):void ds18b20init()/18b20的初始化dq=1;delay(1);dq=0;delay(80);dq=1;delay(5);dq=0;delay(20);dq=1;delay(35);DS18B20寫時序如下:圖3-2 DS18B20寫時序圖DS18B20讀時序:圖3-2 DS18B20讀時序圖因此可以編寫溫度傳感器讀寫函數(shù):void ds18b20wr(u8 dat) /18b20寫數(shù)據(jù)u8 i;for(i

34、=0;i=1;delay(8);/在時序上只有這一塊對時序要求最準確,他的時間必須大于15usdq=1;delay(1);u8 ds18b20rd() /18b20讀數(shù)據(jù)u8 value,i;for(i=0;i=1;dq=1;if(dq=1)value|=0x80;delay(8);/在這一塊也對時間要求特別準確,整段程序必須大于60usreturn value;最后就是一些數(shù)據(jù)的處理及顯示函數(shù),具體可以參考附錄。3.2系統(tǒng)軟件設計流程圖按照上面的程序方案即可畫出如下流程圖:圖3-3 軟件設計流程圖第4章 程序仿真調(diào)試在KEIL中我們編寫好程序,通過KEIL中的編譯器編譯,使程序確保語法是無錯

35、誤的,在沒有錯誤的情況下我們在使用KEIL中的軟件仿真一步步仿真,通過查看相關寄存器的值確認程序無誤?;蛘咄ㄟ^編譯生成的HEX文件燒寫到仿真軟件中,看具體的效果,直到效果無誤即可。4.1程序調(diào)試用到的軟件及工具在編寫程序我們使用的是KEIL C51,在期內(nèi)可以軟件調(diào)試或者也可以使用仿真芯片來仿真測試。4.2 KEIL C51簡介KEIL C51是由ARM公司開發(fā)的,針對51單片機開發(fā)設計,內(nèi)部具體編譯調(diào)試軟件仿真等等一系列功能,是一個非常強大的單片機開發(fā)工具。還可以開發(fā)ARM程序。只需要在KEIL軟件內(nèi)設定生成HEX,即可將高級語言轉化為機器能識別的機器語言。4.3軟件開發(fā)環(huán)境的搭建 設計開發(fā)

36、過程采用KEIL C51的開發(fā)環(huán)境。首先打開程序開發(fā)軟件KEIL C51,雙擊此軟件后進入軟件開發(fā)主界面,這個時候是沒有工程文件的,我們需要創(chuàng)建一個工程,點擊工程project,選擇第一個選項,然后選擇保存位置和工程名,接著就會彈出選擇單片機型號界面,由于硬件單片機我們使用的是AT89C51,其和AT89S52同屬一個。在KEIL創(chuàng)建工程的時候我們可以將AT89S52型號的單片機替換成AT89C51。我們選擇AT89S52如下,在選擇芯片的時候課以任意選擇AT89S51和AT89S52,因為他們都屬于51單片機,選擇好后點擊OK。圖4-1 keil創(chuàng)建工程完成上面的步奏后,這個時候需要創(chuàng)建一個

37、.c文件,將其保存,然后就要將保存的.c文件添加到工程內(nèi),右鍵工程組后,選擇Add File.,然后就可以在工程目錄內(nèi)看到.c文件了,此時就可以在編寫程序區(qū)寫入程序了,寫完程序后還需要編譯。KEIL C51這款軟件能產(chǎn)生可以直接使用的HEX格式文件,因此,還需要生產(chǎn)HEX文件,要產(chǎn)生HEX文件必須在IDE的“Projet”-“Options”-“Output”中的HEX Format欄選擇HEX-80,然后再將Create HEX File欄打上勾。圖4-2 keil配置圖然后我們直接將編譯好的HEX文件下載到單片機內(nèi)即可。4.4 Proteus介紹Proteus仿真軟件是英國的一家公司開發(fā)設

38、計的。此軟件專門用于電子開發(fā)設計自動化設計,因此也簡稱是EDA工具軟件。此軟件不僅具有其它的EDA軟件的仿真的功能,關鍵是他開可以仿真到單片機及其外圍數(shù)字器件及模擬器件。到目前Proteus仿真軟件是最好的數(shù)字仿真設計開發(fā)軟件。Lab Center Electronics公司因此聞名。在我國,由于電子技術發(fā)展不是非常的快速,EDA的推廣也只是剛剛起步,但是此軟件的設計框架完美性得到了廣大的電子及單片機技術愛好者和一直從事教研的老師和單片機應用開發(fā)設計者的青睞。此仿真軟件既可以在原理圖布線,通過KEIL編寫編譯好的程序直接下載到單片機內(nèi)就可以仿真,看到和實際電路一樣的效果,還可以通過此軟件直接導

39、出PCB設計圖,完全實現(xiàn)了從理論到實踐的跨越,通過此仿真我們就可以按照此電路搭建實物電路,實現(xiàn)仿真到實際開發(fā)的一個平臺。Proteus也是目前唯一能將電路的仿真及PCB設計和虛擬的模擬三個軟件相結合的一個大平臺。軟件內(nèi)部自帶有目前市場上主流的多種處理器,主要有8051和PIC的12,16,18等,還有MSP430系列單片機及AVR單片機,甚至還能實現(xiàn)ARM及DSP處理器仿真,隨著日益不斷的更新,后面還有很多種型號的單片機及高端處理器模型在推出。此軟件在編譯器上它能夠支持IAR及Keil和MATLAB等多種。4.5仿真結果開機顯示測試溫度界面如下:溫度傳感器檢測的溫度是36度,在LCD液晶上顯示

40、的也是36度圖4-3 仿真1設定溫度上限界面如下:圖4-4 仿真2設定溫度下限界面如下:圖4-5 仿真3檢測溫度高于設定上限溫度聲光報警:圖4-6 仿真4當檢測溫度低于下限溫度,指示燈滅,報警消除:圖4-7 仿真5我們只需要設定溫度的上下限值就可以通過單片機自動檢測報警。第5章 總結這次的設計花了不少的時間去做。在這段時間中,我體驗了一次設計,原理圖,編程,代碼調(diào)試,這個過程讓我體驗到了工程師研發(fā)的感覺。項目雖小,卻五臟俱全。數(shù)字電路,單片機接口電路,模擬電路中,幾乎把所學的各個知識都集在了一起。因為平時以理論為主,到了動真刀真槍的時候,還遇到了不少的困難。電路的搭建,選取什么合適的MCU型號

41、,單總線通信時序的模擬等等。單片機程序里,怎么計算延時時間,還有對按鍵消抖的處理等等很多問題。一開始,對于設計延時函數(shù)比較糾結,雖然網(wǎng)上有很多的延時函數(shù)可以摘取,但是本著學習的太多,自己使用KEIL內(nèi)的軟件仿真計算出具體的時間,這樣讓我在設計中更加有成就感,還有在按鍵的消抖過程中,一開始沒有作消抖處理,導致按鍵按下后會出現(xiàn)多次判斷現(xiàn)象,將抖動的誤操作當作正常操作。后來參考了一些單片機書籍,有對這些講解,原來這些細節(jié)的東西不是看一遍書就能記得的,需要動手在編譯器上敲代碼,遇到問題了,解決了,這些細節(jié)的問題才能加深理解,知道怎么去運用。實踐是檢驗真理的唯一標準,這次畢業(yè)設計給我好好上了一堂課。在這

42、段時間的項目制作過程中,讓我很充實,很快樂。因為我會運用單片機來做應用了。調(diào)試成功的時候,那真是很令人興奮的,挺有成就感的;但遇到問題的時候,令人十分抓狂。人們都說,成功的背后需要承受痛苦之后方能嘗到甜味,確實是這樣的。參考文獻1 李朝青.單片機原理及接口技術(簡明修訂版)M.北京:北京航空航天大學出版社,1998.2 李全利.單片機原理及接口技術M.高等教育出版社,2003.3 PROTEL99 SE電路設計與制板M.機械工業(yè)出版社,2007.4 楊將新,李華軍,劉到駿等.單片機程序設計及應用(從基礎到實踐)J電子工業(yè)出版社,2006.5 Steven F.Barrett.Daneil J.

43、Pack.Embedded SystemM.北京:電子工業(yè)出2006.6 周立功.LPC900系列Flash單片機應用技術J.北京航空航天大學出版社,2004.7 黃智偉.全國大學生電子設計競賽訓練教程M.北京:電子工業(yè)出版社, 2005.8 樓然苗.51系列單片機設計實例.北京:北京航空航天出版社,2004.9 黃仁欣.單片機原理及應用技術.北京:清華大學出版社,2005.10 何立民.單片機高級教程第1版北京:北京航空航天大學出版,2001.11 趙曉安.MCS-51單片機原理及應用.天津:天津大學出版社,2001.3.12 李廣第單片機基礎第1版北京:北京航空航天大學出版社,1999.1

44、3 徐惠民,安德寧單片微型計算機原理接口與應用第1版北京:北京郵電大學出版社,1996.致 謝在此畢業(yè)設計中讓我對處理問題的能力得到了很大的提高。知道在遇到問題的時候要去刨根問底,去追溯問題的根源,這樣問題才能引刃而解。只有這樣才能學習到很多的東西,積累很多的經(jīng)驗,而這些經(jīng)驗對我是很值得擁有的財富。在此也要感謝我的指導老師,是他一直對我的設計耐心的指導,即使我犯很低級的錯誤,我的指導老師也非常有耐心,和藹的給我講解,教我怎么去分析問題和解決問題,這令我非常的敬佩。還有他那淵博的知識,毫無保留的給我們講解分享經(jīng)驗,這些都是我所感動和敬佩的。最后還要感謝我大學期間的所有老師,是他們一步步帶我們成長

45、和進步的,還有我那些同學們,沒有他們的支持和關愛,相信我的大學生活也不會這么豐富多彩。謝謝你們。附錄#includetypedef unsigned char uint8;typedef unsigned int uint16;sbit rs=P26;/數(shù)據(jù)命令選擇sbit rw=P25;/讀寫選擇sbit e=P27;/使能sbit beep=P37; /蜂鳴器sbit dq=P36;/溫度傳感器接口sbit led=P31; /sbit k1=P32; /模式按鍵sbit k2=P34; /加sbit k3=P35; /減sbit k4=P33; /確認uint8 num=01234567

46、89.C; uint8 d18=Temper: ;uint8 d22=H:;uint8 d32=L:;uint8 tm5,tm15,tm25;uint8 a,c,temp;float dio;uint16 k;uint8 mode,sheding=0;char wenduh=40,wendul=20;void delay(uint16 i) /延時函數(shù),大約10uswhile(i-);void int0init() /外部中斷0初始化EA=1;EX0=1;IT0=1;/選擇下降沿觸發(fā)void int1init() /外部中斷1初始化EA=1;EX1=1;IT1=1;/選擇下降沿觸發(fā) void wrc(uint8 c) /LCD寫命令函數(shù)delay(1000);rs=0;rw=0;e=0;P0=c;e=1;delay(10);e=0;void wrd(uint8 dat) /LCD寫數(shù)據(jù)函數(shù)delay(1000);rs=1;rw=0;e=0;P0=dat;e=1;delay(10);e=0;rs=0;void init

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論