基于單片機的數(shù)字溫度計設(shè)計與仿真畢業(yè)論文_第1頁
基于單片機的數(shù)字溫度計設(shè)計與仿真畢業(yè)論文_第2頁
基于單片機的數(shù)字溫度計設(shè)計與仿真畢業(yè)論文_第3頁
基于單片機的數(shù)字溫度計設(shè)計與仿真畢業(yè)論文_第4頁
基于單片機的數(shù)字溫度計設(shè)計與仿真畢業(yè)論文_第5頁
已閱讀5頁,還剩53頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、基于單片機的數(shù)字溫度計設(shè)計與仿真 盤桂云(吉首大學(xué)物理科學(xué)與信息工程學(xué)院,湖南 吉首 416000) 摘 要本課題以單片機為控制核心,設(shè)計了一款數(shù)字溫度計。該系統(tǒng)由51單片機、ds18b20溫度傳感器以及1602 lcd液晶顯示屏等部件組成。系統(tǒng)上電后進入實時溫度顯示狀態(tài),此時將ds18b20中的溫度值讀到單片機中并將其顯示在lcd液晶顯示屏上。系統(tǒng)可以設(shè)置上下限報警溫度值,當(dāng)測得結(jié)果超過設(shè)定值時進行相應(yīng)的報警,提供一個接口可以將溫度值傳送給其它控制器或計算機,測量準(zhǔn)確且誤差小,其誤差在0.02。關(guān)鍵詞:單片機;溫度采集;lcd顯示;溫度傳感器;數(shù)字溫度計; emluater and desi

2、gn of digital thermometer based on microcomputer controlpanguiyun (college of physics science and information engineering,jishou university,jishou,hunan 416000)abstractthis topic with the microcontroller as control core , and design a digital thermometer. it consists of 51 single -chip microcomputer

3、, 18b20 temperature sensor and 1602 lcd screen display etc. after power on, the system into real-time temperature display state, then the temperature 18b20 will read in the single-chip microcomputer and displayed in the lcd screen. system can set upper temperature alarm, when the alarm measured resu

4、lts than the setting measured corresponding alarm, system can provide an interface which sends the temperature to other controller or computer. there is little measuring error, measuring error at 0.02. key words:microcontroller;temperature acquisition;lcd display;temperatere sensor;digital thermomet

5、er目 錄第一章 緒 論 11.1 系統(tǒng)背景 11.2 系統(tǒng)概述 11.2.1 系統(tǒng)功能 11.2.2 系統(tǒng)所用器件及其作用 1第二章 系統(tǒng)總體設(shè)計21 系統(tǒng)硬件電路總體設(shè)計322系統(tǒng)軟件的總體設(shè)計 423主程序的流程設(shè)計與實現(xiàn)程序 63.2.1 主程序的流程設(shè)計63.2.2 主程序的實現(xiàn)程序 7第三章 主要器件介紹31 18b20溫度傳感器 832 1602液晶顯示器 8第四章 系統(tǒng)詳細設(shè)計41控制模塊電路設(shè)計 104.1.1晶振電路設(shè)計 104.1.2復(fù)位電路設(shè)計 1042溫度傳感器模塊 114.2.1溫度傳感器模塊電路設(shè)計 114.2.2溫度傳感器模塊程序設(shè)計 1243 液晶顯示模塊 1

6、64.3.1液晶顯示模塊電路設(shè)計 164.3.2液晶顯示模塊程序設(shè)計 174.4 鍵盤輸入模塊174.4.1鍵盤輸入模塊電路設(shè)計 174.4.2鍵盤輸入模塊程序設(shè)計 184. 5報警模塊 194.5.1報警模塊電路設(shè)計 194.5.1報警模塊程序設(shè)計 204. 6串行輸出模塊20第五章 軟件仿真與測試5.1軟件的仿真分析與仿真結(jié)果 21結(jié)束語 25參考文獻 26致謝 27附錄1:系統(tǒng)電路圖 28附錄2:源程序清單29 第一章 緒 論1.1 系統(tǒng)背景在工農(nóng)業(yè)生產(chǎn)和日常生活中,對溫度的測量占據(jù)著極其重要地位。冰箱、空調(diào)、烘干機中均用了溫度控制系統(tǒng)。目前,我國單片機的開發(fā)應(yīng)用正在興起,單片機在機電一

