此程序基于普中51单片机编写
涉及到的原理图:

具体功能
下载程序后,数码管显示00,当第一次按下K3时,定时器开始计时,数码管最右侧两个位以间隔为1s的时间从00到60显示数字;当第二次按下K3时,定时器停止计时,数码管显示当前计时数字;第三次按下K3时,数码管恢复初始情况,显示00

/*********************************************************************************
实验现象:显示秒表功能,从00秒到60秒计时,在数码管中显示出来另外的实现功能,第一次按下K3按键开始计数,第2次按下K3键停止计数,第三次按下归零
********************************************************************************/
#include <reg51.h>             //此文件中定义了单片机的一些特殊功能寄存器
typedef unsigned int u16;     //对数据类型进行声明定义
typedef unsigned char u8;
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
sbit K3=P3^2;
u8 code table[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};     //显示0~F的值
u8 second;
u8 key=0;
/*****************************************************************************
* 函 数 名 : delay1ms
* 函数功能 : 延时函数,t=1 时,大约延时 1ms
*****************************************************************************/
void delay1ms(u16 t)
{u16 i,j;for(i=0;i<t;i++){for(j=0;j<120;j++);   }
}
/*******************************************************************************
* 函 数 名         : ExitInit
* 函数功能         : 初始化
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/
void ExitInit()
{TMOD =0X01;     //选择为定时器0模式,工作方式1,仅用TR1打开启动。ET0=1;     //打开定时器1中断允许EA=1;      //打开总中断second=0;TH0=0xFC;  //设定初值,1msTL0=0x18;P3=0xff;P0=0x00;
}
/*******************************************************************************
* 函 数 名       :Display
* 函数功能       : 数码管显示函数
* 输    入       : 无
* 输    出         : 无
*******************************************************************************/
void Display(u8 s)
{LSA=1;LSB=0;LSC=0;        P0=table[s/10];          //从右到左第二个数码管显示十位delay1ms(5);            //消抖5msP0=0x00;    LSA=0;LSB=0;LSC=0;P0=table[s%10];           //最右边数码管显示个位delay1ms(5);          //消抖5msP0=0x00;                      //消隐
}
/*******************************************************************************
* 函 数 名       :Keyscan
* 函数功能       : 按键扫描函数
* 输    入       : 无
* 输    出         : 无
*******************************************************************************/
void Keyscan()
{if(K3==0)                //判断K3键是否按下{ delay1ms(10);   //消抖10ms        if(K3==0)               //再次判断K3键是否按下{key++;                //计算按下按键的次数switch(key){case 1: TR0=1; break;      //按下第一次,开始计数case 2: TR0=0; break;                     //按下第二次,停止计数case 3: key=0; second=0;TR0=0;break; //按下第三次,数码管归零default: break;}}while(!K3);           //松手检测}
}
/*******************************************************************************
* 函 数 名       :Display
* 函数功能       : 数码管显示函数
*******************************************************************************/
void main()
{ExitInit();            //初始化函数while(1){Display(second);          //数码管显示函数Keyscan();          //按键扫描函数 }
}
/*******************************************************************************
* 函 数 名         : void Timer0() interrupt 3
* 函数功能         : 定时器1中断函数
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/
void Timer0() interrupt 1
{static u16 timer;TH0=0XFC;              //给定时器赋初值,定时1msTL0=0X18;timer++;if(timer==1000)      //判断是否达到1s{timer=0;          second++;         //计时达到1s就加1if(second==60)      //判断是否达到60ssecond=0;         }
}

(在草稿里待了两年。。。今天突然看到)

51单片机——秒表(定时器实现)相关推荐

  1. 秒表系统的设计c语言程序,51单片机秒表计时器课程设计报告(含C语言程序).doc...

    51单片机秒表计时器课程设计报告(含C语言程序) XXXXXX学院 51单片机系统设计 课程设计报告 题 目: 秒表系统设计 专业.班级: 学生姓名: 学 号: 指导教师: 分 数 : [摘要]本设计 ...

  2. 51单片机之定时器\计数器的工作原理

    51单片机之定时器\计数器的工作原理 定时器/计数器的结构: 何时处于计数器方式?何时处于定时器方式? TCON和TMOD特殊功能寄存器: 定时器/计数器工作方式: 方式0:13位的定时器/计数器 方 ...

  3. 【51单片机】定时器/计数器的工作原理和结构(一)

    [51单片机]定时器/计数器的工作原理和结构 回看下单片机中断系统内部结构: 分析内部中断触发: 先看图 TCON:和外部中断相比少了IT位设置触发方式 :1跳沿触发 0电平触发:此处我的理解是:就好 ...

  4. 51单片机计算定时器初值

    51单片机计算定时器初值 前言 理论分析 工作方式寄存器 TMOD GATE 门控位 C/T' 计数器模式和定时器模式选择位 M1 M0 工作方式选择位 定时器/计数器控制寄存器 TCON TCON补 ...

  5. 关于用51单片机内部定时器实现时钟和闹钟功能的概述

    关于用51单片机内部定时器实现时钟和闹钟功能的概述 仅个人观点,欢迎大家相互学习和讨论 STC89C52单片机,内部配置了三个定时器,T0\T1\T2,其中T2定时器我们几乎不用,或者说很少用到.我们 ...

  6. 51单片机用定时器0实现流水灯

    51单片机用定时器0实现流水灯的代码如下,用P1口接led灯,代码如下都有注释就不具体解释了,英语不怎么好,有的地方将就一下喽,本次主要讲一下P1口怎么赋值.原先写的都是用查表来移位的,个人感觉不怎么 ...

  7. 51单片机内部定时器/计数器实验

    51单片机内部定时器/计数器实验 一.实验内容 使用MCS-51内部定时/计数器,定时1秒钟,CPU运用定时中断方式,实现每1秒钟输出状态发生一次反转,即发光管每隔1秒钟亮一次(P1.7接LED). ...

  8. 51单片机:定时器实现1秒时数码管数字自动加一并循环

    51单片机:定时器实现1秒时数码管数字自动加一并循环 题目要求: 定时器中断实现每来1s,P1口接的一位共阳极数码管显示数+1, 加到9之后再来1s清零并重复上述过程 代码如下: (仅供参考) /* ...

  9. 51单片机学习--定时器--中断--串口通信

    51单片机学习–定时器–中断–串口通信 定时器–中断–串口通信 中断分类 定时器中断 外部中断 串口中断 基本概念 对于单片机来讲, 中断是指 CPU 在处理某一事件 A 时, 发生了另一事件 B, ...

  10. (六)51单片机基础——定时器

    定时器介绍:51单片机的定时器属于单片机的内部资源,其电路的连接和运转均在单片机内部完成. 定时器主要作用: 用于计时系统,可实现软件计时,或者使程序每隔一固定时间完成一项操作. 替代长时间的Dela ...

最新文章

  1. Linux(CentOS)目录操作命令、文件操作命令、压缩解压缩命令
  2. 最全综述 | 图像目标检测
  3. 剑指offer :从尾到头打印链表
  4. 搜索1008(二分)
  5. python 去除字符串两端字符串
  6. 不信任的 .exe 怎么办,用 Windows 沙盒啊!
  7. 回到顶部最简单的JQuery实现代码
  8. php new static,PHP面向对象中new self( )和 new static( ) 的区别
  9. [项目总结]在ios中使用soundtouch库实现变声
  10. Spring-data-jpa中用@ColumnTransformer注解加密,中文乱码问题(数据库正常,在java代码和页面中乱码)
  11. vue和react的区别是什么?
  12. 关于 asp.net 服务器控件几个 ID 的说明
  13. 神经网络一(Neural Network)
  14. 高级商务办公软件应用【14】
  15. 认识计算机听课记录20篇,【中学信息技术听课记录】 信息技术听课记录15篇及评析_初中信息技术听课记录_高中信息技术听课记录20篇_东城教研...
  16. 【Python】实现B站MP4格式音频与视频合并,ffmpeg一个命令即可
  17. 计算机键盘上的句号键在哪,电脑键盘句号是哪个键
  18. Glide 源码解析之监听生命周期
  19. 终于有人把 p 值讲明白了!
  20. 页面布局整理汇总,让你彻底搞明白多种布局的关系

热门文章

  1. java 神剑_java语音短信的实现
  2. 写在2014年7月2日
  3. SuperEmper技术支持
  4. 【机器学习系列】概率图模型第三讲:深入浅出无向图中的条件独立性和因子分解
  5. 北京神州泰岳软件股份有限公司java笔试题
  6. 搭建私有云的5大主流方案
  7. 秒杀微服务实现抢购代金券功能
  8. 查看云服务器系统的命令,查看云服务器系统的命令行
  9. Piggy Back_KEY
  10. 工欲善其事必先利其器之番茄土豆