基于單片機(jī)的數(shù)字氣壓計(jì)設(shè)計(jì)畢業(yè)設(shè)計(jì)_第1頁
基于單片機(jī)的數(shù)字氣壓計(jì)設(shè)計(jì)畢業(yè)設(shè)計(jì)_第2頁
基于單片機(jī)的數(shù)字氣壓計(jì)設(shè)計(jì)畢業(yè)設(shè)計(jì)_第3頁
基于單片機(jī)的數(shù)字氣壓計(jì)設(shè)計(jì)畢業(yè)設(shè)計(jì)_第4頁
基于單片機(jī)的數(shù)字氣壓計(jì)設(shè)計(jì)畢業(yè)設(shè)計(jì)_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、 JIANGSU TEACHERS UNIVERSITY OF TECHNOLOGY 本科畢業(yè)設(shè)計(jì)(論文)基于單片機(jī)的數(shù)字氣壓計(jì)設(shè)計(jì) 學(xué)院名稱: 電氣信息工程學(xué)院 專 業(yè): 電子信息工程 班 級(jí): 09電1w 姓 名: 邵元元 指導(dǎo)教師姓名: 高倩 指導(dǎo)教師職稱: 年 月 摘要 本文主要介紹的是基于單片機(jī)和氣壓傳感器BMP085設(shè)計(jì)的數(shù)字氣壓計(jì)系統(tǒng),主要介紹了本系統(tǒng)的硬件組成以及軟件流程。本系統(tǒng)通過氣壓傳感器BMP085獲取環(huán)境溫度以及當(dāng)?shù)貧鈮?,并通過核心處理芯片單片機(jī)獲取氣壓傳感器BMP085的數(shù)值,然后經(jīng)過相應(yīng)的軟件處理,獲得理想的數(shù)值,最后單片機(jī)將獲得的數(shù)據(jù)送至顯示器件LCD1602進(jìn)行

2、顯示。本文還重點(diǎn)介紹了應(yīng)用單片機(jī)達(dá)到系統(tǒng)自動(dòng)檢測功能,以及自由設(shè)定溫度以及氣壓上下限功能。在介紹硬件的同時(shí),本文還結(jié)合硬件闡述了該系統(tǒng)系統(tǒng)的軟件設(shè)計(jì),詳細(xì)的介紹以C語言為開發(fā)語言,以單片機(jī)為控制核心的數(shù)字氣壓計(jì)設(shè)計(jì)系統(tǒng)。本系統(tǒng)的最終目標(biāo)是完成基本的測量環(huán)境溫度以及當(dāng)?shù)貧鈮?,并且很穩(wěn)定快速的完成溫度氣壓上下限自由設(shè)定功能,還要能很好的完成超限報(bào)警功能。 關(guān)鍵詞:氣壓傳感器;C語言;單片機(jī);目錄摘要2目錄3前言4 1. 本系統(tǒng)設(shè)計(jì)意義以及目的4 2. 數(shù)字氣壓計(jì)發(fā)展趨勢5第一章 數(shù)字氣壓計(jì)基本概述 6 1.1本系統(tǒng)基本結(jié)構(gòu) 6 1.2本系統(tǒng)方案和器件選型方案論證7第二章 數(shù)字氣壓計(jì)系統(tǒng)的硬件電路設(shè)

3、計(jì)9 2.1本系統(tǒng)硬件電路概述9 2.2系統(tǒng)硬件各模塊設(shè)計(jì)簡介10第三章 數(shù)字氣壓計(jì)系統(tǒng)的軟件設(shè)計(jì)20 3.1本系統(tǒng)主程序設(shè)計(jì)流程20 3.2系統(tǒng)各子程序設(shè)計(jì)21第四章 數(shù)字氣壓計(jì)系統(tǒng)的軟硬件調(diào)試29 4.1本系統(tǒng)硬件調(diào)試29 4.2本系統(tǒng)軟件調(diào)試29第五章 總結(jié)315.1系統(tǒng)完成結(jié)果315.2 經(jīng)驗(yàn)總結(jié)和感謝31參考文獻(xiàn) 32前言1. 本系統(tǒng)設(shè)計(jì)意義以及目的 隨著時(shí)代的發(fā)展人們對事物的研究程度更加的深入,更加的細(xì)化了,以前我們研究的級(jí)別都還在毫米,微米級(jí)別上,而如今納米級(jí)的精度都隨處可見了,因此普通的物理級(jí)測量系統(tǒng)已經(jīng)達(dá)不到如今社會(huì)對測量的要求了,因此高精度數(shù)字化的測量儀器就成為了現(xiàn)在社會(huì)測

4、量領(lǐng)域中一項(xiàng)很重要的技術(shù)。同樣,數(shù)字氣壓計(jì)技術(shù)也就很順其自然的成為了氣壓測量領(lǐng)域的先進(jìn)技術(shù)了,它在很多領(lǐng)域里都發(fā)揮著非常巨大的作用:例如在工業(yè)方面,用數(shù)字氣壓計(jì)測量封閉空間的氣壓,以確保在封閉空間工作的安全性;在農(nóng)業(yè)方面,用數(shù)字氣壓計(jì)測量大氣氣壓,及時(shí)掌握預(yù)測和掌握天氣變化;此外數(shù)字氣壓計(jì)還有測量海拔高度的作用。等等以上這些應(yīng)用雖然普通的氣壓計(jì)都可以完成,但是普通氣壓計(jì)還是不能很好滿足以上應(yīng)用,和數(shù)字氣壓計(jì)相比普通氣壓的劣勢主要體現(xiàn)在以下幾個(gè)方面: 第一,測量精度 普通的氣壓計(jì)都是從物理層面出發(fā)去測量氣壓的,因此它受外界環(huán)境,測量人員等因素影響很大,因此它測量的數(shù)值就不是很精確,但是本文所介紹

