單片機課程設計基于單片機的數(shù)字溫度計設計_第1頁
單片機課程設計基于單片機的數(shù)字溫度計設計_第2頁
單片機課程設計基于單片機的數(shù)字溫度計設計_第3頁
單片機課程設計基于單片機的數(shù)字溫度計設計_第4頁
單片機課程設計基于單片機的數(shù)字溫度計設計_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、湖南鐵路科技職業(yè)技術學院單片機課程設計說明書 湖南鐵路科技職業(yè)技術學院單片機課程設計選題名稱: 基于單片機的數(shù)字溫度計設計 系 (院): 機械工程系(東院) 專 業(yè): 機電一體化 班 級: 3092班 姓 名: 指導老師: 錄目1 項目設計綜述2 1.1項目設計概述.2 1.2項目設計要求.2 1.3項目程設計方案.22 系統(tǒng)設計.4 2.1 圖框設計方案.4 2.2ds18b20簡介.4 2.2.1單片機at89s52簡介.43硬件設計.6 3.1電路圖原理.6 3.2ds18b20與單片機接口的設計.6 3.3顯示電路圖接口.7 3.4其他外圍電路.84 軟件設計.11 4.1 程序設計流

2、程圖.11 4.2程序清單.12 5 系統(tǒng)仿真及調試.17 5.1.硬件調試.17 5.2軟件調試 .17總結.18參考文獻.191項目設計綜述1.1項目設計概述在生活和生產中,經常要用到一些測溫設備。但是傳統(tǒng)的測溫設備具有制作成本高、硬件電路和軟件設計復雜等缺點?;赼t89s52單片機的數(shù)字溫度計具有制作簡單、成本低、讀數(shù)方便、測溫范圍廣和測溫準確等優(yōu)點,應用前景廣闊。1.2項目設計要求基于at89s52單片機的數(shù)字溫度計設計要求如下: 溫度值用4位led數(shù)碼管顯示 測溫范圍為30100,且測量誤差不得大于0.5 成品的體積、質量盡可能小。1.3項目設計方案大多單片機接口輸入的信號是數(shù)字信

3、號,或有帶ad轉換的高端單片機也可以輸入模擬信號。由單片機獲取非電信號的溫度信息,必須通過溫度傳感器。傳統(tǒng)的溫度測量雖多以熱敏電阻作為溫度傳感器。但是,熱敏電阻的可靠性較差、測量溫度精度較低,而且還需經ad轉換成數(shù)字信號后才能由單片機進行處理。因此,使用數(shù)字溫度傳感器ds18b20了簡化硬件設計、方便單片機讀取數(shù)據、節(jié)約成本。 2 系統(tǒng)設計2.1 圖框設計根據設計要求分析,基于at89s52單片機的數(shù)字溫度計由at89s52單片機控制器、電源、顯示電路、溫度傳感器、復位電路和時鐘電路組成,系統(tǒng)圖框如圖21所示。電源給整個電路供電,顯示電路顯示溫度值,時鐘電路為at89s52提供時鐘頻率。傳感器

4、采用美國dallas半導體公司生產的一種智能溫度傳感器ds18b20,其測溫范圍為-50125,最高分辨率可達0.0625,可完全符合設計要求。2.2ds18b20簡介本公司最新推出ts-18b20數(shù)字溫度傳感器,該產品采用美國dallas公司生產的 ds18b20可組網數(shù)字溫度傳感器芯片封裝而成,具有耐磨耐碰,體積小,使用方便,封裝形式多樣,適用于各種狹小空間設備數(shù)字測溫和控制領域。 1: 技術性能描述 1.1 獨特的單線接口方式,ds18b20在與微處理器連接時僅需要一條口線即可實現(xiàn)微處理器與ds18b20的雙向通訊。 1.2 測溫范圍 55+125,固有測溫分辨率0.5。 1.3 支持多

