main.c
来自「温度与转速数据采集和控制」· C语言 代码 · 共 179 行
C
179 行
#include <reg52.h>
#define lis_f 0x02//累计时分1
#define lis_s 0x04//累计时时2
#define wendu_bj 0x06//温度报警1@
#define zasu_bj 0x08//转速报警2
extern void some();//自检
extern void init();//初始设置
extern void somc();//启动设备
extern unsigned int i2c_read(unsigned char address);
extern bit i2c_write(unsigned char address,unsigned int fb);
extern int Read_Temperature(void);
extern void time_qd();
extern unsigned char leiji_minf;//累计时间 -分
extern unsigned int leiji_mins;//累计时间- 小时
unsigned int zangsuzia;
unsigned int zangsuzi1[7];
unsigned int zangsuzi;//每分钟转速值
extern bit buza;//不转标志
void read_i2c();
void qdcesu();//启动测速
extern void k_gnkey();//功能
extern void k_sezi();//设置
extern void k_jajn();//设置加减
extern void jswd();//计时温度切换显示
extern void stratcbf();//显示数据刷新
extern void datey(unsigned int i);
extern void bojinsu_zj();
extern bit xiaosen();
unsigned int zsedr();
char wdcj();
char wd_bj;//温度报警值
unsigned int zs_bj;//转速报警值
char wdcjsu;//温度采集值
unsigned char cecsu;//测速次数
unsigned char wdce;//温度测量次数
int wdra[5];
void bojin();
bit qdcesubuza;
extern bit jswdstr;//计时温度状态显示 0-温度 1-记时
bit wd_bojin_se;//温度报警位
bit zs_bojin_se;//转速报警位
sbit delet_bj=P0^4;//消声
main()
{
delet_bj=1;
zangsuzi=0;
some();//自检
read_i2c();
init();//初始设置
somc();//启动设备
bojinsu_zj();
jswdstr=1;
while(1)
{
k_gnkey();//功能
k_sezi();//设置
k_jajn();//设置加减
jswd();//计时温度切换显示
stratcbf();//显示数据刷新
qdcesu();//启动测速
time_qd();
wdce++;
if(wdce>30)
{
wdce=0;
wdcjsu=wdcj();
}
if(xiaosen())
delet_bj=!delet_bj;
bojin();
}
}
void bojin()
{
if(wdcjsu>=wd_bj)
wd_bojin_se=1;
else wd_bojin_se=0;
if(zangsuzi>=zs_bj)
zs_bojin_se=1;
else zs_bojin_se=0;
}
char wdcj()
{
int k;
unsigned char w,b,j;
int ds[5];
wdra[4]= wdra[3];wdra[3]= wdra[2];
wdra[2]= wdra[1];wdra[1]= wdra[0];
wdra[0]=Read_Temperature();
ds[0]= wdra[4];ds[1]= wdra[3];
ds[2]= wdra[2];ds[3]= wdra[1];
ds[4]= wdra[0];
for(b=0;b<4;b++)
{
w=b;
for(j=b+1;j<5;j++)
if(ds[j]<ds[w])w=j;
k=ds[w];ds[w]=ds[b];ds[b]=k;
}
return (((ds[1]+ds[2]+ds[3])/3)>>4);
}
void read_i2c()
{
leiji_minf=i2c_read(lis_f);
leiji_mins=i2c_read(lis_s);
wd_bj=i2c_read(wendu_bj);
zs_bj=i2c_read(zasu_bj);
}
void qdcesu()//启动测速
{
cecsu++;
if((cecsu>20)|buza)
{
cecsu=0;
zangsuzia=0;
zangsuzi=zsedr();
EX0=1;
buza=0;
qdcesubuza=0;
}
else if(qdcesubuza)
{
cecsu=0;
EX0=1;
zangsuzi=zsedr();
buza=0;
qdcesubuza=0;
}
}
unsigned int zsedr()
{
unsigned int k;
unsigned char w,b,j;
unsigned int ds[7];
zangsuzi1[6]= zangsuzi1[5];zangsuzi1[5]= zangsuzi1[4];
zangsuzi1[4]= zangsuzi1[3];zangsuzi1[3]= zangsuzi1[2];
zangsuzi1[2]=zangsuzi1[1];zangsuzi1[1]= zangsuzi1[0];
zangsuzi1[0]=zangsuzia;
ds[0]= zangsuzi1[6];ds[1]= zangsuzi1[5];
ds[2]= zangsuzi1[4];ds[3]= zangsuzi1[3];
ds[4]=zangsuzi1[2];ds[5]=zangsuzi1[1];
ds[6]=zangsuzi1[0];
for(b=0;b<6;b++)
{
w=b;
for(j=b+1;j<7;j++)
if(ds[j]<ds[w])w=j;
k=ds[w];ds[w]=ds[b];ds[b]=k;
}
return ((ds[2]+ds[3]+ds[4])/3);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?