日历时钟(带闹钟、图)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

/*********************按键1用于切换时分秒年月日闹钟一闹钟二 ***************************/ /************按键2用于当前显示调节闪烁进入调节状态调节秒(日)分(月) 时(年)**************/ /******************按键3用于配合按键2调表两位闪烁一位不闪不闪位每次加1****************/ /************按键4用于中断闹钟1、2 闹钟响应20s内如不按1、2,一段时间后闹钟再想*************/ #include

#define uint unsigned int

#define uchar unsigned char

uchar miao=0,fen=0,shi=0,ri=20,yue=12,nian=13;//年月日时分秒定义

uchar i1=0,i2=0; //判断按键变量

uchar miao1,fen1,shi1,miao2,fen2,shi2,naofen[]={0,0};//调闹钟变量

uchar d1,d2,d3,d4,d5; //显示变量

uchar t1=1,t2=1,t3=1; //显示延时变量

uint n13,n12,n11,n21,n22,n23,nz1,nz2; //闹钟变量

void xianshi();

void init1();

void delayms(uchar ms);

void display(d1,d2,d3,d4,d5);

void naozhong();

int key();

void tiaobiao();

sbit nao1=P1^0; //定义闹钟1端

sbit nao2=P1^1; //定义闹钟2端

sbit key1=P1^4; //定义按键1

sbit key2=P1^5; //定义按键2

sbit key3=P1^6; //定义按键3

sbit key4=P1^7; //定义按键4

uint num[]={0x3F,0x06,0x5B,0x4F,

0x66,0x6D,0x7D,0x07,

0x7F,0x6F,0x40,0x80}; //用于显示的数组 0,1,2,3,4,5,6,7,8,9,-,.

void main() //主程序

{

init1();

while(1)

{

key();

xianshi();

tiaobiao();

naozhong();

}

}

void xianshi() //显示切换

{

if(i1==0)display(shi,11,fen,11,miao);

if(i1==1)display(nian,10,yue,10,ri);

if(i1==2)display(shi1,10,fen1,10,miao1);

if(i1==3)display(shi2,10,fen2,10,miao2);

}

void delayms(uchar ms) //延时

{

uint z;

for(ms;ms>0;ms--)

for(z=200;z>0;z--);

}

void init1() //定时器1初始化装初值

{

TMOD=0x10;

ET1=1;

TH1=(65535-50000)/256;

TL1=(65535-50000)%256;

TR1=1;

EA=1;

}

void timer1() interrupt 3 using 1 //定时器1方式1中断

{

uchar count;

count++;

if(count==20)

{

nz1++;

nz2++;

miao++;

count=0;

if(miao==60)

{

fen++;

miao=0;

if(fen==60)

{

shi++;

fen=0;

if(shi==24)

{

ri++;

shi=0;

if((yue==1||3||5||7||8||10||12)&&(ri==33))

{

yue++;

ri=1;

}

if((yue==4||6||9||11)&&(ri==32))

{

yue++;

ri=1;

}

if((nian%4==0)&&(yue==2)&&(ri==30))

{

yue++;

ri=1;

}

if((nian%4!=0)&&(yue==2)&&(ri==29))

{

yue++;

ri=1;

}

if(yue==13)

{

nian++;

yue=1;

if(nian==99)nian=0;

}

}

}

}

}

TH1=(65535-50000)/256;

TL1=(65535-50000)%256;

}

void naozhong() //闹钟

{

n13=miao1-miao;

n12=fen1-fen;

n11=shi1-shi;

n21=miao2-miao;

n22=fen2-fen;

n23=shi2-shi;

if(i1==2&&key()==3) //调闹钟1 {

if(i2==2)

{

miao1++;

if(miao1==60)miao1=0;

}

相关文档
最新文档