资源简介

利用51单片机采集GY906的温度数据,测量人体温度准确度较高。还带有EEPROM存储功能,可以存储三次数据,手动可查阅历史数据,语音播报采集的温度。

资源截图

代码片段和文件信息

#include “reg52.h“
#include “stdio.h“
#include “LQ12864.h“
#include “GY906.h“
#include “eepom.h“

sbit celiang_flage = P2^0; //测量
sbit clear_flage  = P2^2; //存储数据
sbit read_flage   = P2^1; //读取数据
sbit LED = P2^3; //灯光

unsigned int temp_int;
unsigned int  temp ;
unsigned int ceshi ;
uchar save_flage = 0 duqu_flage = 0; //存储标号
uchar bianhao_numclear_eepom;   //数据编号 存储清零标志
uint temp_[3]={0};
uint biaohao_num_[3]={0};
uchar diaplay_5s = 0; //读取显示
uchar flage_5s; //5s计时
uint zhancun;
uchar first_flage = 1;


/*
oled:
sbit SCL_OLED=P1^6; //串行时钟
sbit SDA_OLED=P1^7; //串行数据

按键 p20/p21


//mlx90614 端口定义 
sbit  SCL=P2^6;// 时钟线 
sbit  SDA=P2^7;// 数据线 
*/



void oled_gd_diaplay()
{
OLED_P16x16Ch(007);  //标号
OLED_P16x16Ch(2008); //
OLED_P16x16Ch(4002); //:
// dxzm(‘.‘700); //.

OLED_P16x16Ch(7000);  //温
OLED_P16x16Ch(9001); //度
OLED_P16x16Ch(11002); //:
// dxzm(‘.‘700); //.

}

void oled_wendu()
{

char i;
if(temp > 0)

if (0 == diaplay_5s)
{

OLED_P16x16Ch(000);  //温度
OLED_P16x16Ch(2001); //
OLED_P16x16Ch(4002); //:

//体温
// dxzm(((int)(temp)/100)+48500);
dxzm(((temp)/100)+48600);
dxzm(((temp)/10%10)+48700);
dxzm(‘.‘800);
dxzm(((temp)%10+48)900);
}

else  //读取温度标志位等于 1
{
oled_gd_diaplay(); 

TR0 =1; //打开定时器

for(i = 0;i < 3;i++)
{
dxzm((biaohao_num_[i])+4820i*2+2); //编号
// dxzm((temp_[i]/1000)+4870i*2+2); 
// dxzm((temp_[i]/100%10)+4880i*2+2);
// dxzm((temp_[i]%100/10)+4890i*2+2);
// dxzm(‘.‘100i*2+2); //.
// dxzm((temp_[i]%10+48)110i*2+2);

dxzm(0+4870i*2+2); 
dxzm((temp_[i]/100)+4880i*2+2);
dxzm((temp_[i]/10%10)+4890i*2+2);
dxzm(‘.‘100i*2+2); //.
dxzm((temp_[i]%10)+48110i*2+2);

}

if(flage_5s >= 100)  //显示5s
{
TR0 = 0;
diaplay_5s = 0;
flage_5s = 0;
OLED_Fill(00);
}

}




}


/******************把数据保存到单片机内部eepom中******************/
void write_eepom(uchar num)
{ char num_numi;
if(1 == first_flage)
{
SectorErase(0x2000);
first_flage = 0;
}

if(5 == num)
{
for(i=0;i<9;i++)
{
byte_write(0x2000+i0);
}

}
else if(num!=5)
{
num_num = num*3;
byte_write(0x2000+num_num(temp) % 256);
byte_write(0x2001+num_num(temp) / 256);
byte_write(0x2002+num_numnum);
}

}

/******************把数据从单片机内部eepom中读出来*****************/
void read_eepom(uchar tem_num uchar biao uchar num)
{
temp_[tem_num]  = byte_read(0x2001+num*3);
temp_[tem_num]  <<= 8;
temp_[tem_num]   |= byte_read(0x2000+num*3);
biaohao_num_[biao] = byte_read(0x2002+num*3);

}

void read_all_data()
{
uchar i;
for(i =0;i<3;i++)
{
read_eepom(iii);
// delay(50);
}
}

void Tim_init()
{
SCON = 0x50; /* 010 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2020-03-10 18:24  人体测温度\
     目录           0  2020-03-09 19:26  人体测温度\Listings\
     文件        6503  2020-03-09 19:10  人体测温度\Listings\GY906.lst
     文件       10384  2020-03-09 19:10  人体测温度\Listings\OLED12864.lst
     文件        4334  2020-03-09 19:10  人体测温度\Listings\eepom.lst
     文件       10233  2020-03-09 19:26  人体测温度\Listings\main.lst
     文件       43232  2020-03-09 19:26  人体测温度\Listings\rentiwendu.m51
     目录           0  2020-03-09 19:26  人体测温度\objects\
     文件        9853  2020-03-09 19:10  人体测温度\objects\GY906.obj
     文件       14111  2020-03-09 19:10  人体测温度\objects\OLED12864.obj
     文件        5387  2020-03-09 19:10  人体测温度\objects\eepom.obj
     文件       15386  2020-03-09 19:26  人体测温度\objects\main.obj
     文件       42464  2020-03-09 19:26  人体测温度\objects\rentiwendu
     文件        1104  2020-03-09 19:26  人体测温度\objects\rentiwendu.build_log.htm
     文件       18902  2020-03-09 19:26  人体测温度\objects\rentiwendu.hex
     文件         177  2020-03-09 19:26  人体测温度\objects\rentiwendu.lnp
     文件        5053  2020-03-09 19:26  人体测温度\main.c
     目录           0  2019-06-10 19:08  人体测温度\project\
     文件        3011  2019-05-11 15:26  人体测温度\project\GY906.c
     文件         789  2019-05-11 21:05  人体测温度\project\GY906.h
     文件         836  2019-05-08 20:37  人体测温度\project\LQ12864.h
     文件        5775  2019-05-08 20:37  人体测温度\project\OLED12864.c
     文件       27631  2019-05-08 20:05  人体测温度\project\codetab.h
     文件        2248  2019-05-08 11:02  人体测温度\project\eepom.c
     文件        1215  2019-05-08 11:02  人体测温度\project\eepom.h
     文件      141176  2019-05-22 11:31  人体测温度\rentiwendu.uvgui.Administrator
     文件       72946  2020-03-10 18:24  人体测温度\rentiwendu.uvgui.zhaoxiansen
     文件        6694  2019-05-08 11:34  人体测温度\rentiwendu.uvopt
     文件       14524  2019-05-08 11:34  人体测温度\rentiwendu.uvproj

评论

共有 条评论