#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit rs=P1^0;//¼Ä´æÆ÷Ñ¡Ôñ
sbit rw=P1^1;//¶ÁдÐźÅÏß
sbit lcden=P1^2;//ledʹÄܶË
sbit scl=P1^3;//ʱÖÓÏß
sbit rst=P1^5;//¸´Î»Ïß
sbit io=P1^4;//Êý¾Ý¿Ú
sbit key_set_time=P3^4;//ÉèÖÃʱ¼ä¼ü
sbit key_add=P3^5;//¼Ó¼ü
sbit key_minus=P3^6;//¼õ¼ü
sbit key_set_alarm=P3^7;//ÉèÖÃÄÖÖÓ¼ü
sbit bee=P1^6;//·äÃùÆ÷½Ó¿Ú
sbit dq=P1^7;//ds18b20²âÎÂ
uchar getTimebuf[7];//´æ·Åʱ¼äÊý¾Ý
uchar time[]={" : : "};//ʱ¼ä¸ñʽ×Ö·û´®
uchar date[]={"20 - - "};//ÈÕÆÚ¸ñʽ×Ö·û´®
uchar weeklist[]={"SunMonTueWedThuFriSat"};//ÐÇÆÚ×Ö·ûÁбí
uchar week[]={" "};//ÐÇÆÚ¸ñʽ×Ö·û´®
int count;//É趨Ãë·ÖʱÈÕÔÂÐÇÆÚÄêµÄʱºòcountµÄÖµ·Ö±ðΪ1235647
int alarm;//ÊÇ·ñ½øÈëÄÖÖÓÉèÖýçÃæ 123·Ö±ð´ú±í¿ª¹Ø ·Ö СʱµÄÉèÖÃ
int isOpen;//ÄÖÖÓÊÇ·ñ¿ªÆô ĬÈϲ»¿ªÆô
int fen,shi;//ÄÖÖӵķÖÖÓСʱ
int isRing;//ÄÖÖÓÊÇ·ñÔÚÏì
uchar isInit_1302;//ÊÇ·ñ³õʼ»¯Ê±ÖÓÍê±Ï
int num;
int temperature;//ζÈ
int temp_flag;//ζÈÕý¸º±êÖ¾
void delay(uint x){
int y;
while(x--){
for(y=100;y>0;y--);
}
}
void write_1602com(uchar com){
//1602дָÁî
rs=0;
lcden=0;
P2=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void write_1602data(uchar dat){
//1602дÊý¾Ý
rs=1;
lcden=0;
P2=dat;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void init_1602(){
//³õʼ»¯1602Òº¾§
rw=0;
lcden=0;
write_1602com(0x38);//ÉèÖÃÏÔʾģʽ
write_1602com(0x0c);//ÏÔʾ¿ª¹Ø¼°¹â±êÊÇ·ñÏÔʾºÍÉÁ¶¯
write_1602com(0x06);//¹â±êÒÆ¶¯·½Ïò
write_1602com(0x01);//ÇåÆÁ
}
void write_ds1302_byte(uchar temp){
//ds1302дһ¸ö×Ö½ÚÊý¾Ý
uchar i;
for(i=0;i<8;i++){
io=temp&0x01;//½«Êý¾Ý·Åµ½IO¿ÚÉÏ
scl=0;//sclΪµÍʱ׼±¸Êý¾Ý
scl=1;//ÉÏÉýÑØÐ´Èë
temp>>=1;
}
}
void write_ds1302(uchar add,uchar dat){
//ÏòµØÖ·addдÈëÊý¾Ýdat
rst=0;
scl=0;
rst=1;
write_ds1302_byte(add);
write_ds1302_byte(dat);
scl=1;
rst=0;
}
uchar read_ds1302(uchar add){
//ds1302¶ÁÊý¾Ý
uchar i,dat;
rst=0;
scl=0;
rst=1;
write_ds1302_byte(add);//Ê×ÏÈдÈëÒª¶ÁµÄÊý¾Ý´¦µÄµØÖ·
for(i=0;i<8;i++){
if(io==1){
dat|=0x80;
}
scl=1;
scl=0;//ϽµÑضÁÈ¡Êý¾Ý
dat>>=1;
}
scl=1;
rst=0;
return dat;
}
void read_time(uchar curr_time[]){
uchar i;
uchar ucAddr = 0x81;
for (i=0;i<7;i++){
curr_time[i] = read_ds1302(ucAddr);//¸ñʽΪ: Ãë ·Ö Ê± ÈÕ Ô ÐÇÆÚ Äê
ucAddr += 2;
}
if((getTimebuf[1])==30&&(getTimebuf[0]==00))
{
bee=1;
delay(900);
}
}
void set_time(uchar *pSecDa){
//É趨ʱ¼ä
uchar i;
uchar ucAddr = 0x80;
write_ds1302(0x8e,0x00);
for(i =7;i>0;i--){
write_ds1302(ucAddr,*pSecDa); //Ãë ·Ö Ê± ÈÕ Ô ÐÇÆÚ Äê
pSecDa++;
ucAddr+=2;
}
write_ds1302(0x8e,0x80);
}
void init_ds1302(){
//ds1302³õʼ»¯
isInit_1302=read_ds1302(0x81);//¶Á³öʱÖÓ״̬
if(isInit_1302&0x80){//˵Ã÷ûÓгõʼ»¯
write_ds1302(0x8e,0x00);//¹Ø±Õд±£»¤ ÒÔºóÒ»Ö±¿ª×Å
write_ds1302(0x90,0xa5); //¸¨ÖúµçÔ´³äµçÃüÁî Ò»¸ö¶þ¼«¹Ü Ò»¸ö2Kµç×è
write_ds1302(0x80,0x00);//Ãë CHÖÃ0 ¿ªÆôʱÖÓ
write_ds1302(0x82,0x59);//·Ö
write_ds1302(0x84,0x10);//ʱ
write_ds1302(0x86,0x07);//ÈÕ
write_ds1302(0x88,0x05);//ÔÂ
write_ds1302(0x8a,0x04);//ÐÇÆÚ
write_ds1302(0x8c,0x14);//Äê
write_ds1302(0x8e,0x80);
}
}
char int_to_char(int temp){
//°Ñ0µ½9¶ÔÓ¦µÄÊý×ÖתΪ×Ö·û
char x='0';
switch(temp){
case 0:x='0';break;
case 1:x='1';break;
case 2:x='2';break;
case 3:x='3';break;
case 4:x='4';break;
case 5:x='5';break;
case 6:x='6';break;
case 7:x='7';break;
case 8:x='8';break;
case 9:x='9';break;
}
return x;
}
int ds18b20_read_temp();
void display(){
uchar bai,shi,ge,point,fuhao;
read_time(getTimebuf);//ʱʱ¶Áȡʱ¼ä
time[6]=(getTimebuf[0])/16+48;//¸ñʽ»¯Ê±¼äÃë
time[7]=(getTimebuf[0])%16+48;
time[3]=(getTimebuf[1])/16+48;//¸ñʽ»¯Ê±¼ä·Ö
time[4]=(getTimebuf[1])%16+48;
time[0]=(getTimebuf[2])/16+48;//¸ñʽ»¯Ê±¼äСʱ
time[1]=(getTimebuf[2])%16+48;
date[8]=getTimebuf[3]/16+48;//¸ñʽ»¯ÈÕÆÚÈÕ
date[9]=getTimebuf[3]%16+48;
date[5]=getTimebuf[4]/16+48;//¸ñʽ»¯ÈÕÆÚÔÂ
date[6]=getTimebuf[4]%16+48;
date[2]=getTimebuf[6]/16+48;//¸ñʽ»¯ÈÕÆÚÄê
date[3]=getTimebuf[6]%16+48;
week[0]=weeklist[(getTimebuf[5]%10)*3];//¸ñʽ»¯ÐÇÆÚ
week[1]=weeklist[(getTimebuf[5]%10)*3+1];
week[2]=weeklist[(getTimebuf[5]%10)*3+2];
write_1602com(0x80+1);
for(num=0;num<10;num++){
write_1602data(date[num]);
}
write_1602data(' ');
for(num=0;num<3;num++){
write_1602data(week[num]);
}
write_1602com(0x80+0x40);
for(num=0;num<8;num++){
write_1602data(time[num]);
}
//ÏÔʾζÈÖµ
write_1602com(0x80+0x40+8);//ÉèÖÃÊý¾ÝÖ¸Õë
temperature=ds18b20_read_temp();
bai=temperature/1000+0x30;
shi=temperature%1000/100+0x30;
ge=temperature%100/10+0x30;
point=temperature%100%10+0x30;
if(temp_flag==1){//˵Ã÷ΪÕýÊý ²»ÏÔʾ·ûºÅλ 125.6 25.7Á½ÖÖ
fuhao=0x20;//ÏÔʾ¿Õ°×
if(bai==0x30){
bai=0x20;//Èç¹û°ÙλΪ0 ²»ÏÔʾ
if(shi==0x30){
shi=0x20;//Èç¹û°ÙλΪ0 ʮλҲΪ0 ¶¼²»ÏÔʾ
}
}
write_1602data(fuhao);
write_1602data(bai);
write_1602data(shi);
}else{
fuhao=0x2d;//ÏÔʾ¸ººÅ -2.5 -25.8Á½ÖÖ
write_1602data(0x20);//ÒòΪ¸ºÊý×îµÍµ½55£¬ËùÒÔ²»ÏÔʾ°Ùλ
if(shi==0x30){
write_1602data(0x20);
write_1602data(fuhao);
}else{
write_1602data(fuhao);
write_1602data(shi);
}
}
write_1602data(ge);
write_1602data('.');
write_1602data(point);
write_1602data(0xdf);
write_1602data('C');
}
void display_alarm(uchar add,int dat){
//°ÑÉ趨µÄʱ·ÖÏÔʾ³öÀ´
int x,y;
x=dat/10;
y=dat%10;
write_1602com(add);
write_1602data(int_to_char(x));
write_1602com(add+1);//·ÀֹдºóµØÖ·×Ô¶¯Ïòºó¼ÓÒ» ¹â±êÉÁ˸¿´²»µ½
write_1602data(int_to_char(y));
write_1602com(add+1);
}
void init_alarm(){
//ÄÖÖÓÉèÖýçÃæ Ö»ÓÐÊ״νøÈë²ÅÖ´ÐÐ
uchar code x[]="SET ALARM";
uchar i;
if(alarm==0){
write_1602com(0x01);//ÇåÆÁ
write_1602com(0x80+3);//ÉèÖÃÊý¾ÝÖ¸Õë
for(i=0;i<9;i++){
write_1602data(x[i]);
}
display_alarm(0x80+0x40+5,shi);//ÔØÈëÄÖÖÓµÄʱ·Ö
write_1602com(0x80+0x40+7);
write_1602data(':');
display_alarm(0x80+0x40+8,fen);
if(isOpen){//³õʼ»¯µÄʱºòÈç¹ûÒѾÉ趨ÄÖÖÓÔòÏÔʾON
write_1602com(0x80+0x40+13);
write_1602data(' ');
write_1602data('O');
write_1602data('N');
}else{
write_1602com(0x80+0x40+13);
write_1602data('O');
write_1602data('F');
write_1602data('F');
}
}
}
void key_scan(){
int i;
uchar code tips1[]="SET SUCCESS";//ÄÖÖÓÉèÖóɹ¦µÄÌáʾ
uchar code tips2[]="CANCEL SUCCESS";//È¡ÏûÄÖÖÓµÄÌáʾ
if(key_set_time==0){//¼ì²âÊÇ·ñ°´ÏÂ
delay(10);//Ïû¶¶
if(key_set_time==0){//Ôٴμì²âÊÇ·ñ°´ÏÂ
while(!key_set_time);//¼ì²âÊÇ·ñËÉ¿ª
delay(10);//ÑÓʱÏû¶¶
while(!key_set_time);//Ôٴμì²âÊÇ·ñËÉ¿ª
if(alarm==0){//µ±Ã»ÓÐÏÔʾÄÖÖÓ½çÃæÊ±²ÅÏÔʾʱ¼äÉ趨
count++;
write_ds1302(0x80,0x80);//ÈÃʱÖÓÍ£Ö¹
if(count==8){
//¼ÌÐø×ßʱ£¬ËµÃ÷ʱ¼äÒѾÉ趨ºÃÁË
write_1602com(0x0c);//Èùâ±êÏûʧ
write_ds1302(0x80,0);//ÈÃʱÖÓ¼ÌÐø
set_time(getTimebuf);//дÈëеÄʱ¼ä
count=0;
return;
}
switch(count){
case 1:
write_1602com(0x80+0x40+7);//ÔÚÃëµÄλÖÃ
break;
case 2:
write_1602com(0x80+0x40+4);//ÔÚ·ÖµÄλÖÃ
break;
case 3:
write_1602com(0x80+0x40+1);//ÔÚʱµÄλÖÃ
break;
case 4:
write_1602com(0x80+14);//ÔÚÐÇÆÚµÄλÖÃ
break;
case 5:
write_1602com(0x80+10);//ÔÚÈÕµÄλÖÃ
break;
case 6:
write_1602com(0x80+7);//ÔÚÔµÄλÖÃ
break;
case 7:
write_1602com(0x80+4);//ÔÚÄêµÄλÖÃ
break;
}
write_1602com(0x0f);//Èùâ±êÉÁ˸
}
}
}
if(key_add==0){//¼ì²âÊÇ·ñ°´ÏÂ
delay(10);//Ïû¶¶
if(key_add==0){//Ôٴμì²âÊÇ·ñ°´ÏÂ
while(!key_add);//¼ì²âÊÇ·ñËÉ¿ª
delay(10);//ÑÓʱÏû¶¶
while(!key_add);//Ôٴμì²âÊÇ·ñËÉ¿ª
if(count!=0){
switch(count){
case 1:
//ÔÚÃëµÄλÖÃ
getTimebuf[0]++;
if(getTimebuf[0]==0x5a){
getTimebuf[0]=0;
}
if(getTimebuf[0]==0x4a){
getTimebuf[0]=0x50;
}
if(getTimebuf[0]==0x3a){
getTimebuf[0]=0x40;
}
if(getTimebuf[0]==0x2a){
getTimebuf[0]=0x30;
}
if(getTimebuf[0]==0x1a){
getTimebuf[0]=0x20;
}
if(getTimebuf[0]==0x0a){
getTimebuf[0]=0x10;
}
time[6]=(getTimebuf[0])/16+48;//¸ñʽ»¯Ê±¼äÃë
time[7]=(getTimebuf[0])%16+48;
write_1602com(0x80+0x40+6);//ÔÚÃëµÄλÖÃ
write_1602data(time[6]);
write_1602com(0x80+0x40+7);//ÔÚÃëµÄλÖÃ
write_1602data(time[7]);
write_1602com(0x80+0x40+7);//Èùâ±êÔÚÃëµÄλÖÃÉÁ˸
break;
case 2:
//ÔÚ·ÖµÄλÖÃ
getTimebuf[1]++;
if(getTimebuf[1]==0x5a){
getTimebuf[1]=0;
}
if(getTimebuf[1]==0x4a){
getTimebuf[1]=0x50;
}
if(getTimebuf[1]==0x3a){
getTimebuf[1]=0x40;
}
if(getTimebuf[1]==0x2a){
getTimebuf[1]=0x30;
}
if(getTimebuf[1]==0x1a){
getTimebuf[1]=0x20;
}
if(getTimebuf[1]==0x0a){
getTimebuf[1]=0x10;
}
time[3]=(getTimebuf[1])/16+48;//¸ñʽ»¯Ê±¼ä·Ö
time[4]=(getTimebuf[1])%16+48;
write_1602com(0x80+0x40+3);//ÔÚ·ÖµÄλÖÃ
write_1602data(time[3]);
write_1602com(0x80+0x40+4);//ÔÚ·ÖµÄλÖÃ
write_1602data(time[4]);
write_1602com(0x80+0x40+4);//Èùâ±êÔÚ·ÖµÄλÖÃÉÁ˸
break;
case 3:
//ÔÚʱµÄλÖÃ
getTimebuf[2]++;
if(getTimebuf[2]==0x24){
getTimebuf[2]=0;
}
if(getTimebuf[2]==0x1a){
getTimebuf[2]=0x20;
}
if(getTimebuf[2]==0x0a){
getTimebuf[2]=0x10;
}
time[0]=(getTimebuf[2])/16+48;//¸ñʽ»¯Ê±¼äСʱ
time[1]=(getTimebuf[2])%16+48;
write_1602com(0x80+0x40+0);//ÔÚСʱµÄλÖÃ
write_1602data(time[0]);
write_1602com(0x80+0x40+1);
write_1602data(time[1]);
write_1602com(0x80+0x40+1);
break;
case 4:
//ÔÚÐÇÆÚµÄλÖÃ
getTimebuf[5]++;
if(getTimebuf[5]==0x08){
getTimebuf[5]=0x01;
}
if((getTimebuf[5]%10)*3==21){//ÂÖÍêÁË ÖØÐ¿ªÊ¼
week[0]=weeklist[0];
week[1]=weeklist[1];
week[2]=weeklist[2];
}else{
week[0]=weeklist[(getTimebuf[5]%10)*3];//¸ñʽ»¯ÐÇÆÚ
week[1]=weeklist[(getTimebuf[5]%10)*3+1];
week[2]=weeklist[(getTimebuf[5]%10)*3+2];
}
write_1602com(0x80+12);
write_1602data(week[0]);
write_1602com(0x80+13);
write_1602data(week[1]);
write_1602com(0x80+14);
write_1602data(week[2]);
write_1602com(0x80+14);
break;
case 5:
//ÔÚÈÕµÄλÖÃ
getTimebuf[3]++;
if(getTimebuf[3]==0x32){
getTimebuf[3]=0x01;
}
if(getTimebuf[3]==0x2a){
getTimebuf[3]=0x30;
}
if(getTimebuf[3]==0x1a){
getTimebuf[3]=0x20;
}
if(getTimebuf[3]==0x0a){
getTimebuf[3]=0x10;
}
date[8]=(getTimebuf[3])/16+48;
date[9]=(getTimebuf[3])%16+48;
write_1602com(0x80+9);
write_1602data(date[8]);
write_1602com(0x80+10);
write_1602data(date[9]);
write_1602com(0x80+10);
break;
case 6:
//ÔÚÔµÄλÖÃ
getTimebuf[4]++;
if(getTimebuf[4]==0x13){
getTimebuf[4]=0x01;
}
if(getTimebuf[4]==0x0a){
getTimebuf[4]=0x10;
}
date[5]=(getTimebuf[4])/16+48;
date[6]=(getTimebuf[4])%16+48;
write_1602com(0x80+6);
write_1602data(date[5]);
write_1602com(0x80+7);
write_1602data(date[6]);
write_1602com(0x80+7);
break;
case 7:
//ÔÚÄêµÄλÖÃ
getTimebuf[6]++;
if(getTimebuf[6]==0x9a){
getTimebuf[6]=0x00;
}
if(getTimebuf[6]==0x8a){
getTimebuf[6]=0x90;
}
if(getTimebuf[6]==0x7a){
getTimebuf[6]=0x80;
}
if(getTimebuf[6]==0x6a){
getTimebuf[6]=0x70;
}
if(getTimebuf[6]==0x5a){
getTimebuf[6]=0x60;
}
if(getTimebuf[6]==0x4a){
getTimebuf[6]=0x50;
}
if(getTimebuf[6]==0x3a){
getTimebuf[6]=0x40;
}
if(getTimebuf[6]==0x2a){
getTimebuf[6]=0x30;
}
if(getTimebuf[6]==0x1a){
getTimebuf[6]=0x20;
}
if(getTimebuf[6]==0x0a){
getTimebuf[6]=0x10;
}
date[2]=(getTimebuf[6])/16+48;
date[3]=(getTimebuf[6])%16+48;
write_1602com(0x80+3);
write_1602data(date[2]);
write_1602com(0x80+4);
write_1602data(date[3]);
write_1602com(0x80+4);
break;
}
}
if(alarm!=0){
switch(alarm){
case 1:
//µ÷½ÚÄÖÖӵĿªÓë¹Ø
if(isOpen==0){
isOpen=1;
write_1602com(0x80+0x40+13);
write_1602data(' ');
write_1602data('O');
write_1602data('N');
}else{
isOpen=0;
write_1602com(0x80+0x40+13);
write_1602data('O');
write_1602data('F');
write_1602data('F');
}
//·ÀֹдºóµØÖ·×Ô¶¯Ïòºó¼ÓÒ» ¹â±êÉÁ˸¿´²»µ½
write_1602com(0x80+0x40+15);
break;
case 2:
//µ÷½ÚÄÖÖӵķÖ
fen++;
if(fen==60){
fen=0;
}
display_alarm(0x80+0x40+8,fen);
break;
case 3:
//µ÷½ÚÄÖÖÓµÄСʱ
shi++;
if(shi==24){
shi=0;
}
display_alarm(0x80+0x40+5,shi);
break;
}
}
}
}
if(key_minus==0){//¼ì²âÊÇ·ñ°´ÏÂ
delay(10);//Ïû¶¶
if(key_minus==0){//Ôٴμì²âÊÇ·ñ°´ÏÂ
while(!key_minus);//¼ì²âÊÇ·ñËÉ¿ª
delay(10);//ÑÓʱÏû¶¶
while(!key_minus);//Ôٴμì²âÊÇ·ñËÉ¿ª
if(count!=0){
switch(count){
case 1:
//ÔÚÃëµÄλÖÃ
getTimebuf[0]--;
if(getTimebuf[0]==0xff){
getTimebuf[0]=0x59;
}
if(getTimebuf[0]==0x4f){
getTimebuf[0]=0x49;
}
if(getTimebuf[0]==0x3f){
getTimebuf[0]=0x39;
}
if(getTimebuf[0]==0x2f){
getTimebuf[0]=0x29;
}
if(getTimebuf[0]==0x1f){
getTimebuf[0]=0x19;
}
if(getTimebuf[0]==0x0f){
getTimebuf[0]=0x09;
}
time[6]=(getTimebuf[0])/16+48;//¸ñʽ»¯Ê±¼äÃë
time[7]=(getTimebuf[0])%16+48;
write_1602com(0x80+0x40+6);//ÔÚÃëµÄλÖÃ
write_1602data(time[6]);
write_1602com(0x80+0x40+7);//ÔÚÃëµÄλÖÃ
write_1602data(time[7]);
write_1602com(0x80+0x40+7);//Èùâ±êÔÚÃëµÄλÖÃÉÁ˸
break;
case 2:
//ÔÚ·ÖµÄλÖÃ
getTimebuf[1]--;
if(getTimebuf[1]==0xff){
getTimebuf[1]=0x59;
}
if(getTimebuf[1]==0x4f){
getTimebuf[1]=0x49;
}
if(getTimebuf[1]==0x3f){
getTimebuf[1]=0x39;
}
if(getTimebuf[1]==0x2f){
getTimebuf[1]=0x29;
}
if(getTimebuf[1]==0x1f){
getTimebuf[1]=0x19;
}
if(getTimebuf[1]==0x0f){
getTimebuf[1]=0x09;
}
time[3]=(getTimebuf[1])/16+48;//¸ñʽ»¯Ê±¼ä·Ö
time[4]=(getTimebuf[1])%16+48;
write_1602com(0x80+0x40+3);//ÔÚ·ÖµÄλÖÃ
write_1602data(time[3]);
write_1602com(0x80+0x40+4);//ÔÚ·ÖµÄλÖÃ
write_1602data(time[4]);
write_1602com(0x80+0x40+4);//Èùâ±êÔÚ·ÖµÄλÖÃÉÁ˸
break;
case 3:
//ÔÚʱµÄλÖÃ
getTimebuf[2]--;
if(getTimebuf[2]==0xff){
getTimebuf[2]=0x23;
}
if(getTimebuf[2]==0x1f){
getTimebuf[2]=0x19;
}
if(getTimebuf[2]==0x0f){
getTimebuf[2]=0x09;
}
time[0]=(getTimebuf[2])/16+48;//¸ñʽ»¯Ê±¼äСʱ
time[1]=(getTimebuf[2])%16+48;
write_1602com(0x80+0x40+0);//ÔÚСʱµÄλÖÃ
write_1602data(time[0]);
write_1602com(0x80+0x40+1);
write_1602data(time[1]);
write_1602com(0x80+0x40+1);
break;
case 4:
//ÔÚÐÇÆÚµÄλÖÃ
getTimebuf[5]--;
if(getTimebuf[5]==0){
getTimebuf[5]=0x07;
}
if((getTimebuf[5]%10)*3==21){//ÂÖÍêÁË ÖØÐ¿ªÊ¼
week[0]=weeklist[0];
week[1]=weeklist[1];
week[2]=weeklist[2];
}else{
week[0]=weeklist[(getTimebuf[5]%10)*3];//¸ñʽ»¯ÐÇÆÚ
week[1]=weeklist[(getTimebuf[5]%10)*3+1];
week[2]=weeklist[(getTimebuf[5]%10)*3+2];
}
write_1602com(0x80+12);
write_1602data(week[0]);
write_1602com(0x80+13);
write_1602data(week[1]);
write_1602com(0x80+14);
write_1602data(week[2]);
write_1602com(0x80+14);
break;
case 5:
//ÔÚÈÕµÄλÖÃ
getTimebuf[3]--;
if(getTimebuf[3]==0){
getTimebuf[3]=0x31;
}
if(getTimebuf[3]==0x2f){
getTimebuf[3]=0x29;
}
if(getTimebuf[3]==0x1f){
getTimebuf[3]=0x19;
}
if(getTimebuf[3]==0x0f){
getTimebuf[3]=0x09;
}
date[8]=(getTimebuf[3])/16+48;
date[9]=(getTimebuf[3])%16+48;
write_1602com(0x80+9);
write_1602data(date[8]);
write_1602com(0x80+10);
write_1602data(date[9]);
write_1602com(0x80+10);
break;
case 6:
//ÔÚÔµÄλÖÃ
getTimebuf[4]--;
if(getTimebuf[4]==0){
getTimebuf[4]=0x12;
}
if(getTimebuf[4]==0x0f){
getTimebuf[4]=0x09;
}
date[5]=(getTimebuf[4])/16+48;
date[6]=(getTimebuf[4])%16+48;
write_1602com(0x80+6);
write_1602data(date[5]);
write_1602com(0x80+7);
write_1602data(date[6]);
write_1602com(0x80+7);
break;
case 7:
//ÔÚÄêµÄλÖÃ
getTimebuf[6]--;
if(getTimebuf[6]==0xff){
getTimebuf[6]=0x99;
}
if(getTimebuf[6]==0x8f){
getTimebuf[6]=0x89;
}
if(getTimebuf[6]==0x7f){
getTimebuf[6]=0x79;
}
if(getTimebuf[6]==0x6f){
getTimebuf[6]=0x69;
}
if(getTimebuf[6]==0x5f){
getTimebuf[6]=0x59;
}
if(getTimebuf[6]==0x4f){
getTimebuf[6]=0x49;
}
if(getTimebuf[6]==0x3f){
getTimebuf[6]=0x39;
}
if(getTimebuf[6]==0x2f){
getTimebuf[6]=0x29;
}
if(getTimebuf[6]==0x1f){
getTimebuf[6]=0x19;
}
if(getTimebuf[6]==0x0f){
getTimebuf[6]=0x09;
}
date[2]=(getTimebuf[6])/16+48;
date[3]=(getTimebuf[6])%16+48;
write_1602com(0x80+3);
write_1602data(date[2]);
write_1602com(0x80+4);
write_1602data(date[3]);
write_1602com(0x80+4);
break;
}
}
if(alarm!=0){
switch(alarm){
case 1:
//µ÷½ÚÄÖÖӵĿªÓë¹Ø
if(isOpen==0){
isOpen=1;
write_1602com(0x80+0x40+13);
write_1602data(' ');
write_1602data('O');
write_1602data('N');
}else{
isOpen=0;
write_1602com(0x80+0x40+13);
write_1602data('O');
write_1602data('F');
write_1602data('F');
}
//·ÀֹдºóµØÖ·×Ô¶¯Ïòºó¼ÓÒ» ¹â±êÉÁ˸¿´²»µ½
write_1602com(0x80+0x40+15);
break;
case 2:
//µ÷½ÚÄÖÖӵķÖ
fen--;
if(fen<0){
fen=59;
}
display_alarm(0x80+0x40+8,fen);
break;
case 3:
//µ÷½ÚÄÖÖÓµÄСʱ
shi--;
if(shi<0){
shi=23;
}
display_alarm(0x80+0x40+5,shi);
break;
}
}
}
}
if(key_set_alarm==0){//¼ì²âÊÇ·ñ°´ÏÂ
delay(10);//Ïû¶¶
if(key_set_alarm==0){//Ôٴμì²âÊÇ·ñ°´ÏÂ
while(!key_set_alarm);//¼ì²âÊÇ·ñËÉ¿ª
delay(10);//ÑÓʱÏû¶¶
while(!key_set_alarm);//Ôٴμì²âÊÇ·ñËÉ¿ª
if(count==0){//ʱ¼äÔÚÕý³£×ß¶¯µÄʱºò²ÅÄÜÉèÖÃÄÖÖÓ
init_alarm();
alarm++;//˵Ã÷½øÈëÄÖÖÓÉèÖýçÃæ
if(alarm==4){
alarm=0;//˵Ã÷ÄÖÖÓÉèÖÃÍê±Ï
write_1602com(0x01);//ÇåÆÁÒÔ±ãÏÔʾʱ¼ä
write_1602com(0x0c);//¹Ø±Õ¹â±ê
//ÏÔʾÉèÖóɹ¦»òÈ¡ÏûµÄÌáʾ
if(isOpen){
write_1602com(0x80+2);
for(i=0;i<11;i++){
write_1602data(tips1[i]);
}
}else{
write_1602com(0x80+1);
for(i=0;i<14;i++){
write_1602data(tips2[i]);
}
}
//ÑÓʱ2msºóÇåÆÁÏÔʾʱ¼ä
delay(2000);
write_1602com(0x01);
}else{
switch(alarm){
case 1:
write_1602com(0x80+0x40+15);
break;
case 2:
write_1602com(0x80+0x40+9);
break;
case 3:
write_1602com(0x80+0x40+6);
break;
}
write_1602com(0x0f);
}
}
}
}
}
void beep()
{
//¼ì²âÄÖÖÓ ²¢ÇÒ±¨¾¯
if(time[0]==int_to_char(shi/10)&&time[1]==int_to_char(shi%10)&&time[3]==int_to_char(fen/10)&&time[4]==int_to_char(fen%10)){
isRing=1;//ÄÖÖÓÏìÆð£¬´ËʱÈç¹û½øÈëÄÖÖÓÉèÖýçÃæ ¸Ä±äʱ·Ö£¬ÄÖÖӾ͹رÕÁË
bee=0;
delay(250);
bee=1;
delay(250);
}else{
isRing=0;//¹Ø±ÕÄÖÖÓ»òÕßÒ»·ÖÖÓºóÄÖÖÓ×Ô¶¯¹Ø±Õ
bee=1;
}
}