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

下載本文檔

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

文檔簡介

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

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

3、硬件電路概述9 2.2系統(tǒng)硬件各模塊設(shè)計簡介10第三章 數(shù)字氣壓計系統(tǒng)的軟件設(shè)計20 3.1本系統(tǒng)主程序設(shè)計流程20 3.2系統(tǒng)各子程序設(shè)計21第四章 數(shù)字氣壓計系統(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)驗總結(jié)和感謝31參考文獻 32前言1. 本系統(tǒng)設(shè)計意義以及目的 隨著時代的發(fā)展人們對事物的研究程度更加的深入,更加的細化了,以前我們研究的級別都還在毫米,微米級別上,而如今納米級的精度都隨處可見了,因此普通的物理級測量系統(tǒng)已經(jīng)達不到如今社會對測量的要求了,因此高精度數(shù)字化的測量儀器就成為了現(xiàn)在社會測量領(lǐng)域中一項很重要

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

37、令9:讀忙信號和光標地址 BF:忙標志位,高電平表示忙,此時模塊不能接收命令或數(shù)據(jù),如果為低電平表示不忙。 與HD44780相兼容的芯片時序表如下:   讀狀態(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ù) 輸入 R

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

39、/循環(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,然后通過單片機向BMP085寫入數(shù)據(jù)和讀出數(shù)據(jù)/*起始信號*/

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

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

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

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

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

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

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

47、改*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_read(0xBE)

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

49、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 = (b7 * 2) /

溫馨提示

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

評論

0/150

提交評論