5、的氣壓計(jì)是完全數(shù)字化的氣壓計(jì),受外界環(huán)境和測量人員的影響很小,還有它是將模擬量轉(zhuǎn)換為數(shù)字進(jìn)行測量,這樣又更進(jìn)一步的降低了測量過程中的干擾提高了測量精度。 第二,利于讀數(shù) 普通的氣壓計(jì)一般都是靠刻度進(jìn)行讀數(shù)的,由于刻度本身誤差和讀數(shù)誤差使得測量數(shù)據(jù)在無形中又增加了誤差,還有就是測量值的直觀性,普通的氣壓計(jì)在讀數(shù)時(shí)需要看刻度,并且需要簡單計(jì)算才能得到數(shù)值,而數(shù)字氣壓計(jì)的數(shù)值顯示很直觀,直接將數(shù)值通過屏幕顯示,能夠很大程度上減少讀數(shù)時(shí)間,提高了測量工作效率。 第三,智能化 普通的氣壓計(jì)在智能方面很欠缺,基本不能達(dá)到智能化應(yīng)用,基本上就只能完成單一的氣壓測量任務(wù),而且無法將測量數(shù)據(jù)保存,也就是說想要測

6、量一段時(shí)間氣壓變化值,必須測量者時(shí)時(shí)刻刻人工記錄數(shù)值,這樣使得工作人員工作量非常大,而數(shù)字氣壓計(jì)就可以做的非常的智能化,它不但可以將測量值時(shí)時(shí)的保存起來,它通過外部干預(yù)設(shè)定相應(yīng)的上下限值,以達(dá)到自動(dòng)判斷的目的。 第四,便于攜帶 普通的氣壓計(jì)因?yàn)榇蟛糠质强课锢砥骷淖兓瘉頊y量的氣壓的,因此它占用的空間就會(huì)大,而數(shù)字氣壓計(jì)就可以做的很小,大多數(shù)情況下都是做在了一塊電路板上而且數(shù)字氣壓計(jì)有專門的芯片,它有著很高的集成度,只要配合外部單片機(jī)就能組成高性能的數(shù)字氣壓計(jì)。不但便于攜帶而且性能穩(wěn)定。 由以上的眾多優(yōu)點(diǎn)可以看出,數(shù)字氣壓計(jì)的研究設(shè)計(jì)是很有實(shí)際意義,而且會(huì)有很廣泛的應(yīng)用。 本文所設(shè)計(jì)的數(shù)字氣壓計(jì)

7、就是利用高集成度的氣壓測量芯片,配合高速處理器單片機(jī)組成的,它具有高智能化,性能穩(wěn)定,以及體積小等特點(diǎn),本設(shè)計(jì)在系統(tǒng)外部設(shè)計(jì)了人工干預(yù)設(shè)定上下限功能,并且能夠自動(dòng)判斷超限報(bào)警。2. 數(shù)字氣壓計(jì)發(fā)展趨勢 近年來,傳感器技術(shù)發(fā)展的特別快,并且得到了廣泛的應(yīng)用,正因?yàn)檫@些傳感器的應(yīng)用使得越來越多的智能測量儀器出現(xiàn)。 數(shù)字氣壓計(jì)就是傳感器技術(shù)的產(chǎn)物,它被廣泛的應(yīng)用于工業(yè)領(lǐng)域、農(nóng)業(yè)領(lǐng)域、國防領(lǐng)域等。因?yàn)槠浔姸嗟膬?yōu)點(diǎn)使得它的應(yīng)用領(lǐng)域還會(huì)更廣。第1章 數(shù)字氣壓計(jì)基本概述1.1 本系統(tǒng)基本結(jié)構(gòu) 本文所設(shè)計(jì)的數(shù)字氣壓計(jì)系統(tǒng)是由高速處理器8052單片機(jī)、BMP085氣壓傳感器、lcd1602液晶等器件組成。由氣壓

8、傳感器測量出環(huán)境溫度和當(dāng)?shù)貧鈮海⑶覍?shù)據(jù)傳輸給單片機(jī),單片機(jī)經(jīng)過數(shù)據(jù)處理,將結(jié)果顯示在LCD1602液晶上,同時(shí)可由系統(tǒng)外部的按鍵設(shè)定溫度上下限和氣壓上下限,并且由單片機(jī)進(jìn)行判斷實(shí)際的環(huán)境溫度以及當(dāng)?shù)氐臍鈮菏欠癯^設(shè)定的上下限,如果超限了則由單片機(jī)驅(qū)動(dòng)外部報(bào)警器件進(jìn)行報(bào)警。 本系統(tǒng)的基本結(jié)構(gòu)如下圖: 8052 單片機(jī)傳輸數(shù)據(jù) LCD1602液晶BMP085 氣 壓 傳 感 器 傳輸設(shè)定 參 數(shù)外部設(shè)定按鍵傳輸顯示數(shù)據(jù)傳輸命令1.2本系統(tǒng)方案和器件選型方案論證 1.2.1本系統(tǒng)方案論證 最初方案: 利用BMP085氣壓傳感器時(shí)時(shí)測量環(huán)境溫度和大氣氣壓,并將測量的數(shù)據(jù)經(jīng)過總線傳輸給單片機(jī),經(jīng)單片

9、機(jī)將數(shù)據(jù)處理后,將處理后的數(shù)據(jù)送至lcd1602液晶進(jìn)行顯示。 方案優(yōu)點(diǎn):以上方案能夠很好的實(shí)現(xiàn)氣壓測量和溫度測量,并且測量精度高,抗干擾強(qiáng),比普通的氣壓計(jì)有很大的優(yōu)勢。 方案缺點(diǎn): 本方案雖然能夠完成基本的測量功能,而且還提高了測量精度,增強(qiáng)了抗干擾能力,但是本方案將設(shè)計(jì)重點(diǎn)只放在了數(shù)字上面了,更多的是為了將數(shù)字氣壓計(jì)的數(shù)字化體現(xiàn)出來,忽略了功能方面的欠缺,使得本系統(tǒng)比傳統(tǒng)的氣壓計(jì)優(yōu)勢不大。當(dāng)然這樣的設(shè)計(jì)是我們所不希望的,我們的設(shè)計(jì)目的是想要我們的系統(tǒng)發(fā)揮它最大的優(yōu)勢。改進(jìn)方案:總結(jié)最初方案的缺點(diǎn)后,設(shè)計(jì)了改進(jìn)方案,改進(jìn)方案是在最初方案優(yōu)點(diǎn)的基礎(chǔ)上,發(fā)揮優(yōu)點(diǎn)的長處,改進(jìn)缺點(diǎn)方面的不足。只要是