7、體化、智能儀表、工業(yè)控制、家用電器等方面的應(yīng)用成果尤為顯著。本課題基于單片機設(shè)計了一款數(shù)字溫度計。1.2 系統(tǒng)概述本設(shè)計以單片機為控制核心。其設(shè)計通過18b20進行溫度采集,采用1602液晶來進行溫度顯示,有鍵盤輸入和led二極管進行溫度報警功能。其溫度通過max232通信方式傳送出去,可給另一控制器或計算機進行其它操作用。硬件總的包括單片機及相應(yīng)單片機小系統(tǒng)相關(guān)元件、18b20溫度傳感、1602液晶顯示屏、三個按鍵,max232電平轉(zhuǎn)換器件和兩個led二極管。1.2.1 系統(tǒng)的功能本數(shù)字溫度計系統(tǒng)主要完成的功能是對測量溫度進行顯示,其中包括過溫報警功能。具體的功能如下所述:(1)能夠?qū)崟r的測

8、得溫度并進行顯示,顯示的誤差在0.02;(2)可以通過鍵盤輸入相應(yīng)的上下限溫度;(3)數(shù)字溫度計測得的溫度值和我們設(shè)定的上下限溫度都可以在lcd上顯示出來。其中在主界面下是實時顯示測得的溫度值;(4)當(dāng)系統(tǒng)測得的溫度低于最低溫度或高于最高溫度時會進行相應(yīng)的報警;(5)測得溫度通過max232傳送出去,可供其它器件操作。本數(shù)字溫度計的工作過程如下:首先通過18b20溫度傳感器進行溫度采集,然后將采集到的數(shù)據(jù)傳送給單片機,單片機將收到的數(shù)據(jù)進行相應(yīng)的處理后通過1602液晶顯示給用戶。在此過程中如果測得的溫度超過了上下限溫度時系統(tǒng)會啟動報警。其中上下限溫度值可由用戶進行設(shè)定,如未設(shè)定則為系統(tǒng)初始值。

9、系統(tǒng)還可將溫度通過max232傳送給計算機等進行相應(yīng)的操作。1.2.2 系統(tǒng)所用器件及其作用在數(shù)字溫度計系統(tǒng)中所使用的器件及其作用如下所述:(1) 單片機:系統(tǒng)的控制部分,能對采集的溫度進行相應(yīng)處理。(2) 18b20溫度傳感器:用來采集溫度。(3) 1602液晶顯示屏:用來顯示單片機控制器處理的相應(yīng)結(jié)顯。(4) led發(fā)光二極管:用來進行報警的模擬。(5) 按鍵:用來輸入相應(yīng)的上下限溫度值。(6)max232:進行串行通信的電平轉(zhuǎn)換。第二章 系統(tǒng)總體設(shè)計2.1系統(tǒng)硬件電路總體設(shè)計數(shù)字溫度計系統(tǒng)硬件電路按功能可以分為以下幾個模塊電路:控制模塊電路、溫度傳感器模塊電路、液晶顯示模塊電路、鍵盤輸入

10、模塊電路、報警模塊、串行通信模塊電路。系統(tǒng)硬件電路總體設(shè)計方框圖,如圖2.1所示:液晶顯示模塊電路控制模塊電路即單片機小系統(tǒng)鍵盤輸入模塊電路報警模塊溫度傳感器模塊電路圖2.1.1數(shù)字溫度計系統(tǒng)硬件電路總體圖2.1.2 系統(tǒng)的電路圖2.2系統(tǒng)軟件的總體設(shè)計軟件部分即程序編寫部分。為了程序的可讀性和獨立性,程序的書寫分模塊書寫,且同一個模塊放在同一個文件下。根據(jù)此思路,程序分為主程序模塊部分、1602液晶顯示驅(qū)動模塊部分、按鍵模塊部分、ds18b20驅(qū)動模塊部分、報警模塊部分、串行輸出程序模塊和組合程序模塊部分。各部分的聯(lián)系都通過組合程序模塊部分進行組合,而組合程序只給主程序調(diào)用。主程序部分對應(yīng)m