5、點組網功能,多個ds18b20可以并聯(lián)在唯一的三線上,最多只能并聯(lián)8個,實現(xiàn)多點測溫,如果數(shù)量過多,會使供電電源電壓過低,從而造成信號傳輸?shù)牟环€(wěn)定。 1.4 工作電源: 35v/dc 1.5 在使用中不需要任何外圍元件 1.6 測量結果以912位數(shù)字量方式串行傳送 1.7 不銹鋼保護管直徑 6 1.8 適用于dn1525, dn40dn250各種介質工業(yè)管道和狹小空間設備測溫 1.9 標準安裝螺紋 m10x1, m12x1.5, g1/2”任選 1.10 pvc電纜直接出線或德式球型接線盒出線,便于與其它電器設備連接。 2:應用范圍 2.1 該產品適用于冷凍庫,糧倉,儲罐,電訊機房,電力機房,

6、電纜線槽等測溫和控制領域 2.2 軸瓦,缸體,紡機,空調,等狹小空間工業(yè)設備測溫和控制。 2.3 汽車空調、冰箱、冷柜、以及中低溫干燥箱等。 2.5 供熱/制冷管道熱量計量,中央空調分戶熱能計量和工業(yè)領域測溫和控制 2.3單片機at89s52簡介at89s52具有如下特點:40個引腳,8k bytes flash 片內程序儲存器,256 bytes的隨機存取數(shù)據存儲器(ram),32個外部雙向輸入輸出(i0)口,5個中斷優(yōu)先級2層中斷嵌套中斷,2個16位可編程定時計數(shù)器,2個全雙工串行通信口,看門狗(wdt)電路,片內時鐘振蕩器。此外,at89s52設計和配置了振蕩頻率可為并通過軟件設置省電模

7、式??臻e模式,暫停工作,而定時計數(shù)器,串行口,外中斷系統(tǒng)可繼續(xù)工作,掉電式凍結振蕩器而保存的數(shù)據,停止芯片其他功能直至外中斷激活或硬件復位。同時該芯片還具有、和等三種封裝形式,以適應不同產品的需求。主要功能特性:兼容mcs51指令系統(tǒng) 可反復擦寫(1000次)isp flash rom32個雙向io口 4.55.5v工作電壓3個16位可編程定時計數(shù)器 時鐘頻率033mhz全雙工作uart穿行中斷口線256bit內部ram2個外部中斷源 低功耗空閑和省電模式中斷喚醒省電模式 3級加密位 看門狗(wdt)電路 軟件設置空閑和省電功能靈活的isp字節(jié)和分頁編程 雙數(shù)據寄存器指針3硬件設計3.2 ds

8、18b20與單片機接口的設計ds18b20最大的特點是單總線數(shù)據傳輸方式,ds18b20的數(shù)據io均由同條線來完成。ds18b20的電源供電方式有2種:外部供電方式和寄生電源方式。工作于寄生電源方式時,vdd和gnd均接地,他在需要遠程溫度探測和空間受限的場合特別有用,原理是當1w ire總線的信號線dq為高電平,竊取電信號能量給ds18b20供電,同時一部分能量雖給內部電容充電,當dq為低電平時釋放能量為ds18b20供電。但寄生電源方式需要強上拉電路,軟件控制變得復雜(特別是在完成溫度轉換和拷貝數(shù)據到e2prom時),同時芯片的性能也有所降低。外部電源供電方式是ds18b20最佳的工作方式

9、,工作穩(wěn)定可靠,抗干擾能力強,而且電路也比較簡單,可以開發(fā)出穩(wěn)定可靠的多點溫度監(jiān)控系統(tǒng)。因此本設計采用外部供電方式。如下圖所示:3.3顯示電路接口本設計顯示電路采用4位共陰極led數(shù)碼管來顯示測量得到的溫度值。led數(shù)碼管能在低電壓工作,而且體積小、重量輕、使用壽命長,因此本次設計選用此數(shù)碼管作為顯示器件。一個led數(shù)碼管只能顯示一位的字符,如果字符位數(shù)不止一位,可以用幾個數(shù)碼管組成,但要控制多位的顯示電路需要有字段控制和字位控制,字段控制是指控制所要顯示的字符是什么,控制電路應將字符的七段碼通過輸出口連接到led的ag的引腳,是某些段點亮,某些段處于熄滅狀態(tài)。字位控制是指控制在多位顯示器中,

