單片機課程設計98714_第1頁
單片機課程設計98714_第2頁
單片機課程設計98714_第3頁
單片機課程設計98714_第4頁
單片機課程設計98714_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 課程設計報告 課 程 名 稱 單片機原理及接口技術課程設計院 部 名 稱 機電工程學院 專 業(yè) 電氣工程及其自動化 班 級 09電氣 (單) 學 號 0904207014 姓 名 程艷 指 導 教 師 高峰 金陵科技學院教務處制目錄目錄2摘要21 概述31.1 課程設計的意義31.2 設計的任務和要求32 系統(tǒng)總體方案及硬件設計42.1數(shù)字溫度計設計方案分析4方案一42.1.2 方案二42.2系統(tǒng)總體設計42.3系統(tǒng)模塊6主控制器62.3.2 顯示電路6溫度傳感器7報警溫度電路83 系統(tǒng)軟件算法分析93.1主程序流程圖93.2讀出溫度子程序93.3溫度轉換命令子程序103.4 計算溫度子程序

2、113.5 顯示數(shù)據刷新子程序114 實驗仿真125 總結與體會14附錄:源程序15參考文獻18摘要隨著時代的進步和發(fā)展,單片機技術已經普及到我們生活、工作、科研、各個領域,已經成為一種比較成熟的技術, 本文主要介紹了一個基于AT89C52單片機的測溫系統(tǒng),詳細描述了利用數(shù)字溫度傳感器DS18B20 開發(fā)測溫系統(tǒng)的過程,重點對傳感器在單片機下的硬件連接,軟件編程以及各模塊系統(tǒng)流程進行了詳盡分析,特別是數(shù)字溫度傳感器DS18B20 的數(shù)據采集過程。對各部分的電路也一一進行了介紹,該系統(tǒng)可以方便的實現(xiàn)實現(xiàn)溫度采集和顯示,并有上下限報警溫度,它使用起來相當方便,具有精度高、量程寬、靈敏度高、體積小、

3、功耗低等優(yōu)適合于我們日常生活和工、農業(yè)生產中的溫度測量,也可以當作溫度處理模塊嵌入其它系統(tǒng)中,作為其他主系統(tǒng)的輔助擴展。DS18B20 與AT89C52 結合實現(xiàn)最簡溫度檢測系統(tǒng),該系統(tǒng)結構簡單,抗干擾能力強,適合于惡劣環(huán)境下進行現(xiàn)場溫度測量,有廣泛的應用前景。關鍵詞: 單片機AT89C52 溫度傳感器數(shù)字溫度計DS18B201 概述1.1 課程設計的意義本次課程設計是在我們學過單片機后的一次實習,可增加我們的動手能力。特別是對單片機的系統(tǒng)設計有很大幫助。同時對畢業(yè)設計業(yè)起著很大的作用。1.2 設計的任務和要求1、基本范圍-30-302、精度誤差小于13、七段 數(shù)碼直讀顯示4、有溫度的上下限報

4、警功能2 系統(tǒng)總體方案及硬件設計2.1數(shù)字溫度計設計方案分析方案一由于本設計是測溫電路,可以使用熱敏電阻之類的器件利用其感溫效應,在將隨被測溫度變化的電壓或電流采集過來,進行A/D 轉換后,就可以用單片機進行數(shù)據的處理,在顯示電路上,就可以將被測溫度顯示出來,這種設計需要用到A/D 轉換電路,其中還涉及到電阻與溫度的對應值的計算,感溫電路比較麻煩。而且在對采集的信號進行放大時容易受溫度的影響出現(xiàn)較大的偏差。 方案二進而考慮到用溫度傳感器,在單片機電路設計中,大多都是使用傳感器,所以這是非常容易想到的,所以可以采用一只溫度傳感器DS18B20,此傳感器,可以很容易直接讀取被測溫度值,進行轉換,電

5、路簡單,精度高,軟硬件都以實現(xiàn),而且使用單片機的接口便于系統(tǒng)的再擴展,滿足設計要求。從以上兩種方案,很容易看出,采用方案二,電路比較簡單,費用較低,可靠性高,軟件設計也比較簡單,故采用了方案二。2.2系統(tǒng)總體設計溫度計電路設計總體設計方框圖如圖2.21 所示,總系統(tǒng)仿真如圖2.2系統(tǒng)仿真圖,控制器采用單片機AT89C52,溫度傳感器采用DS18B20,用3 個七段數(shù)碼管以串口傳送數(shù)據實現(xiàn)溫度顯示。圖2.21 總體設計方框圖圖2.22 系統(tǒng)仿真圖2.3系統(tǒng)模塊系統(tǒng)由單片機最小系統(tǒng)、顯示電路、溫度傳感器等組成。主控制器單片機AT89C52 具有低電壓供電和體積小等特點,四個端口只需要兩個口就能滿足