10、完善系統(tǒng)的功能。在系統(tǒng)外部加入了外部設(shè)定按鍵,可以由人工設(shè)定溫度上下限和氣壓上下限,并且能夠在超限后報(bào)警,這樣的設(shè)計(jì)不僅能發(fā)揮最初方案的優(yōu)勢,又使得系統(tǒng)在功能上更加的完善了。本系統(tǒng)最終采用了改進(jìn)后的方案,從缺點(diǎn)出發(fā),以改進(jìn)缺點(diǎn)保持優(yōu)點(diǎn)為主線分析設(shè)計(jì)出補(bǔ)充方案,使得整個(gè)設(shè)計(jì)能夠很好的滿足設(shè)計(jì)需要。 1.2.2本系統(tǒng)器件選型方案論證 本系統(tǒng)主要用到的元器件有:單片機(jī)、氣壓傳感器、顯示屏、按鍵,器件型號(hào)的選擇也在很大程度上影響著整個(gè)系統(tǒng)的功能和成本,因此器件選型對于整個(gè)系統(tǒng)設(shè)計(jì)來說也顯的非常的重要,因此對于器件選型在設(shè)計(jì)時(shí)也做了詳細(xì)的論證過程。下面對以上器件選型方案進(jìn)行論證 單片機(jī) 本系統(tǒng)在選擇處理

11、器時(shí)有多種選擇,例如51單片機(jī)、AVR單片機(jī)、ARM等,這些處理器都可以完成本系統(tǒng)的功能,雖然ARM、AVR單片機(jī)在處理速度以及外設(shè)上都比51好,但是從系統(tǒng)本身復(fù)雜程度和系統(tǒng)成本上考慮,最終還是采用了51,因?yàn)?1雖然在性能上比不上ARM和AVR單片機(jī),但是51的價(jià)格比他們低,而且在本系統(tǒng)上51能夠很好的完成。因此從本系統(tǒng)實(shí)際情況出發(fā)(本系統(tǒng)并不是很復(fù)雜的系統(tǒng)結(jié)構(gòu)和并不需要很高速的數(shù)據(jù)處理)在單片機(jī)選型上選擇51單片機(jī)。氣壓傳感器 本系統(tǒng)可選氣壓傳感器分別有BMP085、MXP4115、MXP4105等,雖然他們都可以完成對氣壓的測量,但是MXP4115和MXP4105只能測量氣壓,而前面的B

12、MP085不但可以測量氣壓還可以測量溫度,而且三者的價(jià)格都差不多,因此考慮系統(tǒng)功能豐富的情況下,本系統(tǒng)選擇使用了BMP085氣壓傳感器。這樣就使得系統(tǒng)的功能變得豐富了。顯示屏本系統(tǒng)在顯示屏選型上同樣也有多種選擇,LCD1602液晶、數(shù)碼管、LCD12864中文液晶等,雖然數(shù)碼管價(jià)格低,12864中文液晶可顯示中文,但是數(shù)碼管的顯示很簡單,在設(shè)置上下限時(shí)顯示不是很好,且不能顯示提示性話語,12864中文液晶價(jià)格昂貴,用在本系統(tǒng)中揮增加成本,綜合價(jià)格和顯示直觀這兩個(gè)條件,本系統(tǒng)最終選擇了1602液晶,因?yàn)樗鼉r(jià)格不是很貴,而且顯示也相對來說比較直觀。按鍵本系統(tǒng)在按鍵選型上一樣也有幾種選擇,分別是獨(dú)立

13、按鍵、矩陣鍵盤等,他們都各自有各自的優(yōu)缺點(diǎn)。獨(dú)立按鍵價(jià)格低廉,而且堅(jiān)固耐用,且編程操作簡單,但是接線麻煩。而矩陣鍵盤相對來說價(jià)格昂貴,編程操作比較麻煩,但是他接線簡單,而且占用少量的IO口就可以達(dá)到多個(gè)按鍵使用。但是綜合本系統(tǒng)的實(shí)際情況,本系統(tǒng)只是簡單的設(shè)置溫度上下限和氣壓上下限,不用大量的按鍵輸入,因此本系統(tǒng)還是采用了獨(dú)立按鍵,不僅價(jià)格便宜,編程方便,而且也能很好的滿足系統(tǒng)的需要。按照上面所述,整個(gè)系統(tǒng)的器件選型都首先將系統(tǒng)的功能放在了第一位,其次考慮了系統(tǒng)的成本,在很好的保證功能完善的情況下,進(jìn)一步的降低成本,從而設(shè)計(jì)出一套功能完善,價(jià)格低廉的優(yōu)質(zhì)產(chǎn)品。 第2章 數(shù)字氣壓計(jì)系統(tǒng)的硬件電路設(shè)

14、計(jì)2.1本系統(tǒng)硬件電路概述 本系統(tǒng)硬件電路設(shè)計(jì)包括單片機(jī)最小系統(tǒng)的設(shè)計(jì),以及氣壓傳感器BMP085芯片接線的設(shè)計(jì),LCD1602液晶接線設(shè)計(jì),還有電源部分的設(shè)計(jì),以下是系統(tǒng)的整體框圖2.2系統(tǒng)硬件各模塊設(shè)計(jì)簡介 單片機(jī)部分 單片機(jī)要實(shí)現(xiàn)工作必須要如下的最小系統(tǒng) 8051單片機(jī)簡介目前,8051單片機(jī)在工業(yè)檢測領(lǐng)域中得到了廣泛的應(yīng)用,因此我們可以在許多單片機(jī)應(yīng)用領(lǐng)域中,配接各種類型的語音接口,構(gòu)成具有合成語音輸出能力的綜合應(yīng)用系統(tǒng),以增強(qiáng)人機(jī)對話的功能。8051是Intel公司生產(chǎn)的一種單片機(jī),在一小塊芯片上集成了一個(gè)微型計(jì)算機(jī)的各個(gè)組成部分。每一個(gè)單片機(jī)包括:一個(gè)8位的微型處理器CPU;一個(gè)2

