以ä¸æ¯åä½æ°ç 管å¯è°æ¶å¸¦ç§éªççc51åçæºçµåéç¨åºï¼cè¯è¨ï¼ã
/**** æ¬ç¨åºä¸,æ¶æ¯ä¸º12MHz, ****/
/**** æ¶é´æ§å¶éç¨å®æ¶ä¸ææ§å¶æ¹å¼ã ****/
/**** 模å¼åæ¶é´è°æ´éç¨æ¥è¯¢æ¹å¼ã ****/
#include<reg52.h>
sbit P20=P2^0; //å个ä½æ§å¶ç«¯
sbit P21=P2^1; //ååä½æ§å¶ç«¯
sbit P22=P2^2; //æ¶ä¸ªä½æ§å¶ç«¯
sbit P23=P2^3; //æ¶åä½æ§å¶ç«¯
sbit led=P2^7; //second display led
sbit key0=P3^0; //模å¼è®¾ç½®
sbit key1=P3^1; //å
sbit key2=P3^2; //å
unsigned char hour,min,sec,T50ms;
unsigned char modstate; //模å¼ç¶æ
unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};//段ç
void init(); //åå§ååç¨åºå£°æ
void delay500us(unsigned char X); //延æ¶åç¨åºå£°æ
void display(); //æ¾ç¤ºåç¨åºå£°æ
void display001(); //æ¾ç¤ºåç¨åºå£°æ
void display002(); //æ¾ç¤ºåç¨åºå£°æ
void keyscan(); //æé®è¯å«åç¨åºå£°æ
void main()
{
init();
while(1)
{
keyscan();
}
}
void init() //åå§ååç¨åº
{
TMOD=0x01;
TH0=(65536-49990)/256;
TL0=(65536-49990)%256;
ET0=1;
EA=1;
TR0=1;
}
void delay500us(unsigned char X)
{
unsigned char i,j;
for(i=X;i>0;i--)
for(j=248;j>0;j--);
}
void timer0() interrupt 1 //timer0ä¸ææå¡åç¨åº,å®æ¶æ¶é´ä¸º50ms,æ¬ç¨åºå äº10usçæ¶é´ä¿®æ£é
{
TMOD=0x01;
TH0=(65536-49990)/256;
TL0=(65536-49990)%256;
T50ms++;
if(T50ms>=20)
{
T50ms=0;
sec++;
if(sec>=60)
{
sec=0;
min++;
if(min>=60)
{
min=0;
hour++;
if(hour>=24)hour=0;
}
}
}
}
void display()
{
P20=1;
P21=1;
P22=1;
P23=1;
P0=table[hour/10];
P23=0;
delay500us(5);
P20=1;
P21=1;
P22=1;
P23=1;
P0=table[hour%10];
P22=0;
delay500us(5);
P20=1;
P21=1;
P22=1;
P23=1;
P0=table[min/10];
P21=0;
delay500us(5);
P20=1;
P21=1;
P22=1;
P23=1;
P0=table[min%10];
P20=0;
delay500us(5);
if(T50ms<=10)led=0;
if(T50ms>10)led=1;
}
void display001()
{
P20=1;
P21=1;
P22=1;
P23=1;
P0=table[hour/10];
P23=0;
delay500us(10);
P20=1;
P21=1;
P22=1;
P23=1;
P0=table[hour%10];
P22=0;
delay500us(10);
}
void display002()
{
P20=1;
P21=1;
P22=1;
P23=1;
P0=table[min/10];
P21=0;
delay500us(10);
P20=1;
P21=1;
P22=1;
P23=1;
P0=table[min%10];
P20=0;
delay500us(10);
}
void keyscan() //æé®è¯å«éç¨åº
{
while(modstate==0)
{
display();
if(key0==0)
{
display();
if(key0==0)modstate++; //è¿ä¸¤å¥å å¨ä¸èµ·ä¸ºå»¶æ¶10ms软件é²æ设计ã
while(key0==0)display001(); //çå¾
æé®éæ¾ã
}
}
//****************************************************************************//
while(modstate==1)
{
display001();
if(key0==0)
{
display001();
if(key0==0)modstate++; //è¿ä¸¤å¥å å¨ä¸èµ·ä¸ºå»¶æ¶10ms软件é²æ设计ã
while(key0==0)display002(); //çå¾
æé®éæ¾ã
}
if(key1==0)
{
display001();
if(key1==0)
{
hour++;
if(hour>=24)hour=0;
while(key1==0)display001();
}
}
if(key2==0)
{
display001();
if(key2==0)
{
hour--;
if(hour>=24)hour=0;
while(key2==0)display001();
}
}
}
//****************************************************************************//
while(modstate==2)
{
display002();
if(key0==0)
{
display002();
if(key0==0)modstate=0; //è¿ä¸¤å¥å å¨ä¸èµ·ä¸ºå»¶æ¶10ms软件é²æ设计ã
while(key0==0)display(); //çå¾
æé®éæ¾ã
}
if(key1==0)
{
display002();
if(key1==0)
{
min++;
if(min>=60)min=0;
while(key1==0)display002();
}
}
if(key2==0)
{
display002();
if(key2==0)
{
min--;
if(min>=60)min=0;
while(key2==0)display002();
}
}
}
}
温馨提示:答案为网友推荐,仅供参考