微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 秒表计时器

秒表计时器

时间:10-02 整理:3721RD 点击:

秒表计时器

要  求:

①编写一个能够实现秒表计时功能的程序;

②计时时间通过若干个数码管显示;

③计时开始、暂停、继续、清零都由若干个开关控制;

④其它功能及创新设计。

功能挺全的,你是想买它?还是别的什么?你要说清楚一点,要不然大家以为是在给学生们布置作业呢。

我是这个程序不懂的,向你们请教的。可以的给程序来参考参考呗

刚好有这么个程序,是一个按键控制秒表启动、暂停、清零。不过程序是与实际电路结合才有用的。
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit bitcode=P2^6;
sbit segment=P2^7;
sbit key    =P2^4;
uint number;
uchar a;               //用来计数按键按下的次数,为每一次设定不同的功能
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};  //有这10个数就够了,不用把A,B,C,D,E,F 也写在里面
void delay(uchar us)
{
         uchar x,y;
  for(x=0;x<us;x++)
    for(y=0;y<110;y++);
}
void key_scan()
{
         if(key==0)
         {
                 delay(10);
                 if(key==0)
                 {
                          a++;
                          while(!key);
                         if(a==3)
                         {
                                  a=0;
                         }
                 }
         }
         switch(a)               //取上面的a值,给每次按下按键提供不同功能,由下面部分执行各自任务
         {
                 case 0:
                 TR0=0;
                 number=0;
                 break;
                 
                 case 1:
                 TR0=1;
                 break;
                 
                 case 2:
                 TR0=0;
                 break;
         }
}
void display()
{
         
         uchar bai,shi,ge;
         bai=number/100;
         shi=number%100/10;
         ge =number%10;
         
         bitcode=1;
         P0=0xdf;
         bitcode=0;
         segment=1;
         P0=table[bai];
         segment=0;
         delay(5);
         
         bitcode=1;
         P0=0xbf;
         bitcode=0;
         segment=1;
         P0=table[shi];
         segment=0;
         delay(5);
         
         bitcode=1;
         P0=0x7f;
         bitcode=0;
         segment=1;
         P0=table[ge];
         segment=0;
         delay(5);
}
void main()
{
   TMOD=0x01;
         TH0=(65536-50000)/256;
         TL0=(65536-50000)%256;
         EA=1;
         ET0=1;
         number=0;
         while(1)
         {
                 key_scan();
                 display();
         }
}
void time0()interrupt 1
{
         TH0=(65536-50000)/256;
         TL0=(65536-50000)%256;
         number++;
         if(number==1000)
         {
                  number=0;
         }
}

谢谢了,以后请多多指教哦。那你有没有51单片机串口同学程序啊?给我一些好不好啊?我现在要学习学习,我在通信这方面很弱的。

是有没有51单片机串口通信的程序的啊

为什么我拿单片机试了,不可以的啊?

实现不了以上的功能的

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top