• 大小: 54KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-05
  • 语言: 其他
  • 标签:

资源简介

大气压强传感器BMP280单片机程序,主控为C51单片机,包括I2C协议和串口协议,I2C与传感器通信,串口与上位机通信,串口波特率为9600,通信引脚为RXD:3.0,TXD:3.1,I2C通信引脚SCL:1.5,SDA:1.4

资源截图

代码片段和文件信息

// FileName			:	dataCollector.c
// Data : 2018/03/09
// Description : 使用单片机制作数据采集器,包括温度、湿度、光照度、CO2的环境数据
// Author : song

#include “intrins.h“
#include “stc8.h“

#define BMP280_ADDR 0xec
#define BMP280_TEMP_ADDR 0xfa
#define BMP280_PRESS_ADDR 0xf7

unsigned short dig_T1;
short dig_T2;
short dig_T3;
unsigned short dig_P1;
short dig_P2;
short dig_P3;
short dig_P4;
short dig_P5;
short dig_P6;
short dig_P7;
short dig_P8;
short dig_P9;


/********** 定义串口参数 ***************/
//时钟晶振
#define FOSC 11059200UL
//定义波特率9600
#define BRT (256 - FOSC / 9600 / 32)
//UART1忙标志位
bit Uart1_BusyFlag;
//Uart1输入输出数组
char bufferPtr;
char Uart1Buffer[16];


void delay_ms(int x)
{
unsigned char i j;

while(x-- > 0)
{
i = 15;
j = 90;
do
{
while (--j);
} while (--i);
}
}

void Uart1Int() interrupt 4 using 1
{

if(TI)
{
TI = 0;
Uart1_BusyFlag = 0;
}
if(RI)
{
RI = 0;
Uart1Buffer[bufferPtr++] = SBUF;
}
}

void Uart1Init()
{
//固定波特率9位数据方式
SCON = 0x50;
//定时器1  8位自动重载模式
TMOD = 0x20;

TL1 = BRT;
TH1 = BRT;
AUXR = 0x40;
TR1 = 1;

bufferPtr = 0;
Uart1_BusyFlag = 0;
}

void Uart1SendByte(char dat)
{
while(Uart1_BusyFlag);
Uart1_BusyFlag = 1;
SBUF = dat;
}

void Uart1SendStr(char *p)
{
while(*p)
{
Uart1SendByte(*p++);
}
}



//I2C相关参数
void I2C_Wait()
{
while(!(I2CMSST & 0x40));
//Uart1SendStr(“i2c wait...\r\n“);
I2CMSST &= ~0x40;
}

void I2C_Start()
{
I2CMSCR = 0x01;
I2C_Wait();
}

void I2C_SendData(char dat)
{
I2CTXD = dat;
I2CMSCR = 0x02;
I2C_Wait();
}

void I2C_RecvACK()
{
I2CMSCR = 0x03;
I2C_Wait();
}

char I2C_RecvData()
{
I2CMSCR = 0x04;
I2C_Wait();
return(I2CRXD);
}

void I2C_SendACK()
{
I2CMSST = 0x00;
I2CMSCR = 0x05;
I2C_Wait();
}

void I2C_SendNAK()
{
I2CMSST = 0x01;
I2CMSCR = 0x05;
I2C_Wait();
}

void I2C_Stop()
{
I2CMSCR = 0x06;
I2C_Wait();
}

void I2C_Init()
{
P_SW2 = 0x80;
I2CCFG = 0xe0;
I2CMSST = 0x00;
}

void printHex(unsigned char i)
{
unsigned char j;

for(j = 0;j < 8;j++)
{
if(j == 4)
{
Uart1SendByte(‘ ‘);
}

if(i & 0x80)
{
Uart1SendByte(‘1‘);
}
else
{
Uart1SendByte(‘0‘);
}
i <<= 1;
}

Uart1SendByte(‘ ‘);
}

unsigned char bmp280_ReadByte(unsigned char addr)
{
unsigned char temp;

I2C_Start();
I2C_SendData(BMP280_ADDR);
I2C_RecvACK();
I2C_SendData(addr);
I2C_RecvACK();

I2C_Start();
I2C_SendData(BMP280_ADDR + 1);
I2C_RecvACK();
temp = I2C_RecvData();
I2C_SendNAK();
I2C_Stop();

return temp;
}

void bmp280_WriteByte(unsigned char addr unsigned char dat)
{
I2C_Start();
I2C_SendData(BMP280_ADDR);
I2C_RecvACK();
I2C_SendData(addr);
I2C_RecvACK();
I2C_SendData(dat);
I2C_RecvACK();
I2C_Stop();
}

long bmp280_MultipleReadThree(unsigned char addr)
{
unsigned char msb lsb xlsb;
long temp = 0;
msb = bmp280_Re

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-03-21 15:06  大气压强\
     目录           0  2018-03-20 17:55  大气压强\Listings\
     文件       14143  2018-03-20 17:53  大气压强\Listings\STARTUP.lst
     文件       14921  2018-03-20 17:55  大气压强\Listings\test.lst
     文件       25111  2018-03-20 17:55  大气压强\Listings\test.m51
     目录           0  2018-03-20 17:55  大气压强\objects\
     文件         819  2018-03-20 17:53  大气压强\objects\STARTUP.obj
     文件       35442  2018-03-20 17:55  大气压强\objects\test
     文件         107  2018-03-20 17:55  大气压强\objects\test.__i
     文件        1042  2018-03-20 17:55  大气压强\objects\test.build_log.htm
     文件        9036  2018-03-20 17:55  大气压强\objects\test.hex
     文件         115  2018-03-20 17:55  大气压强\objects\test.lnp
     文件       38842  2018-03-20 17:55  大气压强\objects\test.obj
     文件        6376  2015-05-29 12:09  大气压强\STARTUP.A51
     文件        6248  2018-03-20 17:55  大气压强\test.c
     文件       71289  2018-03-21 15:06  大气压强\test.uvgui.user
     文件        5051  2018-03-19 13:51  大气压强\test.uvopt
     文件       14057  2018-03-19 13:51  大气压强\test.uvproj
     文件         713  2018-03-12 14:52  大气压强\test2.c
     文件           0  2018-03-12 09:45  大气压强\test_uvproj.bak

评论

共有 条评论

相关资源