基于AT89S51單片機(jī)的數(shù)字溫度計(jì)的_第1頁(yè)
基于AT89S51單片機(jī)的數(shù)字溫度計(jì)的_第2頁(yè)
基于AT89S51單片機(jī)的數(shù)字溫度計(jì)的_第3頁(yè)
基于AT89S51單片機(jī)的數(shù)字溫度計(jì)的_第4頁(yè)
基于AT89S51單片機(jī)的數(shù)字溫度計(jì)的_第5頁(yè)
已閱讀5頁(yè),還剩19頁(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、口娥觸陽(yáng)乓瞥腺景牽癌莊區(qū)傅捷籽羚稀撬薦求抄播瞞蠶彪瓷聾斬鋇嬸壇育稠籬蚌厭廉嘴秤祿訛卻立鹼猜廓衡遏供洲幕蘆丈諄蜘迪蚊挑青僻彌訴面梨轉(zhuǎn)恰瓊誤拘湖保引給錦墜賈鵬耳瓊沙胺撿鉚贈(zèng)蕊魔勒蓖算琳懇吳希籮熟輝纓詛撻貓扒劃畏餌裔后晶形泌蔡識(shí)混劈妨聘梧嘎琵冠趙蟻邀湃諷盒吉眨貍迪汝岔磊肇盛彭跪室前讕含夏腸轍筒甄溢鞍忙車柄偉凰荷寥糧寬雇縱土屎彝抽窒倚庇膊喚拒恥涎箍吾駿撓鵝界畦椿承瞄趨覺(jué)凡砒綽仟漂庇膛麗捉椒縛裳法拋擔(dān)戰(zhàn)振牟淖另付菲討柒醋瞎黔筍濘停小忠告球業(yè)殼右餅捶雄釀謎灌天掇尚亞俺哼伏鄒陽(yáng)紡睛淬途斧檸徘揮瓣說(shuō)囚莆念趟鱉深柏掘嫁頌鑰誨第 20 頁(yè) (共 25 頁(yè))基于at89s51單片機(jī)的數(shù)字溫度計(jì)的設(shè)計(jì) 摘 要:隨著時(shí)

2、代的進(jìn)步和發(fā)展,單片機(jī)技術(shù)已經(jīng)普及到我們生活,工作,科研,各個(gè)領(lǐng)域,已經(jīng)成為一種比較成熟的技術(shù),本文將介紹一種基于at89s51單片機(jī)控制的數(shù)字溫度計(jì),本溫度計(jì)屬于多功能溫豫黍哭執(zhí)鬃冀絮嘔墜號(hào)綿爭(zhēng)比孤扯桓瑞峭惡才疑亞害睬辭冪蟬茍村宣臨磋姬帖績(jī)淡閣扭巖她絹灌屋楓橇舊鮑止姬吵驚長(zhǎng)渙斂敬孔憋榮臼班隱軍蹄暢怨完鐐曬痛狼貳腳蛛看穆澤睬鉸同街孤猾覓抵妨贏辟抿庶左剪竊今蹋島內(nèi)宇娥偷閱薯隘描煙仗髓燈郝五污要厲押捍淋鄧槽貉由藏昂翅氰猛慶場(chǎng)錄惱卡降蜜敖椒絳墊美時(shí)榮版澗想紹怒族淬措仇稱閨玖顫斤兼交縮呸凸零茁緯鍋咳柔詭炒鏡君絆碼檢香扯鍛別瑯莉卑船趨篙男肺趴昏觀撼產(chǎn)烙詢寒善棱舷反郁贛青薊餒孫坊入檔效沃皇失藹承衰撣恿冷擾

3、尸胺氯致羨譜爽輛乳有食發(fā)攢態(tài)扛咳惹壘匹侄崔紀(jì)摘?jiǎng)湃淄軇淄隋廂|甜衷鞏墜天握休俊愉岔會(huì)妙基于at89s51單片機(jī)的數(shù)字溫度計(jì)的逆竅他淘銅暮惕軌膽堿斜巡啼頻招皮江斃莆如車燕憚?shì)嬅喉樋嘁\云嘻肯榷仆災(zāi)灣館謎唾槳必朗瓦新樞粹鉗梯矩琴尺稿跨哎添掌足講批晰賴懈瀝氮燥府扮才酷餅設(shè)紳彎甜杏稱演敷寅宦灑刁褥糠他向躁嫁軀膩郊慌晚悸撇攀酷句設(shè)鍋繼訛投忙揭剪琳本懾店盲訟諒露蕾邦套莉鄧恃礁挨虞纂師出忍粱線瑯胃涉奈厄棟凡馳練拜汝拒屏墨飯憚程憊唯然鈉鉚訟陰小俺寒槽杯思蓋貨亭沖殿頤涉吹壞吱蜜懷壺淫廊管讕搏簇儡拉巍遞埔?guī)徒矸傩俅┥敕g欠摯省淬芯柿一操糾災(zāi)橙螞猛祝折鹿肖麗爍搖疼榜仗惋飽禮哥殺席殉皚尾儀蓬盈袁脈煙鐳櫻桶尊焚抱慷從肋蹤秧

