51单片机应用开发(进阶)---定时器应用(电子秒表)

实现目标

1、巩固定时器的配置流程;

2、掌握按键、数码管与定时器配合使用;

3、秒表具体实现:(1)按K1开始计时,再按K1暂停计时.......;(2)按K2计时清零;(3)数码管显示四位数字(前两位秒,后两位10ms+1)。


一、秒表

电子秒表(Cronometro)是一种较先进的电子计时器,具有高精度、多功能和易操作等特点。以下是关于电子秒表的详细介绍:

1.1、基本功能与特点

  1. 显示功能:电子秒表不仅能显示分、秒,还能显示时、日、月及星期,部分型号甚至能精确到小数点后两位。
  2. 计时功能:一般的电子秒表连续累计时间为59min 59.99s,可读到1/100s,平均日差±0.5s。它配有三个按钮,通常包括秒表按钮、功能变换按钮和调整按钮,用户可以通过这些按钮轻松实现计时、停止、复零等功能。
  3. 双计时功能:部分电子秒表还具备双计时功能,适用于需要同时记录两个不同时间点的场景。

1.2、工作原理

电子秒表通过利用电子元件(如振荡器、定时器、计数器和显示器等)来实现时间的准确测量。

  1. 振荡器:产生稳定的时间基准信号,通常为1赫兹(即每秒钟产生一个周期)。
  2. 定时器与计数器:定时器设置一个初始值后开始计时,同时计数器开始累加时间基准信号的周期数。
  3. 计算与显示:当定时器达到设置的目标值时,发送触发信号停止计时器,并记录下计数器的值。最后,通过显示器以数字形式显示时间测量结果。

1.3、使用方法

电子秒表的使用方法通常包括以下几个步骤:

  1. 开始计时:按下秒表按钮(通常是右侧按钮)开始自动计秒。
  2. 停止计时:再次按下秒表按钮停止计秒,此时显示器上会显示所计的数据。
  3. 复零:按住某个按钮(通常是左侧按钮)两秒钟左右,秒表会自动复零,恢复到初始状态。
  4. 功能变换与调整:通过功能变换按钮和调整按钮,用户可以在不同的显示模式之间进行切换,并对时间、日期等进行校正与调整。

1.4、应用领域

由于电子秒表具有精确度高、操作简便等优点,它被广泛应用于各种领域:

  1. 体育比赛:用于记录运动员的比赛成绩。
  2. 实验研究:在科学实验和研究中,用于精确测量时间间隔。
  3. 日常生活:如烹饪、健身、学习等场景中,帮助人们更好地管理时间。

二、原理图设计

 

三、程序设计

#include <REGX52.H>//定义数码管位选信号控制脚
sbit LSA = P2^2;
sbit LSB = P2^3;
sbit LSC = P2^4;sbit K1 = P3^1;//按键K1
sbit K2 = P3^0;//按键K2char  num = 0;//计数值 
char  S   = 0; //秒计数//共阴极数码管显示0~F - 的段码数据
unsigned char gsmg_code[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x40};void delay_10us(int ten_us)
{while(ten_us--);	
}unsigned int g_Count;  //全局变量默认初始化为0void Timer0_Init(void)
{TMOD = 0x01; //设置定时器0 工作模式1    0000  0001TR0 = 0;     //先关闭定时器0TH0 = (65536-1000)/256;  //设置定时初值,高8位TL0 = (65536-1000)%256;  //设置定时初值,低8位ET0 = 1;  //开启定时器0 中断EA  = 1;  //开启总中断
}void main(void)
{Timer0_Init();  //定时器0初始化while(1){LSC=1;LSB=1;LSA=1;P0 = gsmg_code[S/10];delay_10us(5);P0 = 0x00;//消影LSC=1;LSB=1;LSA=0;P0 = gsmg_code[S%10];		delay_10us(5);P0 = 0x00;//消影LSC=1;LSB=0;LSA=1;P0 = gsmg_code[16];delay_10us(5);P0 = 0x00;//消影LSC=1;LSB=0;LSA=0;P0 = gsmg_code[num/10];		delay_10us(5);P0 = 0x00;//消影	LSC=0;LSB=1;LSA=1;P0 = gsmg_code[num%10];delay_10us(5);P0 = 0x00;//消影if(K1 == 0)//如果按键K1按下{while(!K1);//松手检测TR0 = !TR0;}if(K2 == 0)//如果按键K2按下{while(!K2);//松手检测num = 0;S = 0;}	}
}void Timer0_Rountine(void) interrupt 1  //1ms进一次中断
{TH0 = (65536-1000)/256;  //TL0 = (65536-1000)%256;  //重新赋初值才能保证下一次还是1msg_Count++;if(g_Count>=10)  // 10ms 计时{g_Count = 0;   //计数清零num++;if(num > 99)//1s{num = 0;S++;if(S > 99)//99s{S = 0;}}	}
}

