基于单片机的时钟设计文档格式.docx
《基于单片机的时钟设计文档格式.docx》由会员分享,可在线阅读,更多相关《基于单片机的时钟设计文档格式.docx(23页珍藏版)》请在冰豆网上搜索。
ucharnaozhong[7]={35,32,16,27,2,7,11};
ucharflag,flag1,flag2;
ucharcodetable0[]="
--"
;
ucharcodetable1[]="
:
"
voidlcd_com(uchar);
voidlcd_date(uchar);
voidlcd_time(uchar,uchar);
voidwrite_ds1302(ucharadd,uchardate);
ucharread_ds1302(ucharadd);
voidread_rtc();
voidset_ds1302(ucharadd,uchartime);
voiddisplay();
voidinit_ds1302();
voidmain()
{
wela=1;
P1=0xff;
wela=0;
init();
init_ds1302();
while
(1)
{
if(flag1==1)
naozhongscan();
read_rtc();
if(flag==0)
display();
keyscan();
}
}
voidinit()
flag=0;
flag1=0;
flag2=0;
lcden=0;
lcdwr=0;
num2=0;
num3=0;
num4=0;
lcd_com(0x38);
//显示模式设置,16*2显示,5*7点阵,8位数据接口
lcd_com(0x01);
//清屏,显示、指针清零
lcd_com(0x0c);
//显示开关及光标设置,开显示,显示光标,光标闪烁
lcd_com(0x06);
//读写后指针加一光标加一
lcd_com(0x80);
//从第一个显示地址开始显示
for(num0=0;
num0<
16;
num0++)
lcd_date(table0[num0]);
lcd_com(0x80+0x40);
11;
lcd_date(table1[num0]);
voidinit_ds1302()
uchari,j;
ucharflag3;
flag3=read_ds1302(0x81);
if(flag3&
0x80)//如果ch=1则进行初始化
write_ds1302(0x8e,0x00);
for(i=0;
i<
7;
i++)
j=date[i]/10;
date[i]=date[i]%10;
date[i]=date[i]+j*16;
write_ds1302(date_write_add[i],date[i]);
}
write_ds1302(0x8e,0x80);
voiddelay(ucharz)
ucharx,y;
for(x=110;
x>
0;
x--)
for(y=z;
y>
y--);
voiddidi()
nz=0;
delay(50);
nz=1;
delay(100);
voidlcd_com(ucharcom)
lcdrs=0;
P0=com;
delay(5);
lcden=1;
voidlcd_date(uchardate)
lcdrs=1;
P0=date;
voidlcd_time(ucharadd,ucharDate)
ucharshi,ge;
shi=Date/10;
ge=Date%10;
lcd_com(0x80+add);
lcd_date(0x30+shi);
lcd_date(0x30+ge);
voidkeyscan()
ajjd=0;
if(num3!
=2)
{
if(k1==0)
delay(5);
if(k1==0)
{
while(!
k1);
num2++;
if(num2==1)
{
flag=1;
lcd_com(0x80+lcd_date_add[0]);
lcd_com(0x0f);
}
if(num2==2)
lcd_com(0x80+lcd_date_add[1]);
if(num2==3)
lcd_com(0x80+lcd_date_add[2]);
if(num2==4)
lcd_com(0x80+lcd_date_add[3]);
if(num2==5)
lcd_com(0x80+lcd_date_add[4]);
if(num2==6)
lcd_com(0x80+lcd_date_add[5]);
if(num2==7)
lcd_com(0x80+lcd_date_add[6]);
if(num2==8)
lcd_com(0x0c);
//关光标
num2=0;
flag=0;
}
if(num2!
=0)
if(k2==0)
if(k2==0)
k2);
if(num2==1)
date[0]++;
if(date[0]==60)
date[0]=0;
_nop_();
lcd_time(lcd_date_add[0],date[0]);
set_ds1302(date_write_add[0],date[0]);
if(num2==2)
date[1]++;
if(date[1]==60)
date[1]=0;
lcd_time(lcd_date_add[1],date[1]);
set_ds1302(date_write_add[1],date[1]);
if(num2==3)
date[2]++;
if(date[2]==24)
date[2]=0;
lcd_time(lcd_date_add[2],date[2]);
set_ds1302(date_write_add[2],date[2]);
if(num2==4)
date[3]++;
if(date[3]==32)
date[3]=1;
lcd_time(lcd_date_add[3],date[3]);
set_ds1302(date_write_add[3],date[3]);
if(num2==5)
date[4]++;
if(date[4]==13)
date[4]=1;
lcd_time(lcd_date_add[4],date[4]);
set_ds1302(date_write_add[4],date[4]);
if(num2==6)
date[5]++;
if(date[5]==8)
date[5]=1;
lcd_time(lcd_date_add[5],date[5]);
set_ds1302(date_write_add[5],date[5]);
if(num2==7)
date[6]++;
if(date[6]==99)
date[6]=1;
lcd_time(lcd_date_add[6],date[6]);
set_ds1302(date_write_add[6],date[6]);
}
if(k3==0)
if(k3==0)
k3);
date[0]--;
if(date[0]==-1)
date[0]=59;
lcd_time(lcd_date_add[2],date[0]);
date[1]--;
if(date[1]==-1)
date[1]=59;
date[2]--;
if(date[2]==-1)
date[2]=23;
date[3]--;
if(date[3]==0)
date[3]=31;
date[4]--;
if(date[4]==0)
date[4]=12;
date[5]--;
if(date[5]==0)
date[5]=7;
date[6]--;
if(date[6]==0)
date[6]=99;
}
if(k4==0)
delay(5);
if(k4==0)
while(!
k4);
num3++;
if(num3==1)
{
flag1=1;
lcd_com(0x80+1);
lcd_date(0x41);
}
if(num3==2)
{
ajjd=0;
flag1=0;
if(num4==0)
{
for(num0=0;
lcd_time(lcd_date_add[num0],naozhong[num0]);
lcd_com(0x80+1);
lcd_com(0x0c);
lcd_date(0x42);
}
//lcd_com(0x0f);
flag=1;
if(k1==0)
delay(5);
if(k1==0)
{
while(!
num4++;
if(num4==1)
{
lcd_com(0x80+lcd_date_add[0]);
lcd_com(0x0f);
}
if(num4==2)
lcd_com(0x80+lcd_date_add[1]);
if(num4==3)
lcd_com(0x80+lcd_date_add[2]);
if(num4==4)
lcd_com(0x80+lcd_date_add[3]);
if(num4==5)
lcd_com(0x80+lcd_date_add[4]);
if(num4==6)
lcd_com(0x80+lcd_date_add[5]);
if(num4==7)
lcd_com(0x80+lcd_date_add[6]);
if(num4==8)
lcd_com(0x0c);
num4=0;
flag=1;
}
if(num4!
{
if(k2==0)
if(k2==0)
if(num4==1)
naozhong[0]++;
if(naozhong[0]==60)
naozhong[0]=0;
_nop_();
lcd_time(lcd_date_add[0],naozhong[0]);
if(num4==2)
naozhong[1]++;
if(naozhong[1]==60)
naozhong[1]=0;
lcd_time(lcd_date_add[1],naozhong[1]);
if(num4==3)
naozhong[2]++;
if(naozhong[2]==24)
naozhong[2]=0;
lcd_time(lcd_date_add[2],naozhong[2]);
if(num4==4)
naozhong[3]++;
if(naozhong[3]==32)
naozhong[3]=1;
lcd_time(lcd_date_add[3],naozhong[3]);
if(num4==5)
naozhong[4]++;
if(naozhong[4]==13)
naozhong[4]=1;
lcd_time(lcd_date_add[4],naozhong[4]);