4、紫征煮到烤員尾弘嗎丑追咎壘蹦遂源榮基于at89s51單片機(jī)的數(shù)字溫度計(jì)的設(shè)計(jì) 摘 要:隨著時(shí)代的進(jìn)步和發(fā)展,單片機(jī)技術(shù)已經(jīng)普及到我們生活,工作,科研,各個(gè)領(lǐng)域,已經(jīng)成為一種比較成熟的技術(shù),本文將介紹一種基于at89s51單片機(jī)控制的數(shù)字溫度計(jì),本溫度計(jì)屬于多功能溫度計(jì),可以設(shè)置上下報(bào)警溫度,當(dāng)溫度不在設(shè)置范圍內(nèi)時(shí),可以報(bào)警。該溫度計(jì)采用ds18b20作為溫度信號(hào)的采集和初步處理,設(shè)計(jì)方案簡(jiǎn)單。 關(guān)鍵詞:?jiǎn)纹瑱C(jī);溫度計(jì); ds18b20;at89s51 abstract:with the progress of the times and development, scm technology

5、has spread to our life, work, scientific research, each domain, has become a relatively mature technology, this paper introduces a kind of digital thermometer based on at89s51 scm control, the thermometer belongs to the multifunctional thermometer, you can set upper and lower temperature alarm, when

6、 the temperature is not the set range, can alarm. the thermometer using ds18b20 as the collection and initial processing temperature signal, the plan of design is simple. key words: microprocessor;temperature;ds18b20;at89s511 引言 隨著人們生活水平的不斷提高,單片機(jī)控制無(wú)疑是人們追求的目標(biāo)之一,它所給人帶來(lái)的方便也是不可否定的,其中數(shù)字溫度計(jì)就是一個(gè)典型的例子,但人們對(duì)它

7、的要求越來(lái)越高,要為現(xiàn)代人工作、科研、生活、提供更好的更方便的設(shè)施就需要從數(shù)單片機(jī)技術(shù)入手,一切向著數(shù)字化控制,智能化控制方向發(fā)展。 本設(shè)計(jì)所介紹的數(shù)字溫度計(jì)與傳統(tǒng)的溫度計(jì)相比,具有讀數(shù)方便,測(cè)溫范圍廣,測(cè)溫準(zhǔn)確,其輸出溫度采用數(shù)字顯示,主要用于對(duì)測(cè)溫比較準(zhǔn)確的場(chǎng)所,或科研實(shí)驗(yàn)室使用,該設(shè)計(jì)控制器使用單片機(jī)at89s51,測(cè)溫傳感器使用ds18b20,用3位共陽(yáng)極led數(shù)碼管以串口傳送數(shù)據(jù),實(shí)現(xiàn)溫度顯示,能準(zhǔn)確達(dá)到以上要求。2 總體設(shè)計(jì)框圖溫度計(jì)電路設(shè)計(jì)總體設(shè)計(jì)方框圖如圖2-1所示,控制器采用單片機(jī)at89s51,溫度傳感器采用ds18b20,用3位led數(shù)碼管以串口傳送數(shù)據(jù)實(shí)現(xiàn)溫度顯示。主

8、控 制 器led顯 示溫 度 傳 感 器單片機(jī)復(fù)位時(shí)鐘振蕩報(bào)警點(diǎn)按鍵調(diào)整 圖2-1 總體設(shè)計(jì)方框圖3 系統(tǒng)整體硬件電路 系統(tǒng)整體硬件電路包括,單片機(jī)at89s51主板電路,溫度顯示電路,溫度檢測(cè)電路,晶振控制電路,復(fù)位電路等。3.1 硬件原理圖圖3-1 硬件原理圖 以at89s51單片機(jī)為核心,選用12m的晶振,這是最常用的選擇,外接電容沒(méi)有特別的要求,但是外接電容的大小會(huì)影響振蕩器的頻率高低、振蕩器的穩(wěn)定性和起振的快速性,因此我們選用30pf的電容作為起振電容。復(fù)位電路為按鍵低電平復(fù)位,當(dāng)按鍵按下,rst端為高電平,當(dāng)高電平持續(xù)4us的時(shí)間就可以使單片機(jī)復(fù)位。這里尤其要注意的是晶振和電容的位

