基于AT89C52的數(shù)字溫度計(jì)設(shè)計(jì)與仿真_第1頁(yè)
基于AT89C52的數(shù)字溫度計(jì)設(shè)計(jì)與仿真_第2頁(yè)
基于AT89C52的數(shù)字溫度計(jì)設(shè)計(jì)與仿真_第3頁(yè)
基于AT89C52的數(shù)字溫度計(jì)設(shè)計(jì)與仿真_第4頁(yè)
基于AT89C52的數(shù)字溫度計(jì)設(shè)計(jì)與仿真_第5頁(yè)
已閱讀5頁(yè),還剩21頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、基于at89c52的數(shù)字溫度計(jì)設(shè)計(jì)與仿真 緒論基于at89c52的數(shù)字溫度計(jì)設(shè)計(jì)與仿真譚亞平(吉首大學(xué)物理科學(xué)與信息工程學(xué)院,湖南 吉首 416000)摘 要溫度采集顯示及報(bào)警系統(tǒng)是一個(gè)應(yīng)用于需要對(duì)溫度進(jìn)行精準(zhǔn)控制報(bào)警的系統(tǒng),實(shí)現(xiàn)了對(duì)溫度進(jìn)行精準(zhǔn)采集顯示和越限聲光報(bào)警的功能。以方便系統(tǒng)使用者能夠更好的了解當(dāng)前溫度安全狀況,使相應(yīng)地區(qū)場(chǎng)所的安全得到保證。本系統(tǒng)以at89c52單片機(jī)為微控制器,采用數(shù)字溫度傳感器ds18b20作為測(cè)溫元件,溫度傳感器ds18b20采集溫度信號(hào)送給單片機(jī)處理,單片機(jī)再把處理后的溫度數(shù)據(jù)送到led上顯示出來(lái)。能夠?qū)崿F(xiàn)快速、準(zhǔn)確的測(cè)溫功能和越限聲光報(bào)警功能。本論文完成了

2、系統(tǒng)硬件電路的設(shè)計(jì),給出了軟件流程框圖,編寫(xiě)了相關(guān)的軟件程序,并記錄了仿真與實(shí)現(xiàn)的過(guò)程。關(guān)鍵詞:溫度報(bào)警;單片機(jī)(at89c52);數(shù)字溫度傳感器(ds18b20);keil c51 digital thermometer design and simulation based on at89c52tanyaping(college of physics science and information engineering,jishou university,jishou,hunan 416000)abstractthe temperature acquisition display and

3、 alarm system is used a need for precise temperature control of the alarm system to achieve accurate temperature acquisition of the more limited display and sound and light alarm function. with convenient system users to better understand the current temperature security situation,it make correspond

4、ing regional sites safety guaranteed. the system uses at89c52-scm as microprogrammed control unit and adopts digital temperature sensor ds18b20 as the temperature component. the temperature sensor ds18b20 collects temperature signals and sends them to scm for dealing with, then scm transfers the pro

5、cessed temperature data to led for dispalying which can realize the fast and accurate temperature measurement function and the more limited sound and light alarm function. this thesis has completed the design of the system hardware, procided the software flow diagram,compiled the related software pr

6、ogram,and recorded the simulation and realization process.keywords:temperature alarm; single-chip microcomputer(at89c52);digital temperature sensors applications ds18b20; keil c51.目錄第一章 緒 論11.1 研究背景11.2 本課題的研究?jī)?nèi)容1第二章 系統(tǒng)硬件設(shè)計(jì)22.1 總體設(shè)計(jì)22.2 at89c52簡(jiǎn)介22.2.1 主要性能22.2.2 引腳介紹32.3 ds18b20 介紹42.3.1 ds18b20性能特點(diǎn)

7、52.3.2 ds18b20內(nèi)部結(jié)構(gòu)及功能52.3.3 ds18b20的通信協(xié)議72.4 復(fù)位電路設(shè)計(jì)92.5 時(shí)鐘電路設(shè)計(jì)92.6 ds18b20與單片機(jī)接口電路設(shè)計(jì)10第三章 系統(tǒng)軟件設(shè)計(jì)113.1 軟件設(shè)計(jì)總體思路及主程序流程圖113.2 底層基本操作113.3 指令操作123.4 仿真結(jié)果12總結(jié)14參考文獻(xiàn)15附件16附件1 源程序16附件2 元器件清單2223第一章 緒 論1.1 研究背景現(xiàn)代信息技術(shù)的三大基礎(chǔ)是信息采集(即傳感器技術(shù))、信息傳輸(通信技術(shù))和信息處理(計(jì)算機(jī)技術(shù))。傳感器屬于信息技術(shù)的前沿尖端產(chǎn)品,尤其是溫度傳感器被廣泛用于工農(nóng)業(yè)生產(chǎn)、科學(xué)研究和生活等領(lǐng)域,數(shù)量高

