版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 應(yīng)用科技學(xué)院 單片機(jī)課程設(shè)計(jì)報(bào)告 設(shè)計(jì)題目:遠(yuǎn)程溫度監(jiān)控系統(tǒng)設(shè)計(jì) 專業(yè)班級(jí):11級(jí)電子科學(xué)與技術(shù)2班 組名: 醬油隊(duì) 組 員: 湯飛 劉嘉麟 摘要隨著時(shí)代的進(jìn)步和發(fā)展,數(shù)據(jù)采集系統(tǒng)是將現(xiàn)場(chǎng)采集到的數(shù)據(jù)進(jìn)行處理、傳輸顯示、儲(chǔ)存等操作。數(shù)據(jù)采集系統(tǒng)主要功能是把模擬信號(hào)變成數(shù)字信號(hào),并進(jìn)行分析、處理 、存儲(chǔ)和顯示。溫度數(shù)據(jù)采集系統(tǒng)廣泛的應(yīng)用于人們的日常生活中。本文基于89S51單片機(jī)的測(cè)溫系統(tǒng),詳細(xì)描述了利用數(shù)字溫度傳感器DS18B20開發(fā)測(cè)溫系統(tǒng)的過程,重點(diǎn)對(duì)傳感器在單片機(jī)下的硬件連接,軟件編程以及各模塊系統(tǒng)流程進(jìn)行了詳盡分析,對(duì)各部分的電路也一一進(jìn)行了介紹,該系統(tǒng)可以方便的實(shí)現(xiàn)實(shí)現(xiàn)溫度采集和顯
2、示,并可根據(jù)需要任意設(shè)定上下限報(bào)警溫度,它使用起來相當(dāng)方便,具有精度高、量程寬、靈敏度高、體積小、功耗低等優(yōu)點(diǎn),適合于我們?nèi)粘I詈凸ぁ⑥r(nóng)業(yè)生產(chǎn)中的溫度測(cè)量,也可以當(dāng)作溫度處理模塊嵌入其它系統(tǒng)中,作為其他主系統(tǒng)的輔助擴(kuò)展。DS18B20與AT89C51結(jié)合實(shí)現(xiàn)最簡(jiǎn)溫度檢測(cè)系統(tǒng),該系統(tǒng)結(jié)構(gòu)簡(jiǎn)單,抗干擾能力強(qiáng),適合于惡劣環(huán)境下進(jìn)行現(xiàn)場(chǎng)溫度測(cè)量,有廣泛的應(yīng)用前景。 本文主要介紹了利用labview實(shí)現(xiàn)溫度采集系統(tǒng)的設(shè)計(jì)過程,系統(tǒng)結(jié)構(gòu)時(shí)利用了labview的虛擬儀器技術(shù),由labview虛擬系統(tǒng)自生成溫度信號(hào),通過溫度的采集實(shí)現(xiàn)對(duì)溫度數(shù)據(jù)的采集,預(yù)處理,分析,儲(chǔ)存和顯示。系統(tǒng)采用DS18B
3、20數(shù)字溫度傳感器和STC公司的AT89S51單片機(jī)設(shè)計(jì)成智能溫度采集模塊,由采集模塊組成單點(diǎn)溫度測(cè)量系統(tǒng)采集環(huán)境,測(cè)得數(shù)據(jù)經(jīng)串口傳送給計(jì)算機(jī)。創(chuàng)新之處采用虛擬儀器技術(shù),利用LabVIEW軟件編寫相應(yīng)軟件,控制各采集模塊進(jìn)行溫度關(guān)鍵詞:?jiǎn)纹瑱C(jī);溫度檢測(cè);AT89S51;DS18B20,labview,串口; 一、引言4二、硬件設(shè)計(jì)5三、系統(tǒng)設(shè)計(jì)5四、上位機(jī)labview設(shè)計(jì)10五、下位機(jī)程序設(shè)計(jì)13六、系統(tǒng)調(diào)試15附錄D: 全部程序清單18一、引言 隨著科技的不斷發(fā)展,現(xiàn)代社會(huì)對(duì)各種信息參數(shù)的準(zhǔn)確度和精確度的要求都有了幾何級(jí)的增長(zhǎng),而如何準(zhǔn)確而又迅速的獲得這些參數(shù)就需要受
4、制于現(xiàn)代信息基礎(chǔ)的發(fā)展水平。在三大信息信息采集(即傳感器技術(shù))、信息傳輸(通信技術(shù))和信息處理(計(jì)算機(jī)技術(shù))中,傳感器屬于信息技術(shù)的前沿尖端產(chǎn)品,尤其是溫度傳感器技術(shù),在我國各領(lǐng)域已經(jīng)引用的非常廣泛,可以說是滲透到社會(huì)的每一個(gè)領(lǐng)域,人民的生活與環(huán)境的溫度息息相關(guān),在工業(yè)生產(chǎn)過程中需要實(shí)時(shí)測(cè)量溫度,在農(nóng)業(yè)生產(chǎn)中也離不開溫度的測(cè)量,因此研究溫度的測(cè)量方法和裝置具有重要的意義。由單片機(jī)集成電路構(gòu)成的溫度傳感器的種類越來越多,測(cè)量的精度越來越高,響應(yīng)時(shí)間越來越短,因其使用方便、無需變換電路等特點(diǎn)已經(jīng)得到了廣泛的應(yīng)用。隨著社會(huì)的發(fā)展、科技的進(jìn)步以及人們生活水平的逐步提高,各種方便于生產(chǎn)的自動(dòng)控制系統(tǒng)開始
5、進(jìn)入了人們的生活,以單片機(jī)為核心的溫度采集系統(tǒng)就是其中之一。同時(shí)也標(biāo)志了自動(dòng)控制領(lǐng)域成為了數(shù)字化時(shí)代的一員。它實(shí)用性強(qiáng),功能齊全,技術(shù)先進(jìn),使人們相信這是科技進(jìn)步的成果。溫度是工業(yè)控制中主要的被控參數(shù)之一,特別是在冶金、化工、建材、食品、機(jī)械、石油等工業(yè)中,具有舉足重輕的作用。隨著電子技術(shù)和微型計(jì)算機(jī)的迅速發(fā)展,微機(jī)測(cè)量和控制技術(shù)得到了迅速的發(fā)展和廣泛的應(yīng)用。單片機(jī)具有處理能強(qiáng)、運(yùn)行速度快、功耗低等優(yōu)點(diǎn),應(yīng)用在溫度測(cè)量與控制方面,控制簡(jiǎn)單方便,測(cè)量范圍廣,精度較高。 測(cè)量溫度的關(guān)鍵是溫度傳感器,溫度傳感器的發(fā)展經(jīng)歷了三個(gè)發(fā)展階段: 傳統(tǒng)的分立式溫度傳感器 模擬集成溫度傳感器
6、 智能集成溫度傳感器。 遠(yuǎn)程監(jiān)測(cè)的關(guān)鍵是人機(jī)界面,軟件設(shè)計(jì)的虛擬器界面也越來越友好,蘋果公司的Macintosh開發(fā)了G語言,這些為功能強(qiáng)大的專業(yè)虛擬儀器軟件的出現(xiàn)提供了必要基礎(chǔ)。不久,NI為基于計(jì)算機(jī)的測(cè)量和自動(dòng)化開發(fā)出了LABVIEW軟件包。 LABVIEW的功能不斷豐富和強(qiáng)大。LABVIEW用來進(jìn)來數(shù)據(jù)采集和控制、數(shù)據(jù)分析和數(shù)據(jù)表達(dá),使工程師和科學(xué)家能充分利用PC的功能,快速簡(jiǎn)便地完成自己的工作。經(jīng)過多年的不斷充實(shí),LABVIEW成為豐富、強(qiáng)大的實(shí)用工具軟件包,內(nèi)部配有GPIB、VXI、串口和插入式DAQ板的庫函數(shù)以及全球幾百家廠商的儀器驅(qū)動(dòng)程序。圍繞這些核心軟件還陸續(xù)開發(fā)出多
7、種附件。二、硬件設(shè)計(jì)遠(yuǎn)程溫度監(jiān)控系統(tǒng)是由上位機(jī)和溫度測(cè)量單元組成。上位機(jī)即計(jì)算機(jī),實(shí)現(xiàn)對(duì)溫度測(cè)量單元控制,通過串口程序發(fā)送命令、接收測(cè)量數(shù)據(jù),對(duì)測(cè)量數(shù)據(jù)處理顯示。溫度測(cè)量單元,接收上位機(jī)命令,按照命令進(jìn)行溫度測(cè)量和數(shù)據(jù)傳輸?shù)炔僮鳌?三、系統(tǒng)設(shè)計(jì) 3.1系統(tǒng)設(shè)計(jì)方案 本設(shè)計(jì)以兩個(gè)獨(dú)立通道進(jìn)行設(shè)計(jì),從傳感器來的模擬輸入信號(hào),經(jīng)過信號(hào)調(diào)理后,輸入到DS18B20數(shù)據(jù)采集卡,然后經(jīng)過串口總線送入PC機(jī),由軟件進(jìn)行數(shù)據(jù)處理,包括采樣波形的實(shí)時(shí)顯示,并進(jìn)行歷史數(shù)據(jù)保存,邊采集邊保存,還有實(shí)時(shí)報(bào)警并記錄處理等功能。 實(shí)現(xiàn)單點(diǎn)溫度測(cè)量,采用如圖3-1所示測(cè)控系統(tǒng)。上位機(jī)和溫度測(cè)量單元采用RS232串行通信標(biāo)準(zhǔn)
8、。圖中上位機(jī)發(fā)送的信息可以被溫度測(cè)量單元所接收,溫度測(cè)量單元發(fā)送的信息也可以被上位機(jī)接收。RXD下位機(jī)上位機(jī)TXD 圖3-1 3.2下位機(jī)組成 該部分主要包括數(shù)據(jù)采集技術(shù)概述,傳感器,輸入信號(hào)的分析、調(diào)理以及測(cè)量系統(tǒng)的選擇。采用數(shù)字溫度傳感器DS18B20,利用DS18B20不需要A/D轉(zhuǎn)換,課直接進(jìn)行溫度采集顯示,報(bào)警的數(shù)字溫度計(jì)設(shè)計(jì)。包括傳感器數(shù)據(jù)采集電路,溫度顯示電路,上下限報(bào)警調(diào)整電路,單片機(jī)主板電路等組成。 系統(tǒng)框圖主要由主控制器、單片機(jī)復(fù)位、報(bào)警按鍵設(shè)置、時(shí)鐘振蕩、LED顯示、溫度傳感器組成。系統(tǒng)框圖如圖3-2所示:圖3-2 系統(tǒng)基本方框圖1. 主控制器單片機(jī)AT89C51具有低電
9、壓供電和體積小等特點(diǎn),四個(gè)端口只需要兩個(gè)口就能滿足電路系統(tǒng)的設(shè)計(jì)需要,很適合便攜手持式產(chǎn)品的設(shè)計(jì)使用系統(tǒng)可用二節(jié)電池供電。圖 3-2-1 最小系統(tǒng)圖2. 顯示電路顯示電路采用LED液晶顯示數(shù)碼管,顯示電路是使用的串口顯示,這種顯示最大的優(yōu)點(diǎn)就是使用口資源比較少,只用p0口的發(fā)送和接收,四只數(shù)碼管采用74LS164右移寄存器驅(qū)動(dòng),顯示比較清晰。 圖3-2-2 3. 溫度傳感器溫度傳感器采用美國DALLAS半導(dǎo)體公司生產(chǎn)的DS18B20溫度傳感器。DS18B20輸出信號(hào)全數(shù)字化。便于單片機(jī)處理及控制,在0100 攝氏度時(shí),最大線形偏差小于1 攝氏度,采用單總線的數(shù)據(jù)傳輸,可直接與計(jì)算機(jī)連接。用AT
10、89S51芯片控制溫度傳感器DS18B20進(jìn)行實(shí)時(shí)溫度檢測(cè)并顯示,能夠?qū)崿F(xiàn)快速測(cè)量環(huán)境溫度,并可以根據(jù)需要設(shè)定上下限報(bào)警溫度。獲得的數(shù)據(jù)可以通過MAX232芯片與計(jì)算機(jī)的RS232接口進(jìn)行串口通信,方便的采集和整理時(shí)間溫度數(shù)據(jù)。 圖3-2-3 DS18B20和單片機(jī)的接口連接四、上位機(jī)labview設(shè)計(jì) 4.1結(jié)構(gòu)框圖 結(jié)構(gòu)主要四個(gè)部分,為數(shù)據(jù)采集、波形顯示、數(shù)據(jù)顯示和警報(bào)系統(tǒng)框圖如圖4-1所示: 圖4-14.2 系統(tǒng)工作原理 本次設(shè)計(jì)是簡(jiǎn)易的溫度采集,思路是“采集-顯示-統(tǒng)計(jì)-報(bào)警”,由一個(gè)隨機(jī)選作為溫度的產(chǎn)生,由波形圖示顯示溫度的變化,設(shè)定限定值,用比較器件比較,超出設(shè)定值時(shí)報(bào)警。4.2.
11、1 單元設(shè)計(jì)模塊1) 串口通信 溫度的采集由串口傳輸所得,需要進(jìn)行串口通信。 圖4-2 2)溫度顯示 溫度顯示有三個(gè)器件:波形顯示、溫度計(jì)、溫度顯示。 圖4-2-1 3)限定溫度報(bào)警 由比較器來比較實(shí)時(shí)溫度,大于限定溫度時(shí)報(bào)警。 圖4-2-2 4.2.2 單元模塊的鏈接 圖4-2-34.3 上位機(jī)界面 五、下位機(jī)程序設(shè)計(jì)DSl8B20的主要數(shù)據(jù)元件有:64位激光Lasered ROM,溫度靈敏元件和非易失性溫度告警觸發(fā)器TH和TL。DSBl820可以從單總線獲取電源,當(dāng)信號(hào)線為高電平時(shí),將能量貯存在內(nèi)部電容器中;當(dāng)單信號(hào)線為低電平時(shí),將該電源斷開,直到信號(hào)線變?yōu)楦唠娖街匦陆由霞纳?電容)電源為
12、止。此外,還可外接5 V電源,給DSl8820供電。DSl8820的供電方式靈活,利用外接電源還可增加系統(tǒng)的穩(wěn)定性和可靠性。圖9為讀取數(shù)據(jù)流程圖。開始DS18B20的初始化啟動(dòng)溫度轉(zhuǎn)換讀取溫度寄存器跳過讀序列號(hào)的操作跳過讀序列號(hào)的操作DS18B20的初始化RETLOW-低八位 HIGH-高八位圖6-1 讀取數(shù)據(jù)的流程圖讀出溫度數(shù)據(jù)后,LOW的低四位為溫度的小數(shù)部分,可以精確到0.0625,LOW的高四位和HIGH的低四位為溫度的整數(shù)部分,HIGH的高四位全部為1表示負(fù)數(shù),全為0表示正數(shù)。所以先將數(shù)據(jù)提取出來,分為三個(gè)部分:小數(shù)部分、整數(shù)部分和符號(hào)部分。小數(shù)部分進(jìn)行四舍五入處理:大于0.5的話,
13、向個(gè)位進(jìn)1;小于0.5的時(shí)候,舍去不要。當(dāng)數(shù)據(jù)是個(gè)負(fù)數(shù)的時(shí)候,顯示之前要進(jìn)行數(shù)據(jù)轉(zhuǎn)換,將其整數(shù)部分取反加一。還因?yàn)镈S18B20最低溫度只能為-55,所以可以將整數(shù)部分的最高位換成一個(gè)“-”,表示為負(fù)數(shù)。圖10為溫度數(shù)據(jù)處理程序的流程圖。開始提取整數(shù)部分存入HT提取小數(shù)部分存入LTLT右移三位,將精度降低到0.5攝氏度HT+將小數(shù)部分整數(shù)化提取符號(hào)部分存入signLT是否大于5Sign=?0XF0RET負(fù)數(shù)表示flag=1 HT=HT+1YNNY圖6-1-1 溫度數(shù)據(jù)處理流程圖六、系統(tǒng)調(diào)試6.1上位機(jī)界面測(cè)試6.2系統(tǒng)運(yùn)行以及分析整個(gè)系統(tǒng)能正常運(yùn)行,能顯示實(shí)時(shí)溫度、計(jì)算平均值,當(dāng)溫度超過溫度上
14、限時(shí),上限報(bào)警器會(huì)顯示紅色報(bào)警。 截圖實(shí)時(shí)溫度是33.2°。6.3下位機(jī)仿真運(yùn)行參考文獻(xiàn) 【1】張桐、陳國順、王正林,精通LabVIEW程序設(shè)計(jì)北京:電子工業(yè)出版社,2008.12. 【2】張毅剛、彭喜元,單片機(jī)原理與應(yīng)用設(shè)計(jì)北京:電子工業(yè)出版社,2008.4. 【3】唐國民、沈爾云,C語言程序設(shè)計(jì):中國鐵道出版社,2006.9. 附錄D: 全部程序清單#include<reg51.h>#include"ds1302.h"#include"ds18b20.h"#define GPIO_DIG P0/-重定義關(guān)鍵詞-/#define
15、uchar unsigned char#define uint unsigned intsbit LSA=P20;sbit LSB=P21;sbit LSC=P22;sbit key1=P32;sbit P27=P27;uchar data temp_data2=0x00,0x00;/讀出溫度暫放/uchar data display3=0x01,0x02,0x00; /顯示單元數(shù)據(jù),共4個(gè)數(shù)據(jù),一個(gè)運(yùn)算暫存用unsigned char t;unsigned char dis;unsigned char mode=0;unsigned char wendu=50;unsigned char P
16、uZh2 ="中"#ifndef _DS18B20_H_#define _DS18B20_H_/-秒分時(shí)日月周年 最低位讀寫位;-/uchar code READ_RTC_ADDR7 = 0x81, 0x83, 0x85, 0x87, 0x89, 0x8b, 0x8d; uchar code WRITE_RTC_ADDR7 = 0x80, 0x82, 0x84, 0x86, 0x88, 0x8a, 0x8c;/-DS1302時(shí)鐘初始化2013年1月1日星期二12點(diǎn)00分00秒。-/-存儲(chǔ)順序是秒分時(shí)日月周年,存儲(chǔ)格式是用BCD碼-/uchar TIME7 = 0, 0, 0
17、x12, 0x01, 0x01, 0x02, 0x13;/-定義ds1302使用的IO口-/sbit DQ=P37; extern uchar data temp_data2; /加入全局變量 /unsigned char s;/-定義全局變量-/unsigned char code DIG_CODE17=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的顯示碼unsigned char DisplayData6;/用來
18、存放要顯示的8位數(shù)的值/-聲明全局變量-/void DigDisplay();void work_temp(); void UsartConfiguration();/* 函 數(shù) 名 : main* 函數(shù)功能 : 主函數(shù)* 輸 入 : 無* 輸 出 : 無*/void main() unsigned char receiveData,cont=0; TMOD=0x01; TH0=(65536-60000)/256; TL0=(65536-60000)%256; ET0=1; IT0=0; EX0=1; EA=1; TR0=1; UsartConfiguration();/串口通信初始化 ow_
19、reset(); /開機(jī)先轉(zhuǎn)化一次 write_byte(0xCC); /發(fā)出Skip ROM命令 write_byte(0x44); /發(fā)轉(zhuǎn)換命令Ds1302Init();SBUF = PuZh0;while(1) read_temp(); / 讀出DS18B20的溫度數(shù)據(jù) work_temp(); / 處理溫度數(shù)據(jù)Ds1302ReadTime();DisplayData0 = DIG_CODETIME2/16;/時(shí)DisplayData1 = DIG_CODETIME2&0x0f; DisplayData2 = DIG_CODETIME1/16;/分DisplayData3 = D
20、IG_CODETIME1&0x0f;/DisplayData4 = DIG_CODEdis%10000/1000; / DisplayData5 = DIG_CODEdis% 1000 / 100 | 0x80;/DisplayData4 = DIG_CODETIME0/16;/秒/DisplayData5 = DIG_CODETIME0&0x0f;DigDisplay(); /* for(s=0; s<2; s+)SBUF = PuZhs; /將要發(fā)送的數(shù)據(jù)放入到發(fā)送寄存器while(!TI); /等待發(fā)送數(shù)據(jù)完成TI=0; /清除發(fā)送完成標(biāo)志位 */if(RI = 1
21、)/查看是否接收到數(shù)據(jù) cont+; if(cont<3) receiveData = SBUF;/讀取數(shù)據(jù)RI = 0;/清除標(biāo)志位TIMEcont = receiveData; Ds1302Init(); else cont=0; receiveData = SBUF;/讀取數(shù)據(jù) RI = 0;/清除標(biāo)志位 wendu= receiveData; /* 函 數(shù) 名 : DigDisplay* 函數(shù)功能 : 使用數(shù)碼管顯示* 輸 入 : 無* 輸 出 : 無*/void DigDisplay() unsigned char i;unsigned int j;for(i=0;i<6
22、;i+)switch(i) /位選,選擇點(diǎn)亮的數(shù)碼管,case(0):LSA=0;LSB=0;LSC=0; break;/顯示第0位case(1):LSA=1;LSB=0;LSC=0; break;/顯示第1位case(2):LSA=0;LSB=1;LSC=0; break;/顯示第2位case(3):LSA=1;LSB=1;LSC=0; break;/顯示第3位case(4):LSA=0;LSB=0;LSC=1; break;/顯示第4位case(5):LSA=1;LSB=0;LSC=1; break;/顯示第5位 /case(6):/LSA=0;LSB=1;LSC=1; break;/顯示
23、第6位/case(7):/LSA=1;LSB=1;LSC=1; break;/顯示第7位GPIO_DIG=DisplayDatai;/發(fā)送段碼 j=1000; /掃描間隔時(shí)間設(shè)定 while(j-);GPIO_DIG=0x00;/消隱void work_temp() float tp; dis=temp_data1;dis<<=8;dis=dis|temp_data0;/tt=dis*0.0625; /dis= tt*100+0.5; if(dis< 0)/當(dāng)溫度值為負(fù)數(shù) /DisplayData0 = 0x40; /因?yàn)樽x取的溫度是實(shí)際溫度的補(bǔ)碼,所以減1,再取反求出原碼d
24、is=dis-1;dis=dis;tp=dis;dis=tp*0.0625*10+0.5; else /DisplayData0 = 0x00;tp=dis;/因?yàn)閿?shù)據(jù)處理有小數(shù)點(diǎn)所以將溫度賦給一個(gè)浮點(diǎn)型變量/如果溫度是正的那么,那么正數(shù)的原碼就是補(bǔ)碼它本身dis=tp*0.0625*10+0.5;DisplayData4 = DIG_CODEdis/100;DisplayData5 = DIG_CODEdis % 100 / 10 | 0x80;t=(dis /100)*10+(dis % 100 / 10);PuZh0 = dis/ 100;PuZh1 =dis % 100 / 10; i
25、f(t>wendu) P27=0; else P27=1;/*DisplayData1 = DIG_CODEtemp / 10000;DisplayData2 = DIG_CODEtemp % 10000 / 1000;DisplayData3 = DIG_CODEtemp % 1000 / 100 | 0x80;DisplayData4 = DIG_CODEtemp % 100 / 10;DisplayData5 = DIG_CODEtemp % 10; DigDisplay();*/ /掃描顯示 void UsartConfiguration()SCON=0X50;/設(shè)置為工作方式1
26、TMOD=0X20;/設(shè)置計(jì)數(shù)器工作方式2PCON=0X80;/波特率加倍TH1=0XF3; /計(jì)數(shù)器初始值設(shè)置,注意波特率是4800的TL1=0XF3;/ES=1;/打開接收中斷/EA=1;/打開總中斷TR1=1; /打開計(jì)數(shù)器 void ti(void) interrupt 0 using 0 EX0=0; EX0=0; if(mode<3) mode=mode+1; else mode=0; if(mode=1) TIME2 = P1; Ds1302Init(); while(key1=0); if(mode=2) TIME1 = P1; Ds1302Init(); while(k
27、ey1=0);if(mode=3) wendu=P1; while(key1=0);EX0=1;void timer(void) interrupt 1 TH0=(65536-60000)/256; TL0=(65536-60000)%256; if(TI=1) SBUF = PuZh0; /將要發(fā)送的數(shù)據(jù)放入到發(fā)送寄存器 TI=0; /清除發(fā)送完成標(biāo)志位/*void tigdd(void) interrupt 4 if(TI=1) SBUF = PuZh0; /將要發(fā)送的數(shù)據(jù)放入到發(fā)送寄存器 TI=0; /清除發(fā)送完成標(biāo)志位if(RI = 1)/查看是否接收到數(shù)據(jù) cont+; if(con
28、t<3) receiveData = SBUF;/讀取數(shù)據(jù)RI = 0;/清除標(biāo)志位TIMEcont = receiveData; Ds1302Init(); else cont=0; receiveData = SBUF;/讀取數(shù)據(jù) RI = 0;/清除標(biāo)志位 wendu= receiveData; RI=0; /11us延時(shí)函數(shù)void delay(uint t) for(;t>0;t-); /DS18B20復(fù)位函數(shù)void ow_reset(void) char presence=1; while(presence) while(presence) DQ=1; _nop_()
29、; _nop_(); DQ=0; delay(50); /550us DQ=1; delay(6); /66us presence=DQ;delay(45); /延時(shí)500uspresence=DQ; DQ=1; /DS18B20寫命令函數(shù) void write_byte(uchar val) uchar i; for(i=8;i>0;i-) DQ=1;_nop_();_nop_();DQ=0;_nop_();_nop_();_nop_();_nop_();_nop_(); /5usDQ=val&0x01;delay(6);val=val/2; DQ=1; delay(1); /
30、從總線上讀取一個(gè)字節(jié) uchar read_byte(void) uchar i; uchar value=0; for(i=8;i>0;i-) DQ=1; _nop_();_nop_();value>>=1;DQ=0; _nop_();_nop_();_nop_();_nop_(); /4usDQ=1;_nop_();_nop_();_nop_();_nop_(); /4usif(DQ) value|=0x80;delay(6); /66us DQ=1;return(value); /讀出溫度函數(shù) void read_temp() ow_reset(); /總線復(fù)位 wri
31、te_byte(0xCC); /發(fā)出Skip ROM指令 write_byte(0xBE); /發(fā)讀命令 temp_data0=read_byte(); /溫度低8位 temp_data1=read_byte(); /溫度高8位 ow_reset(); write_byte(0xCC); /發(fā)出Skip ROM命令 write_byte(0x44); /發(fā)轉(zhuǎn)換指令 /溫度數(shù)據(jù)處理函數(shù)/* work_temp() float tt; uchar n=0; display2=temp_data1;display2<<=8;display2=display4|temp_data0;tt=
32、display2*0.0625; display2= tt*10+0.5; display1=display2/100; display0=display2/10%10; */ /主函數(shù) /* main() Disdata=0xff; /初始化端口 discan=0xff; ow_reset(); /開機(jī)先轉(zhuǎn)化一次 write_byte(0xCC); /發(fā)出Skip ROM命令 write_byte(0x44); /發(fā)轉(zhuǎn)換命令 while(1) read_temp(); / 讀出DS18B20的溫度數(shù)據(jù) work_temp(); / 處理溫度數(shù)據(jù) */* 函 數(shù) 名 : Ds1302Write
33、* 函數(shù)功能 : 向DS1302命令(地址+數(shù)據(jù))* 輸 入 : addr,dat* 輸 出 : 無*/void Ds1302Write(uchar addr, uchar dat)uchar n;RST = 0;_nop_();SCLK = 0;/先將SCLK置低電平。_nop_();RST = 1; /然后將RST(CE)置高電平。_nop_();for (n=0; n<8; n+)/開始傳送八位地址命令DSIO = addr & 0x01;/數(shù)據(jù)從低位開始傳送addr >>= 1;SCLK = 1;/數(shù)據(jù)在上升沿時(shí),DS1302讀取數(shù)據(jù)_nop_();SCLK = 0;_nop_();for (n=0; n<8; n
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度出口貨物出口許可證與憑證辦理合同3篇
- 2025年文化藝術(shù)展廳展示策劃與運(yùn)營(yíng)合同3篇
- 二零二五年度廚房設(shè)備安全檢測(cè)與維護(hù)合同4篇
- 二零二五年度國有企業(yè)勞動(dòng)合同簽訂及員工培訓(xùn)與晉升協(xié)議3篇
- 2025年度新型門窗研發(fā)與安裝項(xiàng)目合同3篇
- 2025年滅鼠滅蟑專業(yè)防治與社區(qū)共建合同3篇
- 2025年度農(nóng)產(chǎn)品加工品廣告宣傳合同4篇
- 2025年度個(gè)人車輛抵押借款協(xié)議(車輛抵押貸款合同終止協(xié)議)4篇
- 二零二五年度新能源儲(chǔ)能技術(shù)研發(fā)合同范本
- 2025年美團(tuán)外賣合作商家服務(wù)品質(zhì)監(jiān)督合同4篇
- 9.1增強(qiáng)安全意識(shí) 教學(xué)設(shè)計(jì) 2024-2025學(xué)年統(tǒng)編版道德與法治七年級(jí)上冊(cè)
- 《化工設(shè)備機(jī)械基礎(chǔ)(第8版)》全套教學(xué)課件
- 人教版八年級(jí)數(shù)學(xué)下冊(cè)舉一反三專題17.6勾股定理章末八大題型總結(jié)(培優(yōu)篇)(學(xué)生版+解析)
- 2024屆上海高考語文課內(nèi)古詩文背誦默寫篇目(精校版)
- DL-T5024-2020電力工程地基處理技術(shù)規(guī)程
- 2024年度-美團(tuán)新騎手入門培訓(xùn)
- 初中數(shù)學(xué)要背誦記憶知識(shí)點(diǎn)(概念+公式)
- 駕照體檢表完整版本
- 農(nóng)產(chǎn)品農(nóng)藥殘留檢測(cè)及風(fēng)險(xiǎn)評(píng)估
- 農(nóng)村高中思想政治課時(shí)政教育研究的中期報(bào)告
- 20100927-宣化上人《愣嚴(yán)咒句偈疏解》(簡(jiǎn)體全)
評(píng)論
0/150
提交評(píng)論