DS18B20_Write(0x44);
//----以下是關于讀取DS18B20的數(shù)據(jù)時行處理,并將結果顯示出來
Temp=TemperatureH*256+TemperatureL;
if(Temp & 0xf800)
{
LCDDisplayBuffer[0]=''-'';
Temp=(~Temp)+1;
TemperatureL=Temp%256;
TemperatureH=Temp/256;
}
Temp>>=4;
LCDDisplayBuffer[1]=Temp/10+0x30;
LCDDisplayBuffer[2]=Temp%10+0x30;
Temp=TemperatureL;
Temp&=0x
Temp*=625;
Temp/=100;
LCDDisplayBuffer[3]=''.'';
LCDDisplayBuffer[4]=Temp/10+0x30;
LCDDisplayBuffer[5]=Temp%10+0x30;
LCDDisplayBuffer[6]=''C'';
//---以下是讀取DS1302的時鐘信息,并將結果存儲到顯示緩沖區(qū)中
Temp=Read_DS1302_RTC(0x81);//讀秒信息
RealClock.Second=Temp;
TimeBuffer[7]=Temp%16+0x30;
TimeBuffer[6]=Temp/16+0x30;
Temp=Read_DS1302_RTC(0x83);//讀分信息
RealClock.Minute=Temp;
TimeBuffer[4]=Temp%16+0x30;
TimeBuffer[3]=Temp/16+0x30;
Temp=Read_DS1302_RTC(0x85);//讀時信息
RealClock.Hour=Temp;
TimeBuffer[1]=Temp%16+0x30;
TimeBuffer[0]=Temp/16+0x30;
Temp=Read_DS1302_RTC(0x87);//讀日信息
RealClock.Day=Temp;
DateBuffer[9]=Temp%16+0x30;
DateBuffer[8]=Temp/16+0x30;
Temp=Read_DS1302_RTC(0x89);//讀月信息
RealClock.Month=Temp;
DateBuffer[6]=Temp%16+0x30;
DateBuffer[5]=Temp/16+0x30;
Temp=Read_DS1302_RTC(0x8d);//讀年信息
RealClock.Year=Temp;
DateBuffer[3]=Temp%16+0x30;
DateBuffer[2]=Temp/16+0x30;
//---送到LCD上顯示出來
lcd_displaystr_ram(0,3,DateBuffer);//刷新LCD上的日期信息
lcd_displaystr_ram(1,1,TimeBuffer);//刷新LCD上的時間顯示信息
lcd_displaystr_ram(1,sizeof(TimeBuffer),LCDDisplayBuffer);
}
}
void main(void)
{
TMOD=0x01;//T0工作于16位定時功能
TH0=(65536-46080)/256;//T0定時25mS的初值裝入TH0,TL0
TL0=(65536-46080)%256;
TR0=1;//啟動T0開始工作
ET0=1;//允許T0溢出中斷
EA=1;//CPU開中斷
initize_lcd();//初始化LCD
Init_DS1302_RTC();//初始化DS1302
//clock initize
Write_DS1302_RTC(0x8e,0x00);
Write_DS1302_RTC(0x80,0x00);
Write_DS1302_RTC(0x82,0x55);
Write_DS1302_RTC(0x84,0x11);
Write_DS1302_RTC(0x86,0x16);
Write_DS1302_RTC(0x88,0x11);
Write_DS1302_RTC(0x
Write_DS1302_RTC(0x
Write_DS1302_RTC(0x8e,0x80);
while(1)
{
;
}
}





