久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 19515|回復(fù): 6
打印 上一主題 下一主題
收起左側(cè)

基于51單片機(jī)的DS18B20溫度報(bào)警器畢業(yè)設(shè)計(jì)論文(word格式文檔下載 可編輯)

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:300215 發(fā)表于 2018-4-13 19:20 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式


畢業(yè)論文任務(wù)書(shū)

主要實(shí)現(xiàn):實(shí)時(shí)溫度測(cè)量及顯示,超出溫度范圍聲光報(bào)警,上下限溫度可通過(guò)按鍵設(shè)定等功能。

本數(shù)字溫度報(bào)警器是基于51單片機(jī)及溫度傳感器DS18B20來(lái)設(shè)計(jì)的,溫度測(cè)量范圍0到99.9攝氏度,精度為0.1攝氏度,可見(jiàn)測(cè)量溫度的范圍廣,精度高的特點(diǎn)?稍O(shè)置上下限報(bào)警溫度,默認(rèn)上限報(bào)警溫度為38℃、默認(rèn)下限報(bào)警溫度為5℃(通過(guò)程序可以更改上下限值)。報(bào)警值可設(shè)置范圍:最低上限報(bào)警值等于當(dāng)前下限報(bào)警值,最高下限報(bào)警值等于當(dāng)前上限報(bào)警值。將下限報(bào)警值調(diào)為0時(shí)為關(guān)閉下限報(bào)警功能。


目 錄

前言
1 設(shè)計(jì)要求與方案論證
1.1 設(shè)計(jì)要求
1.2 系統(tǒng)基本方案選擇和論證
1.2.1 單片機(jī)芯片的選擇方案和論證
1.2.2 溫度傳感器設(shè)計(jì)方案論證
1.2.3 掉電保持方案論證
1.3 電路設(shè)計(jì)最終方案決定
2 主要元件介紹
2.1 STC89C51介紹
2.1.1 STC89C51主要功能及PDIP封裝
2.1.2 STC89C51引腳介紹
2.1.3 單片機(jī)最小系統(tǒng):
2.2 DS18B20傳感器介紹
2.2.1 DS18B20概述
2.2.2 DS18B20引腳介紹
2.2.3 DS18B20的內(nèi)部結(jié)構(gòu)
2.2.4 DS18B20的程序流程圖
2.3 數(shù)碼管介紹
2.3.1 數(shù)碼管概述
2.4 AT24C02簡(jiǎn)介
2.4.1 I2C總線說(shuō)明
3 程序流程圖
圖6:程序流程圖
結(jié)論
參考文獻(xiàn)
致 謝
附錄1 系統(tǒng)原理圖
附錄2  C語(yǔ)言程序

基于51單片機(jī)的溫度報(bào)警器設(shè)計(jì)

摘 要:?jiǎn)纹瑱C(jī)技術(shù)已經(jīng)普及到我們生活,工作,科研,各個(gè)領(lǐng)域,已經(jīng)成為一種比較成熟的技術(shù),本文將介紹一種基于單片機(jī)控制的數(shù)字溫度器,本溫度計(jì)屬于多功能溫度計(jì),可以設(shè)置上下報(bào)警溫度,當(dāng)溫度不在設(shè)置范圍內(nèi)時(shí),可以報(bào)警。

隨著現(xiàn)代工農(nóng)業(yè)技術(shù)的發(fā)展及人們對(duì)生活環(huán)境要求的提高,人們也迫切需要檢測(cè)與控制溫度。本文通過(guò)采用蜂鳴器作為電聲元件的溫度報(bào)警器的設(shè)計(jì),闡明了該裝置進(jìn)行設(shè)計(jì)與制作的具體過(guò)程及方法。這種溫度報(bào)警器結(jié)構(gòu)簡(jiǎn)單,可操作性強(qiáng),應(yīng)用廣泛。工作時(shí),溫度測(cè)量范圍為5—38ºC。當(dāng)前環(huán)境溫度若超過(guò)設(shè)定的高溫臨界溫度,由單片機(jī)發(fā)出報(bào)警信號(hào),從而防止帶來(lái)的不必要的損失。

造成高溫火災(zāi)有:電氣線路短路、過(guò)載、接觸電阻過(guò)大等引發(fā)高溫或火災(zāi);靜電產(chǎn)生高溫或或火災(zāi);雷電等強(qiáng)電侵入導(dǎo)致高溫或火災(zāi);最主要是機(jī)房?jī)?nèi)電腦、空調(diào)等用電設(shè)備長(zhǎng)時(shí)間工作,導(dǎo)致設(shè)備老化,空調(diào)發(fā)生故障,而不能降溫;因此機(jī)房?jī)?nèi)所屬的電子產(chǎn)品發(fā)熱快,在短時(shí)間內(nèi)機(jī)房溫度升高超出設(shè)備正常溫度,導(dǎo)致系統(tǒng)癱瘓或產(chǎn)生火災(zāi),這時(shí)溫度報(bào)警系統(tǒng)就會(huì)發(fā)揮應(yīng)有的功能。

關(guān)鍵詞:STC89C51單片機(jī),數(shù)字控制,溫度計(jì),DS18B20,24c02


前言

隨著人們生活水平的不斷提高,單片機(jī)控制無(wú)疑是人們追求的目標(biāo)之一,它所給人帶來(lái)的方便也是不可否定的,其中數(shù)字溫度計(jì)就是一個(gè)典型的例子,但人們對(duì)它的要求越來(lái)越高,要為現(xiàn)代人工作、科研、生活、提供更好的更方便的設(shè)施就需要從數(shù)單片機(jī)技術(shù)入手,一切向著數(shù)字化控制,智能化控制方向發(fā)展。本設(shè)計(jì)所介紹的數(shù)字溫度計(jì)與傳統(tǒng)的溫度計(jì)相比,具有讀數(shù)方便,測(cè)溫范圍廣,測(cè)溫準(zhǔn)確,掉電保持上下限溫度值,其輸出溫度采用數(shù)字顯示,主要用于對(duì)測(cè)溫比較準(zhǔn)確的場(chǎng)所,或科研實(shí)驗(yàn)室使用,該設(shè)計(jì)控制器使用單片機(jī) STC89C51,測(cè)溫傳感器使用 DS18B20,掉電保持使用24c02,用四位一體共陽(yáng)極 LED 數(shù)碼管以串口傳送數(shù)據(jù),實(shí)現(xiàn)溫度顯示,能準(zhǔn)確達(dá)到要求



1 設(shè)計(jì)要求與方案論證

首先明確設(shè)計(jì)要求,再討論方案,一一攻破設(shè)計(jì)的難點(diǎn)。

1.1 設(shè)計(jì)要求

基本范圍0℃-99℃ ;

精度誤差小于 0.1℃ ;

數(shù)碼管直讀顯示;

擴(kuò)展功能:可以任意設(shè)定溫度的上下限報(bào)警功能,并可以掉電保持上下限溫度值。

1.2 系統(tǒng)基本方案選擇和論證

1.2.1 單片機(jī)芯片的選擇方案和論證

