資源簡介
基于bmp085氣壓傳感器制作的大氣壓強、溫度、海拔高度測量儀(含詳細源代碼,部分bmp085相關(guān)資料)注釋明了,方便閱讀,程序模塊化,方便移植。stc89c52,lcd12864

代碼片段和文件信息
/************************************************************************
文件名:BMP085driver.c
函數(shù)功能:BMP085的基本操作函數(shù)
備?注:
控制流程:
初始化(直接讀取內(nèi)部11位eeprom數(shù)據(jù)) ??? (1)
獲取大氣壓強未補償數(shù)據(jù)(發(fā)送控制指令-讀取數(shù)據(jù)) ? (2)
獲取當前氣溫值(發(fā)送控制指令-讀取數(shù)據(jù)) (3)
獲取海拔高度值(根據(jù)(2)(3)兩步得到的數(shù)據(jù)計算出結(jié)果) (4)
?? 獲取海拔高度平均值(將(4)得到的數(shù)據(jù)分別放到10位數(shù)組中計算出平均值,
由于采用了1進1出的計算方式,因此該數(shù)據(jù)具有較好的實時性及線性效果(5)
顯示結(jié)果(通過lcd12864顯示測量結(jié)果) (6)
重復(fù)執(zhí)行步驟(2)(3)(4)(5)(6)
************************************************************************/
#include?“config.h“ ???
//定義傳感器內(nèi)部EEPROM存儲單元里面11個值
int?idata?AC1AC2AC3B1B2MCMD;?
unsigned?int?idata?AC4AC5AC6;?
unsigned?char?idata?AltitudeTempFlag; ?//計算海拔高度使用到的數(shù)據(jù)標志
int?idata?AltitudeTemp[10]={0000000000}; ?//海拔高度的10個臨時值,取平均值
unsigned?char?code??Pressuretitle[16]={“氣壓溫度測量“};
unsigned?char?idata?ShowPressure[16]={“氣壓:?????????pa“};
unsigned?char?idata?ShowTemperature[16]={“溫度:???????.?℃“};
unsigned?char?idata?ShowAltitude[16]={“海拔:??????.??米“};
/****************************************************************
函數(shù)名稱:BMP085_Read_2Byte
函數(shù)功能:從BMP085讀出2字節(jié)數(shù)據(jù)
入口參數(shù):add ?//寄存器地址
出口參數(shù):讀取的數(shù)據(jù)
備?注:
*****************************************************************/
int?BMP085_Read_2Byte(uchar?add)
{???
uchar?msb?lsb;
int?dat;
????Start_I2c();?????????????????????????? //起始信號
????Send_Byte(BMP085_ADDWR);???? //發(fā)送設(shè)備地址+寫信號
if(ack==0)?return(0);
????Send_Byte(add); ? //發(fā)送存儲單元地址
if(ack==0)?return(0);
Start_I2c();?????????????????????????? //重復(fù)起始信號
????Send_Byte(BMP085_ADDWR+1);????????? //發(fā)送設(shè)備地址+讀信號
if(ack==0)?return(0);
????msb?=?RcvByte();?????????????????
????Ack_I2c(0);??????????????????????? //主機發(fā)送應(yīng)答信號
????lsb?=?RcvByte();?????
Ack_I2c(1);??????????????????????? //主機收到最后一張字節(jié)數(shù)據(jù)后發(fā)送非應(yīng)答信號
????Stop_I2c();??????????????????????????? //停止信號
????DelayMs(5);
????dat?=?msb?<8;
dat?|=?lsb;
return?dat; ?? //返回接受到的兩字節(jié)數(shù)據(jù)
}
/****************************************************************
函數(shù)名稱:BMP085_Get_UT
函數(shù)功能:讀出未補償?shù)臏囟戎?br/>入口參數(shù):無
出口參數(shù):未補償?shù)臏囟戎?br/>備?注:
*****************************************************************/
long?BMP085_Get_UT(void)
{
????Start_I2c();?????????????????? //起始信號
????Send_Byte(BMP085_ADDWR);??? //發(fā)送設(shè)備地址+寫信號
????Send_Byte(CTRL_REG_ADD); ?????????? //?write?register?address
????Send_Byte(0X2E);??????? //?write?register?data?for?temp
????Stop_I2c();??????????????????? //發(fā)送停止信號
DelayMs(CONVERSION_TIME); //AD轉(zhuǎn)換時間,溫度最大轉(zhuǎn)換時間為4.5ms
return?(long)?BMP085_Read_2Byte(0xF6);
}
/****************************************************************
函數(shù)名稱:BMP085_Get_UP
函數(shù)功能:讀出未補償?shù)臍鈮褐?br/>入口參數(shù):無
出口參數(shù):未補償?shù)臍鈮褐?br/>備?注:
*****************************************************************/
long?BMP085_Get_UP(void)
{
long?pressure?=?0;
????Start_I2c();??????????????????? //起始信號
????Send_Byte(BMP085_ADDWR);??? //發(fā)送設(shè)備地址+寫信號
????Send_Byte(CTRL_REG_ADD); ?????????? //?write?register?address
????Send_Byte(0X34);??????? ?? //?低功耗模式指令
????S
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????60392??2012-09-01?19:18??BMP085.uvopt
?????文件???????15495??2012-09-01?19:18??BMP085.uvproj
?????文件???????15485??2012-09-01?17:29??BMP085_uvproj.bak
?????目錄???????????0??2012-09-01?19:18??doc\
?????文件??????554716??2012-08-30?17:04??doc\BMP805中文手冊.docx
?????文件??????197012??2012-08-30?16:38??doc\數(shù)字氣壓傳感器BMP085應(yīng)用筆記.pdf
?????目錄???????????0??2012-09-01?18:43??list\
?????文件???????39929??2012-09-01?18:43??list\BMP085.m51
?????文件???????18733??2012-09-01?18:43??list\bmp085drive.lst
?????文件????????2699??2012-09-01?18:43??list\components.lst
?????文件???????10901??2012-09-01?18:43??list\displaydrive.lst
?????文件????????7339??2012-09-01?18:43??list\i2cdrive.lst
?????文件?????????816??2012-08-31?14:27??list\iicdrive.lst
?????文件????????6139??2012-09-01?18:43??list\LCD12864drive.lst
?????文件????????2219??2012-09-01?18:43??list\main.lst
?????目錄???????????0??2012-09-01?18:43??output\
?????文件???????17044??2012-09-01?18:43??output\BMP085
?????文件???????19406??2012-09-01?18:43??output\BMP085.hex
?????文件?????????231??2012-09-01?18:43??output\BMP085.lnp
?????文件?????????535??2012-09-01?18:43??output\BMP085.plg
?????文件???????11121??2012-09-01?18:43??output\bmp085drive.obj
?????文件????????1144??2012-09-01?18:43??output\components.obj
?????文件????????4192??2012-09-01?18:43??output\displaydrive.obj
?????文件????????2296??2012-09-01?18:43??output\i2cdrive.obj
?????文件????????2828??2012-09-01?18:43??output\LCD12864drive.obj
?????文件?????????909??2012-09-01?18:43??output\main.obj
?????目錄???????????0??2012-09-01?14:16??src\
?????文件???????10020??2012-09-01?18:38??src\bmp085drive.c
?????文件?????????818??2012-09-01?18:27??src\bmp085drive.h
?????文件????????1114??2012-08-31?14:31??src\components.c
?????文件?????????714??2012-08-31?14:31??src\components.h
............此處省略8個文件信息
評論
共有 條評論