10、哪幾位發(fā)光或那幾位不發(fā)光,字位控制則需要通過字位碼作用于led數(shù)碼管的公共引腳,是某一位或某幾位的數(shù)碼管可以發(fā)光。數(shù)碼光顯示電路分為動態(tài)顯示和靜態(tài)顯示。 靜態(tài)顯示方式時指每一個數(shù)碼管的字段控制是獨立的,每一個數(shù)碼管都需要配置一個8位輸出口來輸出該字位的七段碼。應此需要顯示多位時需要多個輸出口,通常片內并口不夠用,需要在片外擴展。動態(tài)顯示又稱為掃描顯示方式,也就是在某一時刻只能讓一個字位處于選通狀態(tài),其他字位一律斷開,同時在字段線上發(fā)出該位要顯示的字段碼,這樣在某一時刻某一位數(shù)碼管就會被點亮,并顯示出相應的字符。下一刻該改變所顯示的字位和字段碼,點亮另一個數(shù)碼管,顯示另一個字符。繞后一次掃描輪流

11、點亮其他數(shù)碼管,只要掃描速度快,利用人眼的視覺殘留效應,會使人感覺到幾位數(shù)碼管都在穩(wěn)定的顯示。本次試驗用74lso4非門作驅動。如圖所示3.4其他外圍電路復位電路:在單片機的rst引腳引入高電平并保持2個機器周期時,單片機內部就執(zhí)行復位操作。實際應用中,復位操作有兩種形式:一種是上電復位,另一種是上電與按鍵均有效的復位。上電復位要求接通電源后,單片機自動實現(xiàn)復位操作。上點瞬間rst引腳獲得高電平,隨著電容的充電,rst引腳的高電平逐漸下降。只要rst引腳保持兩個機器周期的高電平單片機就可以進行復位操作。本設計用的上電與接鍵均有效的復位。電路圖如下:時鐘電路:單片機的時鐘信號通常有兩種方式生產:

12、一是內部時鐘方式,二是外部時鐘方式。本設計采用內部時鐘方式,在單片機內部有一振蕩電路,只要在單片機的xtal1和xtal2腳外接石英晶體(簡稱晶振),就構成了自己震蕩器并在單片機內部產生時鐘脈沖信號。圖中電容器的作用是穩(wěn)定頻率和快速起振,電容值在530pf,典型值為30pf.j晶振cys的振蕩頻率范圍在1.212mhz和6mhz.本設計采用12mhz晶振,電容值為30pf。在電路總體設計中,先從片內程序儲存器取指還是從內部程序儲存器取指的選擇信號。當eavpp接高電平時,先從片內程序存儲器讀取指令,讀完4kb后,自動改為片外取指。 若eavpp接低電平,則所有指令均從片外程序存儲器讀取。ale

13、腳用于輸出允許地址所存信號。psen腳用于外部程序存儲器選通信號,在對外部程序存儲器取指操作時此引腳置低電平有效。在執(zhí)行片內程序存儲器取指時pesn腳無效。本設計無片外程序儲存區(qū)擴展,所以將eavpp接高電平,ale及psen腳懸空。4軟件設計4.1程序設計流程圖主程序的主要功能是負責溫度的實時顯示。讀出并處理ds18b20測量的當前溫度值,溫度測量值每1s進行一次。這樣可以在1s之內測量一被測溫度,其程序流程如圖4-1所示讀出溫度子程序的主要功能是讀出ram中的9字節(jié),在讀出時需進行crc校驗,校驗有錯時不進行溫度數(shù)據的改寫,其流程圖如圖42所示。溫度轉換命令子程序主要是發(fā)溫度轉換開始命令,

14、采用12位分辨率時轉換時間約為750ms,在本程序設計中采用1s顯示程序延時法等待轉換的完成。計算溫度子程序ram中讀取值進行bcd碼的轉換運算,并進行溫度值正負的判定,顯示數(shù)據刷新子程序主要是對顯示緩沖器中的顯示數(shù)據進行刷新操作,當最高顯示位0時將符號顯示位移入下一位。4.2程序清單#include reg51.h#include intrins.h /延時函數(shù)用#define disdata p1 /段碼輸出口#define discan p3 /掃描口#define uchar unsigned char#define uint unsigned intsbit dq=p37; /溫度輸