11、ian.c文件按鍵模塊程序部對應(yīng)key_scanf.c文件中1602液晶驅(qū)動程序部分對應(yīng)1602.c報警程序模塊部分對應(yīng)baoji.c文件中ds18b20驅(qū)動程序部分對應(yīng)18b20.c中圖2.2.1程序各模塊之間的關(guān)系圖組合程序部分 對應(yīng)unite.c文件串行通信模塊對應(yīng)usart.c文件中各程序部分的相關(guān)關(guān)系如圖:各個程序模塊設(shè)計之間的關(guān)系如上圖,且在它們的對應(yīng)關(guān)系中還有一個文件名為head .h,此文件用來定義io端口和進行相關(guān)的外部變量和外部函數(shù)的聲明。每一個c文件前面都會有:include“head.h”來包含些頭文件各文件的聯(lián)接通過外部函數(shù)和外部變量。其各部分的外部函數(shù)和外部變量聲明

12、在head.h文件中。各程序模塊對應(yīng)的外部函數(shù)及外部變量如下:ds18b20驅(qū)動程序部分: extern void get_temperature();extern int temperature;1602液晶驅(qū)動程序部分:extern void lcd_prints(uchar *strint,uchar x,uchar y);按鍵模塊程序部分:extern void key_scanf();extern uchar key1,key2,key3;報警程序模塊部分:extern void compare_temperature();extern void deal_compare_tempe

13、rature();extern uchar low_flag,high_flag;串行通信模塊部分:extern void usart();組合程序部分:externvoid dis_temperature(int temp_temperature);extern void main_init();extern void main_scanf_deal();以上列出的各外部函數(shù)與外部變量是各個.c文件相互聯(lián)接的基礎(chǔ),其關(guān)系如圖2.2.1所示.其中這些外部函數(shù)與io定義都放在head.h文件中.io定義列出如下:/*io口的定義*/ /*/*sbitrs =p20;sbit rw =p21;sb

14、it en=p22;sbit busy_f=p07;#define dc_portp1#define lcd_com0 / command#define lcd_data1 / data#definekeyp2/按鍵io定義sbit b20_io =p37; /溫度輸入口sbitbeer=p32;/報警io口1sbitbeer1=p33;/報警io口2/*/*2.3主程序的流程設(shè)計與實現(xiàn)程序2.3.1主程序的流程設(shè)計由于各個程序都是模塊化的設(shè)計,因此主程序的工作量就很少且思路也很清析。它的調(diào)用程序都在unite.c文件中。其程序設(shè)計思路如下:開始調(diào)用初始化程序調(diào)用獲得測量的溫度程序調(diào)用顯示溫度

15、程序在液晶上顯示調(diào)用鍵盤掃描程序調(diào)用按鍵處理程序調(diào)用三個溫度比較程序調(diào)用報警程序?qū)Ρ容^結(jié)果處理調(diào)用串行通信程序圖2.3.1主程序流程圖2.3.2主程序的實現(xiàn)程序/*函數(shù)名稱:void main()功能說明:主函數(shù)入口參數(shù):void*/void main()main_init();/主程序的初始化部分程序while(1)get_temperature();/獲得溫度lcd_write(lcd_com,0x01);/清屏lcd_prints( now temperature,0,0);/第一行的顯示dis_temperature(temperature);/顯示溫度(第二行中)key_scanf(

16、);/掃描按鍵main_scanf_deal();/按鍵處理compare_temperature();/三個溫度比較處理deal_compare_temperature();/處理比較結(jié)果進行報警usart();/串行數(shù)據(jù)傳出第三章 主要器件介紹3.1 18b20溫度傳感器ds18b20最大的特點是單總線數(shù)據(jù)傳輸方式,ds18b20的數(shù)據(jù)i/o均由同一條線來完成。其引腳圖如下:圖3.1.1 18b20引腳圖ds18b20的功能是測量環(huán)境的溫度。測溫范圍-55_+125,其溫度數(shù)字量轉(zhuǎn)換時間為200ms在此系統(tǒng)中使用的命令只有三個。其命令列出如下:0xcc/跳過rom0x44/溫度轉(zhuǎn)換0xbe