8、居各種傳感器之首。近百年來(lái),溫度傳感器的發(fā)展大致經(jīng)歷了以下三個(gè)階段;(1)傳統(tǒng)的分立式溫度傳感器(含敏感元件);(2)模擬集成溫度傳感器/控制器;(3)智能溫度傳感器。目前,國(guó)際上新型溫度傳感器正從模擬式向數(shù)字式、由集成化向智能化、網(wǎng)絡(luò)化的方向發(fā)展。智能溫度傳感器發(fā)展的新趨勢(shì)進(jìn)入21世紀(jì)后正朝著高精度、多功能、總線標(biāo)準(zhǔn)化、高可靠性及安全性、開(kāi)發(fā)虛擬傳感器和網(wǎng)絡(luò)傳感器、研制單片測(cè)溫系統(tǒng)等高科技的方向迅速發(fā)展。例如:提高測(cè)溫精度和分辨力;增加測(cè)試功能;總線技術(shù)的標(biāo)準(zhǔn)化與規(guī)范化;可靠性及安全性設(shè)計(jì);單片測(cè)溫系統(tǒng)等。 1.2 本課題的研究?jī)?nèi)容采用智能溫度傳感器ds18b20,它直接輸出數(shù)字量,精度高,

9、電路簡(jiǎn)單,只需要模擬ds18b20的讀寫(xiě)時(shí)序,根據(jù)ds18b20的協(xié)議讀取轉(zhuǎn)換的溫度2。本設(shè)計(jì)使用了美國(guó) dallas 半導(dǎo)體公司的新一代數(shù)字式溫度傳感器ds18b20,它具有獨(dú)特的單總線接口方式 ,即允許在一條信號(hào)線上掛接數(shù)十甚至上百個(gè)數(shù)字式傳感器 ,從而使測(cè)溫裝置與各傳感器的接口變得十分簡(jiǎn)單 ,克服了模擬式傳感器與微機(jī)接口時(shí)需要的a/d轉(zhuǎn)換器及其它復(fù)雜外圍電路的缺點(diǎn)。工作時(shí)由控制信號(hào)進(jìn)行具體測(cè)量點(diǎn)識(shí)別,這使得布線工作大大簡(jiǎn)化,可以方便地構(gòu)成多傳感器測(cè)量網(wǎng)絡(luò)。此外,與傳統(tǒng)的熱敏電阻傳感器相比,ds18b20具有更高的測(cè)量精度。所以,相對(duì)于傳統(tǒng)溫度傳感器而言,ds18b20數(shù)字溫度傳感器具有更

10、高的經(jīng)濟(jì)性、靈活性、抗干擾性和精確度,在科學(xué)研究和生產(chǎn)實(shí)際中得到了廣泛的應(yīng)用3。基于at89c52的數(shù)字溫度計(jì)設(shè)計(jì)與仿真 系統(tǒng)硬件設(shè)計(jì)第二章 系統(tǒng)硬件設(shè)計(jì)2.1 總體設(shè)計(jì)本方案設(shè)計(jì)的系統(tǒng)模塊由單片機(jī)系統(tǒng)、溫度傳感器模塊、數(shù)碼管顯示模塊和電源模塊組成,其總體架構(gòu)如圖2.1。報(bào)警電路溫度傳感器電路數(shù)碼管顯示電路單片機(jī)控制電路 按鍵輸入圖2.1系統(tǒng)結(jié)構(gòu)圖該系統(tǒng)可以實(shí)時(shí)地顯示當(dāng)前環(huán)境的溫度。系統(tǒng)是以at89c52 單片機(jī)為核心,在開(kāi)始運(yùn)行它時(shí)主機(jī)先發(fā)送初始化命令使設(shè)備啟動(dòng),再發(fā)送溫度轉(zhuǎn)換命令使數(shù)字溫度傳感器ds18b20 把測(cè)得的模擬溫度轉(zhuǎn)換為串行數(shù)字信號(hào)供單片機(jī)采集。同時(shí),顯示器上顯示出目前環(huán)境的實(shí)

11、際溫度,當(dāng)溫度低與或高與設(shè)定的溫度,系統(tǒng)會(huì)通過(guò)蜂鳴器發(fā)出警報(bào)。2.2 at89c52簡(jiǎn)介2.2.1 性能特點(diǎn)與mcs-51單片機(jī)產(chǎn)品兼容 、8k字節(jié)在系統(tǒng)可編程flash存儲(chǔ)器、 1000次擦寫(xiě)周期、 全靜態(tài)操作:0hz33hz 、 三級(jí)加密程序存儲(chǔ)器 、 32個(gè)可編程i/o口線 、三個(gè)16位定時(shí)器/計(jì)數(shù)器 八個(gè)中斷源 、全雙工uart串行通道、 低功耗空閑和掉電模式 、掉電后中斷可喚醒 、看門(mén)狗定時(shí)器 、雙數(shù)據(jù)指針 、掉電標(biāo)識(shí)符 4。片內(nèi)有4kb可在線重復(fù)編程的快閃擦寫(xiě)存儲(chǔ)器 ;存儲(chǔ)數(shù)據(jù)保存時(shí)間為10年 ;寬工作電壓范圍:vcc可為2.7v到6v ;全靜態(tài)工作:可從0hz至16mhz ;程序