15、56K的片內(nèi)數(shù)據(jù)存儲(chǔ)器RAM;片內(nèi)程序存儲(chǔ)器ROM;四個(gè)8位并行的I/O接口P0-P3,每個(gè)接口既可以輸入,也可以輸出;兩個(gè)定時(shí)器/記數(shù)器;五個(gè)中斷源的中斷控制系統(tǒng);一個(gè)全雙工UART的串行I/O口;片內(nèi)振蕩器和時(shí)鐘產(chǎn)生電路,但石英晶體和微調(diào)電容需要外接。最高允許振蕩頻率是12MHZ。以上各個(gè)部分通過內(nèi)部總線相連接。下面簡單介紹下其各個(gè)部分的功能。中央處理器CPU是單片微型計(jì)算機(jī)的指揮、執(zhí)行中心,由它讀人用戶程序,并逐條執(zhí)行指令,它是由8位算術(shù)邏輯運(yùn)算部件(簡稱ALu)、定時(shí)控制部件,若干寄存器A、B、B5w、5P以及16位程序計(jì)數(shù)器(Pc)和數(shù)據(jù)指針寄存器(DM)等主要部件組成。算術(shù)邏輯單元

16、的硬件結(jié)構(gòu)與典型微型機(jī)相似。它具有對8位信息進(jìn)行+、-、x、/ 四則運(yùn)算和邏輯與、或、異或、取反、清“0”等運(yùn)算,并具有判跳、轉(zhuǎn)移、數(shù)據(jù)傳送等功能,此外還提供存放中間結(jié)果及常用數(shù)據(jù)寄存器??刂破鞑考怯芍噶罴拇嫫?、程序計(jì)數(shù)器Pc、定時(shí)與控制電路等組成的。指令寄存器中存放指令代碼。枷執(zhí)行指令時(shí),從程序存儲(chǔ)器中取來經(jīng)譯碼器譯碼后,根據(jù)不同指令由定時(shí)與控制電路發(fā)出相應(yīng)的控制信號(hào),送到存儲(chǔ)器、運(yùn)算器或Io接口電路,完成指令功能。 引腳極其功能MCS51系列單片機(jī)的40個(gè)引腳中有2個(gè)專用于主電源引腳,2個(gè)外接晶振的引腳,4個(gè)控制或與其它電源復(fù)用的引腳,以及32條輸入輸出I/O引腳。下面按引腳功能分為4個(gè)

17、部分?jǐn)⑹鰝€(gè)引腳的功能。1、 電源引腳Vcc和VssVcc(40腳):接+5V電源正端;Vss(20腳):接+5V電源正端。2、 外接晶振引腳XTAL1和XTAL2XTAL1(19腳):接外部石英晶體的一端。在單片機(jī)內(nèi)部,它是一個(gè)反相放大器的輸入端,這個(gè)放大器構(gòu)成采用外部時(shí)鐘時(shí),對于HMOS單片機(jī),該引腳接地;對于CHOMS單片機(jī),該引腳作為外部振蕩信號(hào)的輸入端。XTAL2(18腳):接外部晶體的另一端。在單片機(jī)內(nèi)部,接至片內(nèi)振蕩器的反相放大器的輸出端。當(dāng)采用外部時(shí)鐘時(shí),對于HMOS單片機(jī),該引腳作為外部振蕩信號(hào)的輸入端。對于CHMOS芯片,該引腳懸空不接。3、 控制信號(hào)或與其它電源復(fù)用引腳控制

18、信號(hào)或與其它電源復(fù)用引腳有RST/VPD、ALE/P、PSEN和EA/VPP等4種形式。(A)RST/VPD(9腳):RST即為RESET,VPD為備用電源,所以該引腳為單片機(jī)的上電復(fù)位或掉電保護(hù)端。當(dāng)單片機(jī)振蕩器工作時(shí),該引腳上出現(xiàn)持續(xù)兩個(gè)機(jī)器周期的高電平,就可實(shí)現(xiàn)復(fù)位操作,使單片機(jī)復(fù)位到初始狀態(tài)。當(dāng)VCC發(fā)生故障,降低到低電平規(guī)定值或掉電時(shí),該引腳可接上備用電源VPD(+5V)為內(nèi)部RAM供電,以保證RAM中的數(shù)據(jù)不丟失。(B)ALE/ P (30腳):當(dāng)訪問外部存儲(chǔ)器時(shí),ALE(允許地址鎖存信號(hào))以每機(jī)器周期兩次的信號(hào)輸出,用于鎖存出現(xiàn)在P0口的低(C)PSEN(29腳):片外程序存儲(chǔ)器

19、讀選通輸出端,低電平有效。當(dāng)從外部程序存儲(chǔ)器讀取指令或常數(shù)期間,每個(gè)機(jī)器周期PESN兩次有效,以通過數(shù)據(jù)總線口讀回指令或常數(shù)。當(dāng)訪問外部數(shù)據(jù)存儲(chǔ)器期間,PESN信號(hào)將不出現(xiàn)。(D)EA/Vpp(31腳):EA為訪問外部程序儲(chǔ)器控制信號(hào),低電平有效。當(dāng)EA端保持高電平時(shí),單片機(jī)訪問片內(nèi)程序存儲(chǔ)器4KB(MS52子系列為8KB)。若超出該范圍時(shí),自動(dòng)轉(zhuǎn)去執(zhí)行外部程序存儲(chǔ)器的程序。當(dāng)EA端保持低電平時(shí),無論片內(nèi)有無程序存儲(chǔ)器,均只訪問外部程序存儲(chǔ)器。對于片內(nèi)含有EPROM的單片機(jī),在EPROM編程期間,該引腳用于接21V的編程電源Vpp。(A).P0口(39腳22腳):P0.0P0.7統(tǒng)稱為P0口。