17、/read scratchpad 命令對18b20的時序操作參考18b20程序設(shè)計部分說明。3.2 1602液晶顯示器1602液晶顯示器具有功耗低,壽命長的特點。其數(shù)據(jù)以八位并行方式傳輸。其引腳圖如下:圖3.2.1 1602液晶引腳圖如圖3.2.1,其各引腳如下圖表:表3.2.2 1602液晶引腳功能圖表1602液晶是工業(yè)字符型液晶,能夠同時顯示16x02即32個字符。使用的命令列出如下:0x38 /設(shè)置8位數(shù)據(jù)方式,無光標(biāo)0x0c/開顯示0x06/設(shè)置地址指針加10x01/清屏 0x02/ac自增第四章 系統(tǒng)詳細設(shè)計4.1 控制模塊電路設(shè)計mcu控制模塊電路是數(shù)字溫度計系統(tǒng)的控制核心部分,主

18、要由晶振電路、復(fù)位電路、mcu單片機芯片組成。晶振電路,它產(chǎn)生整個系統(tǒng)的時鐘脈沖,時鐘是12mhz;復(fù)位電路,可進行單片機的復(fù)位操作;mcu單片機芯片,是數(shù)字溫度計系統(tǒng)的控制核心芯片,它負責(zé)各種數(shù)據(jù)處理和控制。4.1.1晶振電路設(shè)計 晶振電路采用11.0592mhz的晶振。其電路如下:圖4.1.1晶振電路的電路圖其中c1,c2取27pf。4.1.2復(fù)位電路設(shè)計 51系列單片機的復(fù)位是高脈沖復(fù)位。其電路設(shè)計如下:圖4.1.2復(fù)位電路的電路圖復(fù)位原理:當(dāng)按鍵按下時reset從低電平變?yōu)楦唠娖?,且c3電容完全放電;當(dāng)按鍵釋放,電容開始沖電。此時電容相當(dāng)一條導(dǎo)線,reset保持高電平;當(dāng)c3沖完成后,

19、reset變?yōu)榈碗娖健4诉^程中只要高電平保持時間達到系統(tǒng)要求即可進行一次復(fù)位動作。圖4.1.3reset的電平變化示意圖4.2 溫度傳感器模塊4.2.1溫度傳感器模塊電路設(shè)計 溫度傳感器部分是數(shù)字溫度計的核心部分。它用來采集溫度。本系統(tǒng)采用的溫度傳感器是ds18b20 。 ds18b20最大的特點是單總線數(shù)據(jù)傳輸方式,ds18b20的數(shù)據(jù)i/o均由同一條線來完成。18b20總共三個接線端口,一個vcc,一個gnd,還有一個dq,vcc和gnd是一般電子器件的電源與地,接法固定。dq是單線數(shù)據(jù)端口。由于在釋放dq時要保證在高電平,因此采用一個上拉電阻接在vcc上。dq接mcu中的p3.7接法電路

20、圖:圖4.2.1 溫度傳感器模塊的電路圖4.2.2 溫度傳感器模塊程序設(shè)計采集數(shù)據(jù)處理方法及程序?qū)崿F(xiàn):溫度傳感器部分采用的是18b20。由于從18b20中讀得的數(shù)據(jù)并不是真實的溫度值,因此得進行相應(yīng)的算法計算。為了簡便程序并讓讀出的溫度更精確,采用18b20系統(tǒng)默認的設(shè)置,即12bit模式。典型對應(yīng)的溫度值表如表4.2.2所示:表4.2.2 ds18b20典型對應(yīng)的溫度值表溫度/二進制表示十六進制表示+125 +25.0625+10.125+0.50-0.5-10.125-25.0625-5500000111 1101000000000001 1001000100000000 10100010

21、00000000 0000100000000000 0000000011111111 1111100011111111 0101111011111110 0110111111111100 1001000007d0h0191h00a2h0008h0000hfff8hff5ehfe6fhfc90h從圖表與相關(guān)資料中都可以看出,每單位十六進制對應(yīng)的溫度是0.0625。這個十六進制數(shù)的值保存在兩個寄存器中,如圖:圖4.2.3溫度寄存器圖由上表和圖:我們得到要想在程序中計算出溫度,得分兩個部分來算,一個部分是溫度為正值時,另一個部分是溫度為負值時。因此我們得到了兩個公式當(dāng)溫度為正值時:temperatu