12、存儲(chǔ)器具有3級(jí)加密保護(hù) ;128*8位內(nèi)部ram ;32條可編程i/o線 ,兩個(gè)16位定時(shí)器/計(jì)數(shù)器 ;中斷結(jié)構(gòu)具有5個(gè)中斷源和2個(gè)優(yōu)先級(jí) ,可編程全雙工串行通道 ,空閑狀態(tài)維持低功耗和掉電狀態(tài)保存存儲(chǔ)內(nèi)容。2.2.2 引腳介紹at89c52 是一種低功耗、高性能cmos8位微控制器,具有 8k 在系統(tǒng)可編程flash 存儲(chǔ)器5。at89c52具有以下標(biāo)準(zhǔn)功能: 8k字節(jié)flash,256字節(jié)ram, 32 位i/o 口線,看門(mén)狗定時(shí)器,2 個(gè)數(shù)據(jù)指針,三個(gè)16 位 定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級(jí)中斷結(jié)構(gòu),全雙工串行口, 片內(nèi)晶振及時(shí)鐘電路。另外,at89s52 可降至0hz 靜態(tài)邏 輯操作,

13、支持2種軟件可選擇節(jié)電模式??臻e模式下,cpu 停止工作,允許ram、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工 作。掉電保護(hù)方式下,ram內(nèi)容被保存,振蕩器被凍結(jié), 單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。8 位微控制器 8k 字節(jié)在系統(tǒng)可編程 flash at89s52。at89c52引腳如圖2.2所示:圖2.2 at89c52引腳圖p0 口:p0口是一個(gè)8位漏極開(kāi)路的雙向i/o口。作為輸出口,每位能驅(qū)動(dòng)8個(gè)ttl邏輯電平。對(duì)p0端口寫(xiě)“1”時(shí),引腳用作高阻抗輸入。當(dāng)訪問(wèn)外部程序和數(shù)據(jù)存儲(chǔ)器時(shí),p0口也被作為低8位地址/數(shù)據(jù)復(fù)用。在這種模式下,p0具有內(nèi)部上拉電阻。在flash編程時(shí),p0

14、口也用來(lái)接收指令字節(jié);在程序校驗(yàn)時(shí),輸出指令字節(jié)。程序校驗(yàn)時(shí),需要外部上拉電阻。 p1 口:p1 口是一個(gè)具有內(nèi)部上拉電阻的8 位雙向i/o 口,p1 輸出緩沖器能驅(qū)動(dòng)4 個(gè) ttl 邏輯電平。對(duì)p1 端口寫(xiě)“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入 口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(iil)。 此外,p1.0和p1.2分別作定時(shí)器/計(jì)數(shù)器2的外部計(jì)數(shù)輸入(p1.0/t2)和時(shí)器/計(jì)數(shù)器2 的觸發(fā)輸入(p1.1/t2ex),具體如下所示。在flash編程和校驗(yàn)時(shí),p1口接收低8位地址字節(jié)。 引腳號(hào)第二功能 p1.0 t2(定時(shí)器/計(jì)數(shù)器t2的外部計(jì)

15、數(shù)輸入),時(shí)鐘輸出 p1.1 t2ex(定時(shí)器/計(jì)數(shù)器t2的捕捉/重載觸發(fā)信號(hào)和方向控制) p1.5 mosi(在系統(tǒng)編程用) p1.6 miso(在系統(tǒng)編程用) p1.7 sck(在系統(tǒng)編程用) p2 口:p2 口是一個(gè)具有內(nèi)部上拉電阻的8 位雙向i/o 口,p2 輸出緩沖器能驅(qū)動(dòng)4 個(gè) ttl 邏輯電平。對(duì)p2 端口寫(xiě)“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入 口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(iil)。在訪問(wèn)外部程序存儲(chǔ)器或用16位地址讀取外部數(shù)據(jù)存儲(chǔ)器(例如執(zhí)行movx dptr) 時(shí),p2 口送出高八位地址。在這種應(yīng)用中,p2 口使用很強(qiáng)

16、的內(nèi)部上拉發(fā)送1。在使用 8位地址(如movx ri)訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),p2口輸出p2鎖存器的內(nèi)容。在flash編程和校驗(yàn)時(shí),p2口也接收高8位地址字節(jié)和一些控制信號(hào)。 p3 口:p3 口是一個(gè)具有內(nèi)部上拉電阻的8 位雙向i/o 口,p2 輸出緩沖器能驅(qū)動(dòng)4 個(gè)ttl 邏輯電平。對(duì)p3 端口寫(xiě)“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入 口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(iil)。p3口亦作為at89s52特殊功能(第二功能)使用,如下所示。在flash編程和校驗(yàn)時(shí),p3口也接收一些控制信號(hào)。 端口引腳 第二功能p3.0 rxd(串行輸入口)p3