20、當(dāng)不接外部存儲(chǔ)器與不擴(kuò)展I/O接口時(shí),它可作為準(zhǔn)雙向8位輸入/輸出接口。當(dāng)接有外部程序存儲(chǔ)器或擴(kuò)展I/O口時(shí),P0口為地址/數(shù)據(jù)分時(shí)復(fù)用口。它分時(shí)提供8位雙向數(shù)據(jù)總線。對于片內(nèi)含有EPROM的單片機(jī),當(dāng)EPROM編程時(shí),從P0口輸入指令字節(jié),而當(dāng)檢驗(yàn)程序時(shí),則輸出指令字節(jié)(B).P1口(1腳8腳):P1.0P1.7統(tǒng)稱為P1口,可作為準(zhǔn)雙向I/O接口使用。對于MCS52子系列單片機(jī),P1.0和P1.1還有第2功能:P1.0口用作定時(shí)器/計(jì)數(shù)器2的計(jì)數(shù)脈沖輸入端T2;P1.1用作定時(shí)器/計(jì)數(shù)器2的外部控制端T2EX。對于EPROM編程和進(jìn)行程序校驗(yàn)時(shí),P0口接收輸入的低8位地址。(C).P2口(

21、21腳28腳):P2.0P2.7統(tǒng)稱為P2口,一般可作為準(zhǔn)雙向I/O接口。當(dāng)接有外部程序存儲(chǔ)器或擴(kuò)展I/O接口且尋址范圍超過256個(gè)字節(jié)時(shí),P2口用于高8位地址總線送出高8位地址。對于EPROM編程和進(jìn)行程序校驗(yàn)時(shí),P2口接收輸入的8位地址。(D).P3口(10腳17腳):P3.0P3.7統(tǒng)稱為P3口。它為雙功能口,可以作為一般的準(zhǔn)雙向I/O接口,也可以將每1位用于第2功能,而且P3口的每一條引腳均可獨(dú)立定義為第1功能的輸入輸出或第2功能氣壓傳感器BMP085部分BMP085基本參數(shù) 壓力范圍:300···1100hpa(+9000m··

22、83;-500m海拔高度)電壓范圍:1.8···3.6V(VDDA) 1.62···3.6V(VDDD) 封裝大小:長寬5*5mm高1.2mmLowpower····Lownoise····-內(nèi)含溫度測量-I2C接口-全標(biāo)準(zhǔn)(內(nèi)含標(biāo)準(zhǔn)數(shù)據(jù)校準(zhǔn))-不含鉛,鹵族元素,符合限制在電子電氣產(chǎn)品中使用有害物質(zhì)的指令-MSL1加強(qiáng)gps導(dǎo)航能力(航位推測法,斜坡探測等)。航海休閑和運(yùn)動(dòng)。天氣預(yù)報(bào)垂直速度指示(上升下降速度)BMP085作為新一代高精度氣壓傳感器與SMD

23、500的功能和引腳是完全兼容的。通用的SMD500/BMP085C代碼(BMP085-SMD500-API)與SMD500也是兼容的,但是要注意器件ID。正在使用SMD500氣壓傳感器的用戶如果打算使用BMP085氣壓傳感器并得到第一手資料,請盡快聯(lián)系BOSCH公司。BMP085的低功耗、低電壓的電學(xué)特性使它可以很好的適用于手機(jī)、PDA、GPS導(dǎo)航器件以及戶外裝備上。BMP085在低的高度噪聲(merely0.25)快速轉(zhuǎn)換的情況下,表現(xiàn)很好。BMP085是基于壓阻效應(yīng)技術(shù)的,具有穩(wěn)定的電磁兼容性、高精度、線性性以及穩(wěn)定性。Bosch公司的氣壓傳感器(在自動(dòng)控制應(yīng)用領(lǐng)域)是世界市場上的領(lǐng)軍,基

24、于200百萬氣壓傳感器這制造經(jīng)驗(yàn),BMP085繼續(xù)了新一代的微型氣壓傳感器。 1.電學(xué)特性如果沒有另作規(guī)定,以下所給的值是在電壓溫度范圍內(nèi)的最大值。2.絕對最大額定參數(shù)BMP085應(yīng)該作為靜電敏感器件操作。3操作3.1總述BMP085被設(shè)計(jì)為可以通過I2C總線直接與處理器相連接,測量壓力和溫度數(shù)據(jù)需要用BMP085的E2PROM中的標(biāo)準(zhǔn)數(shù)據(jù)進(jìn)行補(bǔ)償。3.2典型電路功能和應(yīng)用BMP085包含電阻式壓力傳感器、AD轉(zhuǎn)換器、和控制單元,其中控制單元包括E2PROM和I2C接口。BMP085傳送沒有經(jīng)過補(bǔ)償?shù)臏囟葔毫χ?。E2PROM儲(chǔ)存了176位單獨(dú)的標(biāo)準(zhǔn)數(shù)據(jù),這些標(biāo)準(zhǔn)數(shù)據(jù)用于補(bǔ)償、溫度依賴性和傳感器

25、其他的一些參數(shù)。UP=壓力數(shù)據(jù)(16to19bit)UT=溫度數(shù)據(jù)(0to15bit)典型電路注意:BMP085可以被獨(dú)立的提供不同水平的VDDA和VDDD而這在SMD500中不不可能的事。為了適應(yīng)不同的電壓水平,VDDA和VDDD應(yīng)該各接一個(gè)100nF的電容3.3測量溫度和壓力微控制器發(fā)送開始信號(hào)開始溫度或者壓力測量,經(jīng)過轉(zhuǎn)換時(shí)間(4.5ms)器結(jié)果值可以通過I2C接口讀出。為了將溫度的單位換算成和將壓力的單位換算成hPa,E2PROM中的標(biāo)準(zhǔn)數(shù)據(jù)應(yīng)該被使用。這些標(biāo)準(zhǔn)數(shù)據(jù)可以從BMP085中的E2PROM中通過I2C接口讀出。(這些標(biāo)準(zhǔn)數(shù)據(jù)應(yīng)該在初始化程序的時(shí)候就讀出,方便后面的計(jì)算)采樣速