22、re=(msb*256+lsb)*0.0625當(dāng)溫度為負值時:temperature= -( msb*256+lsb)+1)*0.0625從上面分析出來計算溫度的公式了。但是在單片機中小數(shù)的處理特別麻煩,要怎樣才能讓程序?qū)懙煤喒?jié)點呢?由于有效位為小數(shù)點后兩位,因此如果把溫度值擴大100倍那樣就更簡單了,只要在輸出顯示時小數(shù)點的位置處理下就行了。以下是本系統(tǒng)在寫計算過程中的部分程序:if(tem2&0x80)=0x80)/如果溫度是負值tmp_tmp=(tem2*256+tem1)+1)*6.25/此處將溫度擴大了100倍flag1=1;elsetmp_tmp=(tem2*256+tem1)*6

23、.25; /此處將溫度擴大了100倍temperature=(int)tmp_tmp;if(flag1)temperature|=0x8000;flag1=0;/表示負數(shù),因負數(shù)運算時丟失了符號位,在此給它加上在此部分程序中計算采用了分析出來的公式,處理方法采用了乘100擴大數(shù)值的方法。在之后的顯示中做了相應(yīng)的顯示處理。datasheet分析及程序?qū)崿F(xiàn):ds18b20是一顆數(shù)字型芯片,對其操作要按照芯片資料介紹進行。從datasheet中看其操作包括很多,包括多顆ds18b20同總線操作方法,包括不同位數(shù)的操作法。我們采用12bit模式即默認模式,這樣就少寫了程序同時也滿足要求。這此設(shè)計中只用

24、到一顆故部分datasheet可不理。在程序中我們要對18b20進行寫命令,還要對它讀數(shù)據(jù),芯片的啟動要有個初始化程序。1. 初始化18b20部分:圖4.2.4初始化18b20時序圖如圖4.2.3中所示對18b20的初始化只要先將數(shù)據(jù)線從高電平拉低,等待480us左右釋放數(shù)據(jù)總線,等待15us左右如得到一個低電平(60240us)說明初始化成功,此時可以對它操作。程序如下:/*函數(shù)名稱:void 18b20_init()功能說明:18b20初始化入口參數(shù): void*/void b20_init()bit flag=1;while(flag)b20_io=1;b20_delay(1);b20_

25、io=0;b20_delay(44);/下拉總線 b20_io=1;b20_delay(2);/釋放總線 if(b20_io)/等待釋放總線 flag=1;else/等待應(yīng)答信號 flag=0;b20_delay(50);b20_io=1;/拉高掛起2.寫程序部分:寫程序部分用來對18b20進行寫命令,發(fā)相應(yīng)的操作指令用。圖4.2.5寫18b20時序圖如上圖所示,對18b20的寫過程很簡單。首先將數(shù)據(jù)總線從高電平拉低,等待15us,如果寫的是0則保持數(shù)據(jù)總線為低,如果寫的是1則此時把數(shù)據(jù)總線拉高即可。3.讀程序部分:讀程序部分用來對18b20讀出相應(yīng)的溫度值。圖4.2.6讀18b20時序圖如上

26、圖所示,首先將數(shù)據(jù)總線從高電平拉低,等待15us,如果讀的是低電平則為0,如果讀的是高電平則為1.在程序?qū)崿F(xiàn)中,目的是得到一個溫度值,故在18b20程序模塊中有一個函數(shù)get_temperature(),用來得到一個溫度值即可。以上初始化等程序都為此程序服務(wù),在調(diào)用此程序后就得到了個temperature。這就是18b20程序模塊的最終目的。18b20程序模塊程序全部放在18b20.c文件中。4.3 液晶顯示模塊4.3.1液晶顯示模塊電路設(shè)計 液晶顯示模塊是人機接口中的一個重要部分。它是用來顯示測得的溫度及相關(guān)提示信息的。本數(shù)字溫度計的液晶顯示采用的是1602液晶。因為這兩種液晶的操作是一樣的

27、,而在proutes中又沒1602液晶,所以在proutes中采用lmo16l來進行代替, 在常規(guī)設(shè)計中數(shù)據(jù)口一般接p0口,考慮到p0口無上拉電阻,這樣我們就得在p0口上拉電阻或使用鎖存器來代替,這樣的話電路上就會增加硬件從而增加了布線的難度。又因為1602液晶不像rom和ram那樣操作,因此在液晶顯示電路設(shè)計中采用數(shù)據(jù)端口為p1口。rs:數(shù)據(jù)/命令選擇,對應(yīng)在mcu中的io端口是:p20rw:讀/寫選擇端,對應(yīng)在mcu中的io端口是:p21e:使能信號端,對應(yīng)在mcu中的端口是:p22圖4.3.1 液晶顯示模塊的電路圖4.3.2液晶顯示模塊的程序設(shè)計 1602液晶和18b20一樣,操作要根據(jù)

