蓝桥杯之单片机学习(九)——定时器的进阶综合案例解析

简介: 蓝桥杯之单片机学习(九)——定时器的进阶综合案例解析

一、训练任务


在CT107D单片机综合训练平台上,利用定时器T0、数码管模块和2个独立按键(J5的2-3短接),设计一个秒表,有清零、暂停、启动功能


1.显示格式为

分-秒-0.05秒(即50ms)

08-26-18表示:8分26秒900毫秒

2.独立按键S4为:暂停/启动

独立按键S5为:清零

按键均为按下有效


二、训练重点


1.定时器的精确定时应用

2.定时器的多时段计时应用

3.定时器、显示模块、独立按键多模块综合应用程序设计的思路与编码


三、代码展示


#include <reg52.h>
sbit S4 = P3^3;
sbit S5 = P3^2;
typedef unsigned int uint;
typedef unsigned char uchar;
uchar code SMG_duanma[18] = 
  {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
  0x88,0x80,0xc6,0xc0,0x86,0x8e,
  0xbf,0x7f};//分别是0-9(对应下标),A-F,“-”,“.”
uchar t_m = 0;
uchar t_s = 0;
uchar t_005s = 0;
//配置HC138
void SelectHC138(uchar channel)
{
  switch(channel)
  {
  case 4:
    P2 = (P2 & 0X1F) | 0X80;
  break;
  case 5:
    P2 = (P2 & 0X1F) | 0Xa0;
  break;
  case 6:
    P2 = (P2 & 0X1F) | 0Xc0;
  break;
  case 7:
    P2 = (P2 & 0X1F) | 0Xe0;
  break;
  }
}
//在pos位码上,显示value段码
void DisplaySMG_Bit(uchar pos, uchar value)
{
  SelectHC138(6);
  P0 = 0X01 << pos;
  SelectHC138(7);
  P0 = value;
}
void DelaySMG(uint t)
{
  while(t--);
}
//数码管显示
void DisplayTime()
{
  DisplaySMG_Bit(7,SMG_duanma[t_005s%10]);
  DelaySMG(500);
  DisplaySMG_Bit(6,SMG_duanma[t_005s/10]);
  DelaySMG(500);
  DisplaySMG_Bit(5,SMG_duanma[16]);
  DelaySMG(500);
  DisplaySMG_Bit(4,SMG_duanma[t_s%10]);
  DelaySMG(500);
  DisplaySMG_Bit(3,SMG_duanma[t_s/10]);
  DelaySMG(500);
  DisplaySMG_Bit(2,SMG_duanma[16]);
  DelaySMG(500);
  DisplaySMG_Bit(1,SMG_duanma[t_m%10]);
  DelaySMG(500);
  DisplaySMG_Bit(0,SMG_duanma[t_m/10]);
  DelaySMG(500);
}
//********定时器相关函数*********
void InitTimer0()
{
  TMOD = 0x01;
  TH0 = (65535 - 50000) / 256;
  TL0 = (65535 - 50000) % 256;
  ET0 = 1;
  EA = 1;
  TR0 = 1;
}
void ServiceTimer0() interrupt 1
{
  TH0 = (65535 - 50000) / 256;
  TL0 = (65535 - 50000) % 256;
  t_005s++;
  if(t_005s == 20)
  {
  t_s++;
  t_005s = 0;
  if(t_s == 60)
  {
    t_m++;
    t_s = 0;
  }
  if(t_m == 99)
  {
    t_m = 0;
  }
  }
}
//*******************************
//按键去抖延时(uchar就够用)
void DelayK(uchar t)
{
  while(t--);
}
//按键扫描函数
void ScanKeys()
{
  if(S4 == 0)  //秒表启动/暂停
  {
  DelayK(100);
  if(S4 == 0)
  {
    TR0 = ~TR0;
    while(S4 == 0)
    {
    DisplayTime();
    }
  }
  }
  if(S5 == 0)  //秒表清零
  {
  DelayK(100);
  if(S5 == 0)
  {
    t_m = 0;
    t_s = 0;
    t_005s = 0;
    while(S5 == 0)
    {
    DisplayTime();
    }
  }
  }
}
//初始化系统
void Initsys()
{
  SelectHC138(5);
  P0 = 0X00;//关闭蜂鸣器和继电器
  SelectHC138(4);
  P0 = 0XFF;//关闭LED
}
void main()
{
  InitTimer0();
  Initsys();
  while(1)
  {
  DisplayTime();
  ScanKeys();
  }
}


四、一些建议


如果自己的变量很多,可以写在一张纸上

可以画流程图

函数取名

全局变量与局部变量

这个题目多练几遍

