标题: 单片机秒表仿真实验源码(带三个按键) [打印本页]

作者: 玉尚轩    时间: 2018-11-26 09:57
标题: 单片机秒表仿真实验源码(带三个按键)
标题:单片机秒表实验
内容:这是前两个星期做的秒表的文件,
         单片机c语言版,里面的功能可以实现三分钟的计时,
         有三个按键,一个按键按下,可以停止计数,
          一个按下可以开始计数,一个按下可以复位。

仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源程序如下:
  1. #include"reg52.h"
  2. #define uchar unsigned char
  3. sbit s1=P3^2;
  4. sbit s2=P3^3;
  5. sbit s3=P3^4;
  6. uchar code seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  7. uchar time=0;        //记录中断次数
  8. uchar second;  
  9. void delay()
  10. { uchar i,j;
  11. for(i=0;i<20;i++)
  12.   for(j=0;j<20;j++);}
  13. main()
  14. {TMOD=0x01;   
  15. ET0=1;
  16. EA=1;
  17. second=0;
  18. while(1)
  19.   {  P2=0xfe;
  20.      P0=seg[second/100];
  21.          delay();
  22.      P2=0xfd;
  23.      P0=seg[second/10%10];     
  24.          delay();
  25.          P2=0xfb;
  26.          P0=seg[second%10];
  27.          delay();
  28. if(s1==0){TH0=0xee;TL0=0x00;TR0=1;}   
  29. if(s2==0)TR0=0;
  30. if(s3==0){second=0;
  31.                P2=0xfe;  //选择第一个数码管点亮
  32.            P0=seg[second/100];  //显示秒位0
  33.                delay();
  34.            P2=0xfd; //选择第二个数码管点亮
  35.            P0=seg[second/10%10];     //显示0.1秒位0
  36.                delay();
  37.                    P2=0xfb; //选择第三个数码管点亮
  38.                P0=seg[second%10]; //显示0.01秒位0
  39.                delay();
  40.                           }
  41. while(P3&0x20==0x00);//消除抖动
  42.                         while(P3&0x10==0x00);//消除抖动
  43.                                  while(P3&0x08==0x00);}}//消除抖动
  44. void t0() interrupt 1 using 1
  45. {
  46. TH0=0xee;
  47. TL0=0x00;
  48. time++;
  49. if(time==200)    //中断200次,共计时200*5ms=1000ms=1s
  50. {time=0;
  51.   second++;
  52.    P2=0xfe;  //选择第一个数码管点亮
  53.    P0=seg[second/100];  //显示秒位0
  54.    delay();
  55.    P2=0xfd; //选择第二个数码管点亮
  56.    P0=seg[second/10%10];     //显示0.1秒位0
  57.    delay();
  58.    P2=0xfb; //选择第三个数码管点亮
  59.    P0=seg[second%10]; //显示0.01秒位0
  60.    delay();       
  61.    }
  62.   if(second==180)
  63.   {TR0=0;
  64.    second=180; }
  65.    else TR0=1;}       
复制代码

所有资料51hei提供下载:
秒表.zip (60.14 KB, 下载次数: 35)









欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1