⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 数码管时钟.c

📁 采用AT89S51单片机的经典时钟程序
💻 C
字号:
#include<reg52.h>
sbit a0=P1^0;
sbit a1=P1^1;
sbit a2=P1^2;
sbit a3=P1^3;  //定义按键值
static char Lie[4]={0xef,0xdf,0xbf,0x7f};			  //按键值的扫描
       
/////////	   
	   
	   char LEDXS[8];
static char LEDWEI[8]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};     //行扫描数值表 最高位向最低位点亮
static char LED[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};   //数码管真值表0-9
unsigned char hour,minute,second;
unsigned int counter=0;  		  //250us计数单元
unsigned char i;              
//////////////////////////////////////////////////////////////////////////
void delay(unsigned int i)           //延时
{unsigned int j,k;
 for(j=0;j<i;j++)
 for(k=0;k<160;k++);
}
////////////////////////////////////////////////////////////
void Timer0(void) interrupt 1    //T0中断服务函数
{  counter++;
  if(counter==4000){
                   counter=0;
                   second++;
				  }
  if(second==60)    {second=0;minute++;}
    if(minute==60)  {minute=0;hour++;}
      if(hour==24)  {hour=0;}  
}
//////////////////////////////////////////////////////////////
void main(void)         //主函数
{
TMOD=0x2;
TH0=0x6;
TL0=0x6;
TR0=1;		   //开中断
ET0=1;
EA=1;          
 hour=19;	   //设定时间初值
 minute=41;
 second=55;
          
 while(1)
 {
  LEDXS[0]=LED[hour/10];
  LEDXS[1]=LED[hour%10];
  LEDXS[2]=0xbf;
  LEDXS[3]=LED[minute/10];
  LEDXS[4]=LED[minute%10];
  LEDXS[5]=0xbf;
  LEDXS[6]=LED[second/10];
  LEDXS[7]=LED[second%10];
 for(i=0;i<8;i++)
  {P0=LEDXS[i];
   P2=LEDWEI[i];
   delay(1);}
 
 }
 
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -