数字时钟(数码管显示)例如:23-59-23
#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义 #define uchar unsigned char #define uint unsigned int static unsigned char count; code unsigned char tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共阴数码管 0-9 uchar smg[8]; //定义缓冲区 uint minute=30,hour=12,second; //定义并且初始化值 12:30:00 void delay(unsigned int cnt) { while(--cnt); } void display( ) { smg[0]=tab[hour/10]; //显示小时 smg[1]=tab[hour%10]; smg[2]=0x40; //显示"-" smg[3]=tab[minute/10]; //显示分钟 smg[4]=tab[minute%10]; smg[5]=0x40; //显示"-" smg[6]=tab[second/10]; //显示秒 smg[7]=tab[second%10]; } void main() { uchar i; TMOD |=0x01; //定时器0 10ms in 12M crystal 用于计时 TH0=0xd8; //初值 TL0=0xf0; ET0=1; TR0=1; EA =1; display(); while(1) { for(i=0;i<8;i++)//显示时间 { P0=smg[i]; P2=i; delay(100); } if (count==100) { count=0; second++; display(); //秒加1 if(second==60) { second=0; minute++; //分加1 if(minute==60) { minute=0; hour++; //时加1 if(hour==24) hour=0; } } } display(); } } void timer() interrupt 1 { TH0=0xd8; //重新赋值 TL0=0xf0; count++; }
最后更新:2017-04-03 19:06:50