单片机数字钟程序

发布时间:2011-04-13 23:34:26   来源:文档文库   
字号:

#include

#define SMG_Data P0

#define SMG_bit P2

#define switch_time 1

sbit Led=P1^0 ;

unsigned int T0_counter,counter ;

unsigned char code numtab[11]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,

0x07,0x7F,0x6F,0x40};

unsigned char code bittab[8]={0xfe,0xfd,

0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

unsigned char bit_select,second=55,miniute=59,hour=23;

void interrupt_init ()

{

TMOD=0X01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

TR0=1;ET0=1;EA=1;

}

void timer0()interrupt 1

{

TH0=(65536-1000)/256;

TL0=(65536-1000)%256;

T0_counter++; counter++;

if(T0_counter>=switch_time)

{

T0_counter=0; bit_select++;

if(bit_select>=8) bit_select=0;

}

}

void main (void)

{

interrupt_init ();

while (1)

{

if(counter>=1000){counter=0;second++;}

if(second>59){second=0;miniute++;}

if(miniute>59){miniute=0;hour++;}

if(hour>23){hour=0;}

if (hour==0&&miniute==0&&second==0) Led=0;

else Led=1;

switch (bit_select)

{

case 0:SMG_bit =bittab[7];SMG_Data=numtab[second%10];break;

case 1:SMG_bit =bittab[6];SMG_Data=numtab[second/10];break;

case 2:SMG_bit =bittab[5];SMG_Data=numtab[10];break;

case 3:SMG_bit =bittab[4];SMG_Data=numtab[miniute%10]; break;

case 4:SMG_bit =bittab[3];SMG_Data=numtab[miniute/10]; break;

case 5:SMG_bit =bittab[2];SMG_Data=numtab[10]; break;

case 6:SMG_bit =bittab[1];SMG_Data=numtab[hour%10];break;

case 7:SMG_bit =bittab[0];SMG_Data=numtab[hour/10];break;

default:break;

}

}

}

本文来源:https://www.2haoxitong.net/k/doc/90a5a10cf12d2af90242e65b.html

《单片机数字钟程序.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式