17、.1 txd(串行輸出口)p3.2 into(外中斷0)p3.3 int1(外中斷1)p3.4 to(定時(shí)/計(jì)數(shù)器0)p3.5 t1(定時(shí)/計(jì)數(shù)器1)p3.6 wr(外部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通)p3.7 rd(外部數(shù)據(jù)存儲(chǔ)器讀選通)此外,p3口還接收一些用于flash閃存編程和程序校驗(yàn)的控制信號(hào)。2.3 ds18b20 介紹2.3.1 ds18b20性能特點(diǎn)采用單總線技術(shù),與單片機(jī)通信只需要一根i/o線,在一根線上可以掛接多個(gè)ds18b20。每只ds18b20具有一個(gè)獨(dú)有的,不可修改的64位序列號(hào),根據(jù)序列號(hào)訪問(wèn)地應(yīng)的器件。低壓供電,電源范圍從35v,可以本地供電,也可以直接從數(shù)據(jù)線上竊取電源(寄生

18、電源方式)。測(cè)溫范圍為-55+125,在-1085范圍內(nèi)誤差為±0.5。可編輯數(shù)據(jù)為912位,轉(zhuǎn)換12位溫度時(shí)間為750ms(最大)。用戶可自設(shè)定報(bào)警上下限溫度。報(bào)警搜索命令可識(shí)別和尋址哪個(gè)器件的溫度超出預(yù)定值。ds18b20的分辯率由用戶通過(guò)eeprom設(shè)置為912位。ds18b20可將檢測(cè)到溫度值直接轉(zhuǎn)化為數(shù)字量,并通過(guò)串行通信的方式與主控制器進(jìn)行數(shù)據(jù)通信7。2.3.2 ds18b20內(nèi)部結(jié)構(gòu)及功能ds18b20的內(nèi)部結(jié)構(gòu)如下圖2.3所示,主要包括:寄生電源,溫度傳感器,64位rom和單總線接口,存放中間數(shù)據(jù)的高速暫存器ram,用于存儲(chǔ)用戶設(shè)定溫度上下限值的th和tl觸發(fā)器,存儲(chǔ)

19、與控制邏輯,8位循環(huán)冗余校驗(yàn)碼(crc)發(fā)生器等7部分圖2.3 ds18b20內(nèi)部結(jié)構(gòu)溫度和數(shù)字量的關(guān)系如圖2.4所示,romram操作命令如表2.12.2所示。圖2.4 溫度和數(shù)字量的關(guān)系表2.1 rom操作命令指令說(shuō)明讀rom命令(33h)讀18b20的序行號(hào)搜索rom命令(f0h)識(shí)別總線上各器件的編碼匹配rom命令(55h)用于多個(gè)ds18b20的定位跳過(guò)rom命令(cch)此命令執(zhí)行后,存儲(chǔ)器操作將針對(duì)總線上的所有操作報(bào)警搜索rom命令(ech)僅溫度超限的器件對(duì)此命令做出響應(yīng)表2.2 ram操作命令指令說(shuō)明溫度轉(zhuǎn)換(44h)啟動(dòng)溫度轉(zhuǎn)換讀暫存器(beh)讀全部暫存器內(nèi)容,包括crc

20、字節(jié)寫(xiě)暫存器(4eh)寫(xiě)暫存器第2,3和4個(gè)字節(jié)的數(shù)據(jù)復(fù)制暫存器(48eh)將暫存器中的th,tl和配置寄存器內(nèi)容復(fù)制到eeprom中讀eeprom(b8h)將th,tl和配置寄存器內(nèi)容從eeprom中回讀至?xí)捍嫫鞲髯止?jié)在romram中的設(shè)置如表2.3所示,溫度配置寄存器如表2.4所示,分辨率設(shè)置如表2.5所示。表2.3 各字節(jié)在romram中的設(shè)置字節(jié)romram0產(chǎn)品代號(hào)溫度低8位148位器件序列號(hào)溫度高8位2th3tl4配置寄存器5保留6保留7crc保留8crc表2.4 溫度配置寄存器0r1r211111表2.5分辯率設(shè)置r1r2分辯率設(shè)置/位測(cè)溫精度/c轉(zhuǎn)換時(shí)間/ms0090.593.

21、7501100.25187.510110.1253751112(默認(rèn))0.06257502.3.3 ds18b20的通信協(xié)議ds18b20采用嚴(yán)格的單總線通信協(xié)議,以保證數(shù)據(jù)的完整性。該協(xié)議定義了幾種信號(hào)類型:復(fù)位脈沖、應(yīng)答脈沖、寫(xiě)0、寫(xiě)1、讀0和讀1。除了應(yīng)答脈沖所有這些信號(hào)都由主機(jī)發(fā)出同步信號(hào)。總線上傳輸?shù)乃袛?shù)據(jù)和命令都是以字節(jié)的低位在前。1. 初始化序列:復(fù)位脈沖和應(yīng)答脈沖在初始化過(guò)程中,主機(jī)通過(guò)拉低單總線至少480µs,以產(chǎn)生復(fù)位脈沖(tx)。然后主機(jī)釋放總線并進(jìn)入接收(rx)模式。當(dāng)總線被釋放后,5k的上拉電阻將單總線拉高。ds18b20檢測(cè)到這個(gè)上升沿后,延時(shí)15