28、datasheet進行,在此不一一列出datasheet的細節(jié)。1602液晶顯示程序部分在1602.文件中,它包括:void check_busy ()/檢查忙標(biāo)志void lcd_write(bit d_c,uchar input_data)/寫程序void lcd_initial(void)/初始化程序void lcd_printc(uchar i,uchar x,uchar y)/寫一個字符 void lcd_prints(uchar *strint,uchar x,uchar y)/寫字符串此5個程序中作為外部函數(shù)的是void lcd_prints(uchar *strint,ucha

29、r x,uchar y),用時只要把我們的數(shù)據(jù)轉(zhuǎn)換成一段字符串拿來顯示即可。4.4 鍵盤輸入模塊4.4.1鍵盤輸入模塊電路設(shè)計 鍵盤輸入部分是給用戶設(shè)定上下限溫度值。它由三個按鍵組成,設(shè)定功能鍵key1,上下限溫度加減按鍵分別為key2、key3。由于采用p2口,p2口有上拉電阻,故按鍵的電路接法比較簡單,只需一邊接地,另一端直接接在中端口上就可以了。在按鍵沒按下時輸入的是高電平,按下后變?yōu)榈碗娖?。key1對應(yīng)中的端口是:p2.7key2對應(yīng)中的端口是:p2.6key3對應(yīng)中的端口是:p2.5圖4.4.1 鍵盤輸入模塊的電路圖4.4.2鍵盤輸入模塊程序設(shè)計 鍵盤掃描部分程序設(shè)計充分考慮了按鍵去

30、斗。即一次按鍵不會當(dāng)作多次按鍵,對系統(tǒng)的穩(wěn)定性起著相當(dāng)關(guān)鍵的作用。去斗程序用到了一個延時程序。再就是按鍵有個釋放過程,考慮到點,程序中如果沒有釋放按鍵則進行其它操作,即不處理按鍵功能。因此這樣就有個按鍵判斷過程。整個鍵盤掃描部分程序相當(dāng)少程序給出如下:#include head.h/*函數(shù)名稱:void delay(uint z)功能說明:鍵盤掃描延時程序入口參數(shù):z為延時z*0.020ms(理想)*/void delay(uint z)uint x,y;for(x=z;x0;x-)for(y=20;y0;y-);/*函數(shù)名稱:void key_scanf()功能說明:鍵盤掃描子程序入口參數(shù):

31、void*/void key_scanf()key=0xff;delay(30);/去斗key=key&0xff;while(key!=0xff)switch(key)case 0x7f:key1=1;break;case 0xbf:key2=1;break;case 0xdf:key3=1;break;delay(70);/去斗key=key&0xff;以上程序為key_scanf.c文件中的全部程序部分, key_scanf()設(shè)定它是外部函數(shù),在這個模塊中只有這個函數(shù)才能給別個文件用,但用這個函數(shù)只能是uniet.c和main.c ,這樣用的原因是為了程序的可改性再就是在這個key_sc

32、anf.c中有三個外部變量,為key1,key2,key3, 它的使用規(guī)則同樣和外部函數(shù)一樣。這就是模塊化的在本系統(tǒng)中程序部分的特色,其思路是借鑒了面向?qū)ο窬幊讨械乃悸吩谄渌绦蚰K中也一樣在此鍵盤模塊中目的就是得到三個key值,當(dāng)有這三個key值時主程序相關(guān)程序才做出相應(yīng)的操作。4.5 報警模塊電路4.5.1報警模塊電路設(shè)計 報警模塊,用來在測得的溫度超過上下限溫度時進行報警,用來提示用戶做出相應(yīng)的措施。報警模塊使用了兩個發(fā)光二極管,一個黃色的,一個綠色。黃色的是當(dāng)測得的溫度超過下限溫度時通過發(fā)光來提示用戶,而綠色的是在測得的溫度超過上限溫度時通過發(fā)光來提示用戶。兩個發(fā)光二級管分別接在的p3

