蓝桥杯单片机 | 特训案例【进阶02】长按与短按控制数码管显示

本文主要是介绍蓝桥杯单片机 | 特训案例【进阶02】长按与短按控制数码管显示,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【1】题目要求

新建工程,以I/O模式编写代码,在CT107D单片机综合训练平台上,实现以下功能:

1、系统上电后,关闭蜂鸣器和继电器,关闭全部指示灯,数码管最右边两位显示计数初始值28,其余数码管关闭。

2、利用定时器0实现10ms的间隔定时,将其作为长定时的基本单位,用于记录按键按下的持续时间。

3、将J5的23脚短接,把S4设置为独立按键

4、循环扫描S4按键,按下时间小于1秒短按,数码管上的数字加1,超过最大值99后恢复00,继续计数;S4按键按下的时间大于1秒长按,数码管上的计数清除为00。 

5、在按键扫描和处理的过程中,不能干扰数码管正常显示,避免出现按键误触发和一次按键多次处理的情况。

【小提示】:按键的长按与短按实现原理,可见本博客:《【CC2530强化实训01】普通延时函数实现按键的长按与短按》

【2】核心源码

/*==================蓝桥杯单片机特训==================
【进阶02】:长按与短按控制数码管显示
**平  台:CT107D单片机综合实训平台
**模  式:IO模式
**设  计:欧浩源(小蜜蜂老师,ohy3686@qq.com)
**时  间:2022-03-31
**更多详见:www.xmf393.com
====================================================*/
#include "reg52.h"sbit S4 = P3^3;//定义动态显示中单个数码管点亮时长
#define TSMG	500
//-------共阳数码管的段码编码表(无小数点)--------
//0 1 2 3 4 5 6 7 8 9 A b C D E F - .
unsigned char code SMG_NoDot[18]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xc0,0x86,0x8e,0xbf,0x7f};unsigned char num = 28;					//定义计数变量
bit F_key = 0;    						//按键按下标志
unsigned int count_t = 0;				//10ms单位累计
void Display_Num();						//声明数码管显示函数		
/*====锁存器设置和数码管显示的代码参考前面的案例====*/
//===================定时器T0初始化===================
void Init_Timer0()
{//定时器计数初值设置TH0 = (0 - 10000) / 256;TL0 = (0 - 10000) % 256;TMOD = 0x01;                //模式1:16位非重装模式ET0 = 1;					//使能定时器0中断EA = 1;						//打开总中断TR0 = 1;					//启动定时器0
}
//===============定时器T0的中断服务函数================
void Service_Timer0() interrupt 1
{TH0 = (0 - 10000) / 256;TL0 = (0 - 10000) % 256;if(F_key == 1)				//在按键按下期间进行计数{count_t++;				//按键按下的持续时间}
}
//==================按键扫描处理函数===================
void Scan_Keys()
{if(S4 == 0){DelaySMG(1000);			//去抖动处理if(S4 == 0)				//确认为按下信号{count_t = 0;		//时间计数变量清0F_key = 1;			//标志按键按下状态while(S4 == 0)		//等待按键松开{Display_Num();	//在按下期间保持数码管正常显示}F_key = 0;			//标志按键松开状态if(count_t > 50)	//按下时间大于1秒,长按{num = 0;		//数码管计数清除为00}else				//按下时间小于1秒,短按{num++;			//数码管计数加1if(num == 100){num = 0;	//计数超出最大值99后恢复00}}}}
}

【注】:更多关于蓝桥杯单片机备赛内容,详见《蓝桥杯单片机设计与开发》小蜜蜂特训手册,本站可下载,相关更多蓝桥杯的案例完整源码及学习备赛笔记,欢迎进入“小蜜蜂笔记”公众号。

这篇关于蓝桥杯单片机 | 特训案例【进阶02】长按与短按控制数码管显示的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/574055

相关文章

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

Java进阶13讲__第12讲_1/2

多线程、线程池 1.  线程概念 1.1  什么是线程 1.2  线程的好处 2.   创建线程的三种方式 注意事项 2.1  继承Thread类 2.1.1 认识  2.1.2  编码实现  package cn.hdc.oop10.Thread;import org.slf4j.Logger;import org.slf4j.LoggerFactory

第10章 中断和动态时钟显示

第10章 中断和动态时钟显示 从本章开始,按照书籍的划分,第10章开始就进入保护模式(Protected Mode)部分了,感觉从这里开始难度突然就增加了。 书中介绍了为什么有中断(Interrupt)的设计,中断的几种方式:外部硬件中断、内部中断和软中断。通过中断做了一个会走的时钟和屏幕上输入字符的程序。 我自己理解中断的一些作用: 为了更好的利用处理器的性能。协同快速和慢速设备一起工作

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

安卓链接正常显示,ios#符被转义%23导致链接访问404

原因分析: url中含有特殊字符 中文未编码 都有可能导致URL转换失败,所以需要对url编码处理  如下: guard let allowUrl = webUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {return} 后面发现当url中有#号时,会被误伤转义为%23,导致链接无法访问

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

【区块链 + 人才服务】可信教育区块链治理系统 | FISCO BCOS应用案例

伴随着区块链技术的不断完善,其在教育信息化中的应用也在持续发展。利用区块链数据共识、不可篡改的特性, 将与教育相关的数据要素在区块链上进行存证确权,在确保数据可信的前提下,促进教育的公平、透明、开放,为教育教学质量提升赋能,实现教育数据的安全共享、高等教育体系的智慧治理。 可信教育区块链治理系统的顶层治理架构由教育部、高校、企业、学生等多方角色共同参与建设、维护,支撑教育资源共享、教学质量评估、