由于單片機(jī)具有以下的很多優(yōu)點(diǎn),被我們選定為制作該作品的首選芯片

單片機(jī)特點(diǎn):

(1)高集成度,體積小,高可靠性

單片機(jī)將各功能部件集成在一塊晶體芯片上,集成度很高,體積自然也是最小的。芯片本身是按工業(yè)測(cè)控環(huán)境要求設(shè)計(jì)的,內(nèi)部布線很短,其抗工業(yè)噪音性能優(yōu)于一般通用的CPU。單片機(jī)程序指令,常數(shù)及表格等固化在ROM中不易破壞,許多信號(hào)通道均在一個(gè)芯片內(nèi),故可靠性高。

(2)控制功能強(qiáng)

為了滿足對(duì)對(duì)象的控制要求,單片機(jī)的指令系統(tǒng)均有極豐富的條件:分支轉(zhuǎn)移能力,I/O口的邏輯操作及位處理能力,非常適用于專門(mén)的控制功能。

(3)低電壓,低功耗,便于生產(chǎn)便攜式產(chǎn)品

為了滿足廣泛使用于便攜式系統(tǒng),許多單片機(jī)內(nèi)的最低工作電壓僅為1.8V~3.6V,而工作電流僅為數(shù)百微安。

(4)易擴(kuò)展

片內(nèi)具有計(jì)算機(jī)正常運(yùn)行所必需的部件。芯片外部有許多供擴(kuò)展用的三總線及并行、串行輸入/輸出管腳,很容易構(gòu)成各種規(guī)模的計(jì)算機(jī)應(yīng)用系統(tǒng)。

(5)優(yōu)異的性價(jià)比

單片機(jī)的性能極高。為了提高速度和運(yùn)行效率,單片機(jī)已開(kāi)始使用RISC流水線和DSP等技術(shù)。單片機(jī)的尋址能力也已突破64KB的限制,有的已可達(dá)到1MB和16MB,片內(nèi)的ROM容量可達(dá)62MB,RAM容量則可達(dá)2MB。由于單片機(jī)的廣泛使用,因而銷(xiāo)量極大,各大公司的商業(yè)競(jìng)爭(zhēng)更使其價(jià)格十分低廉,其性能價(jià)格比極高。

方案一:

采用STC89C51芯片作為硬件核心。STC89C51內(nèi)部具有8KB ROM 存儲(chǔ)空間,512字節(jié)數(shù)據(jù)存儲(chǔ)空間,帶有2K字節(jié)的EEPROM存儲(chǔ)空間,與MCS-51系列單片機(jī)完全兼容,STC89C51可以通過(guò)串口下載。

方案二:

采用AT89S51。AT89S51片內(nèi)具有8K字節(jié)程序存儲(chǔ)空間,256字節(jié)的數(shù)據(jù)存儲(chǔ)空間沒(méi)有EEPROM存儲(chǔ)空間,也與MCS-51系列單片機(jī)完全兼容,具有在線編程可擦除技術(shù)。

兩種單片機(jī)都完全能夠滿足設(shè)計(jì)需要,STC89C51相對(duì)ATS89C52價(jià)格便宜,且抗干擾能力強(qiáng)。考慮到成本因素,因此選用STC89C51。

1.2.2 溫度傳感器設(shè)計(jì)方案論證

利用物質(zhì)各種物理性質(zhì)隨溫度變化的規(guī)律把溫度轉(zhuǎn)換為電量的傳感器。這些呈現(xiàn)規(guī)律性變化的物理性質(zhì)主要有體。溫度傳感器是溫度測(cè)量?jī)x表的核心部分,品種繁多。按測(cè)量方式可分為接觸式和非接觸式兩大類,按照傳感器材料及電子元件特性分為熱電阻和熱電偶兩類。

現(xiàn)代信息技術(shù)的三大基礎(chǔ)是信息采集(即傳感器技術(shù))、信息傳輸(通信技術(shù))和信息處理(計(jì)算機(jī)技術(shù))。溫度傳感器的發(fā)展大致經(jīng)歷了以下三個(gè)階段;(1)傳統(tǒng)的分立式溫度傳感器(含敏感元件);(2)模擬集成溫度傳感器/控制器;(3)智能溫度傳感器。國(guó)際上新型溫度傳感器正從模擬式向數(shù)字式、由集成化向智能化、網(wǎng)絡(luò)化的方向發(fā)展。在20世紀(jì)90年代中期最早推出的智能溫度傳感器,采用的是8位A/D轉(zhuǎn)換器,其測(cè)溫精度較低,分辨力只能達(dá)到1°C。國(guó)外已相繼推出多種高精度、高分辨力的智能溫度傳感器,所用的是9~12位A/D轉(zhuǎn)換器,分辨力一般可達(dá)0.5~0.0625°C。由美國(guó)DALLAS半導(dǎo)體公司新研制的DS1624型高分辨力智能溫度傳感器,能輸出13位二進(jìn)制數(shù)據(jù),其分辨力高達(dá)0.03125°C,測(cè)溫精度為±0.2°C。為了提高多通道智能溫度傳感器的轉(zhuǎn)換速率,也有的芯片采用高速逐次逼近式A/D轉(zhuǎn)換器。目前,智能溫度傳感器的總線技術(shù)也實(shí)現(xiàn)了標(biāo)準(zhǔn)化、規(guī)范化,所采用的總線主要有單線(1-Wire)總線、I2C總線、SMBus總線和spI總線。溫度傳感器作為從機(jī)可通過(guò)專用總線接口與主機(jī)進(jìn)行通信。

方案一:

由于本設(shè)計(jì)是測(cè)溫電路,可以使用熱敏電阻之類的器件利用其感溫效應(yīng),在將隨被測(cè)溫度變化 的電壓或電流采集過(guò)來(lái),進(jìn)行 A/D 轉(zhuǎn)換后,就可以用單片機(jī)進(jìn)行數(shù)據(jù)的處理,在顯示電路上,就可以將被測(cè)溫度顯示出來(lái),這種設(shè)計(jì)需要用到 A/D 轉(zhuǎn)換電路,感溫電路比較麻煩。

方案二:

進(jìn)而考慮到用溫度傳感器,在單片機(jī)電路設(shè)計(jì)中,大多都是使用傳感器,所以這是非常容易想到的,所以可以采用一只溫度傳感器 DS18B20,此傳感器,可以很容易直接讀取被測(cè)溫度值,進(jìn)行轉(zhuǎn)換,就可以滿足設(shè)計(jì)要求。

從以上兩種方案,兩種都完全能夠滿足設(shè)計(jì)需要,很容易看出,采用方案二,電路比較簡(jiǎn)單,軟件設(shè)計(jì)也比較簡(jiǎn)單,故采用了方案二。

1.2.3 掉電保持方案論證

為了方便使用,本設(shè)計(jì)采用串行E2PROMI2C-BUS的存儲(chǔ)器件AT24C02,由于其具有接口方便,體積小,數(shù)據(jù)掉電不丟失等特點(diǎn),在儀器儀表及工業(yè)自動(dòng)化控制中得到大量的應(yīng)用。本設(shè)計(jì)就是采用此功能。