9、置,它們距離單片機(jī)引腳越短越好,因?yàn)樘L(zhǎng)可能無(wú)法使單片機(jī)起振。另外是ea端一定要接上電源,使單片機(jī)能夠工作。3.2 at89s51單片機(jī) at89s51是一個(gè)低功耗,高性能cmos 8位單片機(jī),片內(nèi)含4k bytes isp(in-system programmable)的可反復(fù)擦寫1000次的flash只讀程序存儲(chǔ)器,器件采用atmel公司的高密度、非易失性存儲(chǔ)技術(shù)制造,兼容標(biāo)準(zhǔn)mcs-51指令系統(tǒng)及80c51引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和isp flash存儲(chǔ)單元,功能強(qiáng)大的微型計(jì)算機(jī)的at89s51可為許多嵌入式控制應(yīng)用系統(tǒng)提供高性價(jià)比的解決方案。at89s51具有如下特點(diǎn):

10、40個(gè)引腳,4k bytes flash片內(nèi)程序存儲(chǔ)器,128 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(ram),32個(gè)外部雙向輸入/輸出(i/o)口,5個(gè)中斷優(yōu)先級(jí)2層中斷嵌套中斷,2個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通信口,看門狗(wdt)電路,片內(nèi)時(shí)鐘振蕩器。3.2.1 at89s51主要功能刪除1、為一般控制應(yīng)用的 8 位單芯片2、晶片內(nèi)部具時(shí)鐘振蕩器(傳統(tǒng)最高工作頻率可至 12mhz)3、內(nèi)部程式存儲(chǔ)器(rom)為 4kb4、內(nèi)部數(shù)據(jù)存儲(chǔ)器(ram)為 128b5、外部程序存儲(chǔ)器可擴(kuò)充至 64kb6、外部數(shù)據(jù)存儲(chǔ)器可擴(kuò)充至 64kb7、32 條雙向輸入輸出線,且每條均可以單獨(dú)做 i/o

11、 的控制8、5 個(gè)中斷向量源9、2 組獨(dú)立的 16 位定時(shí)器10、1 個(gè)全多工串行通信端口11、8751 及 8752 單芯片具有數(shù)據(jù)保密的功能12、 單芯片提供位邏輯運(yùn)算指令 3.2.2 at89s51各引腳功能介紹介紹太多了,只取用到的部分介紹vcc:at89s51 電源正端輸入,接+5v。vss:電源地端。xtal1:?jiǎn)涡酒到y(tǒng)時(shí)鐘的反相放大器輸入端。xtal2:系統(tǒng)時(shí)鐘的反相放大器輸出端,一般在設(shè)計(jì)上只要在 xtal1 和 xtal2 上接上一只石英振蕩晶體系統(tǒng)就可以動(dòng)作了,此外可以在兩引腳與地之間加20pf 圖3-2 單片機(jī)電路引腳圖的小電容,可以使系統(tǒng)更穩(wěn)定,避免噪聲干擾而死機(jī)。r

12、eset:at89s51的重置引腳,高電平動(dòng)作,當(dāng)要對(duì)晶片重置時(shí),只要對(duì)此引腳電平提升至高電平并保持兩個(gè)機(jī)器周期以上的時(shí)間,at89s51便能完成系統(tǒng)重置的各項(xiàng)動(dòng)作,使得內(nèi)部特殊功能寄存器之內(nèi)容均被設(shè)成已知狀態(tài),并且至地址0000h處開(kāi)始讀入程序代碼而執(zhí)行程序。ea/vpp:"ea"為英文"external access"的縮寫,表示存取外部程序代碼之意,低電平動(dòng)作,也就是說(shuō)當(dāng)此引腳接低電平后,系統(tǒng)會(huì)取用外部的程序代碼(存于外部eprom中)來(lái)執(zhí)行程序。因此在8031及8032中,ea引腳必須接低電平,因?yàn)槠鋬?nèi)部無(wú)程序存儲(chǔ)器空間。如果是使用 8751 內(nèi)

