找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机10秒的秒表proteus仿真设计及源码

[复制链接]
跳转到指定楼层
楼主
分享一个用51单片机做的10秒的秒表带proteus仿真工程文件和源程序.下面是原理图:



源程序:
  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int

  4. sbit K1 = P3^7;
  5. uchar i,s=0,Key_Flag_Idx=0,shi=0,ge=0;
  6. bit Key_State;
  7. uchar DSY_CODE[]=
  8. {
  9.          0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f
  10. };

  11. void DelayMS(uint ms)
  12. {
  13.          uchar t;
  14.         while(ms--)
  15.         {
  16.                  for(t=0;t<120;t++);
  17.         }
  18. }
  19. void qidong()
  20. {
  21.   for(i=1;i<=10;i++)
  22.   {DelayMS(100);
  23.    if(Key_State != K1)
  24.     {
  25.           DelayMS(10);
  26.           Key_State = K1;
  27.           if(Key_State == 0)
  28.             {
  29.               Key_Flag_Idx=(Key_Flag_Idx+1)%3;
  30.                   return;
  31.                 }
  32.         }
  33.    }                  
  34.          ge=(ge+1)%10;
  35.          if(ge==0)shi=shi+1;
  36.          if(shi==6)shi=0;
  37.                  
  38. }

  39. void zhanting()
  40. {
  41.   while(Key_Flag_Idx==2)
  42.   {if(Key_State != K1)
  43.     {
  44.           DelayMS(10);
  45.           Key_State = K1;
  46.           if(Key_State == 0)
  47.             {
  48.               Key_Flag_Idx=(Key_Flag_Idx+1)%3;return;
  49.                 }
  50.     }
  51.    }
  52. }
  53. void main()
  54. {
  55.          P0 = 0x3f;
  56.         P2 = 0x3f;         
  57.         Key_State = 1;        //P3.7引脚的初始状态为1
  58.         
  59.         while(1)
  60.         {
  61.                  if(Key_State != K1)//若P3.7引脚值有变化,其中K1为P3.7引脚值
  62.                 {
  63.                          DelayMS(10);//消抖
  64.                         Key_State = K1;        //将当前P3.7值赋给Key_State变量
  65.                   if(Key_State == 0) //若当前P3.7值为0,即若有按键按下
  66.               {
  67.                     Key_Flag_Idx=(Key_Flag_Idx+1)%3; //按键按下次数为...
  68.                    }
  69.                  }
  70.                       switch(Key_Flag_Idx)
  71.                       {
  72.                              case 1:qidong();break;
  73.                             case 2:zhanting();break;
  74.                             case 0:shi=0;ge=0;
  75.                       }                     
  76.         
  77.             P0 = DSY_CODE[shi];
  78.                 P2 = DSY_CODE[ge];
  79.    }

  80.   }
复制代码

单片机秒表的所有资料打包下载: 秒表.7z (41.01 KB, 下载次数: 64)

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

使用道具 举报

沙发
ID:156203 发表于 2016-12-20 13:42 | 只看该作者
积分不够兄弟能发给我么
回复

使用道具 举报

板凳
ID:258481 发表于 2017-12-7 10:22 | 只看该作者
左边的那一位显示有问题是什么情况?就是不会显示完整的数字

(RAD(2T]I8@99FS}FW~V7$O.png (66.18 KB, 下载次数: 46)

(RAD(2T]I8@99FS}FW~V7$O.png
回复

使用道具 举报

地板
ID:264617 发表于 2017-12-21 09:03 | 只看该作者
wei960818 发表于 2016-12-20 13:42
**** 作者被禁止或删除 内容自动屏蔽 ****

我也很想要啊
回复

使用道具 举报

5#
ID:339213 发表于 2018-5-27 17:39 | 只看该作者
我的显示不出来怎么办
回复

使用道具 举报

6#
ID:1122315 发表于 2024-5-26 10:13 来自手机 | 只看该作者
用Proteus8.13打开dsn文件
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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