1.3 電路設(shè)計(jì)最終方案決定

綜上各方案所述,對(duì)此次作品的方案選定:采用STC89C51單片機(jī)作為主控制系統(tǒng);采用DS18B20為傳感器;采用AT24C02作為數(shù)據(jù)記錄系統(tǒng);采用數(shù)碼管作為顯示器件。

2 主要元件介紹

2.1 STC89C51介紹

STC89C51是由深圳宏晶科技公司生產(chǎn)的與工業(yè)標(biāo)準(zhǔn)MCS-51指令集和輸出管腳相兼容的單片機(jī)。

2.1.1 STC89C51主要功能及PDIP封裝

STC89C51主要功能如表1所示,其PDIP封裝如圖1所示

主要功能特性

兼容MCS51指令系統(tǒng)

8K可反復(fù)擦寫(xiě)Flash ROM

32個(gè)雙向I/O口

256x8bit內(nèi)部RAM

3個(gè)16位可編程定時(shí)/計(jì)數(shù)器中斷

時(shí)鐘頻率0-24MHz

2個(gè)串行中斷

可編程UART串行通道

2個(gè)外部中斷源

共6個(gè)中斷源

2個(gè)讀寫(xiě)中斷口線

3級(jí)加密位

低功耗空閑和掉電模式

軟件設(shè)置睡眠和喚醒功能

表1:STC89C51主要功能

2.1.2 STC89C51引腳介紹

① 主電源引腳(2根)

VCC(Pin40):電源輸入,接+5V電源

GND(Pin20):接地線

②外接晶振引腳(2根)

XTAL1(Pin19):片內(nèi)振蕩電路的輸入端

XTAL2(Pin20):片內(nèi)振蕩電路的輸出端

③控制引腳(4根)

RST/VPP(Pin9):復(fù)位引腳,引腳上出現(xiàn)2個(gè)機(jī)器周期的高電平將使單片機(jī)復(fù)位。

ALE/PROG(Pin30):地址鎖存允許信號(hào)

PSEN(Pin29):外部存儲(chǔ)器讀選通信號(hào)

EA/VPP(Pin31):程序存儲(chǔ)器的內(nèi)外部選通,接低電平從外部程序存儲(chǔ)器讀指令,如果接高電平則從內(nèi)部程序存儲(chǔ)器讀指令。

④可編程輸入/輸出引腳(32根)

STC89C51單片機(jī)有4組8位的可編程I/O口,分別位P0、P1、P2、P3口,每個(gè)口有8位(8根引腳),共32根。

P0口(Pin39~Pin32):8位雙向I/O口線,名稱為P0.0~P0.7

P1口(Pin1~Pin8):8位準(zhǔn)雙向I/O口線,名稱為P1.0~P1.7

P2口(Pin21~Pin28):8位準(zhǔn)雙向I/O口線,名稱為P2.0~P2.7

P3口(Pin10~Pin17):8位準(zhǔn)雙向I/O口線,名稱為P3.0~P3.7

圖1:STC89C51封裝圖

2.1.3 單片機(jī)最小系統(tǒng):

當(dāng)在STC89C51單片機(jī)的RST引腳引入高電平并保持2個(gè)機(jī)器周期時(shí),單片機(jī)內(nèi)部就執(zhí)行復(fù)位操作,按鍵手動(dòng)復(fù)位有電平方式和脈沖方式兩種。其中電平復(fù)位是通過(guò)RST端經(jīng)過(guò)電阻與電源VCC接通而實(shí)現(xiàn)的。最小系統(tǒng)如圖2所示。


圖2 單片機(jī)最小系統(tǒng)電路

電路以STC89C51單片機(jī)最小系統(tǒng)為控制核心,測(cè)溫電路由DS18B20提供,輸入部分采用三個(gè)獨(dú)立式按鍵S1、S2、S3。數(shù)碼管顯示部分。具體電路連接,詳見(jiàn)附錄1。

2.2 DS18B20傳感器介紹

2.2.1 DS18B20概述

在現(xiàn)代檢測(cè)技術(shù)中,傳感器占據(jù)著不可動(dòng)搖的重要位置。主機(jī)對(duì)數(shù)據(jù)的處理能力已經(jīng)相當(dāng)?shù)膹?qiáng),但是對(duì)現(xiàn)實(shí)世界中的模擬量卻無(wú)能為力。如果沒(méi)有各種精確可靠的傳感器對(duì)非電量和模擬信號(hào)進(jìn)行檢測(cè)并提供可靠的數(shù)據(jù),那計(jì)算機(jī)也無(wú)法發(fā)揮他應(yīng)有的作用。傳感器把非電量轉(zhuǎn)換為電量,經(jīng)過(guò)放大處理后,轉(zhuǎn)換為數(shù)字量輸入計(jì)算機(jī),由計(jì)算機(jī)對(duì)信號(hào)進(jìn)行分析處理。從而傳感器技術(shù)與計(jì)算機(jī)技術(shù)結(jié)合起來(lái),對(duì)自動(dòng)化和信息化起重要作用。

采用各種傳感器和微處理技術(shù)可以對(duì)各種工業(yè)參數(shù)及工業(yè)產(chǎn)品進(jìn)行測(cè)控及檢驗(yàn),準(zhǔn)確測(cè)量產(chǎn)品性能,及時(shí)發(fā)現(xiàn)隱患。為提高產(chǎn)品質(zhì)量、改進(jìn)產(chǎn)品性能,防止事故發(fā)生提供必要的信息和更可靠的數(shù)據(jù)。由于系統(tǒng)的工作環(huán)境比較惡劣,且對(duì)測(cè)量要求比較高,所以選擇合適的傳感器很重要。目前,國(guó)際上新型溫度傳感器正從模擬式向數(shù)字式、從集成化向智能化和網(wǎng)絡(luò)化的方向飛速發(fā)展。智能溫度傳感器DS18B20正是朝著高精度、多功能、總線標(biāo)準(zhǔn)化、高可靠性及安全性、開(kāi)發(fā)虛擬傳感器和網(wǎng)絡(luò)傳感器、研制單片測(cè)溫系統(tǒng)等高科技的方向迅速發(fā)展。因此,智能溫度傳感器DS18B20作為溫度測(cè)量裝置已廣泛應(yīng)用于人民的日常生活和工農(nóng)業(yè)生產(chǎn)中。

美國(guó)DALLAS公司生產(chǎn)的 DS18B20可組網(wǎng)數(shù)字溫度傳感器芯片外加不銹鋼保護(hù)管封裝而成,具有耐磨耐碰,體積小,使用方便,封裝形式多樣,適用于各種狹小空間設(shè)備數(shù)字測(cè)溫和控制領(lǐng)域。有獨(dú)特的單線接口方式,DS1820在與微處理器連接時(shí)僅需要一條口線即可實(shí)現(xiàn)微處理器與DS1820的雙向通訊;其測(cè)溫范圍 -55℃~+125℃,固有測(cè)溫分辨率0.5℃;支持多點(diǎn)組網(wǎng)功能;多個(gè)DS1820可以并聯(lián)在唯一的三線上,實(shí)現(xiàn)多點(diǎn)測(cè)溫;工作電源為3~5V/DC;在使用中不需要任何外圍元件。

