找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4322|回复: 0
打印 上一主题 下一主题
收起左侧

单片机秒表仿真实验源码(带三个按键)

[复制链接]
跳转到指定楼层
楼主
标题:单片机秒表实验
内容:这是前两个星期做的秒表的文件,
         单片机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)




评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表