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

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

ttincludeO //#include#include〈>

ftdefine uchar unsigned char

ftdefine uint unsigned int

sbit dula二P2"6;

sbit wela二P2"7;

sbit keyl=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 numl, num2, s, si, m, ml, f, fl, num, numf, nums, dingshi;

uchar ns, nsl, nf, nf 1, numns, numnf;

void delay(uint z);

void keyscan ();

void keyscanl ();

void alram(); void display(uchar m, uchar ml, uchar f, ucharf1, uchars,

ucharsl); void displayO(uchar nf, uchar nf1, uchar ns, uchar nsl); void main()

{

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

THO=(65536-46080)/256 ;

TLO=(65536-46080)%256 ;

EA二1;//开总中断

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

TRO二1;//启动定时器0中断

numns=12;

numnf=0;

while (1)

{

if(dingshi==0)

{

keyscan ();

display (m, ml, f, fl, s, si);

alram();

else

keyscanl ();

displayO (nf, nf 1, ns, nsl);

}

}

}

void keyscan ()

if (keyl==0)

{

delay(10);

if(keyl==0)

nums++;

if (nums=:=24)

nums二0;

while (!keyl);

display (m, ml, f, fl, s, si); }

if(key2==0)

delay(10);

if (key2=0)

numf++;

if (numf==60)

numf=O;

while (!key2);

display(m, ml, f, fl, s, si);

}

if(key3==0)

{

delay (10);

if(key3==0)

{

dingshi二'dingshi;

while(!key3)

display(m, ml, f, fl, s, si);

}

}

/* if(key4=0)

{

delay (10);

if(key4==0)

flag二1;

while(!key4);

display (m, ml, f, fl, s, si);

}

}*/

}

void keyscanl()

{

if(keyl==0)

{

delay 仃0);

if(keyl==0)

numns++;

if (numns=24)

numns=0;

while (!keyl);

// display (nf, nf 1, ns, nsl);

if (key2=0)

delay (10);

if(key2==0)

numnf++;

if (numnf—60)

numnf=0;

while(!key2);

// display (nf, nf 1, ns, nsl);

}

if(key3==0)

{

delay 仃0);

if(key3==0)

{

dingshi^O;

wh订e(!key3);

display (m, ml, f, fl, s, si);

}

void alramO

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

beep二0;

if (((numnf+l=:numf) && (numns~nums)) && (dingshi—O)) // 一分钟报

时提示

beep=l;

}

void displayO (uchar nf, uchar nf 1, uchar ns, uchar nsl)//闹钟显示函数

{

nf=numnf%10;

nfl=numnf/10;

ns=:numns%10;

nsl 二numns./10;

/* wela=l;

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

wela=0;

P0二Oxff;*/

相关文档
最新文档