22、81;s60µs,通過(guò)拉低總線60µs240µs產(chǎn)生應(yīng)答脈沖。初始化波形如圖2.5所示。圖 2.5 初始化脈沖2. 讀和寫(xiě)時(shí)序在寫(xiě)時(shí)序期間,主機(jī)向ds18b20寫(xiě)入指令;而在讀時(shí)序期間,主機(jī)讀入來(lái)自ds18b20的指令。在每一個(gè)時(shí)序,總線只能傳輸一位數(shù)據(jù)。讀/寫(xiě)時(shí)序如圖2.6所示。(1) 寫(xiě)時(shí)序存在兩種寫(xiě)時(shí)序:“寫(xiě)1”和“寫(xiě)0”。主機(jī)在寫(xiě)1時(shí)序向ds18b20寫(xiě)入邏輯1,而在寫(xiě)0時(shí)序向ds18b20寫(xiě)入邏輯0。所有寫(xiě)時(shí)序至少需要60µs,且在兩次寫(xiě)時(shí)序之間至少需要1µs的恢復(fù)時(shí)間。兩種寫(xiě)時(shí)序均以主機(jī)拉低總線開(kāi)始。在寫(xiě)時(shí)序開(kāi)始后的15µ

23、s60µs期間,ds18b20采樣總線的狀態(tài)。如果總線為高電平,則邏輯1被寫(xiě)入ds18b20;如果總線為低電平,則邏輯0被寫(xiě)入ds18b20。(2) 讀時(shí)序圖2.6 ds18b20讀/寫(xiě)時(shí)序圖ds18b20只能在主機(jī)發(fā)出讀時(shí)序時(shí)才能向主機(jī)傳送數(shù)據(jù)。所以主機(jī)在發(fā)出讀數(shù)據(jù)命令后,必須馬上產(chǎn)生讀時(shí)序,以便ds18b20能夠傳送數(shù)據(jù)。所有讀時(shí)序至少60µs,且在兩次獨(dú)立的讀時(shí)序之間至少需要1µs的恢復(fù)時(shí)間。每次讀時(shí)序由主機(jī)發(fā)起,拉低總線至少1µs。在主機(jī)發(fā)起讀時(shí)序之后,ds18b20開(kāi)始在總線上傳送1或0。若ds18b20發(fā)送1,則保持總線為高電平;若發(fā)送0,則

24、拉低總線。當(dāng)傳送0時(shí),ds18b20在該時(shí)序結(jié)束時(shí)釋放總線,再由上拉電阻將總線拉回空閑高電平狀態(tài)。ds18b20發(fā)出的數(shù)據(jù)在讀時(shí)序下降沿起始后的15µs內(nèi)有效,因此主機(jī)必須在讀時(shí)序開(kāi)始后的15µs內(nèi)釋放總線,并且采樣總線狀態(tài)。ds18b20 在使用時(shí),一般都采用單片機(jī)來(lái)實(shí)現(xiàn)數(shù)據(jù)采集。只需將ds18b20 信號(hào)線與單片機(jī)1 位i/o線相連,且單片機(jī)的1 位i/o 線可掛接多個(gè)ds18b20 ,就可實(shí)現(xiàn)單點(diǎn)或多點(diǎn)溫度檢測(cè)8。2.4 復(fù)位電路設(shè)計(jì) 復(fù)位電路工作原理:電容在上接高電平,電阻在下接地,中間為rst。這種復(fù)位電路的工作原理是:通電時(shí),電容兩端相當(dāng)于是短路,于是rst引腳

25、上為高電平,然后電源通過(guò)電阻對(duì)電容充電,rst端電壓慢慢下降,降到一定程序,即為低電平,單片機(jī)開(kāi)始正常工作9。復(fù)位電路如圖2.7所示。圖2.7復(fù)位電路2.5 時(shí)鐘電路設(shè)計(jì) 時(shí)鐘電路作用:?jiǎn)纹瑱C(jī)外部必須接上振蕩器(也可以是內(nèi)部振蕩器),其提供的高頻脈沖經(jīng)過(guò)分頻處理后,成為單片機(jī)內(nèi)部時(shí)鐘信號(hào),作為片內(nèi)各部件協(xié)調(diào)工作的控制信號(hào)。 如果沒(méi)有時(shí)鐘信號(hào),觸發(fā)器的狀態(tài)就不能改變,單片機(jī)內(nèi)部的所有電路在完成一個(gè)任務(wù)后將最終達(dá)到一個(gè)穩(wěn)定狀態(tài)而不能再繼續(xù)進(jìn)行其它任何工作了。時(shí)鐘電路如圖2.8所示:圖2.8時(shí)鐘電路2.6 ds18b20與單片機(jī)接口電路設(shè)計(jì)溫度計(jì)電路設(shè)計(jì)原理圖如下圖2.9所示,控制器使用單片機(jī)at8