33、.2和p3.3口。圖4.5.1 報警模塊的電路4.5.2報警模塊模塊程序設(shè)計 報警部分用到的外部硬件是兩個二極管模擬的。當(dāng)溫度低于設(shè)定的低溫時進行報警,當(dāng)溫度高于設(shè)定的高溫時進行報警。在程序設(shè)計中采用low_temp和high_temp進行保存設(shè)定的高低溫度值,將他們與測得值進行比較進行相應(yīng)的操作,如果設(shè)定的low_temp高于high_temp時將顯示error,并其設(shè)定無效。報警部分程序放在baoji.c文件中。它包含compare_temperature()和deal_compare_temperature()兩個程序。具體程序見附錄。4.6串行輸出模塊4.6.1串行輸出模塊電路設(shè)計 串

34、行輸出模塊是將得到的溫度值通過串行的方式傳送出去。它是用來提供了將溫度輸入到電腦的一個接口。其電路圖如下:圖4.6.1 串行輸出模塊的電4.6.2串行輸出模塊程序設(shè)計 串行輸出程序的思路是,當(dāng)溫度的值發(fā)生變化時進行一次串行輸出操作。由于系統(tǒng)時鐘設(shè)為11.0592mhz,串行通信中的波特率的選擇就很多,此串行通信設(shè)的波特率為9600串行程序中必須注意,要軟件清零ti中斷標(biāo)志。因為51單片機中串行的中斷標(biāo)志和t2的中斷標(biāo)志硬件無法自己清除標(biāo)志位。具體程序見附錄。第五章 軟件仿真與測試51 軟件仿真分析與測試結(jié)果1系統(tǒng)實時顯示當(dāng)前溫度值。圖5.1 實時顯示當(dāng)前溫度值2修改上限溫度值。圖5.2修改上限

35、溫度值3修改下限溫度值。圖5.3 修改下限溫度值4小于下限溫度值時報警。此時的下限溫度是上面設(shè)寫的5,18b20設(shè)4.12.圖5.4 低于下限溫度值時報警5高于上限溫度值時報警。此時的上限溫度是上面設(shè)的35,18b20設(shè)35.12圖5.5 高于上限溫度值時報警6在設(shè)定上限溫度時,設(shè)定的上限溫度要大于下限溫度,若出現(xiàn)設(shè)的值小于下限溫度時會出現(xiàn)error:圖5.6 設(shè)定的上限溫度值小于下限溫度值時同樣在設(shè)定的下限溫度若大于上限溫度時也會出現(xiàn)error。結(jié)束語本論文設(shè)計的是基于單片機的數(shù)字溫度計。整個系統(tǒng)以51單片機為控制核心,采用單總線的ds18b20作為系統(tǒng)的溫度采集傳感器。用1602液晶作為單

36、片機的io顯示模塊。整個系統(tǒng)功能完善。具有實時顯示當(dāng)前溫度,設(shè)定上下限溫度值以及可以對當(dāng)前溫度超出限定的溫度值時進行報警提示。系統(tǒng)還具有232通信功能,可將溫度實時的傳送給計算機等進行相應(yīng)的處理。本系統(tǒng)在軟件上采用了結(jié)構(gòu)化程序設(shè)計,使得設(shè)計的程序易讀易改。例如,在設(shè)計本系統(tǒng)起初沒有232通信功能,在設(shè)計過程中再加上去的。此時設(shè)計的程序已寫好,要加上通信功能時直接在程序中加入usart.c文件,其文件中的函數(shù)功能即是實現(xiàn)232通信的功能,此usart.c就是一個小模塊。就此可以看出結(jié)構(gòu)化程序設(shè)計的優(yōu)點來。經(jīng)過了這次設(shè)計后,我學(xué)到了很多新的知識。學(xué)會了如何去看datasheet,如何做一個系統(tǒng)的分

37、析。更進一步加強了51單片機的運用能力,包括51單片機的程序編寫,調(diào)試,仿真等。最重要的是提高了我的動手實踐能力。在這個系統(tǒng)中,出于條件的原因,只做出了相關(guān)仿真,沒有去做硬件。在串行通信中只有相關(guān)的設(shè)計程序而沒有將其做出實物與計算機進行相應(yīng)的通信。雖然通過自己的學(xué)習(xí)完成了這項設(shè)計,但是覺得自己還有很多知識要去學(xué)習(xí),比如說傳感器,數(shù)電,模電等。參考文獻1閻石數(shù)字電子技術(shù)基礎(chǔ)m北京:高等教育出版社,2001年 2王化祥,張淑英傳感器原理及應(yīng)用m天津:天津大學(xué)出版社,2004年3童詩白,華成英模擬電子技術(shù)基礎(chǔ)m北京:高等教育出版社,1980年4尹建華,張惠群微型計算機原理與接口技術(shù)m北京:高等教育出

