51单片机控制数字钟原理图及汇编程序设计

如题所述

第1个回答  2009-12-17

#include <reg51.h>

#define uchar unsigned char

uchar 

display_code[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,

0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

uchar display_data[8]={0,0,0,0,0,0,0,0};

uchar time[3]={0,0,0};

void delay(void)//延时05ms

{

uchar i;

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

}

void display() //显示程序

{

uchar i,k;

k=0x01;

for(i=0;i<8;i++)

{

P2=0;//关闭显示

P0=display_code[time[i]%10];//存放个位数

P0=~P0;

P2=k;

k=k<<1;

delay();//调用延时程序

P2=0;

P0=display_code[time[i]/10];//存放十位数字

P0=~P0;

P2=k;

k=k<<1;

delay();//调用延时程序

}

P2=0;

}

void calc()//计算程序 

{

time[0]++;

if(time[0]>59)

{

time[0]=0;

time[1]++;

if(time[1]>59)

{

time[1]=0;

time[2]++;

if(time[2]>12)

{

time[2]=1;

}

}

}

}

void main(void) //主函数

{

uchar i;

while(1)

{

for(i=0;i<100;i++)

{

display(); //调用显示程序

}

calc();//调用计算程序

}

}

你还可以再调试那个时间,现在显示的可能是快了~

参考资料:gougou

本回答被提问者采纳
相似回答