-
大小: 54KB文件類型: .zip金幣: 2下載: 0 次發(fā)布日期: 2021-06-05
- 語言: 其他
- 標(biāo)簽:
資源簡介
大氣壓強(qiáng)傳感器BMP280單片機(jī)程序,主控為C51單片機(jī),包括I2C協(xié)議和串口協(xié)議,I2C與傳感器通信,串口與上位機(jī)通信,串口波特率為9600,通信引腳為RXD:3.0,TXD:3.1,I2C通信引腳SCL:1.5,SDA:1.4

代碼片段和文件信息
//?FileName : dataCollector.c
//?Data : 2018/03/09
//?Description : 使用單片機(jī)制作數(shù)據(jù)采集器,包括溫度、濕度、光照度、CO2的環(huán)境數(shù)據(jù)
//?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;
/**********?定義串口參數(shù)?***************/
//時(shí)鐘晶振
#define?FOSC 11059200UL
//定義波特率9600
#define?BRT (256?-?FOSC?/?9600?/?32)
//UART1忙標(biāo)志位
bit?Uart1_BusyFlag;
//Uart1輸入輸出數(shù)組
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位數(shù)據(jù)方式
SCON?=?0x50;
//定時(shí)器1??8位自動(dòng)重載模式
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相關(guān)參數(shù)
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
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-03-21?15:06??大氣壓強(qiáng)\
?????目錄???????????0??2018-03-20?17:55??大氣壓強(qiáng)\Listings\
?????文件???????14143??2018-03-20?17:53??大氣壓強(qiáng)\Listings\STARTUP.lst
?????文件???????14921??2018-03-20?17:55??大氣壓強(qiáng)\Listings\test.lst
?????文件???????25111??2018-03-20?17:55??大氣壓強(qiáng)\Listings\test.m51
?????目錄???????????0??2018-03-20?17:55??大氣壓強(qiáng)\ob
?????文件?????????819??2018-03-20?17:53??大氣壓強(qiáng)\ob
?????文件???????35442??2018-03-20?17:55??大氣壓強(qiáng)\ob
?????文件?????????107??2018-03-20?17:55??大氣壓強(qiáng)\ob
?????文件????????1042??2018-03-20?17:55??大氣壓強(qiáng)\ob
?????文件????????9036??2018-03-20?17:55??大氣壓強(qiáng)\ob
?????文件?????????115??2018-03-20?17:55??大氣壓強(qiáng)\ob
?????文件???????38842??2018-03-20?17:55??大氣壓強(qiáng)\ob
?????文件????????6376??2015-05-29?12:09??大氣壓強(qiáng)\STARTUP.A51
?????文件????????6248??2018-03-20?17:55??大氣壓強(qiáng)\test.c
?????文件???????71289??2018-03-21?15:06??大氣壓強(qiáng)\test.uvgui.user
?????文件????????5051??2018-03-19?13:51??大氣壓強(qiáng)\test.uvopt
?????文件???????14057??2018-03-19?13:51??大氣壓強(qiáng)\test.uvproj
?????文件?????????713??2018-03-12?14:52??大氣壓強(qiáng)\test2.c
?????文件???????????0??2018-03-12?09:45??大氣壓強(qiáng)\test_uvproj.bak
評(píng)論
共有 條評(píng)論