38、版社,2002年5譚浩強c語言程序設(shè)計m北京:清華大學(xué)出版,2006年6張友德,趙志英,涂時亮單片微型機原理、應(yīng)用與實驗m上海:復(fù)旦大學(xué)出版社,2006年7李國洪,曹白楊,陳剛電子cad實用教程m北京:機械工業(yè)出版社,2003年8求是科技單片機典型模塊設(shè)計實例導(dǎo)航m北京:人民郵電出版社,2004年9彭為,黃科,雷道仲單片機典型系統(tǒng)設(shè)計實例精講m . 北京: 電子工業(yè)出版社,2006年10李朝青單片機 & dsp外圍數(shù)字ic技術(shù)手冊m北京:北京航空航天大學(xué)出版社,2005年11劉鯤, 孫春亮單片機c語言入門m人民郵電出版社,2008年12張萍基于數(shù)字溫度計ds18b20的溫度測量儀的開發(fā)j自動化

39、儀表,200728(6):6466致謝首先感謝向繼文老師。在此次論文中,他耐心的指導(dǎo),不辭辛勞的付出、他寬厚待人,和藹可親、他具有豐富的實踐經(jīng)驗在學(xué)習(xí)過程中和這次畢業(yè)論文設(shè)計中給我細心的指導(dǎo),讓我受益終生。在此,我向向老師表示我最衷心的感謝。我也衷心感謝在我大學(xué)年學(xué)習(xí)中教育我培養(yǎng)我的老師們,是他們給予我生活和學(xué)習(xí)上的幫助,在此我表示深深的感謝。同時還要感謝我的同學(xué)們,是他們在我的學(xué)習(xí)生活中支持我,鼓勵我。最要感謝的是在我背后支持,幫助,鼓勵我的父母。是他們把我養(yǎng)大,送我上學(xué),對我無微不至的關(guān)心和照顧。附 錄附錄1:系統(tǒng)電路圖附錄2:源程序清單1head.c中的程序:#include #incl

40、ude #include #define uchar unsigned char#define uint unsigned int/*io口的定義*/ /*/*sbitrs =p20;sbit rw =p21;sbit en=p22;sbit busy_f=p07;#define dc_portp1#define lcd_com0 / command#define lcd_data1 / data#definekeyp2/按鍵io定義sbit b20_io =p37; /溫度輸入口sbitbeer=p32;/報警io口1sbitbeer1=p33;/報警io口2/*/* /*外部函數(shù)聲明*/*

41、/* /*1602函數(shù)聲明*/extern void lcd_prints(uchar *strint,uchar x,uchar y); /*18b20函數(shù)聲明*/extern void get_temperature();/*key_scanf函數(shù)聲明*/extern void key_scanf();extern void delay(uint z);/*unite.c(整合所有程序)函數(shù)聲明*/externvoid dis_temperature(int temp_temperature);extern void main_init();extern void main_scanf_d

42、eal();/baoji.cextern void compare_temperature();extern void deal_compare_temperature();/usart.cextern void usart();/*/* /*外部變量聲明*/*/*/key_scanf/extern uchar key1,key2,key3;/18b20/extern int temperature;/unite/extern int high_temp,low_temp;/baoji/extern uchar low_flag,high_flag;extern uchar usart_tem

43、p;/*/*218b20.c中程序:/*18b20溫度傳感器部分 所有的資源:包含void b20_delay(uint x)void b20_init()void b20_write_byte(uchar data)uchar b20_read_byte()void get_temperature()相關(guān)io定義資料: b20_io /溫度輸入口用戶得在頭文件中定義作用:從18b20中得到結(jié)果:一溫度值:temperature是正常值的100倍*/ #include head.h/*函數(shù)名稱:void b20_delay(uint z)功能說明:延時程序入口參數(shù):x延時參數(shù)約x*16微秒(調(diào)試出來的結(jié)果)注:12mhz*/void b20_delay(uint x)for(;x0;x-);/*函數(shù)名稱:void 18b

溫馨提示

  • 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)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論