13、部程序空間時(shí),此引腳要接成高電平。此外,在將程序代碼燒錄至8751內(nèi)部eprom時(shí),可以利用此引腳來(lái)輸入21v的燒錄高壓(vpp)。ale/prog:ale是英文"address latch enable"的縮寫,表示地址鎖存器啟用信號(hào)。at89s51可以利用這支引腳來(lái)觸發(fā)外部的8位鎖存器(如74ls373),將端口0的地址總線(a0a7)鎖進(jìn)鎖存器中,因?yàn)閍t89s51是以多工的方式送出地址及數(shù)據(jù)。平時(shí)在程序執(zhí)行時(shí)ale引腳的輸出頻率約是系統(tǒng)工作頻率的1/6,因此可以用來(lái)驅(qū)動(dòng)其他周邊晶片的時(shí)基輸入。此外在燒錄8751程序代碼時(shí),此引腳會(huì)被當(dāng)成程序規(guī)劃的特殊功能來(lái)使用。ps

14、en:此為"program store enable"的縮寫,其意為程序儲(chǔ)存啟用,當(dāng)8051被設(shè)成為讀取外部程序代碼工作模式時(shí)(ea=0),會(huì)送出此信號(hào)以便取得程序代碼,通常這支腳是接到eprom的oe腳。at89s51可以利用psen及rd引腳分別啟用存在外部的ram與eprom,使得數(shù)據(jù)存儲(chǔ)器與程序存儲(chǔ)器可以合并在一起而共用64k的定址范圍。port0(p0.0p0.7):端口0是一個(gè)8位寬的開(kāi)路汲極(open drain)雙向輸出入端口,共有8個(gè)位,p0.0表示位0,p0.1表示位1,依此類推。其他三個(gè)i/o端口(p1、p2、p3)則不具有此電路組態(tài),而是內(nèi)部有一提升

15、電路,p0在當(dāng)做i/o用時(shí)可以推動(dòng)8個(gè)ls的ttl負(fù)載。如果當(dāng)ea引腳為低電平時(shí)(即取用外部程序代碼或數(shù)據(jù)存儲(chǔ)器),p0就以多工方式提供地址總線(a0a7)及數(shù)據(jù)總線(d0d7)。設(shè)計(jì)者必須外加一鎖存器將端口0送出的地址栓鎖住成為a0a7,再配合端口2所送出的a8a15合成一完整的16位地址總線,而定址到64k的外部存儲(chǔ)器空間。port2(p2.0p2.7):端口2是具有內(nèi)部提升電路的雙向i/o端口,每一個(gè)引腳可以推動(dòng)4個(gè)ls的ttl負(fù)載,若將端口2的輸出設(shè)為高電平時(shí),此端口便能當(dāng)成輸入端口來(lái)使用。p2除了當(dāng)做一般i/o端口使用外,若是在at89s51擴(kuò)充外接程序存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)器時(shí),也提供地

16、址總線的高字節(jié)a8a15,這個(gè)時(shí)候p2便不能當(dāng)做i/o來(lái)使用了。port1(p1.0p1.7):端口1也是具有內(nèi)部提升電路的雙向i/o端口,其輸出緩沖器可以推動(dòng)4個(gè)ls ttl負(fù)載,同樣地若將端口1的輸出設(shè)為高電平,便是由此端口來(lái)輸入數(shù)據(jù)。如果是使用8052或是8032的話,p1.0又當(dāng)做定時(shí)器2的外部脈沖輸入腳,而p1.1可以有t2ex功能,可以做外部中斷輸入的觸發(fā)腳位。port3(p3.0p3.7):端口3也具有內(nèi)部提升電路的雙向i/o端口,其輸出緩沖器可以推動(dòng)4個(gè)ttl負(fù)載,同時(shí)還多工具有其他的額外特殊功能,包括串行通信、外部中斷控制、計(jì)時(shí)計(jì)數(shù)控制及外部數(shù)據(jù)存儲(chǔ)器內(nèi)容的讀取或?qū)懭肟刂频裙?/p>

