數字時鍾(數碼管顯示)例如: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