微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于89S51的实时数字温度计(DS1302 18B20)

基于89S51的实时数字温度计(DS1302 18B20)

时间:11-30 来源:互联网 点击:

ow_reset(); // 开机先转换一次
write_byte(0xCC); // Skip ROM
write_byte(0x44); // 发转换命令
delay(100);

Set_Time(collect_time);
delay(10);

while(1)
{
Scan();
deal();
}//while循环的结束
}//main函数的结束

void Time0_seve() interrupt 1 //定时器0中断服务程序
{
uint timer;
uchar i,ktemp;
if((P1&0x70)<0x70) //防抖控制用
keyboard=1;
else keyboard=0;

timer++;
if(timer==800)//控制数码管的闪动效果
{
if(choose !=0)
flash=~flash;
else flash = 1;
timer=0;
}

TR0=0;
ktemp=P0;
if(P0==0xfe)i=1;
else if(P0==0xfd)i=2;
else if(P0==0xfb)i=3;
else if(P0==0xf7)i=4;
else if(P0==0xef)i=5;
else if(P0==0xdf)i=6;
else if(P0==0xbf)i=7;
else if(P0==0x7f)i=0;
else i=1;

ktemp=ktemp*2+1;
if(ktemp==0xff)ktemp=0xfe;
P0=ktemp;
P2=display[i];
TR0=1;
}

void Time1_seve() interrupt 3 //定时器1中断服务程序
{
TR1=0;TH1=0;TL1=0;
a++;
if(a>4*ReDetectTime)
{
choose=0;
a=0;
Set_Time(collect_time);
STA=1; //超过按键等待时间,自动写入并开始采集时间
}
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top