计时表量程:00:00:00--59:59:99(min:s:10ms)

可存储和回查5组数据。

代码:

#include<reg52.h>
#include<string.h>
/***********************定义管脚**********************/
#define seg P0
#define bitt P2typedef unsigned char u8;
typedef unsigned int u16;sbit start = P3^1;
sbit store = P3^0;
sbit playback = P3^2;
sbit reset = P3^3;
sbit beep = P1^5;/***********************定义变量**********************/
u8 code display_bit[]={0x00,0x04,0x08,0x0c,0x10,0x14,0x18,0x1c};
u8 code display_seg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00,0x40};
u8 time_store[5][3] = {0};
u8 i,j,k,flag;                                                     //*******全局变量*********//
u8 n_10ms;
u8 n_s;
u8 n_min;/***********************延时函数**********************/
void delay(u8 ms)
{u16 x,y;for(x=ms;x>0;x--)for(y=110;y>0;y--);
}/**********************嗡鸣器函数*********************/
void beep_vibrate()
{beep = ~beep;delay(1); beep = ~beep;delay(1);
}/*********************数码管显示**********************/
void led_display(u8 num_seg,u8 num_bit)
{   bitt = display_bit[num_bit];seg = display_seg[num_seg];
}/****************选择时间显示位置*********************/
void time_display(u8 time_bit, u8 time_num)
{u8 x,y,s;s = 1;x = time_num/10;                                //分离十位y = time_num%10;                                //分离个位if(time_bit == 1){led_display(y,0);delay(s);led_display(x,1);delay(s);      }else if(time_bit == 2){led_display(y,3);delay(s);    led_display(x,4);delay(s);    }else if(time_bit == 3){led_display(y,6);delay(s);led_display(x,7);delay(s);}else{led_display(17,2);delay(s);led_display(17,5);delay(s);}
}/********************不断刷新三组数字****************/
void reflash()
{time_display(1,n_10ms);time_display(2,n_s);time_display(3,n_min);time_display(4,0);
}/**********************定时器T0预设******************/
void  Init_timer0()
{IE = 0X82;                                     //中断允许TMOD = 0x01;TH0 = 0x0D8;TL0 = 0x0F0;
}/************************开始函数*********************/
void start_k1()
{if(start == 0){delay(5);if(start == 0){flag = ~flag;}while(!start);}
}/************************存储函数*********************/
void store_k2()
{if(store == 0){delay(5);if(store == 0){if(i < 5){time_store[i][0] = n_10ms;time_store[i][1] = n_s;time_store[i][2] = n_min;i++;}while(!store);}}
}/************************回显函数*********************/
void playback_k3()
{if(playback == 0){delay(5);if(playback == 0){if(i >= 0){i = i>4?4:i;n_10ms = time_store[i][0];n_s = time_store[i][1];n_min = time_store[i][2];i--;}while(!playback);}}
}/************************清0函数*********************/
void reset_k4()
{if(reset == 0){delay(5);if(reset == 0){TR0 = 0;Init_timer0();flag = 0;i = 0;memset(time_store,0,sizeof(time_store));//将time_store[][]二维数组的元素全部设为0n_10ms = 0;n_s = 0;n_min = 0;while(!reset);}}
}/************************主函数**********************/
void main()
{seg = 0x00;Init_timer0();n_10ms = 0;                                       //10毫秒n_s = 0;                                      //秒n_min = 0;                                       //分钟beep = 1;                                       //嗡鸣器初始化flag = 0;                                       //flag=1时,定时器打开i = 0;                                        while(1)                                        //大循环{start_k1();                                   //开始if(flag){TR0 = 1;                               //打开定时器store_k2();                              //存储    }else{TR0 = 0;                              //关闭定时器playback_k3();                           //回显}                                           reset_k4();                                 //清0reflash();                                  //刷新一次}
}/*******************定时器服务函数*******************/
void timer0_service() interrupt 1
{TH0 = 0x0D8;TL0 = 0x0F0;if(n_10ms < 99){n_10ms++;}else{n_10ms = 0;if(n_s < 59){n_s++;    }else{n_s = 0;if(n_min < 59){n_min++;}else{reset_k4();   }   }}
}

仿真图 

51单片机DIY

51单片机DIY_秒表计时器相关推荐

  1. 51单片机 简易秒表计时器(100秒) 小数点后四位

    51单片机制作简易秒表,精确到小数点后四位(即0.0001s)的制作,使用到单片机定时器部分,数码管部分. 程序上分为: 1.延时函数 用来延时让数码管动态显示 2.定时器/计数器初始化函数 3.显示 ...

  2. 59s计时器C语言程序步骤详解,51单片机00-59秒计时器 0-59s Timer

    51单片机00-59秒计时器 0-59s Timer 1.  实验任务 如下图所示,在AT89S51单片机的P0和P2端口分别接有两个共阴数码管,P0口驱动显示秒时间的十位,而P2口驱动显示秒时间的个 ...

  3. 单片机秒表c语言,单片机制作秒表计时器(c语言)

    利用计数器中断,外部中断(按钮)编写的机遇c语言的秒表计时器 利用单片机制作秒表计时器 (c语言) #include//包含单片机对应的头文件 int MM=0,SS=0,MS=0; int time ...

  4. 51单片机中断与计时器

    文章目录 1.配置下图中各寄存器 1. 定时器/计数器控制寄存器TCON 2.定时器.计数器模式控制寄存器TMOD 3.TH0及TL0 2.中断设置 二.中断程序 51单片机中断与计时器 # 一.定时 ...

  5. c51单片机秒表程序c语言,利用51单片机制作秒表的详细过程

    前面的话: 和很多朋友一样,在学51单片机的过程中我们肯定会涉及到制作一个秒表,牵涉到把单片机的多个部分组合起来使用,这对于我们初学者来说可能显得有些困难,我同大家一样,百思不得其解,最后头都弄大了才 ...

  6. 基于51单片机实现秒表_☆往事随風☆的博客

    基于51单片机实现秒表 前言 一.实现功能 二.关键程序 (1)key函数 (2)display函数 (3)中断函数 三.完整程序 四.仿真 五.效果展示 六.项目地址 前言 基于51单片机实现一个共 ...

  7. 基于51单片机的秒表系统设计(源代码+Proteus仿真图)

    目录 总体设计 晶体震荡电路 复位电路 按键控制电路 LCD1602显示电路 蜂鸣器电路 Proteus仿真图调试结果 源代码: Proteus仿真提取链接 总体设计 本设计是采用AT89C51单片机 ...

  8. 基于单片机的秒表计时器系统设计(#0400)

    当今社会在很多比赛中,都要用到时间的长短来衡量比赛的结果.本设计是一个利用单片机控制的多功能秒表系统. 功能描述 1.采用51单片机作为控制芯片: 2.数码管前两位显示分钟,后两位显示秒: 2.正计时 ...

  9. 基于51单片机的倒计时器秒表定时器数码管显示原理图方案设计

    系统的功能分析 (末尾附文件) 框架图: 原理图: 声光报警电路(低电平有效)设计 有源蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机.打印机.复印机.报警器.电子玩具.汽车电 ...

最新文章

  1. Spring4+quartz2集群借助邮箱或是短信实现生日的农历提醒(Quartz实现农历、阴历、公历生日提醒)...
  2. Windows 技术篇-利用telnet方法ping端口通不通实例演示,如何测试服务器端口是否启用,windows启用telnet功能
  3. sqlite4java下载_使用sqlite4java的UnsatisfiedLinkError,没有sqlite4java-osx-amd64
  4. C#坏习惯:通过不好的例子学习如何制作好的代码——第5部分
  5. windows Azure平台开发
  6. 顾樵数学物理方法_圣彼得堡国立大学硕士研究生:物理与天文学
  7. NSSA区域和Totally NSSA区域
  8. error: Exited sync due to fetch errors
  9. 愚人节,这样的微信公众号图文排版方式你见过吗?
  10. oracle dba培训教程 第九章 创建数据库
  11. 机器学习笔记——从手写数字识别开始
  12. 当乐app官方下载android,当乐下载安卓最新版_手机官方版免费安装下载_豌豆荚
  13. c basic library framework - simplec 2.0.0
  14. 洛谷P1135:奇怪的电梯(lift)
  15. java API学习记录
  16. SMETA验厂咨询,SMETA参考实践指南BPG(本文件)的制作旨在提供一份一致的全球审核程序
  17. 解决Android10和Android11创建文件失败问题
  18. 低频工业读写器|读卡器|阅读器CK-LR03-A01与FX1N三菱PLC联机应用手册
  19. Java中的CAS操作
  20. java web毕业答辩_基于JAVA的WEB页面设计毕业答辩.ppt

热门文章

  1. 一文说尽NB—IOT和Lora
  2. 数据库之MySQL基本操作命令
  3. Python之ARP协议探测MAC地址
  4. 人工智人工智能让我们害怕什么?能让我们害怕什么?
  5. iOS手机摄像头测心率
  6. 任务调度系统就该这么设计(万能通用),稳的一批!
  7. 微信公众号01: ase实现access_token的存储和被动刷新
  8. Cairo-基本概念
  9. python控制ppt翻页_python 操作ppt
  10. 安装爱剪辑计算机丢失,windows10系统下安装“爱剪辑”软件的方法