有一個一模一樣的提問,好吧,俺再發布一次
給你一份我自己寫的,利用四位數碼管顯示模擬時鐘的程式吧,供你研究
另外,再給你一個一位數碼管的,是你要求的那種
這兩個都是利用微控制器的定時器中斷來產生秒訊號的
下面這個是 四位數碼管的,最下邊的是一位數碼管的,埠不一樣的話,自己改下
/***************************************************************************/
#include
sbit p20=P3^7; sbit p21=P3^6; sbit led=P2^7;//按鍵及LED埠定義
sbit Axs=P1^3; sbit Bxs=P1^2; sbit Cxs=P1^1; sbit Dxs=P1^0;//數碼管位選埠
char table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//數碼管顯示編碼
unsigned int h,m,s,t,n;
void YS(char hs)//延時函式
{char hk;for(;hs>0;hs--){for(hk=200;hk>0;hk--);}}
void XS(int xh,int xm) //顯示子函式
{
char d1,d2,d3,d4;
d1=(xh/1)%10; d2=(xh/10)%10;//分離小時
d3=(xm/1)%10; d4=(xm/10)%10;//分離分鐘
P0=table[d1];Cxs=0;YS(10);Cxs=1;//小時個位
P0=table[d2];Dxs=0;YS(10);Dxs=1;//小時十位
P0=table[d3];Axs=0;YS(10);Axs=1;//分鐘個位
P0=table[d4];Bxs=0;YS(10);Bxs=1;//分鐘十位
P0=0x7f; P1=0xfd; YS(10); P1=0xff;//小數點
}
void main(void)
TH0=(65536-1000)/256; TL0=(65536-1000)%256;
TMOD=0x01; EA=1; ET0=1; TR0=1;//定時器初始化
while(1)//主迴圈
if(p20==0){YS(10);if(p20==0){h++;if(h>23){h=0;}}while(!p20){XS(h,m);}}
if(p21==0){YS(10);if(p21==0){m++;if(m>59){m=0;}}while(!p21){XS(h,m);}}
XS(h,m);//呼叫數碼管顯示函式
void int1() interrupt 1 //定時器中斷
TH0=(65536-1000)/256; TL0=(65536-1000)%256; n++;t++;
if(t>500){t=0;led=~led;}//LED閃爍
if(n>1000){n=0;s++;}//如果達到一秒,秒加一
if(s>59){s=0;m++;}//如果達到一分,分加一
if(m>59){m=0;h++;}//如果達到一小時,小時加一
if(h>23){h=0;}//如果達到24小時,小時清零
sbit Axs=P1^3;//數碼管位選埠
P0=table[m];Axs=0;YS(10);Axs=1;//小時個位
TH0=(65536-1000)/256; TL0=(65536-1000)%256; n++;
if(n>1000){n=0;m++;}//如果達到一秒,秒加一
if(m>9){m=0;}//如果達到一小時,小時加一
有一個一模一樣的提問,好吧,俺再發布一次
給你一份我自己寫的,利用四位數碼管顯示模擬時鐘的程式吧,供你研究
另外,再給你一個一位數碼管的,是你要求的那種
這兩個都是利用微控制器的定時器中斷來產生秒訊號的
下面這個是 四位數碼管的,最下邊的是一位數碼管的,埠不一樣的話,自己改下
/***************************************************************************/
#include
sbit p20=P3^7; sbit p21=P3^6; sbit led=P2^7;//按鍵及LED埠定義
sbit Axs=P1^3; sbit Bxs=P1^2; sbit Cxs=P1^1; sbit Dxs=P1^0;//數碼管位選埠
char table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//數碼管顯示編碼
unsigned int h,m,s,t,n;
/***************************************************************************/
void YS(char hs)//延時函式
{char hk;for(;hs>0;hs--){for(hk=200;hk>0;hk--);}}
/***************************************************************************/
void XS(int xh,int xm) //顯示子函式
{
char d1,d2,d3,d4;
d1=(xh/1)%10; d2=(xh/10)%10;//分離小時
d3=(xm/1)%10; d4=(xm/10)%10;//分離分鐘
P0=table[d1];Cxs=0;YS(10);Cxs=1;//小時個位
P0=table[d2];Dxs=0;YS(10);Dxs=1;//小時十位
P0=table[d3];Axs=0;YS(10);Axs=1;//分鐘個位
P0=table[d4];Bxs=0;YS(10);Bxs=1;//分鐘十位
P0=0x7f; P1=0xfd; YS(10); P1=0xff;//小數點
}
/***************************************************************************/
void main(void)
{
TH0=(65536-1000)/256; TL0=(65536-1000)%256;
TMOD=0x01; EA=1; ET0=1; TR0=1;//定時器初始化
while(1)//主迴圈
{
if(p20==0){YS(10);if(p20==0){h++;if(h>23){h=0;}}while(!p20){XS(h,m);}}
if(p21==0){YS(10);if(p21==0){m++;if(m>59){m=0;}}while(!p21){XS(h,m);}}
XS(h,m);//呼叫數碼管顯示函式
}
}
/***************************************************************************/
void int1() interrupt 1 //定時器中斷
{
TH0=(65536-1000)/256; TL0=(65536-1000)%256; n++;t++;
if(t>500){t=0;led=~led;}//LED閃爍
if(n>1000){n=0;s++;}//如果達到一秒,秒加一
if(s>59){s=0;m++;}//如果達到一分,分加一
if(m>59){m=0;h++;}//如果達到一小時,小時加一
if(h>23){h=0;}//如果達到24小時,小時清零
}
/***************************************************************************/
/***************************************************************************/
#include
sbit Axs=P1^3;//數碼管位選埠
char table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//數碼管顯示編碼
unsigned int h,m,s,t,n;
/***************************************************************************/
void YS(char hs)//延時函式
{char hk;for(;hs>0;hs--){for(hk=200;hk>0;hk--);}}
/***************************************************************************/
void main(void)
{
TH0=(65536-1000)/256; TL0=(65536-1000)%256;
TMOD=0x01; EA=1; ET0=1; TR0=1;//定時器初始化
while(1)//主迴圈
{
P0=table[m];Axs=0;YS(10);Axs=1;//小時個位
}
}
/***************************************************************************/
void int1() interrupt 1 //定時器中斷
{
TH0=(65536-1000)/256; TL0=(65536-1000)%256; n++;
if(n>1000){n=0;m++;}//如果達到一秒,秒加一
if(m>9){m=0;}//如果達到一小時,小時加一
}
/***************************************************************************/