26、率最高可以提升128次每秒鐘,用于那些動(dòng)態(tài)測量。正是由于這樣,溫度測量的速度只能達(dá)到每秒一次,也就是說在同一個(gè)采樣周期中可以采128次壓力值和一次溫度值,并且這些值在用完后就被刷新掉了。(PS:貌似是把128次壓力值和一次溫度值打成一個(gè)包,當(dāng)成一個(gè)整體用的意思。)通過選擇不同的模式,可以在功耗、速度及分辨率之間協(xié)調(diào)。具體選擇見下表。噪音數(shù)據(jù)被計(jì)算為10個(gè)數(shù)據(jù)點(diǎn)的標(biāo)準(zhǔn)偏差。為了得到更多的有關(guān)噪聲特點(diǎn)的信息,可以查看相關(guān)具體應(yīng)用的信息“在氣壓傳感器應(yīng)用中的噪聲”。所有的模式可以在一個(gè)較高的速度下執(zhí)行,例如,在傳輸速度為128次每秒的水平上,電流消耗的增長與傳輸速度的增長成比例。這樣噪聲可以用軟件的

27、方法進(jìn)一步降低。3.4校準(zhǔn)系數(shù)176位的E2PROM被劃分為11個(gè)字,每個(gè)字16位(11*16=176)。這樣就包含了11個(gè)校準(zhǔn)系數(shù)。每個(gè)器件模塊都有自己單獨(dú)的校準(zhǔn)系數(shù)。在第一次計(jì)算溫度壓力數(shù)據(jù)之前,控制器應(yīng)該先讀出讀出E2PROM中的數(shù)據(jù)。(就是前面說的先讀出校準(zhǔn)數(shù)據(jù),然后再開始采集數(shù)據(jù))數(shù)據(jù)通信的準(zhǔn)確性可以通過檢查沒有字的值是0和0xFFFF來確定。(PS:貌似意思是E2PROM中的值沒有0和0xFFFF,如果讀出這些值就是錯(cuò)的)3.5計(jì)算壓力和溫度低功耗,水平,高度,高分辨率可以通過oversampling_setting(0,1,2,3)C語言程序來選擇。通用SMD500/BMP085

28、代碼可以很好的兼容SMD500和自動(dòng)識(shí)別出器件ID。因此,SMD500可以被BMP085代替,而不用改變軟硬件設(shè)計(jì)。LCD1602液晶部分一:液晶顯示器各種圖形的顯示原理 線段的顯示:點(diǎn)陣圖形式液晶由M×N個(gè)顯示單元組成,假設(shè)LCD顯示屏有64行,每行有128列,每8列對應(yīng)1字節(jié)的8位,即每行由16字節(jié),共16×8=128個(gè)點(diǎn)組成,屏上64×16個(gè)顯示單元與顯示RAM區(qū)1024字節(jié)相對應(yīng),每一字節(jié)的內(nèi)容和顯示屏上相應(yīng)位置的亮暗對應(yīng)。例如屏的第一行的亮暗由RAM區(qū)的000H00FH的16字節(jié)的內(nèi)容決定,當(dāng)(000H)=FFH時(shí),則屏幕的左上角顯示一條短亮線

29、,長度為8個(gè)點(diǎn);當(dāng)(3FFH)=FFH時(shí),則屏幕的右下角顯示一條短亮線;當(dāng)(000H)=FFH,(001H)=00H,(002H)=00H,(00EH)=00H,(00FH)=00H時(shí),則在屏幕的頂部顯示一條由8段亮線和8條暗線組成的虛線。這就是LCD顯示的基本原理。 字符的顯示 用LCD顯示一個(gè)字符時(shí)比較復(fù)雜,因?yàn)橐粋€(gè)字符由6×8或8×8點(diǎn)陣組成,既要找到和顯示屏幕上某幾個(gè)位置對應(yīng)的顯示RAM區(qū)的8字節(jié),還要使每字節(jié)的不同位為“1”,其它的為“0”,為“1”的點(diǎn)亮,為“0”的不亮。這樣一來就組成某個(gè)字符。但由于內(nèi)帶字符發(fā)生器的控制器來說,顯示字符就比較

30、簡單了,可以讓控制器工作在文本方式,根據(jù)在LCD上開始顯示的行列號(hào)及每行的列數(shù)找出顯示RAM對應(yīng)的地址,設(shè)立光標(biāo),在此送上該字符對應(yīng)的代碼即可。 漢字的顯示 漢字的顯示一般采用圖形的方式,事先從微機(jī)中提取要顯示的漢字的點(diǎn)陣碼(一般用字模提取軟件),每個(gè)漢字占32B,分左右兩半,各占16B,左邊為1、3、5右邊為2、4、6根據(jù)在LCD上開始顯示的行列號(hào)及每行的列數(shù)可找出顯示RAM對應(yīng)的地址,設(shè)立光標(biāo),送上要顯示的漢字的第一字節(jié),光標(biāo)位置加1,送第二個(gè)字節(jié),換行按列對齊,送第三個(gè)字節(jié)直到32B顯示完就可以LCD上得到一個(gè)完整漢字  二:1602字符型LCD簡

31、介 1·字符型液晶顯示模塊是一種專門用于顯示字母、數(shù)字、符號(hào)等點(diǎn)陣式LCD,目前常用16*1,16*2,20*2和40*2行等的模塊。下面以長沙太陽人電子有限公司的1602字符型液晶顯示器為例,介紹其用法。一般1602字符型液晶顯示器實(shí)物如圖  2·1602LCD的基本參數(shù)及引腳功能 1602LCD分為帶背光和不帶背光兩種,基控制器大部分為HD44780,帶背光的比不帶背光的厚,是否帶背光在應(yīng)用中并無差別。 3 LCD1602主要技術(shù)參數(shù):  顯示容量:16×2個(gè)字符 芯片工作電壓:4

