#include<reg51.h>
#include"lcd1602.h"
#include"ds1302.h"
sbit k1=P3^0;
sbit k2=P3^1;
sbit k3=P3^2;
sbit beep=P1^5;
unsigned char miao,fen,shi,c,flag=0,flag1=0,flag0=0;
int Scan_key();
void lcddisplay();
void lDelay(unsigned char c);
unsigned char panduan();
void set()
{
lcd1602writecom(0x80);
lcd1602writedat('0'+(shi/10));// //时
lcd1602writedat('0'+(shi%10));//
lcd1602writedat('-');
lcd1602writedat('0'+(fen/10)); //时
lcd1602writedat('0'+(fen%10));
lcd1602writedat('-');
lcd1602writedat('0'+(miao/10)); //时
lcd1602writedat('0'+(miao%10));
// Scan_key();
}
void main()
{
beep=1;
lcd1602Init();
ds1302Init();
while(1)
{
while(1)
{
ds1302readtime();
lcddisplay();
Scan_key();
if(flag1==1)
{
lcd1602writecom(0x01);
break;
}
}
while(1)
{
set();
Scan_key();
c=panduan();
if(c==1)
{
beep=0;
lDelay(13);
beep=1;
if(flag0==1)
break;
}
}
}
}
void lcddisplay()
{
lcd1602writecom(0x80+0X40);
lcd1602writedat('0'+TIME[2]/16); //时
lcd1602writedat('0'+(TIME[2]&0x0f));
lcd1602writedat('-');
lcd1602writedat('0'+TIME[1]/16); //分
lcd1602writedat('0'+(TIME[1]&0x0f));
lcd1602writedat('-');
lcd1602writedat('0'+TIME[0]/16); //秒
lcd1602writedat('0'+(TIME[0]&0x0f));
lcd1602writecom(0x80);
lcd1602writedat('2');
lcd1602writedat('0');
lcd1602writedat('0'+TIME[6]/16); //年
lcd1602writedat('0'+(TIME[6]&0x0f));
lcd1602writedat('-');
lcd1602writedat('0'+TIME[4]/16); //月
lcd1602writedat('0'+(TIME[4]&0x0f));
lcd1602writedat('-');
lcd1602writedat('0'+TIME[3]/16); //日
lcd1602writedat('0'+(TIME[3]&0x0f));
lcd1602writecom(0x8D);
lcd1602writedat('0'+(TIME[5]&0x07)); //星期
}
void lDelay(unsigned char c)
{
unsigned char a,b;
for(;c>0;c--)
{
for(a=10;a>0;a--)
{
for(b=10;b>0;b--);
}
}
}
int Scan_key()
{
unsigned char num=0;
if(k1==0)
{
lDelay(1);
if(k1==0)
{
flag1=1;
num++;
//while(!k1);
if(num==3)
{
num=0;
}
}
}
if(num!=0)
{
if(k2==0)
{
lDelay(1);
if(k2==0)
{
// while(!k2);
if(num==1)
{
miao++;
if(miao==60)
{
miao=0;
fen++;
}
}
if(num==2)
{
fen++;
if(fen==60)
{
fen=0;
shi++;
}
}
if(num==3)
{
shi++;
if(shi==24)
{
shi=0;
// miao=0;
// fen=0;
}
}
}
}
if(k3==0)
{
lDelay(1);
if(k3==0)
{
while(!k3);
if(num==1)
{
miao--;
if(miao==-1)
{
miao=59;
fen--;
}
}
if(num==2)
{
fen--;
if(fen==-1)
{
fen=59;
shi--;
}
}
if(num==3)
{
shi--;
if(shi==-1)
{
shi=0;
// miao=59;
// fen=59;
flag0=1;
}
}
}
}
}
return 0;
}
unsigned char panduan()
{
if((miao==TIME[0]) || (fen==TIME[1]) || (shi=TIME[2]))
{
flag=1;
}
return flag;
}
这是我的main的一部分 怎么实现不了切换时分秒 求解释
|