6、電路系統(tǒng)的設計需要,很適合便攜手持式產品的設計使用系統(tǒng)可用二節(jié)電池供電。晶振采用11.0592MMHZ。復位電路采用上電加按鈕復位。圖1 晶振電路圖2 復位電路 顯示電路顯示電路采用3個共陽極七段 數(shù)碼管,采用動態(tài)掃描的方式顯示。圖 數(shù)碼管顯示電路溫度傳感器DS18B20 溫度傳感器是美國DALLAS 半導體公司最新推出的一種改進型智能溫度傳感器,與傳統(tǒng)的熱敏電阻等測溫元件相比,它能直接讀出被測溫度,并且可根據實際要求通過簡單的編程實現(xiàn)位的數(shù)字值讀數(shù)方式。DS18B20 的性能特點如下:1、獨特的單線接口僅需要一個端口引腳進行通信;2、多個DS18B20 可以并聯(lián)在惟一的三線上,實現(xiàn)多點組網功

7、能3、無須外部器件;4、可通過數(shù)據線供電,電壓范圍為3.05.5;5、零待機功耗;6、溫度以或位數(shù)字;7、用戶可定義報警設置;8、報警搜索命令識別并標志超過程序限定溫度(溫度報警條件)的器件;9、負電壓特性,電源極性接反時,溫度計不會因發(fā)熱而燒毀,但不能正常工作;DS18B20 可以采用兩種方式供電,一種是采用電源供電方式,此時DS18B20 的1 腳接地,2 腳作為信號線,3 腳接電源。另一種是寄生電源供電方式,如圖所示單片機端口接單線總線,為保證在有效的DS18B20 時鐘周期內提供足夠的電流,可用一個MOSFET 管來完成對總線的上拉。當DS18B20 處于寫存儲器操作和溫度A/D 轉換

8、操作時,總線上必須有強的上拉,上拉開啟時間最大為10us。采用寄生電源供電方式時VDD 端接地。由于單線制只有一根線,因此發(fā)送接口必須是三態(tài)的。圖 溫度傳感器與單片機的連接報警溫度電路定時器每20ms檢測一次溫度,測量到在安全溫度范圍內發(fā)光二極管發(fā)出綠色光表示系統(tǒng)正常工作,當超過安全溫度工作范圍外發(fā)光二極管發(fā)出綠色光表示系統(tǒng)出現(xiàn)異常并報警。圖報警電路3 系統(tǒng)軟件算法分析系統(tǒng)程序主要包括主程序,讀出溫度子程序,溫度轉換命令子程序,計算溫度子程序,顯示數(shù)據刷新子程序等。3.1主程序流程圖主程序的主要功能是負責溫度的實時顯示、讀出并處理DS18B20 的測量的當前溫度值,其程序流程見圖3.1 所示。

9、圖3.1 主程序流程圖3.2讀出溫度子程序讀出溫度子程序的主要功能是讀出RAM 中的9 字節(jié),在讀出時需進行CRC 校驗,校驗有錯時不進行溫度數(shù)據的改寫。其程序流程圖如圖3.2 示圖3.2 讀溫度流程圖3.3溫度轉換命令子程序溫度轉換命令子程序主要是發(fā)溫度轉換開始命令,在本程序設計中采用1ms 顯示程序延時法等待轉換的完成。溫度轉換命令子程序流程圖3.3 所示圖3.3 溫度轉換流程圖3.4 計算溫度子程序計算溫度子程序將RAM 中讀取值進行BCD 碼的轉換運算,并進行溫度值正負的判定,其程序流程圖如圖3.4 所示。圖3.4 計算溫度流程圖3.5 顯示數(shù)據刷新子程序顯示數(shù)據刷新子程序主要是對分離

10、后的溫度顯示數(shù)據進行刷新操作,當標志位位為1時將符號顯示位移入第一位。程序流程圖如圖3.5。圖3.5 顯示數(shù)據刷新流程圖4 實驗仿真進入protuse 后,連接好電路,并將程序下載進去。數(shù)碼管顯示溫度與傳感器的溫度相同。圖41 溫度顯示仿真屏幕顯示當前溫度為安全溫度正常工作,綠色二極管發(fā)光。屏幕顯示的溫度為安全溫度范圍之外,此時紅色二極管閃爍發(fā)光報警,表明系統(tǒng)出現(xiàn)異常,需要調整。5 總結與體會通過這次對數(shù)字溫度計的設計與制作,讓我了解了設計電路的程序,也讓我了解了關于數(shù)字溫度計的原理與設計理念,要設計一個電路總要先用仿真仿真成功之后才實際接線的。但是最后的成品卻不一定與仿真時完全一樣,因為,再