四、实验效果

五、仿真实现


总结

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/59074.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

吴恩达深度学习笔记(11)13.

人脸检校&#xff1a;输入某人的照片以及姓名或ID&#xff0c;判断是不是他所说的那个人 人脸识别&#xff1a; 单样本学习&#xff1a; 大多数人脸识别的问题需要在样本中只有一张照片的情况下认出一个人。 相似性函数&#xff1a;利用神经网络训练一个函数&#xff0c;可…

链表详解(三)

目录 链表功能实现链表的查找SLNode* SLFind(SLNode* phead, SLNDataType x)代码 链表任意位置前插入void SLInsert(SLNode**pphead&#xff0c;SLNode* pos, SLNDataType x)代码 链表任意位置前删除void SLErase(SLNode**pphead&#xff0c;SLNode* pos)代码 链表任意位置后插…

《C#语法一篇通》,20万字,48小时阅读,持续完善中。。。

本文摘录了C#语法的主要内容&#xff0c;接近20万字。 所有鸡汤的味道都等于马尿&#xff01; 如果你相信任何所谓的鸡汤文章&#xff0c;智商堪忧。 计算机语言没有”好不好“之说&#xff0c;骗子才会告诉你哪个语言好&#xff0c;学好任何一本基础语言&#xff08;C&#…

HarmonyOS开发 - 餐饮APP中多门店多窗口打开实例补充

specified启动模式为指定实例模式&#xff0c;有一些特殊场景&#xff0c;例如多门店应用中每次打开一个门店都希望能新建一个门店实例&#xff0c;而重复打开同一个门店都是同一门店实例。 此篇为餐饮APP中多门店实例的补充内容&#xff0c;以解决同一门店多次点击重复创建新窗…

【Redis问题】(error) NOAUTH Authentication required.解决方法

问题描述&#xff1a; “(error) NOAUTH Authentication required”&#xff0c;通过ping方法和redis打招呼发现不成功&#xff0c;意思是没有这个权限&#xff08;也就是没有密码&#xff09; 问题解决1&#xff1a; 在命令后面加上密码&#xff08;一般情况下&#xff0c;在…

关于自动化测试用例失败重试的一些思考

自动化测试用例失败重跑有助于提高自动化用例的稳定性&#xff0c;那我们来看一下&#xff0c;python和java生态里都有哪些具体做法&#xff1f; 怎么做 如果是在python生态里&#xff0c;用pytest做测试驱动&#xff0c;那么可以通过pytest的插件pytest-rerunfailures来实现…

Vue Router进阶详解

导航守卫 若依框架登录鉴权详解&#xff08;动态路由&#xff09;_若依鉴权-CSDN博客 完整的导航解析流程 导航被触发&#xff1a; 当用户点击页面中的链接、使用编程式导航&#xff08;如router.push或router.replace&#xff09;或手动输入URL时&#xff0c;导航流程被触发。…

Rust 力扣 - 1984. 学生分数的最小差值

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 原数组 nums 排序&#xff0c;遍历nums中下标为[0, nums.len() - k]的学生分数 假设当前遍历的下标为i则&#xff0c;以 i 下标为最小值的学生分数的最小差值为nums[i k - 1] - nums[i] 取最小差值的最小值即…

distrobox install in ubuntu 22.04 / 在 ubuntu 22.04 上安装 distrobox (***) OK

要点&#xff1a; 本测试实验&#xff0c;采用的是 podman distrobox 在沙盒 snap 中&#xff0c;安装 distrobox 需要使用 --devmode 开发模式&#xff1b;可以避开 distrobox 的版本检查&#xff1f; distrobox 官方文档显示&#xff0c; Installation https://distrobox.i…

IA应用加速,让电子供应链更智能高效

在当今数字化浪潮中&#xff0c;电子产品制造行业正经历着前所未有的变革。越来越多的企业开展全球化业务&#xff0c;进行数字化转型&#xff0c;对于网络时延的需求也更高。 客户背景 客户专注于为中小微电子产品制造企业提供产品技术方案开发、电子元器件采购、PCBA生产制造…

git 删除远程不存在本地命令却能看到的分支

要删除远程不存在但本地却能看到的分支&#xff0c;你可以按照以下步骤操作&#xff1a; 删除本地分支&#xff1a; 如果你确定要删除的分支已经没有用处&#xff0c;可以使用以下命令来删除本地分支&#xff1a; git branch -d <branch-name>这里的 <branch-name>…

从模糊搜索到语义搜索的进化之路——探索 Chroma 在大模型中的应用价值

目录 从模糊搜索到语义搜索的进化之路——探索 Chroma 在大模型中的应用价值 一、引言 二、实现语义搜索的数据库 Chroma 1、语义搜索是什么 2、Chroma 语义搜索的原理 三、如何在项目中应用 Chroma 1、Chroma 的实际应用场景 2、安装Chroma&#xff08;python环境&…

iOS灵动岛动画小组件怎么播放动画

这个灵动岛相关的展示位置分几个地方&#xff1a; 紧凑型&#xff0c;最小化&#xff0c;扩展型&#xff0c;还有锁屏位置 我们先来看一下我这边实现的动画效果 demo下载&#xff1a; iOS灵动岛GIF动画 灵动岛样式 灵动岛有三种渲染模式&#xff1a; 第一种是 紧凑型&…

网络信息系统的整个生命周期

网络信息系统规划 此阶段主要是根据企业的业务需求、技术发展趋势以及市场环境等因素&#xff0c;对网络信息系统进行初步的规划和设计。规划的内容可能包括系统的目标、功能、性能、安全性等方面的要求。 规划阶段还需要进行可行性研究&#xff0c;评估项目在技术、经济、社…

力扣排序268题 数字丢失

题目&#xff1a; 丢失的数字 给定一个包含[0,n]中n各数的数组nums&#xff0c;找出[0,n]这个范围 内没有出现在数组中的那个数。 示例1&#xff1a; 输出&#xff1a;n 3,因为有3个数字&#xff0c;所以所有的数字都在范围 [0,3]内。2是丢失的数字&#xff0c;因为它没有出现…

原生鸿蒙应用市场:开发者的新机遇与深度探索

文章目录 自动化检测前移&#xff1a;提升开发效率与质量的新利器数据服务&#xff1a;数据驱动的精细化运营助手测试服务&#xff1a;保障应用质量的关键环节应用加密&#xff1a;保护应用安全与权益的利器从开发到运营的全方位支持写在最后 2024年10月22日&#xff0c;华为在…

【建造&机械】垃圾车检测系统源码&数据集全套:改进yolo11-SPPF-LSKA

改进yolo11-swintransformer等200全套创新点大全&#xff1a;垃圾车检测系统源码&#xff06;数据集全套 1.图片效果展示 项目来源 人工智能促进会 2024.10.30 注意&#xff1a;由于项目一直在更新迭代&#xff0c;上面“1.图片效果展示”和“2.视频效果展示”展示的系统图片…

全差分运放电路分析

可以看到&#xff0c;该运放有正负两个反馈。首先需要申明的是&#xff1a;全差动运算放大器仍然满足虚短虚断的特性。 从上图中可以看到&#xff0c;运放的正输入端有一个Vin信号&#xff0c;负输入端没有接输入信号&#xff1b;这是一种典型的将单端输入型号转化成差分信号的…

Win/Linux/Kylin 系统安装指定版本 jdk(8u171为例)

现在安装一个jdk环境&#xff0c; 应该也不是什么麻烦事&#xff0c;教程满天飞&#xff0c;但如果你需要安装指定版本的jdk&#xff0c;那文章还是有点乱&#xff0c;给的下载地址也不太对&#xff0c;不太好找&#xff0c;有的版本还要花钱买积分.......比较靠谱还是官网&…

Java 正则基础

本文里简单的记录了一下Java正则的内容&#xff0c;因为之前学了python版的&#xff0c;所以零基础的可以去看一下视频&#xff1a;正则专题。而且没有列出正则里的其他方法&#xff0c;需要的可以百度一下 快速入门 class RegExp {public static void main(String[] args) {…