基于bmp085气压传感器制作的大气压强、温度、海拔高度测量仪(含详细源代码)42897_第1页
基于bmp085气压传感器制作的大气压强、温度、海拔高度测量仪(含详细源代码)42897_第2页
基于bmp085气压传感器制作的大气压强、温度、海拔高度测量仪(含详细源代码)42897_第3页
基于bmp085气压传感器制作的大气压强、温度、海拔高度测量仪(含详细源代码)42897_第4页
基于bmp085气压传感器制作的大气压强、温度、海拔高度测量仪(含详细源代码)42897_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

坿旗鷹/*朕兆各BMP085庁翠啣周孔嬬霞編朕仇BMP085庁翠啣周孔嬬霞編庁翠児云怏周12864駁強幣駁強iic駁強bmp085駁強孔嬬v0.0響函eeprom戦中11倖方象旺拝響函寄賑儿議峙參2序崙侘塀幣竃栖v0.1響函竃輝念賑儿峙、賑梁、今偉互業旺拝幣竃栖啣周勣箔麼陣仂頭:STC89c52霞編窮揃医!噸嶄親室51蝕窟医唱尅12.000mhz */#includeconfig.hvoid main()LCD_Init();DisplayLoading();Init_BMP085();for(;)Show_BMP085_Result();/*緩遊猟周岷俊淫根畠何児云怏周宴噐砿尖、距喘*/#ifndef _CONFIG_H#define _CONFIG_H#include #include #include #include LCD12864drive.h#include displaydrive.h#include components.h#include i2cdrive.h#include bmp085drive.h/typedef unsigned char uchar;/typedef unsigned int uint;#endif/*猟周兆BMP085driver.c痕方孔嬬BMP085議児云荷恬痕方姥 廣陣崙送殻兜兵晒岷俊響函坪何11了eeprom方象 1資函寄賑儿膿隆温灰方象窟僕陣崙峺綜-響函方象 2資函輝念賑梁峙窟僕陣崙峺綜-響函方象3資函今偉互業峙功象23曾化誼欺議方象柴麻竃潤惚4 資函今偉互業峠譲峙繍4誼欺議方象蛍艶慧欺10了方怏嶄柴麻竃峠譲峙喇噐寡喘阻1序1竃議柴麻圭塀咀緩乎方象醤嗤熟挫議糞扮來式來丼惚5幣潤惚宥狛lcd12864幣霞楚潤惚6嶷鹸峇佩化帶23456*/#include config.h/協吶勧湖匂坪何EEPROM贋刈汽圷戦中11倖峙int idata AC1,AC2,AC3,B1,B2,MC,MD;unsigned int idata AC4,AC5,AC6;unsigned char idata AltitudeTempFlag; /柴麻今偉互業聞喘欺議方象炎崗int idata AltitudeTemp10=0,0,0,0,0,0,0,0,0,0; /今偉互業議10倖匝扮峙函峠譲峙unsigned char code PressureTitle16=賑儿梁業霞楚;unsigned char idata ShowPressure16=賑儿: pa;unsigned char idata ShowTemperature16=梁業: . ;unsigned char idata ShowAltitude16=今偉: . 致;/*痕方兆各BMP085_Read_2Byte痕方孔嬬貫BMP085響竃2忖准方象秘笥歌方add /篠贋匂仇峽竃笥歌方響函議方象姥 廣*/int BMP085_Read_2Byte(uchar add)uchar msb, lsb;int dat; Start_I2c(); /軟兵佚催 Send_Byte(BMP085_ADDWR); /窟僕譜姥仇峽+亟佚催if(ack=0) return(0); Send_Byte(add); /窟僕贋刈汽圷仇峽if(ack=0) return(0);Start_I2c(); /嶷鹸軟兵佚催 Send_Byte(BMP085_ADDWR+1); /窟僕譜姥仇峽+響佚催if(ack=0) return(0); msb = RcvByte(); Ack_I2c(0); /麼字窟僕哘基佚催 lsb = RcvByte();Ack_I2c(1); /麼字辺欺恷朔匯嫖忖准方象朔窟僕掲哘基佚催 Stop_I2c(); /唯峭佚催 DelayMs(5); dat = msb 15; /功象仂頭返過戻工議巷塀柴麻温灰朔議梁業峙X2 = (long) MC 4;if(choice=0)return (long)temperature;/卦指梁業峙,0.1B6 = B5 - 4000; /功象仂頭返過戻工議巷塀柴麻温灰朔議賑儿峙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);if( B7 8) * (p 8);X1 = (X1 * 3038) 16;X2 = (-7357 * p) 16;pressure = p + (X1 + X2 + 3791) 4);return (long)pressure; /卦指賑儿峙Pa/*痕方兆各BMP085_Get_Altitude痕方孔嬬資函今偉互業峙秘笥歌方涙竃笥歌方altitude /int侏 2忖准輝念今偉互業峙姥 廣 卦指議互業峙汽了葎舌致距喘扮壅算麻撹揮弌方議參致葎汽了議互業峙*/int BMP085_Get_Altitude()float pressure;float altitude;pressure=(float)BMP085_Get_Param(1);/資函賑儿峙altitude=44330*(1-pow(pressure/101325,1/5.255); /功象仂頭返過戻工議巷塀柴麻今偉互業altitude*=100; /廬算撹舌致汽了議互業峙距喘扮壅算麻撹揮弌方議互業峙戻互娼業return (int)altitude;/*痕方兆各ConvPressure()痕方孔嬬廬算賑儿秘笥歌方涙竃笥歌方涙姥 廣繍誼欺方象廬晒撹lcd議方象宴噐幣*/void ConvPressure()long Pressure;Pressure=BMP085_Get_Param(1);if(Pressure=0) ShowPressure5=+;else /泌惚今偉互業頁匯倖減方勣枠函郡ShowPressure5=-;Pressure=Pressure;ShowPressure6=Pressure/1000000+0x30;ShowPressure7=Pressure%1000000/100000+0x30;ShowPressure8=Pressure%100000/10000+0x30;ShowPressure9=Pressure%10000/1000+0x30;ShowPressure11=Pressure%1000/100+0x30;ShowPressure12=Pressure%100/10+0x30;ShowPressure13=Pressure%10+0x30;/*痕方兆各ConvTemperature()痕方孔嬬廬算賑梁秘笥歌方涙竃笥歌方涙姥 廣繍誼欺方象廬晒撹lcd議方象宴噐幣*/void ConvTemperature()int Temperature;Temperature=(int)BMP085_Get_Param(0);if(Temperature=0) ShowTemperature6=+;else /泌惚今偉互業頁匯倖減方勣枠函郡ShowTemperature6=-;Temperature=Temperature;ShowTemperature8=Temperature/10000+0x30;ShowTemperature9=Temperature%10000/1000+0x30;ShowTemperature10=Temperature%1000/100+0x30;ShowTemperature11=Temperature%100/10+0x30;ShowTemperature13=Temperature%10+0x30;/*痕方兆各ConvAltitude()痕方孔嬬廬算今偉互業秘笥歌方涙竃笥歌方涙姥 廣繍誼欺方象廬晒撹lcd議方象宴噐幣*/void ConvAltitude()long Altitude;/今偉互業unsigned char Tempnum;/匝扮峙Altitude=BMP085_Get_Altitude();if(Altitude=0) ShowAltitude6=+;else /泌惚今偉互業頁匯倖減方勣枠函郡ShowAltitude6=-;Altitude=Altitude;/*函10肝霞楚峙議峠譲峙恬葎霞楚潤惚緩麻隈贋壓芝吮丼惚*/AltitudeTempFlag+;/炎崗徭紗if(AltitudeTempFlag=10) AltitudeTempFlag=0;AltitudeTempAltitudeTempFlag=Altitude;/功象炎崗隠贋方象欺方怏for(Tempnum=0;Tempnum0;c-)/ for(b=170;b0;b-)/ for(a=31;a0;a-);/void DelayMs(unsigned int ms) /stc89c52 12.000mhz 列餓 -0.651041666667us unsigned int a,b;for(b=4*ms;b0;b-)for(a=113;a0;a-);/*孔嬬謹倖販暦岻寂札住算補秘裏昼决扮議方峙補竃涙*/void Delay2Us(unsigned int us) /stc12c5a60s2 22.1184mhz/ unsigned int a;/ for(a=8*us;a0;a-);/void Delay8Us(unsigned int us) /stc89c52 12.000mhz unsigned char a; for(a=us;a0;a-); _nop_(); /if Keil,require use intrins.h/*猟周兆components.h狼由怏周殻會孔嬬傍苧淫根阻械喘議児云痕方參式児云議補秘補竃俊笥哘喘蚊肝久蚊狼由怏周*/*園咎圓侃尖*/#ifndef _COMPONENTS_H#define _COMPONENTS_H/*児云補秘補竃俊笥*/sbit KEY0=P15;/*畠蕉延楚蕗苧*/*翌何痕方蕗苧*/extern void DelayMs(unsigned int ms);/叙叙癖喘噐stc12c5a60s2 22.1184mhz唱尅extern void Delay8Us(unsigned int us);/叙叙癖喘噐stc12c5a60s2 22.1184mhz唱尅#endif/*痕方兆各Start_I2c痕方孔嬬I2c悳窟竃軟兵佚催秘笥歌方涙竃笥歌方姥 廣*/void Start_I2c()SDA=1;_nop_();SCL=1;_nop_(); _nop_();_nop_();_nop_();_nop_();SDA=0;_nop_(); _nop_();_nop_();_nop_();_nop_();SCL=0; _nop_();_nop_();/*痕方兆各Stop_I2c痕方孔嬬I2c悳窟竃嶮峭佚催秘笥歌方涙竃笥歌方姥 廣*/void Stop_I2c()SDA=0; /*窟僕潤崩訳周議方象佚催*/_nop_(); /*窟僕潤崩訳周議扮嶝佚催*/SCL=1; /*潤崩訳周秀羨扮寂寄噐4s*/_nop_();_nop_();_nop_();_nop_();_nop_();SDA=1; /*窟僕I2C悳潤崩佚催*/_nop_();_nop_();_nop_();_nop_();SCL=0;/*痕方兆各Ack_I2c痕方孔嬬I2c悳窟竃哘基佚催秘笥歌方涙竃笥歌方姥 廣 補秘0夸燕幣哘基補秘1夸燕幣掲哘基*/void Ack_I2c(bit a)if(a=0) SDA=0; /*壓緩窟竃哘基賜掲哘基佚催 */else SDA=1;_nop_();_nop_();_nop_();SCL=1;_nop_();_nop_(); /*扮嶝詰窮峠巓豚寄噐4s*/_nop_();_nop_();_nop_();SCL=0; /*賠扮嶝年廖I2C悳參宴写偬俊辺*/_nop_();_nop_();if(a=0) SDA=1; /*壓緩窟竃哘基賜掲哘基佚催 */else SDA=0;/*痕方兆各Send_Byte痕方孔嬬窟僕匯忖准方象秘笥歌方dat /勣窟僕議8了方象竃笥歌方ack/哘基佚催姥 廣*/unsigned char Send_Byte(unsigned char Data)unsigned char BitLong;for(BitLong=0;BitLong8;BitLong+) /*勣勧僕議方象海業葎8了*/ SDA=(bit)(Data&0x80);_nop_();SCL=1; /*崔扮嶝葎互宥岑瓜陣匂蝕兵俊辺方象了*/_nop_(); _nop_(); /*隠屬扮嶝互窮峠巓豚寄噐4s*/_nop_();_nop_();_nop_();SCL=0;Data=1;_nop_(); _nop_(); SDA=1; /*8了窟僕頼朔瞥慧方象彈姥俊辺哘基了*/ _nop_(); _nop_(); SCL=1; _nop_(); _nop_(); _nop_(); if(SDA=1) ack=0;else ack=1; /*登僅頁倦俊辺欺哘基佚催*/ SCL=0; _nop_(); _nop_();return ack;/*痕方兆各Rcv_Byte痕方孔嬬俊辺匯忖准方象秘笥歌方涙竃笥歌方dat /繍俊辺欺竃栖議匯忖准方象験公dat延楚旺卦指dat姥 廣*/unsigned char RcvByte()unsigned char Data;unsigned char BitLong;Data=0;SDA=1; /*崔方象葎補秘圭塀*/for(BitLong=0;BitLong8;BitLong+) SCL=1; /*崔扮嶝葎互聞方象貧方象嗤丼*/ _nop_(); _nop_(); Data=1;Data|=SDA;/ if(SDA=1) Data=Data+1; /*響方象了,俊辺議方象了慧秘Data嶄 */ _nop_();_nop_();SCL=0;_nop_();_nop_();SCL=0;_nop_();_nop_();return(Data);#ifndef _I2CDRIVE_H_#define _I2CDRIVE_H_sbit SCL=P10;sbit SDA=P11;extern bit ack;void Start_I2c();void Stop_I2c();void Ack_I2c(bit a); /補秘0夸燕幣哘基補秘1夸燕幣掲哘基void NoAck_I2c();unsigned char Send_Byte(unsigned char dat);unsigned char RcvByte();#endif#include config.h/*孔嬬匣唱議訓脱彜蓑酌霞泌惚匣唱侃噐訓脱夸涙隈荷恬補秘涙補竃了侏議訓脱炎崗佚連*/bit LCD_BusyTest()bit Result;LCD_RS=Choose_CMD;LCD_RW=Read;LCD_EN=Active;Delay8Us(1);Result=(bit)(LCD_DataPort&0x80);LCD_EN=Inactive;return(Result);/*孔嬬匣唱議亟峺綜荷恬痕方補秘匣唱議陣崙峺綜補竃涙*/void LCD_WCMD(unsigned char CMD)while(LCD_BusyTest();LCD_RS=Choose_CMD;LCD_RW=Write;LCD_EN=Inactive;/Delay2us(2);LCD_DataPort=CMD;/Delay2Us(1);LCD_EN=Active;/Delay2Us(1);LCD_EN=Inactive;/*孔嬬匣唱議亟方象荷恬痕方補秘棋亟秘匣唱議方象補竃涙*/void LCD_WData(unsigned char Data)while(LCD_BusyTest();LCD_RS=Choose_Data;LCD_RW=Write;LCD_EN=Inactive;/Delay2us(2);LCD_DataPort=Data;/Delay2Us(1);LCD_EN=Active;/Delay2Us(1);LCD_EN=Inactive;/*孔嬬匣唱議兜兵晒痕方補秘涙補竃涙傍苧

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论