26、9s52,溫度傳感器使用ds18b20,用4位共陰led數(shù)碼管以動(dòng)態(tài)掃描法實(shí)現(xiàn)溫度顯示10圖2.9 ds18b20與單片機(jī)接口電路基于at89c52的數(shù)字溫度計(jì)設(shè)計(jì)與仿真 系統(tǒng)軟件設(shè)計(jì)第三章 系統(tǒng)軟件設(shè)計(jì)3.1 軟件設(shè)計(jì)總體思路及主程序流程圖本系統(tǒng)采用匯編語(yǔ)言編寫(xiě),主程序主要由三部分構(gòu)成,系統(tǒng)通電后首先初始化系統(tǒng),依次完成溫度采集、溫度處理、數(shù)據(jù)顯示等三項(xiàng)功能。溫度采集部分主要完成溫度數(shù)據(jù)采集任務(wù);溫度處理部分主要是將采集到的溫度數(shù)據(jù)轉(zhuǎn)換成十進(jìn)制數(shù)據(jù);數(shù)據(jù)顯示部分主要實(shí)現(xiàn)溫度數(shù)據(jù)的顯示,顯示方式為固定顯示。系統(tǒng)軟件主流程圖如3.1所示:開(kāi)始初始化讀取溫度溫度轉(zhuǎn)換溫度顯示返回圖3.1 系統(tǒng)軟件總

27、流程圖3.2 底層基本操作初始化:初始化是dsl8b20 的底層基本操作之一。通過(guò)單線總線進(jìn)行的所有操作都從一個(gè)初始化序列開(kāi)始。初始化序列包括一個(gè)由cpu 發(fā)出的復(fù)位脈沖及其后由ds18b20 發(fā)出的存在脈沖。存在脈沖讓cpu 知道ds18b20 在總線上且已做好操作準(zhǔn)備。數(shù)據(jù)寫(xiě):數(shù)據(jù)寫(xiě)是ds18b20的底層基本操作之一, 所有的指令、數(shù)據(jù)發(fā)送均由該操作完成。ds18b20的寫(xiě)操作都是逐位進(jìn)行的,因此,采用c5l中的位右移操作來(lái)實(shí)現(xiàn)。數(shù)據(jù)讀:數(shù)據(jù)讀是ds18b20的底層基本操作之一, 溫度值和其它狀態(tài)信息的傳回均由該操作完成。3.3 指令操作dsl8b20提供了一系列指令來(lái)控制傳感器的工作。下

28、面只簡(jiǎn)單介紹本系統(tǒng)所用到的最基本的幾條。1. skip rom cch用于1條i/o總線上只掛1個(gè)ds18b20的情況,使ds18b20跳過(guò)多個(gè)傳感器的識(shí)別過(guò)程。如果一條i/o總線上掛了不止1個(gè)傳感器,總線上就會(huì)發(fā)生數(shù)據(jù)沖突。2. convert t 44h啟動(dòng)一次溫度轉(zhuǎn)換過(guò)程。溫度轉(zhuǎn)換命令被執(zhí)行后,ds18b20保持等待狀態(tài)。3. read scratchpad beh用于讀取暫存器的內(nèi)容。溫度轉(zhuǎn)換的結(jié)果和其它狀態(tài)信息均以此命令讀出。讀取將從字節(jié)0開(kāi)始, 一直進(jìn)行下去, 直到字節(jié)8讀完。如果不想讀完所有字節(jié), 控制器可以在任何時(shí)間發(fā)出復(fù)位命令來(lái)中止讀取。3.4 仿真結(jié)果本論文設(shè)計(jì)在prote

29、us上仿真實(shí)現(xiàn)了所需要求,仿真結(jié)果如圖3.2、圖3.3所示圖3.2 仿真實(shí)驗(yàn)圖圖3.3 仿真實(shí)驗(yàn)圖基于at89c52的數(shù)字溫度計(jì)設(shè)計(jì)與仿真 總結(jié)總結(jié)程序在編譯過(guò)程中,出現(xiàn)了一些語(yǔ)法錯(cuò)誤,經(jīng)過(guò)細(xì)心修改得以糾正。但是,將程序下載到單片機(jī)之后,發(fā)現(xiàn)串口顯示模塊一直顯示“127.5”,經(jīng)過(guò)推斷得知,讀取的溫度值為全“1”,出現(xiàn)這個(gè)問(wèn)題,全是因?yàn)閐s18b20有嚴(yán)格的時(shí)序和通信協(xié)議,在每次讀取溫度數(shù)據(jù)時(shí),都有其嚴(yán)格的時(shí)序要求,經(jīng)過(guò)檢查,發(fā)現(xiàn)程序中有一個(gè)地方少加了一個(gè)1毫秒左右的延時(shí),按照ds18b20的時(shí)序原理,把忘記加的延時(shí)加上之后,就可以讓單片機(jī)讀取傳感器的溫度值了。此次數(shù)字溫度計(jì)設(shè)計(jì),讓我學(xué)會(huì)了規(guī)