DS18B20的性能特點(diǎn)如下:

(1) 采用DALLAS公司獨(dú)特的單線接口方式:DS18B20與微處理器連接時(shí)僅需要一條口線即可實(shí)現(xiàn)微處理器與DS18B20的雙向通訊;

(2)在使用中不需要任何外圍元件;

(3)可用數(shù)據(jù)線供電,供電電壓范圍:+3.0V~+5.5V;

(4)測(cè)溫范圍:-55~+125℃。固有測(cè)溫分辨率為0.5℃。當(dāng)在-10℃~+85℃范圍內(nèi),可確保測(cè)量誤差不超過(guò)0.5℃,在-55~+125℃范圍內(nèi),測(cè)量誤差也不超過(guò)2℃;

(5)通過(guò)編程可實(shí)現(xiàn)9~12位的數(shù)字讀數(shù)方式;

(6)用戶可自設(shè)定非易失性的報(bào)警上下限值;

(7)支持多點(diǎn)的組網(wǎng)功能,多個(gè)DS18B20可以并聯(lián)在唯一的三線上,實(shí)現(xiàn)多點(diǎn)測(cè)溫

(8)負(fù)壓特性,即具有電源反接保護(hù)電路。當(dāng)電源電壓的極性反接時(shí),能保護(hù)DS18B20不會(huì)因發(fā)熱而燒毀,但此時(shí)芯片無(wú)法正常工作;

(9)DS18B20的轉(zhuǎn)換速率比較高,進(jìn)行9位的溫度值轉(zhuǎn)換只需93.75ms;

(10)適配各種單片機(jī)或系統(tǒng);

(11)內(nèi)含64位激光修正的只讀存儲(chǔ)ROM,扣除8位產(chǎn)品系列號(hào)和8位循環(huán)冗余校驗(yàn)碼(CRC)之后,產(chǎn)品序號(hào)占48位。出廠前產(chǎn)品序號(hào)存入其ROM中。在構(gòu)成大型溫控系統(tǒng)時(shí),允許在單線總線上掛接多片DS18B20。

2.2.2 DS18B20引腳介紹

圖3:DS18B20引腳

各引腳功能為:I/O為數(shù)據(jù)輸入/輸出端(即單線總線),它屬于漏極開(kāi)路輸出,外接上拉電阻后,常態(tài)下呈高電平。UDD是可供選用的外部電源端,不用時(shí)接地,GND為地,NC空腳。

2.2.3 DS18B20的內(nèi)部結(jié)構(gòu)

DS18B20的內(nèi)部結(jié)構(gòu)主要包括7部分:寄生電源、溫度傳感器、64位激光(loser)ROM與單線接口、高速暫存器(即便筏式RAM,用于存放中間數(shù)據(jù))、TH觸發(fā)寄存器和TL觸發(fā)寄存器,分別用來(lái)存儲(chǔ)用戶設(shè)定的溫度上下限值、存儲(chǔ)和控制邏輯、位循環(huán)冗余校驗(yàn)碼(CRC)發(fā)生器。

圖4:DS18B20內(nèi)部結(jié)構(gòu)

2.2.4 DS18B20的程序流程圖

圖5程序流程圖


2.3 數(shù)碼管介紹

數(shù)碼管是一種半導(dǎo)體發(fā)光器件,其基本單元是發(fā)光二極管。數(shù)碼管按段數(shù)分為七段數(shù)碼管和八段數(shù)碼管,八段數(shù)碼管比七段數(shù)碼管多一個(gè)發(fā)光二極管單元(多一個(gè)小數(shù)點(diǎn)顯示);按能顯示多少個(gè)“8”可分為1位、2位、4位等等數(shù)碼管;

  按發(fā)光二極管單元連接方式分為共陽(yáng)極數(shù)碼管和共陰極數(shù)碼管。共陽(yáng)數(shù)碼管是指將所有發(fā)光二極管的陽(yáng)極接到一起形成公共陽(yáng)極(COM)的數(shù)碼管,共陽(yáng)數(shù)碼管在應(yīng)用時(shí)應(yīng)將公共極COM接到+5V,當(dāng)某一字段發(fā)光二極管的陰極為低電平時(shí),相應(yīng)字段就點(diǎn)亮,當(dāng)某一字段的陰極為高電平時(shí),相應(yīng)字段就不亮。共陰數(shù)碼管是指將所有發(fā)光二極管的陰極接到一起形成公共陰極(COM)的數(shù)碼管,共陰數(shù)碼管在應(yīng)用時(shí)應(yīng)將公共極COM接到地線GND上,當(dāng)某一字段發(fā)光二極管的陽(yáng)極為高電平時(shí),相應(yīng)字段就點(diǎn)亮,當(dāng)某一字段的陽(yáng)極為低電平時(shí),相應(yīng)字段就不亮。

2.3.1 數(shù)碼管概述

圖5:數(shù)碼管

數(shù)碼顯示器是一種由LED發(fā)光二極管組合顯示字符的顯示器件,它使用了8個(gè)Led發(fā)光二極管,其中七個(gè)用于顯示字符,一個(gè)顯示小數(shù)點(diǎn),所以通稱為七段發(fā)光二極管數(shù)碼顯示器。4位一體數(shù)碼管,其內(nèi)部段已連接好,引腳如圖所示(數(shù)碼管的正面朝自己,小數(shù)點(diǎn)在下方)。a、b、c、d、e、f、g、dp為段引腳,S1、S2、S3、S4分別表示四個(gè)數(shù)碼管的位。

2.4 AT24C02簡(jiǎn)介

如圖1為AT24C02的芯片引腳圖。

圖3-1  AT24C02的芯片引腳圖

AT24C02提供電可擦除的串行1024位存儲(chǔ)或可編程只讀存儲(chǔ)器(EEPROM)128字(8位/字)。

芯片在低壓的工業(yè)與商業(yè)應(yīng)用中進(jìn)行了最優(yōu)化。AT24C01的封裝為8腳PDIP、8腳JEDEC

SOIC、8腳TSSOP,通過(guò)2線制串行接口進(jìn)行數(shù)據(jù)傳輸。另外,整個(gè)系列有2.7V(2.7V至5.5V)和1.8V (1.8V至5.5V)兩個(gè)版本。

設(shè)備操作:

C L O C K 和 D A T A 變化:SDA管腳通常外都要拉高。SDA管腳上的數(shù)據(jù)只能在SCL低期間改變。數(shù)據(jù)在SCL高期間改變定義為一個(gè)開(kāi)始或停止信號(hào)。

開(kāi)始狀態(tài):在任何操作之前必須有一個(gè)開(kāi)始信號(hào)----在SCL為高時(shí)SDA上產(chǎn)生一個(gè)下降沿。

停止?fàn)顟B(tài): SCL為高時(shí)SDA產(chǎn)生一個(gè)上升沿是停止信號(hào),停止信號(hào)后將停止所有通信。

