单片机数码管显示时钟程序

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

#include

//#include#include

#define uchar unsigned char

#define uint unsigned int

sbit dula=P2^6;

sbit wela=P2^7;

sbit key1=P3^4;

sbit key2=P3^5;

sbit key3=P3^6;

sbit beep=P2^3;

unsigned code table[]={

0x3f , 0x06 , 0x5b , 0x4f ,

0x66 , 0x6d , 0x7d , 0x07 ,

0x7f , 0x6f , 0x77 , 0x7c,

0x39 , 0x5e , 0x79 , 0x71

};

uchar num1,num2,s,s1,m,m1,f,f1,num,numf,nums,dingshi; uchar ns,ns1,nf,nf1,numns,numnf;

void delay(uint z);

void keyscan ();

void keyscan1 ();

void alram();

void display(uchar m,uchar m1,uchar f,ucharf1,uchars,uchars1); void display0(uchar nf,uchar nf1,uchar ns,uchar ns1);

void main()

{

TMOD=0x01;//设定定时器0工作方式1

TH0=(65536-46080)/256 ;

TL0=(65536-46080)%256 ;

EA=1;//开总中断

ET0=1;//开定时器0中断

TR0=1;//启动定时器0中断

numns=12;

numnf=0;

while(1)

{

if(dingshi==0)

{

keyscan ();

display(m,m1,f,f1,s,s1);

alram();

}

else

{

keyscan1 ();

display0(nf,nf1,ns,ns1);

}

}

}

void keyscan ()

{

if(key1==0)

{

delay(10);

if(key1==0)

nums++;

if (nums==24)

nums=0;

while(!key1);

display(m,m1,f,f1,s,s1);

}

if(key2==0)

{

delay(10);

if(key2==0)

numf++;

if (numf==60)

numf=0;

while(!key2);

display(m,m1,f,f1,s,s1); }

if(key3==0)

{

delay(10);

if(key3==0)

{

dingshi=~dingshi;

while(!key3)

display(m,m1,f,f1,s,s1);

}

}

/* if(key4==0)

{

delay(10);

if(key4==0)

{

flag=1;

while(!key4);

display(m,m1,f,f1,s,s1);

}

} */

}

void keyscan1()

{

if(key1==0)

{

delay(10);

if(key1==0)

numns++;

if (numns==24)

numns=0;

while(!key1);

// display(nf,nf1,ns,ns1); }

if(key2==0)

{

delay(10);

if(key2==0)

numnf++;

if (numnf==60)

numnf=0;

while(!key2);

// display(nf,nf1,ns,ns1);

}

if(key3==0)

{

delay(10);

if(key3==0)

{

dingshi=0;

while(!key3);

// display(m,m1,f,f1,s,s1);

}

}

}

void alram()

{

if((numnf==numf)&&(numns==nums))

beep=0;

if(((numnf+1==numf)&&(numns==nums))&&(dingshi==0))//一分钟报时提示

beep=1;

}

void display0(uchar nf,uchar nf1,uchar ns,uchar ns1)//闹钟显示函数

{

nf=numnf%10;

nf1=numnf/10;

ns=numns%10;

ns1=numns/10;

/* wela=1;

P0=0xc0;//送位选数据

wela=0;

P0=0xff;*/

dula=1;

P0=table[ns1];

dula=0;

P0=0xff;

wela=1;

P0=0xfe;

wela=0;

delay(1);

dula=1;

P0=table[ns]|0x80;

相关文档
最新文档