#include<reg51.h>
#include"LCD.h"
#include"ds1302.h"
#include"temp.h"
sbit check=P1^0;
void timeLcdDisplay();
void tempLcdDisplay(int temp);
void time_transfer();
void temp_transfer();
void main()
{check=1;
while(1) //想在温度和时间之间一键切换
{
if(check==0)
{
Delay1ms(10);
while(check==0)
{temp_transfer();}
}
else{
time_transfer();
}
}}
void time_transfer()
{ uint a;
LcdInit();
Ds1302Init();
for(a=0;a<60;a++)
{
Ds1302ReadTime();
timeLcdDisplay();
}}
void temp_transfer()
{uint a,b;
LcdInit(); //3êˉLCD1602
LcdWriteCom(0x88); //D′μ· 80±íê3êμ·
LcdWriteData('C');
for(a=0;a<200;a++)
{
tempLcdDisplay(Ds18b20ReadTemp());
Delay1ms(200);
}}
void timeLcdDisplay()
{
LcdWriteCom(0x80+0X40);
LcdWriteData('0'+TIME[2]/16); //ê±
LcdWriteData('0'+(TIME[2]&0x0f));
LcdWriteData('-');
LcdWriteData('0'+TIME[1]/16); //·
LcdWriteData('0'+(TIME[1]&0x0f));
LcdWriteData('-');
LcdWriteData('0'+TIME[0]/16); //
LcdWriteData('0'+(TIME[0]&0x0f));
LcdWriteCom(0x80);
LcdWriteData('2');
LcdWriteData('0');
LcdWriteData('0'+TIME[6]/16); //ê
LcdWriteData('0'+(TIME[6]&0x0f));
LcdWriteData('-');
LcdWriteData('0'+TIME[4]/16); //
LcdWriteData('0'+(TIME[4]&0x0f));
LcdWriteData('-');
LcdWriteData('0'+TIME[3]/16); //è
LcdWriteData('0'+(TIME[3]&0x0f));
LcdWriteCom(0x8D);
LcdWriteData('0'+(TIME[5]&0x07)); //Dú
}
void tempLcdDisplay(int temp)
{
unsigned char datas[] = {0, 0, 0, 0, 0}; //¨òêy×é
float tp;
if(temp< 0) //μ±èμaoêy
{
LcdWriteCom(0x80); //D′μ· 80±íê3êμ·
LcdWriteData('-'); //êo
//òòaáèμèêêμêèμ21£ùò1£ùè·′ó3-
temp=temp-1;
temp=~temp;
tp=temp;
temp=tp*0.0625*100+0.5;
//ááDêyμí*100£+0.5êéáè£òòaCóμêy×aaDíμê±oò°Dêyμ
//oóμêy×ˉè¥μ£21üê·′óóú0.5£+0.5oó′óóú0.5μíê1á£Dóú0.5μí
//óé0.5£1êúDêyμoó£
}
else
{
LcdWriteCom(0x80); //D′μ· 80±íê3êμ·
LcdWriteData('+'); //êy
tp=temp;//òòaêyY′|àíóDDêyμùòè3òμDí±á
//è1èêyμ′£′yêyμ-íê21ü±éí
temp=tp*0.0625*100+0.5;
//ááDêyμí*100£+0.5êéáè£òòaCóμêy×aaDíμê±oò°Dêyμ
//oóμêy×ˉè¥μ£21üê·′óóú0.5£+0.5oó′óóú0.5μíê1á£Dóú0.5μí
//óé0.5£1êúDêyμoó£
}
datas[0] = temp / 10000;
datas[1] = temp % 10000 / 1000;
datas[2] = temp % 1000 / 100;
datas[3] = temp % 100 / 10;
datas[4] = temp % 10;
LcdWriteCom(0x82); //D′μ· 80±íê3êμ·
LcdWriteData('0'+datas[0]); //°ù
LcdWriteCom(0x83); //D′μ· 80±íê3êμ·
LcdWriteData('0'+datas[1]); //ê
LcdWriteCom(0x84); //D′μ· 80±íê3êμ·
LcdWriteData('0'+datas[2]); //
LcdWriteCom(0x85); //D′μ· 80±íê3êμ·
LcdWriteData('.'); //ê .ˉ
LcdWriteCom(0x86); //D′μ· 80±íê3êμ·
LcdWriteData('0'+datas[3]); //êDêyμ
LcdWriteCom(0x87); //D′μ· 80±íê3êμ·
LcdWriteData('0'+datas[4]); //êDêyμ
}
|