在一個(gè)讀的序列之后,停止信號(hào)將讓EEPROM進(jìn)入備用電源模式。


2.4.1 I2C總線說(shuō)明

I2C(Inter-Integrated Circuit)總線是一種由PHILIPS公司開(kāi)發(fā)的兩線式串行總線,用于連接微控制器及其外圍設(shè)備。I2C總線產(chǎn)生于在80年代,最初為音頻和視頻設(shè)備開(kāi)發(fā),如今主要在服務(wù)器管理中使用,其中包括單個(gè)組件狀態(tài)的通信。例如管理員可對(duì)各個(gè)組件進(jìn)行查詢,以管理系統(tǒng)的配置或掌握組件的功能狀態(tài),如電源和系統(tǒng)風(fēng)扇?呻S時(shí)監(jiān)控內(nèi)存、硬盤(pán)、網(wǎng)絡(luò)、系統(tǒng)溫度等多個(gè)參數(shù),增加了系統(tǒng)的安全性,方便了管理。

1 I2C總線的硬件結(jié)構(gòu)

I2C串行總線一般有兩根信號(hào)線,一根是雙向的數(shù)據(jù)線SDA,另一根是時(shí)鐘線SCL。所有接到I2C總線設(shè)備上的串行數(shù)據(jù)SDA都接到總線的SDA上,各設(shè)備的時(shí)鐘線SCL接到總線的SCL上。

為了避免總線信號(hào)的混亂,要求各設(shè)備連接到總線的輸出端時(shí)必須是開(kāi)漏輸出或集電極開(kāi)路輸出。設(shè)備上的串行數(shù)據(jù)線SDA接口電路應(yīng)該是雙向的,輸出電路用于向總線上發(fā)送數(shù)據(jù),輸入電路用于接收總線上的數(shù)據(jù)。而串行時(shí)鐘線也應(yīng)是雙向的,作為控制總線數(shù)據(jù)傳送的主機(jī),一方面要通過(guò)SCL輸出電路發(fā)送時(shí)鐘信號(hào),另一方面還要檢測(cè)總線上的SCL電平,以決定什么時(shí)候發(fā)送下一個(gè)時(shí)鐘脈沖電平;作為接受主機(jī)命令的從機(jī),要按總線上的SCL信號(hào)發(fā)出或接收SDA上的信號(hào),也可以向SCL線發(fā)出低電平信號(hào)以延長(zhǎng)總線時(shí)鐘信號(hào)周期。總線空閑時(shí),因各設(shè)備都是開(kāi)漏輸出,上拉電阻RP使SDA和SCL線都保持高電平。任一設(shè)備輸出的低電平都將使相應(yīng)的總線信號(hào)線變低,也就是說(shuō):各設(shè)備的SDA是“與”關(guān)系,SCL也是“與”關(guān)系。

總線對(duì)設(shè)備接口電路的制造工藝和電平都沒(méi)有特殊的要求(NMOS、CMOS都可以兼容)。在I2C總線上的數(shù)據(jù)傳送率可高達(dá)每秒十萬(wàn)位,高速方式時(shí)在每秒四十萬(wàn)位以上。另外,總線上允許連接的設(shè)備數(shù)以其電容量不超過(guò)400pF為限。

總線的運(yùn)行(數(shù)據(jù)傳輸)由主機(jī)控制。所謂主機(jī)是指啟動(dòng)數(shù)據(jù)的傳送(發(fā)出啟動(dòng)信號(hào))、發(fā)出時(shí)鐘信號(hào)以及傳送結(jié)束時(shí)發(fā)出停止信號(hào)的設(shè)備,通常主機(jī)都是微處理器。被主機(jī)尋訪的設(shè)備稱為從機(jī)。為了進(jìn)行通訊,每個(gè)接到I2C總線的設(shè)備都有一個(gè)唯一的地址,以便于主機(jī)尋訪。主機(jī)和從機(jī)的數(shù)據(jù)傳送,可以由主機(jī)發(fā)送數(shù)據(jù)到從機(jī),也可以由從機(jī)發(fā)到主機(jī)。凡是發(fā)送數(shù)據(jù)到總線的設(shè)備稱為發(fā)送器,從總線上接收數(shù)據(jù)的設(shè)備被稱為接受器。

I2C總線在傳送數(shù)據(jù)過(guò)程中共有三種類型信號(hào), 它們分別是:開(kāi)始信號(hào)、結(jié)束信號(hào)和應(yīng)答信號(hào)。

開(kāi)始信號(hào):SCL為高電平時(shí),SDA由高電平向低電平跳變,開(kāi)始傳送數(shù)據(jù)。

結(jié)束信號(hào):SCL為高電平時(shí),SDA由低電平向高電平跳變,結(jié)束傳送數(shù)據(jù)。

應(yīng)答信號(hào):接收數(shù)據(jù)的IC在接收到8bit數(shù)據(jù)后,向發(fā)送數(shù)據(jù)的IC發(fā)出特定的低電平脈沖,表示已收到數(shù)據(jù)。CPU向受控單元發(fā)出一個(gè)信號(hào)后,等待受控單元發(fā)出一個(gè)應(yīng)答信號(hào),CPU接收到應(yīng)答信號(hào)后,根據(jù)實(shí)際情況作出是否繼續(xù)傳遞信號(hào)的判斷。若未收到應(yīng)答信號(hào),由判斷為受控單元出現(xiàn)故障。如圖3-2所示:

圖3-2 開(kāi)始、結(jié)束信號(hào)圖


目前有很多半導(dǎo)體集成電路上都集成了I2C接口。帶有I2C接口的單片機(jī)有:CYGNAL的 C8051F0XX系列,PHILIPSP87LPC7XX系列,MICROCHIP的PIC16C6XX系列等。很多外圍器件如存儲(chǔ)器、監(jiān)控芯片等也提供I2C接口。

總線基本操作:

I2C規(guī)程運(yùn)用主/從雙向通訊。器件發(fā)送數(shù)據(jù)到總線上,則定義為發(fā)送器,器件接收數(shù)據(jù)則定義為接收器。主器件和從器件都可以工作于接收和發(fā)送狀態(tài)。 總線必須由主器件(通常為微控制器)控制,主器件產(chǎn)生串行時(shí)鐘(SCL)控制總線的傳輸方向,并產(chǎn)生起始和停止條件。SDA線上的數(shù)據(jù)狀態(tài)僅在SCL為低電平的期間才能改變,SCL為高電平的期間,SDA狀態(tài)的改變被用來(lái)表示起始和停止條件。

控制字節(jié):在起始條件之后,必須是器件的控制字節(jié),其中高四位為器件類型識(shí)別符(不同的芯片類型有不同的定義,EEPROM一般應(yīng)為1010),接著三位為片選,最后一位為讀寫(xiě)位,當(dāng)為1時(shí)為讀操作,為0時(shí)為寫(xiě)操作。

