51单片机数码管时钟程序

  • 格式:doc
  • 大小:28.50 KB
  • 文档页数:2

下载文档原格式

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

本人初学51,编写简单时钟程序。仅供参考学习

#include

#define uint unsigned int

#define uchar unsigned char

Uchar code table_d[16] = {0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0xf7,0xfc,0xb9,0xde,0xf9,0xf1 };

uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0xef};

void delay(uint);

unsigned long i,num,t=1;

void main()

{

TMOD=0X01;

TH0=(65536-10000)/256;

TL0=(65536-10000)%256;

EA=1;

ET0=1;

TR0=1;

while(1)

{

num=i/20;//i为秒位

if(i==1728000)//一天大概是这个秒吧,,,应该是,呵呵。就是世间到24时就归零。

i=0;

//也可用下面这个部分来代替上面的。

/*if(i==20)

{ i=0;

num++;

if(num==5184000)

num=0;

}*/

//num=9;

P2=7;//P2口为数码管控制端,我的是38译码器控制,就直接对其赋值来控制时,分,秒的显示;

P0=table[i%100%10];

delay(t);

P2=6;

P0=table[i%100/10];

delay(t);

P0=table_d[(num%60)%10];

P2=5;

delay(t);

P0=table[(num%60)/10];

P2=4;

delay(t);

P0=table_d[((num/60)%60)%10];

P2=3;

delay(t);

P0=table[((num/60)%60)/10];

P2=2;

delay(t);

P0=table_d[(num/3600)%10] ;

P2=1;

delay(t);

P0=table[(num/3600)/10];

P2=0;

delay(t);

}

}

void inttimer() interrupt 1

{

TH0=(65536-10000)/256;

TL0=(65536-10000)%256;

i++;

}

void delay(uint xms)

{

uint i,j;

for(i=xms;i>0;i--)

for(j=110;j>0;j--);

}

程序可能有点小问题,对初学者是个很好的启发。讨论交流:QQ:1044675456