11、實際接線中有著各種各樣的條件制約著。而且,在仿真中無法成功的電路接法,在實際中因為芯片本身的特性而能夠成功。所以,在設計時應考慮兩者的差異,從中找出最適合的設計方法。通過這次學習,讓我對各種電路都有了大概的了解,所以說,坐而言不如立而行,從這次的課程設計中,我真真正正的意識到,在以后的學習中,要理論聯(lián)系實際,把我們所學的理論知識用到實際當中,學習單機片機更是如此,程序只有在經常的寫與讀的過程中才能提高,這就是我在這次課程設計中的最大收獲。附錄:源程序/*/DS18B20報警實驗演示程序/使用單片機AT89C52 晶振:11.0592M/*/包含頭文件/*#include<reg52.h&

12、gt;/*/宏定義/*#define uchar unsigned char#define uint unsigned int/*/共陽極段碼表tab; 帶小數(shù)點的共陽極段碼表tab1; 警鈴編碼表Music_Girl;/*uchar code tab= 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;uchar code tab1=0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10;/*/定義全局變量/*sbit DQ=P23;/ds18b20與單片機連接口sbit seg0=P20;/小數(shù)位

13、sbit seg1=P21;/個位sbit seg2=P22;/十位sbit green=P24;sbit red =P25;sbit music=P36;/接蜂鳴器uchar data disdata4;uint tvalue;/溫度值uchar tflag;/溫度正負標志uchar max_tem=2;/溫度警戒值/*/延時函數(shù),延時時間近似1ms/*void delay_ms(unsigned int ms)/延時1毫秒(不夠精確的)unsigned int i,j;for(i=0;i<ms;i+)for(j=0;j<110;j+);/*/延時函數(shù),用于18b20時序控制/*

14、void delay_18B20(uint i)/延時1微秒 while(i-);/*/ 溫度顯示函數(shù)/ P0口顯示溫度十位,P1口顯示溫度個位,P2顯示溫度小數(shù)位/*void display(uchar a,uchar b,uchar c) /顯示十位P0=0xff;seg2=1;P0=taba;delay_ms(1);seg2=0;/顯示個位P0=0xff;seg1=1;P0=tab1b;delay_ms(1);seg1=0;/顯示小數(shù)位P0=0xff;seg0=1;P0=tabc;delay_ms(1);seg0=0; /*/DS18B20的復位函數(shù),對DS18B20時序操作前都要閑復位

15、/*void ds1820rst()/*ds1820復位*/ unsigned char x=0;DQ = 1; /DQ復位delay_18B20(4); /延時DQ = 0; /DQ拉低delay_18B20(100); /精確延時大于480usDQ = 1; /拉高delay_18B20(40); /*/DS18B20讀指令函數(shù) RAM指令/逐位讀取DS18B20轉化后的溫度值/*uchar ds1820rd()/*讀數(shù)據*/uchar i=0;uchar dat = 0;for (i=8;i>0;i-) DQ = 0; /給脈沖信號dat>>=1;DQ = 1; /給脈

16、沖信號if(DQ)dat|=0x80;delay_18B20(10);return(dat);/*/ DS18B20寫指令函數(shù) R0M指令/ 控制DS18B20做何操作/*void ds1820wr(uchar wdata)/*寫數(shù)據*/uchar i=0;for (i=8; i>0; i-)DQ = 0;DQ = wdata&0x01;delay_18B20(10);DQ = 1;wdata>>=1;/*/DS18B20轉化啟動函數(shù)/*void read_temp1()/*讀取溫度值并轉換*/EA=0; /關全局中斷,防止DS18B20的時序操作被打亂ds1820r

17、st(); ds1820wr(0xcc);/*跳過讀序列號*/ds1820wr(0x44);/*啟動溫度轉換*/ds1820rst();EA=1; /*/DS18B20轉換溫度讀取函數(shù),并轉化成實際溫度值/ 返回值: tvalue為實際溫度值/*unsigned int read_temp2() uchar a,b;EA=0;ds1820wr(0xcc);/*跳過讀序列號*/ ds1820wr(0xbe);/*讀取溫度*/ a=ds1820rd();b=ds1820rd();EA=1;tvalue=b;tvalue<<=8;tvalue=tvalue|a; if(tvalue<

18、;=0x07ff) tflag=0; else tvalue=tvalue+1;tflag=1; tvalue=tvalue*(0.625);/溫度值擴大10倍,精確到1位小數(shù)return(tvalue);/*/入口參數(shù):tvalue/溫度值百十個位分離函數(shù) 存入disdata數(shù)組中/* void ds1820disp1()/溫度值顯示 disdata0=tvalue/1000;/百位數(shù) disdata1=tvalue%1000/100;/十位數(shù) disdata2=tvalue%100/10;/個位數(shù) disdata3=tvalue%10; /小數(shù)位/*/定時器初始化函數(shù)/*void init_t1() green=0; red=1; TH1=0XB7; TL1=0XFF;TR1=1;ET1=1;EA=1;/*/主函數(shù)/*void main() init_t1();while(1) red=1;read_temp1();/讀取溫度read_temp2();/讀取溫度ds1820disp1();/數(shù)值提取 display(disdata1,disdata2

溫馨提示

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

評論

0/150

提交評論