51+DS1302+DS18B20+LCD1602-显示时间-温度-可调时 下载本文

default:break; }

}

else

{ newval--;

switch(s1num)

{ case 1: if(newval==0) newval=99; DisplayYear(newval);

break;

case 2: if(newval==0) newval=12;

DisplayMonth(newval);

break;

case 3: if(newval==0) newval=31;

DisplayDay(newval);

break;

case 4: if(newval<0) newval=6; DisplayWeek(newval);

break;

case 5: if(newval<0) newval=23; DisplayHour(newval);

break;

case 6: if(newval<0) newval=59; DisplayMinute(newval);

break;

case 7: if(newval<0) newval=59;

13

DisplaySecond(newval);

break;

default:break;

}

}

WriteSet1302((newaddr-1),((newval/10)<<4)|(newval)); //将新数据写入寄存器

}

//键盘扫描程序

//******************************************* void key_scan(void) { uchar miao,s1num=0;

if(menu==0)

{

delay(5); if(menu==0) {

while(!menu); s1num++;

while(1)

{

if(menu==0)

{

delay(5); if(menu==0) {

while(!menu);

14

s1num++;

}

} rd=0; miao=ReadSet1302(0x81); second=miao;

WriteSet1302(0x80,miao|0x80);

write_com(0x0f);//光标闪射 if(s1num==1)

{ year=ReadSet1302(0x8d);

write_com(0x80+4); //年光标

if(add==0) {

delay(3); if(add==0)

{ while(!add);

turn_val(year,1,0x8d,1); }

}

if(dec==0) { delay(3); if(dec==0) { while(!dec);

turn_val(year,0,0x8d,1);

}

15

} }

if(s1num==2) {

month=ReadSet1302(0x89); write_com(0x80+7); //月光标 if(add==0)

{

delay(3); if(add==0) { while(!add);

turn_val(month,1,0x89,2); } }

if(dec==0) {

delay(3); if(dec==0) { while(!dec);

turn_val(month,0,0x89,2); } } }

if(s1num==3)

{ day=ReadSet1302(0x87);

write_com(0x80+10);//日光标

16