單片機課程設計-數字溫度計_第1頁
單片機課程設計-數字溫度計_第2頁
單片機課程設計-數字溫度計_第3頁
單片機課程設計-數字溫度計_第4頁
單片機課程設計-數字溫度計_第5頁
已閱讀5頁,還剩11頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、武 夷 學 院 課程設計報告課程名稱:單片機及嵌入式技術設計題目:數字溫度計學生班級:13計算機科學與技術(1)班學生姓名:陳圣盛、周鵬飛、劉犇指導教師:焦金濤完成日期:2015-12-25數學與計算機學院 課程設計項目研究報告目 錄第 1 章 項目簡介31.1 項目名稱31.2 開發人員31.3 指導教師3第 2 章 項目研究意義32.1 課程設計概述32.2 需求分析32.3 研究意義4第 3 章 采用的技術43.1 課程設計的方案設計論證43.2 重要算法的設計、流程描述7第4 章 課程設計項目進度表8第5 章 課程設計任務分配表8第6 章 系統設計961 程序設計思想962 程序最終實

2、現結果9第7 章 源程序10第8 章 設計心得15第9 章 參考文獻15 數學與計算機學院 第 1 章 項目簡介1.1 項目名稱 數字溫度計1.2 開發人員 13計科1班 陳圣盛(組長)、周鵬飛、劉犇1.3 指導教師 焦金濤第 2 章 項目研究意義2.1 課程設計概述 隨著現代信息技術的飛速發展和傳統工業改造的逐步實現能夠獨立工作的溫度檢測和顯示系統應用于諸多領域。傳統的溫度檢測以熱敏電阻為溫度敏感元件。熱敏電阻的成本低,但需后續信號處理電路,而且可靠性相對較差,測溫準確度低,檢測系統也有一定的誤差。與傳統的溫度計相比,這里設計的數字溫度計具有讀數方便,測溫范圍廣,測溫精確,數字顯示,適用范圍

3、寬等特點。選用STC89C52單片機作為主控制器件,實現溫度顯示。通過DSl8B20直接讀取被測溫度值,該器件的物理化學性能穩定,線性度較好,測量溫度范圍寬,測量精度高 DS18B20 的測量范圍為 -55 + 125 ; 在 -10+ 85°C 范圍內,精度為 ± 0.5°C 。2.2 需求分析 目前溫度計的發展很快,從原始的玻璃溫度計管溫度計發展到了現在的熱電阻溫度計、熱電偶溫度計、數字溫度計、電子溫度計等等。隨著各類電子產品的便攜化,可用于片上測溫的集成溫度傳感器的發展便越趨灼熱化。傳感器屬于信息技術的前沿尖端產品,尤其是溫度傳感器被廣泛用于工農 業生產、科

4、學研究和生活等領域,數量高居各種傳感器之首。我們所設計的數字溫度計精度較高,能直觀地顯示溫度,并且有警報系統,在蔬菜大棚、工作車間、室溫檢測等,都有較高使用價值。2.3 研究意義 目前的溫度計中傳感器是它的重要組成部分,它的精度、靈敏度基本決定了溫度計的精度、測量范圍、控制范圍和用途等。傳感器應用極其廣泛,目前已經研制出多種新型傳感器。但是,作為應用系統設計人員需要根據系統要求選用適宜的傳感器,并與自己設計的系統連接起來,從而構成性能優良的監控系統。伴隨著我們軟件開發水平的提高,我們有必加深對溫度傳感器的認識,要進一步提高溫度計設計上的智能化程度。第 3 章 采用的技術3.1 課程設計的方案設

5、計論證我們所設計的數字溫度計主要使用到了51單片機中的3個器件:蜂鳴器、發光二極管LED顯示器和DS18B20溫度傳感器。首先通過溫度傳感器獲取周圍的環境溫度,在LED上直觀地顯示出來,倘若溫度過高、過低,蜂鳴器就會報警。蜂鳴器:蜂鳴器的工作電路如圖3-1.1所示,蜂鳴器電流一般比較大,單片機的I/O 口是無法直接驅動,所以要利用放大電路來驅動,一般使用三極管來放大電流;通過P2.3來控制蜂鳴器,當我們需要蜂鳴器工作的時候輸入高電平,而蜂鳴器不需要鳴叫的時候,將I/O 口設置為低電平即可。在我們不用蜂鳴器的時候,注意將I/O設置為低電平,為了防止漏電。圖3-1 蜂鳴器驅動模塊發光二極管LED顯