32、.55.5V 工作電流:2.0mA(5.0V) 模塊最佳工作電壓:5.0V 字符尺寸:2.95×4.35(W×H)mm 4引腳功能說明 1602LCD采用標(biāo)準(zhǔn)的14腳(無背光)或16腳(帶背光)接口,各引腳接口說明如表 編號(hào) 符號(hào) 引腳說明 編號(hào) 符號(hào) 引腳說明 1 VSS 電源地 9 D2 數(shù)據(jù) 2 VDD 電源正極 10 D3 數(shù)據(jù) 

33、3 VL 液晶顯示偏壓 11 D4 數(shù)據(jù) 4 RS 數(shù)據(jù)/命令選擇 12 D5 數(shù)據(jù) 5 R/W 讀/寫選擇 13 D6 數(shù)據(jù) 6 E 使能信號(hào) 14 D7 數(shù)據(jù) 7 D0 數(shù)據(jù) 15 BLA 背光源正極 8 D1 數(shù)據(jù) 16 BLK 背光源負(fù)極&#

34、160;第1腳:VSS為地電源。 第2腳:VDD接5V正電源。 第3腳:VL為液晶顯示器對比度調(diào)整端,接正電源時(shí)對比度最弱,接地時(shí)對比度最高,對比度過高時(shí)會(huì)產(chǎn)生“鬼影”,使用時(shí)可以通過一個(gè)10K的電位器調(diào)整對比度。 第4腳:RS為寄存器選擇,高電平時(shí)選擇數(shù)據(jù)寄存器、低電平時(shí)選擇指令寄存器。 第5腳:R/W為讀寫信號(hào)線,高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫操作。當(dāng)RS和R/W共同為低電平時(shí)可以寫入指令或者顯示地址,當(dāng)RS為低電平R/W為高電平時(shí)可以讀忙信號(hào),當(dāng)RS為高電平R/W為低電平時(shí)可以寫入數(shù)據(jù)。 第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電

35、平時(shí),液晶模塊執(zhí)行命令。  第714腳:D0D7為8位雙向數(shù)據(jù)線。 第15腳:背光源正極。 第16腳:背光源負(fù)極。 1602液晶模塊內(nèi)部的控制器共有11條控制指令 1602液晶模塊的讀寫操作,屏幕和光標(biāo)的操作都是通過指令編程來實(shí)現(xiàn)的。(說明1為高電平,0為低電平) 指令1:清顯示,指令碼01H,光標(biāo)復(fù)位到地址00H位置 指令2:光標(biāo)復(fù)位,光標(biāo)返回到地址00H 指令3:光標(biāo)和顯示位置設(shè)置I/D,光標(biāo)移動(dòng)方向,高電平右移,低電平左移,S:屏幕上所有文字是否左移或右移,高電平表示有效,低電平表示無效。 

36、;指令4:顯示開關(guān)控制。D:控制整體的顯示開與關(guān),高電平表示開顯示,低電平表示關(guān)顯示。C:控制光標(biāo)的開與關(guān),高電平表示有光標(biāo),低電平表示無光標(biāo) B:控制光標(biāo)是否閃爍,高電平閃爍,低電平不閃爍。 指令5:光標(biāo)或顯示移位 S/C :高電平時(shí)顯示移動(dòng)的文字,低電平時(shí)移動(dòng)光標(biāo) 指令6:功能設(shè)置命令 DL:高電平時(shí)為4位總線,低電平時(shí)為8位總線 N:低電平時(shí)為單行顯示,高電平時(shí)為雙行顯示,F(xiàn):低電平時(shí)顯示5X7的點(diǎn)陣字符,高電平時(shí)顯示5X10的顯示字符。 指令7:字符發(fā)生器RAM地址設(shè)置。 指令8:DDRAM地址設(shè)

37、置。 指令9:讀忙信號(hào)和光標(biāo)地址 BF:忙標(biāo)志位,高電平表示忙,此時(shí)模塊不能接收命令或數(shù)據(jù),如果為低電平表示不忙。 與HD44780相兼容的芯片時(shí)序表如下:   讀狀態(tài) 輸入 RS=L,R/W=H,E=H 輸出 D0D7=狀態(tài)字 寫指令 輸入 RS=L,R/W=L,D0D7=指令碼,E=高脈沖 輸出 無 讀數(shù)據(jù) 輸入 RS=H,R/W=H,E=H 輸出 D0D7=數(shù)據(jù) 寫數(shù)據(jù) 

38、輸入 RS=H,R/W=L,D0D7=數(shù)據(jù),E=高脈沖 輸出 無  基本操作時(shí)序如下圖第3章 數(shù)字氣壓計(jì)系統(tǒng)的軟件設(shè)計(jì)3.1本系統(tǒng)主程序設(shè)計(jì)流程開始單片機(jī)初始化BMP085初始化進(jìn)行溫度和氣壓顯示設(shè)置上下限?否是設(shè)置上下限否是否超限?返回繼續(xù)判斷是超限報(bào)警結(jié)束3.2系統(tǒng)各子程序設(shè)計(jì) 系統(tǒng)主程序系統(tǒng)主程序是系統(tǒng)程序的入口,系統(tǒng)其他的子程序均由主程序直接或間接調(diào)用void main() unsigned char i=0;delay(50); /上電延時(shí)LCD1602_init(); /液晶初始化Init_BMP085(); /初始化BMP085