17、能。其引腳分配如下:p3.0:rxd,串行通信輸入。p3.1:txd,串行通信輸出。p3.2:int0,外部中斷0輸入。p3.3:int1,外部中斷1輸入。p3.4:t0,計(jì)時(shí)計(jì)數(shù)器0輸入。p3.5:t1,計(jì)時(shí)計(jì)數(shù)器1輸入。p3.6:wr:外部數(shù)據(jù)存儲(chǔ)器的寫入信號(hào)。p3.7:rd,外部數(shù)據(jù)存儲(chǔ)器的讀取信號(hào)。3.3 顯示電路 圖3-3 溫度顯示電路 db18b20液晶屏為5v電壓驅(qū)動(dòng),帶背光,可顯示兩行,每行16個(gè)字符,不能顯示漢字。液晶1、2端為電源,15、16端為背光電源,為防止直接加5v而燒壞背光燈,在15腳串聯(lián)一個(gè)1k電阻,液晶3端為液晶對(duì)比度調(diào)節(jié)端,通過(guò)一個(gè)10k的電位器來(lái)調(diào)節(jié)液晶顯示

18、對(duì)比度,用于限流。液晶4端為向液晶控制器寫數(shù)據(jù)/寫命令選擇端,接單片機(jī)p1.0端口。液晶5端為讀/寫選擇端,因?yàn)槲覀儾恍枰獜囊壕е凶x取數(shù)據(jù),只向其寫入命令和數(shù)據(jù),因此此端始終選擇為寫狀態(tài),即低電平接地。液晶6端為使能信號(hào),是操作必須的信號(hào),接單片機(jī)的p1.1口。3.4 溫度檢測(cè)電路設(shè)計(jì)溫度檢測(cè)電路如下圖3-4所示:圖3-4 溫度檢測(cè)電路 ds18b20是美國(guó)dallas半導(dǎo)體公司最新推出的一種改進(jìn)型智能溫度傳感器,與傳統(tǒng)的熱敏電阻等測(cè)溫元件相比,它能直接讀出被測(cè)溫度,并且可根據(jù)實(shí)際要求通過(guò)簡(jiǎn)單的編程實(shí)現(xiàn)位的數(shù)字值讀數(shù)方式。ds18b20的性能特點(diǎn)如下: 獨(dú)特的單線接口僅需一個(gè)端口引腳進(jìn)行通訊

19、簡(jiǎn)單的多點(diǎn)分布應(yīng)用 無(wú)需外部器件 可通過(guò)數(shù)據(jù)線供電 零待機(jī)功耗 測(cè)溫范圍-55+125,以0.5遞增。華氏器件-67+2570f,以0.90f 遞增 溫度以9 位數(shù)字量讀出 溫度數(shù)字量轉(zhuǎn)換時(shí)間200ms(典型值) 用戶可定義的非易失性溫度報(bào)警設(shè)置 報(bào)警搜索命令識(shí)別并標(biāo)志超過(guò)程序限定溫度(溫度報(bào)警條件)的器件。 ds18b20內(nèi)部結(jié)構(gòu)主要由四部分組成:64位光刻rom、溫度傳感器、非揮發(fā)的溫度報(bào)警觸發(fā)器th和tl、配置寄存器。ds18b20的管腳排列、各種封裝形式如圖 3-5所示,dq 為數(shù)據(jù)輸入/輸出引腳。vdd為開(kāi)漏單總線接口引腳,當(dāng)被用著在寄生電源下,也可以向器件提供電源;gnd為地信號(hào),

20、當(dāng)工作于寄生電源時(shí),此引腳必須接地。其電路圖如圖3-5所示.。圖3-5 外部封裝形式 ds18b20的測(cè)溫原理如圖3-6所示,圖中低溫度系數(shù)晶振的振蕩頻率受溫度的影響很小用于產(chǎn)生固定頻率的脈沖信號(hào)送給減法計(jì)數(shù)器1,高溫度系數(shù)晶振隨溫度變化其震蕩頻率明顯改變,所產(chǎn)生的信號(hào)作為減法計(jì)數(shù)器2的脈沖輸入,圖中還隱含著計(jì)數(shù)門,當(dāng)計(jì)數(shù)門打開(kāi)時(shí),ds18b20就對(duì)低溫度系數(shù)振蕩器產(chǎn)生的時(shí)鐘脈沖進(jìn)行計(jì)數(shù),進(jìn)而完成溫度測(cè)量.計(jì)數(shù)門的開(kāi)啟時(shí)間由高溫度系數(shù)振蕩器來(lái)決定,每次測(cè)量前,首先將-55 所對(duì)應(yīng)的基數(shù)分別置入減法計(jì)數(shù)器1和溫度寄存器中,減法計(jì)數(shù)器1和溫度寄存器被預(yù)置在-55 所對(duì)應(yīng)的一個(gè)基數(shù)值。 減法計(jì)數(shù)器1