寫(xiě)操作:寫(xiě)操作分為字節(jié)寫(xiě)和頁(yè)面寫(xiě)兩種操作,對(duì)于頁(yè)面寫(xiě)根據(jù)芯片的一次裝載的字節(jié)不同有所不同。

讀操作:讀操作有三種基本操作:當(dāng)前地址讀、隨機(jī)讀和順序讀。圖4給出的是順序讀的時(shí)序圖。應(yīng)當(dāng)注意的是:最后一個(gè)讀操作的第9個(gè)時(shí)鐘周期不是“不關(guān)心”。為了結(jié)束讀操作,主機(jī)必須在第9個(gè)周期時(shí)發(fā)出停止條件或者在第9個(gè)時(shí)鐘周期內(nèi)保持SDA為高電平、然后發(fā)出停止條件。

3 程序流程圖




圖6:程序流程圖

結(jié)論

通過(guò)對(duì)自己在大學(xué)兩年時(shí)間里所學(xué)的知識(shí)的回顧,并充分發(fā)揮對(duì)所學(xué)知識(shí)的理解和對(duì)畢業(yè)設(shè)計(jì)的思考及書(shū)面表達(dá)能力,最終完成了本設(shè)計(jì)。這為自己今后進(jìn)一步深化學(xué)習(xí),積累了一定寶貴的經(jīng)驗(yàn)。撰寫(xiě)論文的過(guò)程也是專業(yè)知識(shí)的學(xué)習(xí)過(guò)程,它使我運(yùn)用已有的專業(yè)基礎(chǔ)知識(shí),對(duì)其進(jìn)行設(shè)計(jì),分析和解決一個(gè)理論問(wèn)題或?qū)嶋H問(wèn)題,把知識(shí)轉(zhuǎn)化為能力的實(shí)際訓(xùn)練。培養(yǎng)了我運(yùn)用所學(xué)知識(shí)解決實(shí)際問(wèn)題的能力。

本次論文設(shè)計(jì),使我加深了對(duì)單片機(jī)的認(rèn)識(shí),并且熟悉了單片機(jī)系統(tǒng)的設(shè)計(jì)流程,收獲豐碩。技術(shù)在不斷進(jìn)步,機(jī)械式時(shí)鐘已經(jīng)被淘汰,電子時(shí)代已經(jīng)到來(lái)。做為新時(shí)代的我們,更應(yīng)該提高自身能力,適應(yīng)新時(shí)代的發(fā)展。知識(shí)來(lái)自實(shí)踐,多從生活中探尋所需要的。

從這次的論文設(shè)計(jì)中,我真正的體會(huì)到,知識(shí)的重要性,特別是要理論聯(lián)系實(shí)際,把我們所學(xué)的理論知識(shí)運(yùn)用到實(shí)際生活當(dāng)中,要用知識(shí)改變一切。

參考文獻(xiàn)

[1] 陳權(quán)昌,李興富.單片機(jī)原理及應(yīng)用[M].廣州:華南理工大學(xué)出版社,2007.84~102

[2] 李慶亮.C語(yǔ)言程序設(shè)計(jì)實(shí)用教程[M].北京:機(jī)械工業(yè)出版社,2005.32~58

[3] 楊志忠.數(shù)字電子技術(shù)[M].北京:高等教育出版社,2003.125~132

[4] 及力.Protel 99 SE原理圖與PCB設(shè)計(jì)教程[M].北京:電子工業(yè)出版社,2007.89~150

[5] 徐江海.單片機(jī)實(shí)用教程[M].北京:機(jī)械工業(yè)出版社,2006.128~156

[6] 胡宴如.模擬電子技術(shù)[M].北京:高等教育出版社,2008.60~104

[7] 汪文,陳林.單片機(jī)原理及應(yīng)用[M].湖北:華中科技大學(xué)出版社,2007.36~68

[8] 康華光.電子技術(shù)基礎(chǔ)數(shù)字部分[M].北京:高等教育出版社,2008.203~209

[9] 楊欣.電子設(shè)計(jì)從零開(kāi)始[M].北京:清華大學(xué)出版社,2005.28~102


致謝

首先,感謝學(xué)校三年來(lái)對(duì)我的培養(yǎng)。為我們營(yíng)造了一個(gè)良好的學(xué)習(xí)氛圍,建設(shè)一流的教學(xué)設(shè)施,使我們身心愉快的投入到學(xué)習(xí)中。

其次,感謝尊敬的指導(dǎo)老師,有了他的諄諄教誨,處處提點(diǎn),才使本論文的前期準(zhǔn)備以及整個(gè)研究過(guò)程順利完成。指導(dǎo)老師的嚴(yán)謹(jǐn)治學(xué)態(tài)度、扎實(shí)的理論基礎(chǔ)、全身心投入工作的精神以及對(duì)學(xué)生盡心盡力的態(tài)度給了我極大的幫助與鼓勵(lì),使我受益匪淺。從指導(dǎo)老師的教學(xué)態(tài)度上,我學(xué)到的不僅僅只有書(shū)本上的知識(shí),還有做人的道理。他嚴(yán)肅的科學(xué)態(tài)度,嚴(yán)謹(jǐn)?shù)闹螌W(xué)精神,精益求精的工作作風(fēng),深深地感染和激勵(lì)著我。在此謹(jǐn)向指導(dǎo)老師致以誠(chéng)摯的謝意和崇高的敬意。

最后,感謝我的父母多年來(lái)給予我的支持和關(guān)懷,同時(shí)感謝我的舍友和朋友對(duì)我的幫助。


附錄1 系統(tǒng)原理圖


附錄2  C語(yǔ)言程序