6、示器:在51單片機中,一共使用兩個74HC573驅動段位、位選,使用16個IO口。在代碼中,段位和位選都通過P0端口寫入數據,通過P2.6口控制段位,通過P2.7口控制位選。動態顯示數據過程中,我們先通過P0口寫入字形碼、P2.6口鎖存字形碼數據,寫入的數據同時傳給每一個LED燈。之后通過P0口寫入位選信號, P2.7寫1,寫0,鎖存數據,寫入的數據指定了字形碼顯示的位置。在這個實驗設計過程中,我們僅使用到了3個LED數碼管。圖3-2數碼管驅動電路DS18B20:單線數字溫度傳感器,即“一線器件”,其具有獨特的優點:  (1)采用單總線的接口方式與微處理器連接時僅需要一條口

7、線即可實現微處理器與 DS18B20 的雙向通訊。 單總線具有經濟性好,抗干擾能力強,適合于惡劣環境的現場溫度測量,使用方便等優點,使用戶可輕松地組建傳感器網絡,為測量系統的構建引入全新概念。 ( 2 )測量溫度范圍寬,測量精度高 DS18B20的測量范圍為-55+ 125 ; 在-10+ 85°C范圍內,精度為±0.5°C 。 單總線即只有一根數據線,系統中的數據交換,控制都由這根線完成。 單總線通常要求外接一個約為 4.7K10K 的上拉電阻,這樣,當總線閑置時其狀態為高電平。 圖3-3溫度測量IC DS18B20經轉換所得的溫度值以二字節補碼形式存放在高速暫

8、存存儲器的第0和第1個字節。所以當我們只想簡單的讀取溫度值的時候,只用讀取暫存器中的第0和第1個字節就可以了。 簡單的讀取溫度值的步驟如下: 跳過ROM操作 發送溫度轉換命令 跳過ROM操作 發送讀取溫度命令 讀取溫度值單片機:本次設計使用單片機芯片STC89C52 STC89C52的工作特性: 主要特性: ·與MCS-51 兼容 ·8K字節可編程閃爍存儲器 ·壽命:1000寫/擦循環 ·數據保留時間:10年 ·全靜態工作:0Hz-24Hz ·三級程序存儲器鎖定 ·512內部RAM 圖3-4 STC89C52引腳圖·

9、;32可編程I/O線 ·兩個16位定時器/計數器 ·5個中斷源 ·可編程串行通道 ·低功耗的閑置和掉電模式 ·片內振蕩器和時鐘電路3.2 重要算法的設計、流程描述開始 S51寄存器初始化18b20存在 N Y 溫度轉換命令讀取溫度發DS18B20復位命令發跳過ROM命令發溫度轉換開始命令 結束 圖3-2溫度提示 溫度數據處理理 圖 3-5 DS18B20初始化流程圖 圖3-6 溫度轉換流程圖 第4 章 課程設計項目進度表日期完成的工作2015.12.21方案確定,查找資料2015.12.22功能分析、代碼編寫2015.12.23調試程序、改進程

10、序、撰寫報告2015.12.24答辯考核2015.12.25交課程設計紙質和電子版材料第5 章 課程設計任務分配表成員座號項目內容序號陳圣盛26號1、 代碼編寫與修改2、可行性研究01周鵬飛15號1、 報告撰寫2、功能合理性分析02劉犇16號1、 程序調試及異常處理2、 方案擬定03第6 章 系統設計61 程序設計思想我們所設計的數字溫度計使用到了51單片機中的3個器件:蜂鳴器、發光二極管LED顯示器和DS18B20溫度傳感器。DS18B20溫度傳感器測量范圍大,測量數值相對精確,通過對這些器件我們可以制作一個既能顯示溫度,又有報警系統的數字溫度計。由于從器件DS18B20采用單總線的接口方式

11、與主機相連,一次只能讀取一位數據,對讀取到的數據,我們要進行轉換,順序為:bitucharunitfloat,對于最終獲取的float類型的數據,我們就可以很方便對它進行操作,通過求余、求模運算,實現LED數碼管逐個顯示數據;通過數值大小判斷,控制蜂鳴器的開關,最終實現數字溫度計的全部功能。62 程序最終實現結果 圖6-1實驗結果顯示 將數據燒錄到單片機之后的結果如圖所示,圖中所示溫度下,蜂鳴器發出警報。為了便于觀察,當溫度超過26攝氏度、低于24攝氏度,蜂鳴器都將發出警報,實際應用過程中,需要修改這一部分代碼。第7 章 源程序/初始化ROM操作指令(寫)存儲器操作指令(寫)數據傳輸(讀)#i

12、nclude <reg52.h>#define uchar unsigned char#define uint unsigned int#define ON 0#define OFF 1sbit FM=P23;sbit DS=P22; /接口定義uint temp; / 溫度值uchar flag1; / 標志sbit dula=P26;sbit wela=P27;unsigned char code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;unsi