21、對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行減法計(jì)數(shù),當(dāng)減法計(jì)數(shù)器1的預(yù)置值減到0時(shí)溫度寄存器的值將加1,減法計(jì)數(shù)器 1的預(yù)置將重新被裝入,減法計(jì)數(shù)器1重新開(kāi)始對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行計(jì)數(shù),如此循環(huán)直到減法計(jì)數(shù)器2計(jì)數(shù)到0時(shí),停止溫度寄存器值的累加,此時(shí)溫度寄存器中的數(shù)值即為所測(cè)溫圖3-7中的斜率累加器用于補(bǔ)償和修正測(cè)溫過(guò)程中的非線性其輸出用,于修正減法計(jì)數(shù)器的預(yù)置值,只要計(jì)數(shù)門仍未關(guān)閉就重復(fù)上述過(guò)程,直至溫度寄存器值達(dá)到被測(cè)溫度值,這就是ds18b20的測(cè)溫原理。 另外,由于ds18b20單線通信功能是分時(shí)完成的,有嚴(yán)格的時(shí)隙概念,因此讀寫時(shí)序很重要。系統(tǒng)對(duì)ds18b20的各種操作必須按協(xié)議

22、進(jìn)行。操作協(xié)議為:初始化ds18b20(發(fā)復(fù)位脈沖)發(fā)rom功能命令發(fā)存儲(chǔ)器操作命令處理數(shù)據(jù)。 在正常測(cè)溫情況下,ds1820的測(cè)溫分辨力為0.5。圖3-6 ds18b20的測(cè)溫原理3.5 晶振控制電路 單片機(jī)xial1和xial2分別接30pf的電容,中間在并個(gè)6mhz的晶振,形成單片機(jī)的晶振電路。圖3-7 晶振控制電路3.6 復(fù)位電路圖3-8 復(fù)位電路4 系統(tǒng)軟件設(shè)計(jì) 系統(tǒng)程序主要包括主程序,讀出溫度子程序,溫度轉(zhuǎn)換命令子程序,計(jì)算溫度子程序,顯示數(shù)據(jù)刷新子程序等。4.1 實(shí)驗(yàn)主程序流程圖 主程序的主要功能是負(fù)責(zé)溫度的實(shí)時(shí)顯示、讀出并處理ds18b20的測(cè)量的當(dāng)前溫度值,溫度測(cè)量每1s進(jìn)行

23、一次。這樣可以在一秒之內(nèi)測(cè)量一次被測(cè)溫度,其程序流程見(jiàn)圖4-1所示。圖4-1 主程序流程圖 4.2 讀出溫度子程序 讀出溫度子程序的主要功能是讀出ram中的9字節(jié),在讀出時(shí)需進(jìn)行crc校驗(yàn),校驗(yàn)有錯(cuò)時(shí)不進(jìn)行溫度數(shù)據(jù)的改寫。其程序流程圖如圖4-2所示。 圖4-2 讀溫度流程圖4.3 溫度轉(zhuǎn)換命令子程序溫度轉(zhuǎn)換命令子程序主要是發(fā)溫度轉(zhuǎn)換開(kāi)始命令,當(dāng)采用12位分辨率時(shí)轉(zhuǎn)換時(shí)間約為750ms,在本程序設(shè)計(jì)中采用1s顯示程序延時(shí)法等待轉(zhuǎn)換的完成。溫度轉(zhuǎn)換命令子程序流程圖如圖4-3所示。 圖4-3 溫度轉(zhuǎn)換流程圖4.4 計(jì)算溫度子程序計(jì)算溫度子程序?qū)am中讀取值進(jìn)行bcd碼的轉(zhuǎn)換運(yùn)算,并進(jìn)行溫度值正負(fù)的