單片機(jī)源程序如下:
  1. #include<reg52.h>
  2. #define ui unsigned int
  3. #define uc unsigned char                 //宏定義
  4. sbit SET=P3^1;                                              //定義調(diào)整鍵
  5. sbit DEC=P3^2;                                              //定義減少鍵
  6. sbit ADD=P3^3;                                              //定義增加鍵
  7. sbit BEEP=P3^6;                                              //定義蜂鳴器
  8. sbit ALAM=P1^2;                                                        //定義燈光報(bào)警
  9. sbit ALAM1=P1^4;
  10. sbit DQ =P3^7;                                               //定義DS18B20總線I/O            
  11. sbit SCL=P1^6;
  12. sbit SDA=P1^7;
  13. sbit DIAN=P0^5;                                    //小數(shù)點(diǎn)
  14. bit bdata shanshuo_st;                                              //閃爍間隔標(biāo)志
  15. bit bdata beep_st;                                                             //蜂鳴器間隔標(biāo)志

  16. uc x=0;                                                              //計(jì)數(shù)器
  17. ui bai,shi,ge;
  18. uc set_st=0;                                               //狀態(tài)標(biāo)志
  19. char shangxian,xiaxian;
  20. code LEDData[]={0x5F,0x44,0x9D,0xD5,0xC6,0xD3,0xDB,0x47,0xDF,0xD7,0xCF,0xDA,0x9B,0xDC,0x9B,0x8B};

  21. //====================================DS18B20=========================================
  22. /*****延時(shí)子程序*****/
  23. void Delay_DS18B20(int num)
  24. {
  25.   while(num--) ;
  26. }
  27. void delay()//5微秒延時(shí)函數(shù)
  28. { ;; }
  29. void start()  //開(kāi)始信號(hào)
  30. {            
  31.               SDA=1;
  32.               delay();
  33.               SCL=1;
  34.               delay();
  35.               SDA=0;
  36.               delay();
  37. }
  38. void stop()   //終止信號(hào)
  39. {
  40.               SDA=0;
  41.               delay();
  42.               SCL=1;
  43.               delay();
  44.               SDA=1;
  45.               delay();
  46. }
  47. void respons()  //應(yīng)答
  48. {
  49.               uc i;
  50.               SCL=1;
  51.               delay();
  52.               while((SDA==1)&&(i<250))i++;//如果SDA為低應(yīng)答有效,或者超過(guò)一定時(shí)間默認(rèn)應(yīng)答有效
  53.               SCL=0;
  54.               delay();
  55. }
  56. void init24c04()//I2C總線初始化
  57. {
  58.               SDA=1;
  59.               delay();
  60.               SCL=1;
  61.               delay();
  62. }
  63. void write_byte(uc date)//寫(xiě)操作
  64. {
  65.               uc i,temp;
  66.               temp=date;
  67.               for(i=0;i<8;i++)
  68.               {
  69.                             temp=temp<<1;
  70.                             SCL=0;
  71.                                delay();
  72.                             SDA=CY;
  73.                             delay();
  74.                             SCL=1;
  75.                             delay();
  76.               }
  77.               SCL=0;
  78.               delay();
  79.               SDA=1;
  80.               delay();
  81. }
  82. uc read_byte()//讀操作
  83. {
  84.               uc i,k;
  85.               SCL=0;
  86.               delay();
  87.               SDA=1;
  88.               delay();
  89.               for(i=0;i<8;i++)
  90.               {
  91.                             SCL=1;
  92.                             delay();            
  93.                             k=(k<<1)|SDA;
  94.                             SCL=0;
  95.                             delay();            
  96.               }
  97.               return k;
  98. }
  99. void write_add(uc address,uc date)//往任意地址存數(shù)據(jù)
  100. {
  101.               start();
  102.               write_byte(0xa0);//0xa0代表寫(xiě)入
  103.               respons();
  104.               write_byte(address);
  105.               respons();
  106.               write_byte(date);
  107.               respons();
  108.               stop();
  109. }
  110. uc read_add(uc address)//讀隨意地址內(nèi)容
  111. {
  112.               uc date;
  113.               start();
  114.               write_byte(0xa0);//0xa0代表寫(xiě)入
  115.               respons();
  116.               write_byte(address);
  117.               respons();
  118.               start();
  119.               write_byte(0xa1);//0xa1代表讀出
  120.               respons();
  121.               date=read_byte();
  122.               stop();
  123.               return date;//返回值
  124. }
  125. /*****初始化DS18B20*****/
  126. void Init_DS18B20(void)
  127. {
  128.   uc w=0;
  129.   DQ = 1;         //DQ復(fù)位
  130.   Delay_DS18B20(8);    //稍做延時(shí)
  131.   DQ = 0;         //單片機(jī)將DQ拉低
  132.   Delay_DS18B20(80);   //精確延時(shí),大于480us
  133.   DQ = 1;         //拉高總線
  134.   Delay_DS18B20(14);
  135.   w = DQ;           //稍做延時(shí)后,如果x=0則初始化成功,x=1則初始化失敗
  136.   Delay_DS18B20(20);
  137. }
  138. /*****讀一個(gè)字節(jié)*****/
  139. unsigned char ReadOneChar(void)
  140. {
  141.   uc i=0;
  142.   uc dat = 0;
  143.   for (i=8;i>0;i--)
  144.   {
  145.     DQ = 0;     // 給脈沖信號(hào)
  146.     dat>>=1;
  147.     DQ = 1;     // 給脈沖信號(hào)
  148.     if(DQ)
  149.     dat|=0x80;
  150.     Delay_DS18B20(4);
  151.   }
  152.   return(dat);
  153. }
  154. /*****寫(xiě)一個(gè)字節(jié)*****/
  155. void WriteOneChar(uc dat)
  156. {
  157.   uc i=0;
  158.   for (i=8; i>0; i--)
  159.   {
  160.     DQ = 0;
  161.     DQ = dat&0x01;
  162.     Delay_DS18B20(5);
  163.     DQ = 1;
  164.     dat>>=1;
  165.   }
  166. }
  167. /*****讀取溫度*****/
  168. ui ReadTemperature(void)
  169. {
  170.   ui b=0;
  171.   ui t=0;
  172.   ui a=0;
  173.   Init_DS18B20();
  174.   WriteOneChar(0xCC);  //跳過(guò)讀序號(hào)列號(hào)的操作
  175.   WriteOneChar(0x44);  //啟動(dòng)溫度轉(zhuǎn)換
  176.   Init_DS18B20();
  177.   WriteOneChar(0xCC);  //跳過(guò)讀序號(hào)列號(hào)的操作
  178.   WriteOneChar(0xBE);  //讀取溫度寄存器
  179.   a=ReadOneChar();     //讀低8位
  180.   b=ReadOneChar();    //讀高8位
  181.   t=b;
  182.   t<<=8;
  183.   t=t|a;
  184.   tt=t*0.0625;
  185.   t= tt*10+0.5;     //放大10倍輸出并四舍五入
  186.   return(t);
  187. }
  188. /*****延時(shí)子程序*****/
  189. void Delay(ui num)
  190. {
  191. while( --num );
  192. }
  193. /*****初始化定時(shí)器0*****/
  194. void InitTimer(void)
  195. {
  196.               TMOD=0x01;
  197.               TH0=0x3c;
  198.               TL0=0xb0;     //50ms(晶振12M)
  199. }

  200. /*****讀取溫度*****/
  201. void check_wendu(void)
  202. {
  203.               ui f;
  204.               f=ReadTemperature()-5;                                            //獲取溫度值并減去DS18B20的溫漂誤差
  205.               if(f<0)f=0;
  206.               if(f>999)f=999;
  207.               bai=f/100;                                                                                         //計(jì)算得到十位數(shù)字
  208.               shi=(f%100)/10;                                                                          //計(jì)算得到個(gè)位數(shù)字
  209.               ge=(f%100)%10;                                                                                          //計(jì)算得到整數(shù)位
  210. }
  211. /*****顯示開(kāi)機(jī)初始化等待畫(huà)面*****/
  212. void Disp_init(void)   
  213. {
  214.               P0 = ~0x80;      //顯示----
  215.               P2 = 0x7F;
  216.               Delay(200);
  217.               P2 = 0xDF;
  218.               Delay(200);  
  219.               P2 = 0xF7;
  220.               Delay(200);
  221.               P2 = 0xFD;
  222.               Delay(200);
  223.               P2 = 0xFF;         //關(guān)閉顯示
  224. }
  225. /*****顯示溫度子程序*****/
  226. void Disp_Temperature(void)     //顯示溫度
  227. {
  228.               P0 = ~0x98;      //顯示C
  229.               P2 = 0x7F;
  230.               Delay(400);
  231.               P0=~LEDData[ge];    //顯示個(gè)位
  232.               P2 = 0xDF;
  233.               Delay(400);
  234.               P0 =~LEDData[shi];    //顯示十位
  235.               DIAN = 0;         //顯示小數(shù)點(diǎn)
  236.               P2 = 0xF7;
  237.               Delay(400);
  238.               P0 =~LEDData[bai];    //顯示百位
  239.               P2 = 0xFD;
  240.               Delay(400);
  241.               P2 = 0xff;         //關(guān)閉顯示
  242. }
  243. /*****顯示報(bào)警溫度子程序*****/
  244. void Disp_alarm(uc baojing)
  245. {
  246.               P0 =~0x98;      //顯示C
  247.               Delay(200);
  248.               P0 =~LEDData[baojing%10]; //顯示十位
  249.               P2 = 0xDF;
  250.               Delay(200);
  251.               P0 =~LEDData[baojing/10]; //顯示百位
  252.               P2 = 0xF7;
  253.               Delay(200);
  254.               if(set_st==1)P0 =~0xCE;
  255.               else if(set_st==2)P0 =~0x1A; //上限H、下限L標(biāo)示
  256.               P2 = 0xFD;
  257.               Delay(200);
  258.               P2 = 0xff;         //關(guān)閉顯示
  259. }
  260. /*****報(bào)警子程序*****/
  261. void Alarm()
  262. {
  263.               if(x>=10){beep_st=~beep_st;x=0;}
  264.               if((bai*10+shi)>=shangxian&&beep_st==1)
  265.               {
  266.                             BEEP=0;
  267.                             ALAM1=0;
  268.               }
  269.               else if((bai*10+shi)>=shangxian&&beep_st==0)
  270.               {
  271.                             BEEP=1;
  272.                             ALAM1=0;
  273.               }
  274.               if((bai*10+shi)<xiaxian&&beep_st==1)
  275.               {
  276.                             BEEP=0;
  277.                             ALAM=0;
  278.               }
  279.               else if((bai*10+shi)<xiaxian&&beep_st==0)
  280.               {
  281.                             BEEP=1;
  282.                             ALAM=0;
  283.               }
  284.               if(((bai*10+shi)<shangxian)&&((bai*10+shi)>=xiaxian))
  285.               {
  286.                             BEEP=1;
  287.                             ALAM1=1;
  288.                             ALAM=1;
  289.               }
  290. }
  291. /*****主函數(shù)*****/
  292. void main(void)
  293. {
  294.               ui z;
  295.               InitTimer();    //初始化定時(shí)器
  296.               EA=1;      //全局中斷開(kāi)關(guān)
  297.               ET0=1;      //開(kāi)啟定時(shí)器0
  298.               check_wendu();
  299.               check_wendu();
  300.               shangxian=read_add(10);
  301.               xiaxian=read_add(20);
  302.               for(z=0;z<300;z++)
  303.               {
  304.                             Disp_init();      
  305.               }
  306.               while(1)
  307.               {
  308.                             if(SET==0)
  309.                             {
  310.                                           Delay(2000);
  311.                                           do{}
  312.                                           while(SET==0);
  313.                                           set_st++;x=0;shanshuo_st=1;
  314.                                           if(set_st>2)set_st=0;
  315.                             }
  316.                             if(set_st==0)
  317.                             {
  318.                                           check_wendu();
  319.                                           Disp_Temperature();
  320.                                           Alarm();   //報(bào)警檢測(cè)
  321.                             }
  322.                             else if(set_st==1)
  323.                             {
  324.                                           BEEP=1;    //關(guān)閉蜂鳴器
  325.                                           ALAM=1;
  326.                                           ALAM1=1;
  327.                                           if(x>=10){shanshuo_st=~shanshuo_st;x=0;}
  328.                                           if(shanshuo_st) {Disp_alarm(shangxian);}
  329.                                           if(ADD==0)
  330.                                           {
  331.                                                         do{Disp_alarm(shangxian);}
  332.                                                         while(ADD==0);
  333.                                                         shangxian++;
  334.                                                         if(shangxian>99)shangxian=99;
  335.                                                         write_add(10,shangxian);
  336.                                           }
  337.                                           else if(DEC==0)
  338. ……………………

  339. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
DS18B20溫度報(bào)警器畢業(yè)論文.doc (247.5 KB, 下載次數(shù): 274)


評(píng)分

參與人數(shù) 1黑幣 +5 收起 理由
INVIO + 5

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏11 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:449517 發(fā)表于 2018-12-19 08:41 | 只看該作者
不錯(cuò),值得采納
回復(fù)

使用道具 舉報(bào)

板凳
ID:455034 發(fā)表于 2018-12-26 08:05 來(lái)自手機(jī) | 只看該作者
樓主。能發(fā)一下電子版的嗎。 1326206194@qq.com
回復(fù)

使用道具 舉報(bào)

地板
ID:658207 發(fā)表于 2019-12-7 18:46 來(lái)自手機(jī) | 只看該作者
多謝樓主
回復(fù)

使用道具 舉報(bào)

5#
ID:883882 發(fā)表于 2021-2-10 16:59 來(lái)自手機(jī) | 只看該作者
有液晶顯示器的嗎?
回復(fù)

使用道具 舉報(bào)

6#
ID:372579 發(fā)表于 2021-2-12 17:50 來(lái)自手機(jī) | 只看該作者
不錯(cuò)的資料,收藏一下,有需要自己也實(shí)操一下
回復(fù)

使用道具 舉報(bào)

7#
ID:1109466 發(fā)表于 2024-1-17 09:30 | 只看該作者
有實(shí)時(shí)檢測(cè)溫度并顯示的嗎
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 成人小视频在线观看 | 91精品国产综合久久婷婷香蕉 | 久草视频网站 | 天堂视频中文在线 | 国产1区| 亚洲国产精品日韩av不卡在线 | 在线久草 | 69性欧美高清影院 | 久久机热 | 99re在线观看 | 在线免费观看成年人视频 | 欧洲成人午夜免费大片 | 亚洲美乳中文字幕 | 精品三级在线观看 | 99re视频在线 | 国产男女猛烈无遮掩视频免费网站 | 国产精品久久午夜夜伦鲁鲁 | 国产精品一区在线 | 黄网免费看| 成人久久一区 | 一区二区国产在线 | 一级片网址 | 蜜桃视频一区二区三区 | 一级免费视频 | 一区二区中文字幕 | 亚洲一区欧美 | 欧美一级免费看 | 国产精品久久久久久久久免费丝袜 | 九九热这里 | 日本一区二区三区免费观看 | 国产免费一区二区 | 亚洲97| 日韩不卡一区二区 | 黑人巨大精品欧美黑白配亚洲 | 亚洲欧美另类在线 | 久久av.com | 欧美一级高潮片免费的 | 99pao成人国产永久免费视频 | 精品日韩一区 | 国产精品一区二区av | 国产综合视频 |