相关文章
|
8月前
|
域名解析 存储 缓存
深入学习 DNS 域名解析
在平时工作中相信大家都离不开 DNS 解析,因为 DNS 解析是互联网访问的第一步,无论是使用笔记本浏览器访问网络还是打开手机APP的时候,访问网络资源的第一步必然要经过DNS解析流程。
|
8月前
|
开发框架 .NET 中间件
.net8 使用 license 证书授权案例解析
本文介绍了如何使用 `.NET CLI` 创建并改造一个 `ASP.NET Core Web API` 项目,以实现基于许可证的授权机制。具体步骤包括创建项目、添加必要的 NuGet 包(如 `Standard.Licensing` 和 `Swashbuckle.AspNetCore`),以及修改 `Program.cs` 文件以集成自定义的许可证验证中间件。项目结构中新增了 `LicenseController` 接口用于处理授权相关操作,并通过测试流程验证了默认天气接口在未授权和授权状态下的响应情况。整个过程确保了应用程序能够在启动时正确验证许可证,保障系统的安全性与可控性。
409 8
.net8 使用 license 证书授权案例解析
|
11月前
|
NoSQL Java Linux
《docker高级篇(大厂进阶):2.DockerFile解析》包括:是什么、DockerFile构建过程解析、DockerFile常用保留字指令、案例、小总结
《docker高级篇(大厂进阶):2.DockerFile解析》包括:是什么、DockerFile构建过程解析、DockerFile常用保留字指令、案例、小总结
499 76
|
8月前
|
机器学习/深度学习 人工智能 搜索推荐
技术革新下的培训新趋势:案例解析
从最初的“试试看”,到如今的“非做不可”,企业培训已经成为央国企和上市公司不可或缺的战略环节。无论是AI与大模型的赋能,DeepSeek,还是具身智能、智算技术和数据科学的实战应用,这些课程都在为企业打开新的可能性。
|
11月前
|
存储 设计模式 算法
【23种设计模式·全精解析 | 行为型模式篇】11种行为型模式的结构概述、案例实现、优缺点、扩展对比、使用场景、源码解析
行为型模式用于描述程序在运行时复杂的流程控制,即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,它涉及算法与对象间职责的分配。行为型模式分为类行为模式和对象行为模式,前者采用继承机制来在类间分派行为,后者采用组合或聚合在对象间分配行为。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象行为模式比类行为模式具有更大的灵活性。 行为型模式分为: • 模板方法模式 • 策略模式 • 命令模式 • 职责链模式 • 状态模式 • 观察者模式 • 中介者模式 • 迭代器模式 • 访问者模式 • 备忘录模式 • 解释器模式
【23种设计模式·全精解析 | 行为型模式篇】11种行为型模式的结构概述、案例实现、优缺点、扩展对比、使用场景、源码解析
|
11月前
|
存储 监控 调度
云服务器成本优化深度解析与实战案例
本文深入探讨了云服务器成本优化的策略与实践,涵盖基本原则、具体策略及案例分析。基本原则包括以实际需求为导向、动态调整资源、成本控制为核心。具体策略涉及选择合适计费模式、优化资源配置、存储与网络配置、实施资源监控与审计、应用性能优化、利用优惠政策及考虑多云策略。文章还通过电商、制造企业和初创团队的实际案例,展示了云服务器成本优化的有效性,最后展望了未来的发展趋势,包括智能化优化、多云管理和绿色节能。
|
JSON JavaScript 前端开发
蓝桥杯web组赛题解析和杯赛技巧
本文作者是一位自学前端两年半的大一学生,在第十五届蓝桥杯Web组比赛中获得省一和国三。文章详细解析了比赛题纲,涵盖HTML、CSS、JavaScript、Echarts和Vue等技术要点,并分享了备赛技巧和比赛经验。作者强调了多写代码和解题思路的重要性,同时提供了省赛和国赛的具体流程及注意事项。希望对参赛者有所帮助。
1030 11
|
存储 人工智能 自然语言处理
高效档案管理案例介绍:文档内容批量结构化解决方案解析
档案文件内容丰富多样,传统人工管理耗时低效。思通数科AI平台通过自动布局分析、段落与标题检测、表格结构识别、嵌套内容还原及元数据生成等功能,实现档案的高精度分块处理和结构化存储,大幅提升管理和检索效率。某历史档案馆通过该平台完成了500万页档案的数字化,信息检索效率提升60%。
416 5
|
人工智能 算法 Java
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1005 数字游戏
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1005 数字游戏
214 0
|
Java C语言 C++
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1000 kAc给糖果你吃
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1000 kAc给糖果你吃
187 0

推荐镜像

更多
  • DNS