30、范化程序的編寫(xiě)、程序調(diào)試的各種方法以及解決調(diào)試過(guò)程中出現(xiàn)的一系列的問(wèn)題。更重要的是讓我明白程序的優(yōu)化是多么重要。要想編寫(xiě)出一個(gè)系統(tǒng)的程序,就必須十分清楚硬件電路中所用芯片的工作原理以及使用它們的一些注意事項(xiàng),比如這次設(shè)計(jì)中所用的ds18b20數(shù)字溫度傳感器,它的時(shí)序要求十分嚴(yán)格,由于它是采用單總線結(jié)構(gòu)的輸入輸出方法,它的時(shí)序中所用到的延時(shí)必然很關(guān)鍵,時(shí)間過(guò)長(zhǎng)了會(huì)使整個(gè)溫度計(jì)的反應(yīng)時(shí)間變慢,延時(shí)時(shí)間過(guò)短會(huì)使傳感器不能正常工作。本課題的重點(diǎn)、難點(diǎn)是:(1) 初步接觸溫度傳感器,要對(duì)傳感器的原理、結(jié)構(gòu)、應(yīng)用等各方面從頭開(kāi)始琢磨;(2)了解并掌握了傳感器的基本理論知識(shí),更深入的掌握單片機(jī)的開(kāi)發(fā)應(yīng)用和p

31、c編程控制。為以后從事單片機(jī)軟硬件產(chǎn)品的設(shè)計(jì)開(kāi)發(fā)、pc軟件開(kāi)發(fā)打下了良好的基礎(chǔ),樹(shù)立了獨(dú)立從事產(chǎn)品研發(fā)的信心,并在這種能力上得到了比較充分的鍛煉?;赼t89c52的數(shù)字溫度計(jì)設(shè)計(jì)與仿真 參考文獻(xiàn)參考文獻(xiàn)1 陳躍東.ds18b20集成溫度傳感器原理及其應(yīng)用j.安徽工程科技學(xué)院學(xué)報(bào),2002.8(4):34-38.2 周月霞,孫傳友.dsl8b20硬件連接及軟件編程j.傳感器世界雜志,2001.12(3):25-29.3 魏英智.dsl8b20在溫度控制中的應(yīng)用j.黑龍江科技學(xué)院學(xué)報(bào),2005.46(3):92-93.4 謝維成,楊加國(guó).單片機(jī)原理與應(yīng)用及c51程序設(shè)計(jì)m.北京:清華大學(xué)出版社,

32、2006.5 趙亮,侯國(guó)銳.單片機(jī)c語(yǔ)言編程與實(shí)例m.北京:人民郵電出版社,2003.6 張粵,倪偉.dsisb20在分布式測(cè)溫系統(tǒng)中的應(yīng)用j.淮陰工學(xué)報(bào),2002.11(5):57-59.7 藏榮,游風(fēng)荷,周景霞.由單片機(jī)和多片ds1820組成的多點(diǎn)電溫度測(cè)控系統(tǒng)j.國(guó)外電子元器件,2002(1):60-62.8 況榮華,容太平.i2c總線在單片機(jī)上的實(shí)現(xiàn)j.國(guó)外電子元器件,2001(6):46-49.9 陳世利等.sp1串行flash在數(shù)據(jù)存儲(chǔ)系統(tǒng)中的應(yīng)用j.國(guó)外電子元器件.2001(10):20-23.10 鄧建華.可縮程看門(mén)狗監(jiān)控eeprom芯片j,電子世界,2001(5):31-32

33、.11 何立民.單片機(jī)應(yīng)用技術(shù)選編m.北京航空航天大學(xué)出版,1996.12 吳江,陳尚松.單總線技術(shù)在測(cè)控系統(tǒng)中的應(yīng)用j.電測(cè)與儀表,1999(9).基于at89c52的數(shù)字溫度計(jì)設(shè)計(jì)與仿真 附件附 件附件1:源程序清單temp1 equ 5ah ; 符號(hào)位和百位公用的存放單元temp2 equ 5bh ; 十位存放單元temp3 equ 5ch ; 個(gè)位存放單元temp4 equ 5dh ;temp5 equ 5ehtemp6 equ 5fh ; 數(shù)據(jù)臨時(shí)存放單元temp7 equ 60htemp8 equ 61horg 0000hajmp mainorg 0020hmain:mov sp,

34、#70h lcall int ; 調(diào)用ds18b20初始化函數(shù)main1:lcall get_temp ; 調(diào)用溫度轉(zhuǎn)換函數(shù)lcall chuli ; 調(diào)用溫度計(jì)算函數(shù)lcall disp ; 調(diào)用溫度顯示函數(shù)ajmp main1 ; 循環(huán)int:l0:setb p3.7 ; 先釋放dq總線mov r2,#250 ; 給r2賦延時(shí)初值,同時(shí)可讓dq保持高電平2usl1:clr p3.7 ; 給dq一個(gè)復(fù)位低電平djnz r2,l1 ; 保持低電平的時(shí)間至少為480ussetb p3.7 ; 再次拉高dq釋放總線mov r2,#25 l2:djnz r2,l2 ; 保持15us60usclr c

