• 大小: 51.99 KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2024-12-18
  • 语言: 其他
  • 标签: 单片机  数字钟  

资源简介

用at89c51做的一个6位的数字钟,可以显示小时 分钟 秒,并且实现了可以调试的功能
有c语言源程序 以及prote仿真图

资源截图

代码片段和文件信息

#include
#define uint unsigned int
#define uchar unsigned char
sbit second_set=P1^0;
sbit minute_set=P1^1;
sbit hour_set=P1^2;  
sbit go=P1^3;
uchar code table[]={0xC00xF90xA40xB00x990x920x820xF80x800x900xbf};//数码管段选编码表
uchar code disbit[]={0x010x020x040x080x100x200x400x80};  //数码管位选编码表
uchar aasecondminutehour;
uchar buffer[]={00000000};
void delay(uint t);
void display();
void main()
{
  TMOD=0x01;
  TH0=(65535-50000)/256;
  TL0=(65535-50000)%256;
  EA=1;
  ET0=1;
  TR0=1;   //定时器0初始化
  aa=0;
  second=0;
  minute=0;
  hour=0;  //各变量初始化
  while(1)
  {
  P1=0xff;  //P1口作为读入口,检测按键状态  
  if(second_set==0)  //秒设置键编码
  {
    delay(5);  //按键消抖 5ms
 if(second_set==0)
 {
  TR0=0;    //设置时,关闭定时器0
second++;
delay(3);

 }
 if(second==60)
 {
  minute++;
second=0;
if(minute==60)
{
hour++;
minute=0;
if(hour==24)
{
hour=0;
}
}
 }
 while(!second_set); //按键松手检测
  }
     display();
  
  if(minute_set==0) //分设置键编码
  {
   delay(5);
if(minute_set==0)
{
TR0=0;
minute++;
delay(3);

}
if(minute==60)
{
hour++;
minute=0;
if(hour==24)
{
hour=0;
}
}
while(!minute_set);
  }
  display();

  if(hour_set==0)  //时设置键编码
  {
   delay(5);
if(hour_set==0)
{
TR0=0;
hour++;
delay(3);

}
if(hour==24)
{
hour=0;
}
while(!hour_set);
  }
  display();

  if(go==0)   //开始键编码
  {
   delay(5);
if(go==0)
{
TR0=~TR0;
while(!go);
}
  }
  display();
   }
}
void timer0()interrupt 1
{
 aa++;
 TH0=(65535-50000)/256;
 TL0=(65535-50000)%256;

 if(aa==20)     //此时计满一秒
 {
  aa=0;
second++;
if(second==60)
{
second=0;
minute++;
if(minute==60)
{
minute=0;
hour++;
if(hour==24)
hour=0;
}
}

 }
}
void delay(uint t)  //延时子程序
{
uint xy;
for(x=t;x>0;x--)
for(y=177;y>0;y--);
}
void display()   //显示子程序
{
uchar i;
buffer[0]=second%10;
buffer[1]=second/10;
buffer[2]=10;
buffer[3]=minute%10;
buffer[4]=minute/10;
buffer[5]=10;
buffer[6]=hour%10;
buffer[7]=hour/10;
for(i=0;i<8;i++)
{
P0=table[buffer[i]]; //段选
P3=disbit[i]; //位选
delay(3);
P3=0x00;         //P3作为驱动口
}
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      97424  2011-03-15 09:14  shuzizhong\Last Loaded shuzizhong.DBK

     文件       6608  2011-03-15 09:26  shuzizhong\shuzizhong

     文件       2585  2011-03-15 09:30  shuzizhong\shuzizhong.c

     文件      97410  2011-03-15 09:26  shuzizhong\shuzizhong.DSN

     文件       1631  2011-03-15 09:26  shuzizhong\shuzizhong.hex

     文件         53  2011-03-15 09:26  shuzizhong\shuzizhong.lnp

     文件       8262  2011-03-15 09:26  shuzizhong\shuzizhong.LST

     文件      11000  2011-03-15 09:26  shuzizhong\shuzizhong.M51

     文件       6929  2011-03-15 09:26  shuzizhong\shuzizhong.OBJ

     文件       1208  2011-03-15 09:51  shuzizhong\shuzizhong.Opt

     文件        379  2011-03-15 09:51  shuzizhong\shuzizhong.plg

     文件        742  2011-03-15 09:51  shuzizhong\shuzizhong.PWI

     文件       2164  2011-03-15 09:26  shuzizhong\shuzizhong.Uv2

    .......      1206  2011-03-15 09:26  shuzizhong\shuzizhong_Opt.Bak

    .......         0  2011-03-15 08:14  shuzizhong\shuzizhong_Uv2.Bak

     文件       6376  2005-03-22 15:22  shuzizhong\STARTUP.A51

     文件      14048  2011-03-15 09:26  shuzizhong\STARTUP.LST

     文件        758  2011-03-15 09:26  shuzizhong\STARTUP.OBJ

     目录          0  2011-03-15 09:51  shuzizhong

----------- ---------  ---------- -----  ----

               258783                    19


评论

共有 条评论