13、gned char code table1=0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd, 0x87,0xff,0xef;void delay(uint count) /delay uint i; while(count) i=200; while(i>0) i-; count-; void dsreset(void) /初始化命令 uint i; DS=0;/DS表示P2.2口,這里通過單片機拉低電壓 i=103; /將總線拉低480us960us while(i>0)i-; DS=1; /然后拉高總線,若DS18B20做出反應會將在15us60us后將總

14、線拉低 i=4; /15us60us等待 while(i>0)i-;bit tmpreadbit(void) /讀取溫度(一位數據) uint i; bit dat; DS=0;i+; /i+ for delay DS=1;i+;i+;/拉低電平,之后提高,一段時間之后讀取數據(1us15us) dat=DS; i=8;while(i>0)i-;/等待時間(不進行操作) return (dat);uchar tmpread(void) /讀取溫度(8位-uchar) uchar i,j,dat; dat=0; for(i=1;i<=8;i+) j=tmpreadbit();

15、dat=(j<<7)|(dat>>1); /讀出的數據最低位在最前面,這樣剛好一個字節在DAT里 return(dat);/* 向18B20寫入一個字節* 輸入dat*/void tmpwritebyte(uchar dat) uint i; uchar j; bit testb; /定義一個位變量,如果是1,就寫1,如果不是就向D1820寫0 for(j=1;j<=8;j+)/一個字節8位數據,每次只能寫一個位 testb=dat&0x01;/依次將dat的每一位賦值給testb dat=dat>>1; if(testb) /write 1

16、DS=0; i+;i+; /大于1us(進行兩次i+,必定大于1us,小于15us) DS=1; i=8;while(i>0)i-; /小于60us else DS=0; /write 0 i=8;while(i>0)i-; /小于60us DS=1; i+;i+; /*讓18B20開始轉換溫度0x44*輸入com*/void tmpchange(void) /DS18B20 begin change dsreset(); delay(1); tmpwritebyte(0xcc); /跳過ROM操作命令 tmpwritebyte(0x44); /溫度轉換命令 /delay(100)

17、;/根據實際程序決定是否等待/*讀取溫度必要的操作*跳過ROM操作*發送溫度轉換指令(采樣)0x44*跳過ROM操作0xcc*發送讀取溫度命令0x33*讀取溫度值*/uint tmp() / 通過tmpread 獲取溫度,然后計算出補碼 float tt; uchar a,b;/獲取高低8位溫度 dsreset();/初始化 delay(1);/不進行操作 tmpwritebyte(0xcc); /跳過ROM操作命令 tmpwritebyte(0xbe); /發送讀取溫度命令 a=tmpread();/低8位 b=tmpread();/高8位 temp=b;/將2個8位的溫度裝到16位的tem

18、p里面 temp<<=8; temp=temp|a;/D18B20經轉換所得的溫度以2進制補碼形式存儲 tt=temp*0.0625; /默認為12位分辨率下,1位表示0.0625,750ms轉換一次 temp=tt*10+0.5; return temp;void readrom() /ROM操作read the serial uchar sn1,sn2; dsreset(); delay(1); tmpwritebyte(0x33); sn1=tmpread(); sn2=tmpread();void delay10ms() /delay uchar a,b; for(a=10

19、;a>0;a-) for(b=60;b>0;b-); /*P0口輸入對應的字形碼*輸入字形碼鎖存位選輸入鎖存顯示*P2.6、P2.7(74HC573鎖存器)鎖存器*P2.6段選、P2.7位選,當鎖存使能為高,輸出同步,使能變低,鎖存數據*動態顯示過程中,每盞燈是依次點亮的*/void display(uint temp)/顯示程序將獲取的溫度顯示在LED上 uchar A1,A2,A2t,A3,ser; ser=temp/10; SBUF=ser; A1=temp/100; A2t=temp%100; A2=A2t/10; A3=A2t%10; dula=0; P0=tableA1

20、;/顯示百位 dula=1; dula=0; wela=0; P0=0xfe; wela=1; wela=0; delay(1); dula=0; P0=table1A2;/顯示十位 dula=1; dula=0; wela=0; P0=0xfd; wela=1; wela=0; delay(1); P0=tableA3;/顯示個位 dula=1; dula=0; P0=0xfb; wela=1; wela=0; delay(1); if(temp>240&&temp<260) FM=OFF; else FM=ON; /蜂鳴器報警void main()uchar a;do tmpchange(); /delay(200);for(a=100;a>0;a-)/延遲(保持數碼管顯示) display(tmp(); whi

溫馨提示

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

評論

0/150

提交評論