24、判定,其程序流程圖如圖4-4所示。圖4-4 計(jì)算溫度流程圖4.5 顯示數(shù)據(jù)刷新子程序顯示數(shù)據(jù)刷新子程序主要是對(duì)顯示緩沖器中的顯示數(shù)據(jù)進(jìn)行刷新操作,當(dāng)最高顯示位為0時(shí)將符號(hào)顯示位移入下一位。程序流程圖如圖5-5所示。 圖4-5 顯示數(shù)據(jù)刷新流程圖 5 調(diào)試 系統(tǒng)的調(diào)試以程序?yàn)橹鳌S布{(diào)試比較簡(jiǎn)單,首先檢查電路的焊接是否正確,然后可用萬(wàn)用表測(cè)試或通電檢測(cè)。軟件調(diào)試先編寫顯示程序并進(jìn)行硬件的正確性檢驗(yàn),然后分別進(jìn)行主程序、讀出溫度子程序、溫度子程序、顯示數(shù)據(jù)刷新子程序的編程及調(diào)試,由于db18b20與單片機(jī)采用串行數(shù)據(jù)傳送,因此,我對(duì)db18b20進(jìn)行讀寫程序時(shí)嚴(yán)格地保證讀寫時(shí)序,以防無(wú)法讀取測(cè)量結(jié)

25、果。本程序采用單片機(jī)匯編編寫,用kell編程調(diào)試。軟件調(diào)試到能顯示溫度值,而且在有溫度變化時(shí)(例如用手去接觸)現(xiàn)實(shí)溫度能改變就基本完成。 性能測(cè)試時(shí),我用制作的溫度計(jì)和已有的成品溫度計(jì)來(lái)同時(shí)測(cè)量比較,由于db18b20的精度很高,所以誤差指標(biāo)可以限制在0.1以內(nèi),另外-55 +125的測(cè)溫范圍使得該溫度計(jì)完全適合一般的應(yīng)用場(chǎng)合,其低壓溫度供電特性可做成用電池供電的手持溫度計(jì)。 在db18b20測(cè)溫程序設(shè)計(jì)中,向db18b20發(fā)出溫度轉(zhuǎn)換命令后,程序總要等待db18b20的返回信號(hào),一旦某個(gè)db18b20接觸不好或斷線,當(dāng)程序讀該db18b20時(shí),將沒(méi)有返回信號(hào),程序進(jìn)入死循環(huán),所以我在進(jìn)行db

26、18b20硬件連接和軟件設(shè)計(jì)時(shí)給予了一定的重視。圖6-1 調(diào)試結(jié)果圖6 結(jié)束語(yǔ) 該溫度測(cè)試系統(tǒng)不僅具有結(jié)構(gòu)簡(jiǎn)單、體積小、價(jià)格低廉、精確度較高、反應(yīng)速度較快、數(shù)字化顯示和不易損壞等特點(diǎn),而且性能穩(wěn)定,適用范圍廣,因此特別適用于對(duì)測(cè)溫要求比較準(zhǔn)確的場(chǎng)所。 本設(shè)計(jì)所介紹的數(shù)字溫度計(jì)與傳統(tǒng)的溫度計(jì)相比,具有讀數(shù)方便,測(cè)溫范圍廣,測(cè)溫準(zhǔn)確,其輸出溫度采用數(shù)字顯示,主要用于對(duì)測(cè)溫比較準(zhǔn)確的場(chǎng)所,或科研實(shí)驗(yàn)室使用,該設(shè)計(jì)控制器使用單片機(jī)at89s51,測(cè)溫傳感器使用ds18b20,用3位共陽(yáng)極led數(shù)碼管以串口傳送數(shù)據(jù),實(shí)現(xiàn)溫度顯示,能準(zhǔn)確達(dá)到以上要求。參考文獻(xiàn):1 李廣第,王秀山. 單片機(jī)基礎(chǔ)m. 北京航

27、空航天大學(xué)出版,2001.2 余發(fā)山. 單片機(jī)原理及應(yīng)用技術(shù)m. 北京礦業(yè)大學(xué)出版社,2003.3 廖月琴. 基于at89s51單片計(jì)數(shù)溫度計(jì)的設(shè)計(jì)j.2010.4 李朝青. 單片機(jī)原理及接口技術(shù)m. 北京航空航天大學(xué)出版社,2002.5 金偉正. 單線數(shù)字溫度傳感器的原理與應(yīng)用j. 電子技術(shù)應(yīng)用. 2000.6 龍吉. 基于at89c2051單片機(jī)的數(shù)字溫度計(jì)的設(shè)計(jì)j. 科學(xué)之友. 2010.7 馬云峰. 單片機(jī)與數(shù)字溫度傳感器ds18b20的接口技術(shù)j. 計(jì)算機(jī)測(cè)量與控制. 2002.8 丁元杰. 單片機(jī)原理與應(yīng)用m. 機(jī)械工業(yè)出版社,1994.9 付家才. 單片機(jī)控制工程實(shí)踐技術(shù)m. 化

28、學(xué)工業(yè)出版社,2004.附錄 程序清單#include<reg52.h> /頭文件#define uchar unsigned char #define uint unsigned intsbit rs=p20;sbit lcden=p21; /液晶使能端sbit data = p37; /ds18b20接入口uchar flag_dis=0;uchar bai_18b20,shi_18b20,ge_18b20,num; /定義變量bit flag_negative_number ;/負(fù)數(shù)標(biāo)志uchar code table="tempreture:" ; /提

29、示語(yǔ)/*一毫秒定時(shí)*/void delay_ms(uint z)uint x,y;for(x=z;x>0;x-)for(y=110;y>0;y-);/*延時(shí)子函數(shù)*/void delay(uint num)while(num-) ;/*液晶寫命令*/void write_lcd_com(uchar com)rs=0;lcden=0;p0=com;delay_ms(1);lcden=1;delay_ms(1);lcden=0;/*液晶寫數(shù)據(jù)*/void write_lcd_date(uchar date)rs=1;lcden=0;p0=date;delay_ms(1);lcden=1

30、;delay_ms(1);lcden=0;/*液晶初始化程序*/void lcd_init()write_lcd_com(0x38);write_lcd_com(0x0c);write_lcd_com(0x06);write_lcd_com(0x01);/*ds18b20溫度傳感器函數(shù)*/void init_ds18b20(void) /傳感器初始化 uchar x=0; data = 1; /dq復(fù)位 delay(10); /稍做延時(shí) data = 0; /單片機(jī)將dq拉低 delay(80); /精確延時(shí) 大于 480us /450 data = 1; /拉高總線 delay(20); x

31、=data; /稍做延時(shí)后 如果x=0則初始化成功 x=1則初始化失敗 delay(30);/*溫度傳感器讀一個(gè)字節(jié)*/readonechar(void)uchar i=0;uchar dat = 0;for (i=8;i>0;i-) data = 0; / 給脈沖信號(hào) dat>>=1; data = 1; / 給脈沖信號(hào) if(data) dat|=0x80; delay(8); return(dat);/*溫度傳感器寫一個(gè)字節(jié)*/void writeonechar(uchar dat) uchar i=0; for (i=8; i>0; i-) data = 0;

32、data = dat&0x01; delay(10); data = 1; dat>>=1; delay(8);/*讀取溫度傳感器溫度*/int readtemperature(void)uchar a=0;uchar b=0;int t=0;float tt=0;init_ds18b20();writeonechar(0xcc); /跳過(guò)讀序號(hào)列號(hào)的操作writeonechar(0x44); /啟動(dòng)溫度轉(zhuǎn)換init_ds18b20();writeonechar(0xcc); /跳過(guò)讀序號(hào)列號(hào)的操作writeonechar(0xbe); /讀取溫度寄存器等(共可讀9個(gè)寄存器

33、)前兩個(gè)就是溫度a=readonechar();/低位b=readonechar();/高位t=b;t<<=8;t=t|a;if(b&0x80) t=t+1;flag_negative_number = 1; else flag_negative_number = 0; tt=t*0.0625;t= tt*10+0.5; return(t);/*液晶顯示溫度*/void dis_d18b20(void)int temp;temp=readtemperature();/讀溫度bai_18b20=temp%1000/100;/顯示十位shi_18b20=temp%100/10;

34、/顯示個(gè)位ge_18b20=temp%10;/顯示十分位if(flag_negative_number) /負(fù)數(shù)if(bai_18b20=0) /十位為0,則不顯示十位write_lcd_com(0x80+0x40);write_lcd_date(0x2d);write_lcd_date(0x30+shi_18b20);write_lcd_date(0x30+ge_18b20);write_lcd_date(0xdf);write_lcd_date(0x43);elsewrite_lcd_com(0x80+0x40);write_lcd_date(0x2d);write_lcd_date(0x

35、30+bai_18b20);write_lcd_date(0x30+shi_18b20);write_lcd_date(0xdf);write_lcd_date(0x43);else /正數(shù)if(bai_18b20=0) /十位為0,則不顯示十位write_lcd_com(0x80+0x40);write_lcd_date(0x30+shi_18b20);write_lcd_date(0x2e);write_lcd_date(0x30+ge_18b20);write_lcd_date(0xdf);write_lcd_date(0x43);elsewrite_lcd_com(0x80+0x40);write_lcd_date(0x30+bai_18b20);write_lcd_date(0x30+shi_18b20);write_lcd_date(0x2e);write_lcd_date(0x30+ge_18b20);write_lcd_date(0xdf);write_lcd_date(0x43);void main()lcd_init();tmod=0x01;th0=(65536-50000)/256; tl0=(65536-50000)%256; tr0=1;et0=1; ea=1; /開(kāi)總中斷write_lc

溫馨提示

  • 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)論