39、while(1) /循環(huán) for(i=0;i<10;i+)KEYS(get_keys();delay(50);if(status=0)display();if(status=0)bmp085Convert();if(temperature>=temperature_H|temperature<=temperature_L|pressure>=pressu re_H|pressure<=pressure_L)SPK=0;elseSPK=1; BMP085初始化以及讀寫程序BMP085程序主要完成的功能是初始化BMP085,然后通過單片機(jī)向BMP085寫入數(shù)據(jù)和讀出數(shù)

40、據(jù)/*起始信號(hào)*/void BMP085_Start() SDA = 1; /拉高數(shù)據(jù)線 SCL = 1; /拉高時(shí)鐘線 Delay5us(); /延時(shí) SDA = 0; /產(chǎn)生下降沿 Delay5us(); /延時(shí) SCL = 0; /拉低時(shí)鐘線/*停止信號(hào)*/void BMP085_Stop() SDA = 0; /拉低數(shù)據(jù)線 SCL = 1; /拉高時(shí)鐘線 Delay5us(); /延時(shí) SDA = 1; /產(chǎn)生上升沿 Delay5us(); /延時(shí)/*發(fā)送應(yīng)答信號(hào)入口參數(shù):ack (0:ACK 1:NAK)*/void BMP085_SendACK(bit ack) SDA = ack

41、; /寫應(yīng)答信號(hào) SCL = 1; /拉高時(shí)鐘線 Delay5us(); /延時(shí) SCL = 0; /拉低時(shí)鐘線 Delay5us(); /延時(shí)/*接收應(yīng)答信號(hào)*/bit BMP085_RecvACK() SCL = 1; /拉高時(shí)鐘線 Delay5us(); /延時(shí) CY = SDA; /讀應(yīng)答信號(hào) SCL = 0; /拉低時(shí)鐘線 Delay5us(); /延時(shí) return CY;/*向IIC總線發(fā)送一個(gè)字節(jié)數(shù)據(jù)*/void BMP085_SendByte(unsigned char dat) unsigned char i; for (i=0; i<8; i+) /8位計(jì)數(shù)器 da

42、t <<= 1; /移出數(shù)據(jù)的最高位 SDA = CY; /送數(shù)據(jù)口 SCL = 1; /拉高時(shí)鐘線 Delay5us(); /延時(shí) SCL = 0; /拉低時(shí)鐘線 Delay5us(); /延時(shí) BMP085_RecvACK();/*從IIC總線接收一個(gè)字節(jié)數(shù)據(jù)*/unsigned char BMP085_RecvByte() unsigned char i; unsigned char dat = 0; SDA = 1; /使能內(nèi)部上拉,準(zhǔn)備讀取數(shù)據(jù), for (i=0; i<8; i+) /8位計(jì)數(shù)器 dat <<= 1; SCL = 1; /拉高時(shí)鐘線 D

43、elay5us(); /延時(shí) dat |= SDA; /讀數(shù)據(jù) SCL = 0; /拉低時(shí)鐘線 Delay5us(); /延時(shí) return dat;/*/讀出BMP085內(nèi)部數(shù)據(jù),連續(xù)兩個(gè)/*short Multiple_read(unsigned char ST_Address) unsigned char msb, lsb;short _data;BMP085_Start(); /起始信號(hào)BMP085_SendByte(BMP085_SlaveAddress); /發(fā)送設(shè)備地址+寫信號(hào)BMP085_SendByte(ST_Address); /發(fā)送存儲(chǔ)單元地址BMP085_Start()

44、; /起始信號(hào)BMP085_SendByte(BMP085_SlaveAddress+1); /發(fā)送設(shè)備地址+讀信號(hào)msb = BMP085_RecvByte(); /BUF0存儲(chǔ)BMP085_SendACK(0); /回應(yīng)ACKlsb = BMP085_RecvByte(); BMP085_SendACK(1); /最后一個(gè)數(shù)據(jù)需要回NOACKBMP085_Stop(); /停止信號(hào)delay(5);_data = msb << 8;_data |= lsb;return _data;/*long bmp085ReadTemp(void)BMP085_Start(); /起始信號(hào)

45、BMP085_SendByte(BMP085_SlaveAddress); /發(fā)送設(shè)備地址+寫信號(hào)BMP085_SendByte(0xF4); / write register addressBMP085_SendByte(0x2E); / write register data for tempBMP085_Stop(); /發(fā)送停止信號(hào)delay(10);/ max time is 4.5msreturn (long) Multiple_read(0xF6);/*long bmp085ReadPressure(void)long pressure = 0;BMP085_Start(); /

46、起始信號(hào)BMP085_SendByte(BMP085_SlaveAddress); /發(fā)送設(shè)備地址+寫信號(hào)BMP085_SendByte(0xF4); / write register addressBMP085_SendByte(0x34); / write register data for pressureBMP085_Stop(); /發(fā)送停止信號(hào)delay(10); / max time is 4.5mspressure = Multiple_read(0xF6);pressure &= 0x0000FFFF;return pressure;/*/初始化BMP085,根據(jù)需要

47、請參考pdf進(jìn)行修改*void Init_BMP085()ac1 = Multiple_read(0xAA);ac2 = Multiple_read(0xAC);ac3 = Multiple_read(0xAE);ac4 = Multiple_read(0xB0);ac5 = Multiple_read(0xB2);ac6 = Multiple_read(0xB4);b1 = Multiple_read(0xB6);b2 = Multiple_read(0xB8);mb = Multiple_read(0xBA);mc = Multiple_read(0xBC);md = Multiple_r

48、ead(0xBE);/*void bmp085Convert()long ut;long up;long x1, x2, b5, b6, x3, b3, p;unsigned long b4, b7;ut = bmp085ReadTemp(); / 讀取溫度up = bmp085ReadPressure(); / 讀取壓強(qiáng)x1 = (long)ut - ac6) * ac5 >> 15;x2 = (long) mc << 11) / (x1 + md);b5 = x1 + x2;temperature = (b5 + 8) >> 4;b6 = b5 - 40

49、00;x1 = (b2 * (b6 * b6 >> 12) >> 11;x2 = ac2 * b6 >> 11;x3 = x1 + x2;b3 = (long)ac1 * 4 + x3) + 2)/4;x1 = ac3 * b6 >> 13;x2 = (b1 * (b6 * b6 >> 12) >> 16;x3 = (x1 + x2) + 2) >> 2;b4 = (ac4 * (unsigned long) (x3 + 32768) >> 15;b7 = (unsigned long) up - b3) * (50000 >> OSS);if( b7 < 0x80000000)p = (

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論