蓝桥杯单片机 | 特训案例【进阶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、在按键扫描和处理的过程中,不能干扰数码管正常显示,避免出现按键误触发和一次按键多次处理的情况。

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

【小提示】:按键的长按与短按实现原理,可见本博客:《【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;		//时间计数变量清0
			F_key = 1;			//标志按键按下状态
			while(S4 == 0)		//等待按键松开
			{
				Display_Num();	//在按下期间保持数码管正常显示
			}
			F_key = 0;			//标志按键松开状态
			
			if(count_t > 50)	//按下时间大于1秒,长按
			{
				num = 0;		//数码管计数清除为00
			}
			else				//按下时间小于1秒,短按
			{
				num++;			//数码管计数加1
				if(num == 100)
				{
					num = 0;	//计数超出最大值99后恢复00
				}
			}
		}
	}
}

【注】:更多关于蓝桥杯单片机备赛内容,详见《蓝桥杯单片机设计与开发》小蜜蜂特训手册,本站可下载,相关更多蓝桥杯的案例完整源码及学习备赛笔记,欢迎进入“小蜜蜂笔记”公众号。文章来源地址https://www.toymoban.com/news/detail-406726.html

到了这里,关于蓝桥杯单片机 | 特训案例【进阶02】长按与短按控制数码管显示的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【蓝桥杯单片机】工厂灯光控制系统案例解析(小蜜蜂老师基础综合实训)

    设备检测——移位 L1~L8在板子上是从左至右,但是在对P0口赋值时是16进制从 高位(L8)—低位(L0) 根据原理图,LED赋值 0亮1灭 为了方便赋值,可以把板子转一下,让LED排序与赋值顺序相同 左移 右移 控制移位补0 ,使LED依次点亮、依次熄灭 unsigned char i 作为下文表格中的循环变量

    2023年04月09日
    浏览(43)
  • 单片机_按键——单击,双击,长按

    调用

    2024年02月16日
    浏览(53)
  • 单个按钮实现长按开关机,短按可以当普通按钮控制单片机

    在看郭天祥老师的课程时学到的电路,之后发现这种控制原理很流行。 核心思路有两个: 1、用两个二极管隔离开q1和io_check,两端都可以响应按钮的状态,从而实现按钮复用。 2、用d2和q2,实现了与的功能,两者任意一个对地短路都可以保持mcu供电。 使用步骤: 1、长按sw

    2024年01月18日
    浏览(38)
  • STM32 -- 实现按键的长按与短按检测(其他单片机可移植)

    目录 资源获取 一 前言 二 思路  三 实现代码 1.主要代码 四 完整代码 Key.h Key.c 该改进版本(1ms太繁琐了,我改成了25ms检测一次)   1.定时器部分 2.按键检测部分  五、参考 欢迎关注微信公众号--星之援工作室 发送(长短按检测) 今天在逛博客的时候,偶然看到了一

    2024年02月12日
    浏览(40)
  • 蓝桥杯单片机客观题之数电学习(深夜学习——单片机)

    1、数字:\\\'0\\\'——0x30 2、字母:\\\'a\\\'——0x61;\\\'A\\\'——0x41 1、首位不变 2、从左到右,加上每一对相邻的二进制编码位,从而得到下一个格雷码位,舍去进位  1、首位不变 2、新生成的二进制码加上下一位格雷码得到下一位二进制码 1、小数部分的转换方法应该是先得到的是高位,后

    2023年04月09日
    浏览(93)
  • 蓝桥杯单片机(六)PWM

    本文内出现的函数在其他文章有讲: 蓝桥杯单片机(一)流水灯 蓝桥杯单片机(二)独立按键 蓝桥杯单片机(四)动态数码管 蓝桥杯单片机(五)定时器 如图所示,有三列方波在图中,所谓PWM,就是指上述图中的方波,波形在高电平和低电平不断变化,只不过PWM的占空比可变,上图就

    2023年04月14日
    浏览(44)
  • 蓝桥杯单片机(三)矩阵按键

    上章说了独立按键 蓝桥杯单片机(二)独立按键 这章说一下矩阵按键 所谓矩阵按键,就是每一个按键的两端都同时由单片机的IO口进行控制,如原理图所示,上图要想使用矩阵按键,就需要使用跳线帽将排针2引脚和1引脚连接在一起。 连接好了以后,这四排四列就可以看成四列

    2024年02月11日
    浏览(54)
  • 蓝桥杯单片机第十三届国赛客观题(深夜学习——单片机)

    1.填空题 (2)不同的地址范围: data:0x00-0xff idata:0x0000-0xffff xdata:0x0000-0xffff pdata:0x00-0xff code:0x0000-0xffff 2.选择题 (3)模电——》多级放大电路 (6)DS18B20 (7)模电——》二极管  (8)单片机      

    2024年02月11日
    浏览(67)
  • 蓝桥杯单片机 第十二届 国赛

    蓝桥杯第十二届,模块都比较常规,感觉都和省赛差不多,主要是麻烦在数据处理上,而我们处理的数据又要在界面中显示出来。 对比之前的第十届,其实题目差不多,并且少了串口收发这一比较难的模块。但是多了max,min,avg三个超声波数据的处理。所以按道理时间方面应该

    2023年04月08日
    浏览(51)
  • 蓝桥杯单片机 ——接收字符、字符串

     1定时器中断方法 (完整代码在文末!!)  2.定时的方法(推荐): 蓝桥杯单片机第十四届第三次模拟题_让我来瞅一瞅的博客-CSDN博客 定时器0——定时功能        判断接受数据是否完成  定时器1——串口功能           接受、发送数据   1.接受、发送 均为文本模式

    2023年04月17日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包