35、orl c,p3.7 ; 判斷是否收到低脈沖jc l0mov r6,#100l3:orl c,p3.7 djnz r6,l3 ; 存在低脈沖保持保持60us240usjc l0 ; 否則繼續(xù)從頭開(kāi)始,繼續(xù)判斷setb p3.7 ret ; 調(diào)用溫度轉(zhuǎn)換函數(shù)get_temp:clr psw.4setb psw.3 ; 設(shè)置工作寄存器當(dāng)前所在的區(qū)域clr ea ; 使用ds18b20前一定要禁止任何中斷l(xiāng)call int ; 初始化ds18b20mov a,#0cch ; 送入跳過(guò)rom命令lcall writemov a,#44h ; 送入溫度轉(zhuǎn)換命令lcall writelcall int ;

36、 溫度轉(zhuǎn)換完成,再次初始化18b20mov a,#0cch ; 送入跳過(guò)rom命令lcall writemov a,#0beh ; 送入讀溫度暫存器命令lcall writelcall read mov temp4,a ; 讀出溫度的低字節(jié)存在temp4lcall readmov temp5,a ; 讀出溫度的高字節(jié)存在temp5setb earetchuli : mov a,temp5 ; 將溫度的高字節(jié)取出jnb acc.7,zheng ; 判斷最高位是否為0,為0則表示溫度為正,則轉(zhuǎn)到zhengmov a,temp4 ; 否則溫度為負(fù),將溫度的低字節(jié)取出cpl a ; 求反inc a ;

37、 加1mov temp8,a ; 存到temp8中anl a,#0fh ; 保留低四位lcall muld ; 調(diào)用乘以625子程序lcall hb2 ; 調(diào)用雙字節(jié)16進(jìn)制數(shù)轉(zhuǎn)換成bcd碼子程序mov a,r4 ; 將結(jié)果的千位百位取出anl a,#0f0h ; 保留千位swap a ; mov temp7,a ; 把小數(shù)結(jié)果保存在temp7中mov a,temp4 ; 再次取出溫度的低字節(jié)anl a,#0ffh ; 判斷是否為0jz xx ; 為0則轉(zhuǎn)到xx執(zhí)行mov a,temp5 ;cpl a ; 不為0則直接將溫度的高字節(jié)取反sjmp yy xx:mov a,temp5 ; 為0則求

38、補(bǔ)碼cpl a ;inc a ;yy:anl a,#0fh ; 保留高字節(jié)的低四位swap a ; 將其換到高4位mov r5,a ; 暫時(shí)保存于r5中mov a,temp8 ; 取出求反后的低位字節(jié)anl a,#0f0h ; 取其高4位swap a ; 將其換到低4位orl a,r5 ; 合并成溫度的整數(shù)部分mov temp6,a ; 將整數(shù)部分存到temp6中l(wèi)call hbcd ; 調(diào)用一字節(jié)的16進(jìn)制數(shù)轉(zhuǎn)換bcd數(shù)的子程序mov temp1,#0bh ; 將"-"號(hào)的段選值存到符號(hào)位mov a,temp2 ; 取出十位cjne a,#00h,next mov tem

39、p2,#0ch ; 十位為0不顯示ret zheng: mov a,temp4 ; 將溫度的低字節(jié)取出anl a,#0fh ; 保留低四位lcall muld ; 調(diào)用乘以625子程序lcall hb2 ; 調(diào)用雙字節(jié)16進(jìn)制數(shù)轉(zhuǎn)換成bcd碼子程序mov a,r4 ; 將結(jié)果的千位百位取出anl a,#0f0h ; 保留千位swap a ;mov temp7,a ; 把小數(shù)結(jié)果保存在temp7中mov a,temp4 ; 再次取出溫度的低字節(jié)anl a,#0f0h ; 保留高4位swap a ; 換到低4位mov r5,a ; 暫時(shí)保存于r5中mov a,temp5 ; 取出溫度的高字節(jié)anl

40、 a,#0fh ; 保留低4位swap a ; 換到高4位orl a,r5 ; 合并成溫度的整數(shù)部分mov temp6,a ; 整數(shù)部分存到temp6中l(wèi)call hbcd ; 單字節(jié)的16進(jìn)制數(shù)轉(zhuǎn)換成bcd碼mov a,temp1 ; 取出百位cjne a,#00h,next ; 百位不為0則轉(zhuǎn)nextmov temp1,#0ch ; 為0則不顯mov a,temp2 ; 取出十位cjne a,#00h,next mov temp2,#0ch ; 十位為0也不顯next: ret ; 小數(shù)部分乘以625轉(zhuǎn)換子程序muld:mov b,#71hmul abmov r7,amov r6,b mov b,#02hmul abadd a,r6mov r6,aret ; 寫(xiě)字節(jié)到18b20子程序write: mov r3,#8 ; 一個(gè)字節(jié)共8位wr1: setb p3.7 ; 先釋放總線mov r4,#8rrc a ; 把要寫(xiě)的字節(jié)的最低位右環(huán)移到c中clr p3.7 ; 寫(xiě)開(kāi)始wr3:djnz r4,wr3 ; 保持低電平015us,等待mov p3.7,c ; 將c中的位寫(xiě)到dq總線上mov r4,#20 djnz r4,$ ; 18b20在15us60us期間對(duì)dq總線進(jìn)行采樣djnz r3,wr1 ; 判斷8位是

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論