访问手机版页面
你的位置:老古开发网 > 其他 > 正文  
XD5101实验四----计时器(led显示)
内容导读:

程序功能:计时器。两位led显示秒种,另两位显示分钟,用小数点隔开。
最大量程1小时。按键一下开始计时,第二下停止计时,第三下清零。

程序源码:

#include<reg52.h>
#define uchar unsigned char
sbit s1 = P2^0;
sbit s2 = P2^1;
sbit s3 = P2^2;
sbit s4 = P2^3;
sbit en = P2^5;

sbit Key1= P3^2;//对应学习板S1按键

uchar second,minute,clock,number;
//数码管显示
uchar dis[10]={ 0x84,  // 0
          0xBD,  // 1
          0xE0,  // 2
          0xB0,  // 3
          0x99,  // 4
          0x92,  // 5
          0x82,  // 6
          0xBC,  // 7
          0x80,  // 8
          0x90  // 9
    };

void timer0_init()
{
 EA=1;
 ET0=1;
 TMOD=0x01;//工作方式1
 //定时50ms
 TL0=0x00;
 TH0=0x4C;
 TR0=0;
}

void timer0() interrupt 1
{
 TF0=0;
 TL0=0x00;
 TH0=0x4C;
 ++clock;
}

void Delay(int m)
{
 while(--m);
}

void display()
{
 s1=0;
 P0=dis[minute/10];
 Delay(100);
 s1=1;
 s2=0;
 P0=(dis[minute%10]&0x7F);//显示小数点,以区分分钟和秒钟
 Delay(100);
 s2=1;
 s3=0;
 P0=dis[second/10];
 Delay(100);
 s3=1;
 s4=0;
 P0=dis[second%10];
 Delay(100);
 s4=1;
}

void main()
{
 second=0;
 minute=0;
 clock=0;
 number=0;
 Key1=1;
 timer0_init();
 en=0;
 while(1)
 {
  if(!Key1)
  {
   ++number;
      if(1==number)
    TR0=1;
   if(2==number)
       TR0=0;
   while(!Key1);
  }
  if(20==clock)//到一秒
  {
   clock=0;
   ++second;  
  }
  if(60==second)//到一分
  {
   second=0;
   ++minute;
  }
  if((60==minute) (number>=3))//超出量程或者清零命令
  {
   second=0;
   minute=0;
   clock=0;
   number=0;
  }
  display();
 }
}

 

文件名:计时器(led显示).rar

标签:
来源: 作者: 时间:2006/9/25 16:50:53
相关阅读
推荐阅读
阅读排行
最近更新
商品推荐