15、入口sbit din=p17; /led小數(shù)點控制uint h;uchar code ditab16=0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09;/溫度小數(shù)部分用查表法uchar code dis_712=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf;/* 共陽led段碼表 0 1 2 3 4 5 6 7 8 9 不亮 - */ uchar code scan_con4=0xfe,0xfd,0xfb,0xf

16、7; / 列掃描控制字uchar data temp_data2=0x00,0x00; / 讀出溫度暫放uchar data display5=0x00,0x00,0x00,0x00,0x00;/顯示單元數(shù)據,共4個數(shù)據,一個運算暫存用void delay(uint t)/11微秒延時函數(shù)for(;t0;t-);scan()/顯示掃描函數(shù)char k; for(k=0;k0; i-) /dq=1;_nop_();_nop_(); dq = 0;_nop_();_nop_();_nop_();_nop_();_nop_();/5usdq = val&0x01; /最低位移出delay(6); /

17、66usval=val/2; /右移一位dq = 1;delay(1); uchar read_byte(void)/從總線上讀取一個字節(jié)uchar i;uchar value = 0;for (i=8;i0;i-)dq=1;_nop_();_nop_();value=1;dq = 0; /_nop_();_nop_();_nop_();_nop_(); /4usdq = 1;_nop_();_nop_();_nop_();_nop_(); /4us if(dq)value|=0x80;delay(6); /66usdq=1;return(value);read_temp()/讀出溫度函數(shù)ow

18、_reset(); /總線復位write_byte(0xcc); / 發(fā)skip rom命令write_byte(0xbe); / 發(fā)讀命令temp_data0=read_byte(); /溫度低8位temp_data1=read_byte(); /溫度高8位ow_reset();write_byte(0xcc); / skip romwrite_byte(0x44); / 發(fā)轉換命令work_temp()/溫度數(shù)據處理函數(shù)uchar n=0; /if(temp_data1127) temp_data1=(256-temp_data1);temp_data0=(256-temp_data0);

19、n=1;/負溫度求補碼display4=temp_data0&0x0f;display0=ditabdisplay4;display4=(temp_data0&0xf0)4)|(temp_data1&0x0f)4);/display3=display4/100;display1=display4%100;display2=display1/10;display1=display1%10;if(!display3)display3=0x0a;if(!display2)display2=0x0a;/最高位為0時都不顯示if(n)display3=0x0b;/負溫度時最高位顯示-main()/主函數(shù)

20、disdata=0xff; /初始化端口discan=0xff;for(h=0;h4;h+)displayh=8;/開機顯示8888ow_reset(); / 開機先轉換一次write_byte(0xcc); / skip romwrite_byte(0x44); / 發(fā)轉換命令for(h=0;h500;h+) scan(); /開機顯示88882秒while(1) read_temp(); /讀出18b20溫度數(shù)據 work_temp(); /處理溫度數(shù)據 for(h=0;h500;h+) scan(); /顯示溫度值2秒 5系統(tǒng)設計仿真及調試5.1硬件調試先排除硬件電路故障,包括設計性錯誤

21、和工藝性故障,一般原則先靜態(tài)后動態(tài)。利用萬用表或測試儀器,檢查電路中的各器件及引腳是否連接正確,是否有短路故障。先要將單片機at89s52芯片取下,對電路板進行通電檢查,通過觀察看是否有異常,然后用萬用表測試個電源電壓,若這些都沒問題,則接上仿真機進行聯(lián)機調試觀察各接線口線路是否正常。5.2軟件調試軟件調試是利用仿真工具進行再線仿真調試,我們用kell軟件調試,處發(fā)現(xiàn)和解決程序錯誤外,還可以發(fā)現(xiàn)硬件上的問題??偨Y經過將近兩周的單片機課程設計,終于完成了我的數(shù)字溫度計的設計,雖然沒有完全達到設計要求,但從心底說,還是高興的,畢竟這次設計把實物都做了出來,高興之余不得不深思??!在本次設計的過程中,我發(fā)現(xiàn)很多的問題,雖然以前還做過這樣的設計但這次設計真的讓我長進了很多,單片機課程設計重點就在于軟件算法的設計,需要有有巧妙的程序算法,雖然以前寫過幾次程序,但我覺得寫好一個程序并不是一件簡單的事,舉個例子,在列控制

溫馨提示

  • 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

提交評論