单片机
返回首页

秒表计时功能(模仿)单片机程序

2012-10-11 来源:21ic

下面这个仿真效果图,大家可按上面的电路来制作

点击浏览下一页

 

/**
//模仿秒表计时功能,独立按键可控制计时数字的“暂停/走动”。(程序没有考虑计时精确度控制)
/*P2.2~P2.4与138译码器输入口连接
/*P1.0连接独立按键
/*P0口输出数据
***/
#include
code unsigned char tab[]={0x3f,0x06,0x5b,0x4f,0x66,
                          0x6d,0x7d,0x07,0x7f,0x6f,0x40}; //共阴数码管 0-9  '-' '熄灭‘表
unsigned int count,a,b,sec,min,hour; 
bit c_flag; // 暂停/计时 标志          

/*****T1初始化*****/
void timer_1(void)
{
  TH1=0x0ec;
  TL1=0x078;
  TR1=1;
  }
/*****数据计数******/
void time_count(viod)
{
 if(hour==60){sec=0,min=0,hour=0;}
   else if(sec!=59) sec++;
      else if(min!=59) {sec=0,min++;}
     else {min=0,hour++;}
 }
/******数字调整*******/
void get_count(unsigned int x)
{
  a=x/10;
  b=x%10;
  }
/*******按键检测********/
void key_tach(void)
{
   int i,j;
   j=P1&0x01;
   if(j==0){
     for(i=0;i<=200;i++);
  j=P1&0x01;
  if(j==0) 
   {if(c_flag==1) c_flag=0;
         else c_flag=1;}
   }
   }
/*******显示程序********/
void display(viod)
{   
   int flag;
   P0=0x00;
   flag=count%8;
   switch(flag){
    case 0:P2=flag*4;
        get_count(hour);
     P0=tab[a];
     break;
 case 1:P2=flag*4;
     P0=tab[b];
     break;
 case 2:P2=flag*4;
     P0=tab[10];
     break;
 case 3:P2=flag*4;
        get_count(min);
     P0=tab[a];
     break;
 case 4:P2=flag*4;
     P0=tab[b];
     break;
 case 5:P2=flag*4;
     P0=tab[10];
     break;
 case 6:P2=flag*4;
        get_count(sec);
     P0=tab[a];
     break;
 case 7:P2=flag*4;
     P0=tab[b];
     break;
 default:return;
    }
   }
/*******中断服务程序********/
void int1() interrupt 3
{
   key_tach();
   if(c_flag==0)
   {
     if(count==7) {count=0;time_count();}
       else count++;}
    else
    {
        if(count==7) {count=0;}
        else count++;} 
   display();
   timer_1();
   }

/******主程序*****/
void main()
{
  c_flag=0;
  count=0;
  sec=0;
  min=0;
  hour=0;
  TMOD=0x10;
  EA=1;
  ET1=1;
  timer_1();
  while(1);
  }
进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • 单稳态控制电路设计与分析

  • 光控电路设计与分析

  • IGBT模块通过控制门极阻断过电流

  • 开关电源的基本组成及工作原理

  • 基于M66T旋律发​​生器的电路图解析

  • 一个简单的红外耳机电路

    相关电子头条文章