身价过亿的女总裁对小码农说你按键会了吗(代码片段)

小码农U 小码农U     2023-01-12     713

关键词:

小码农为了总裁,咳咳,为了知识敢说按键不会吗?

帝都富豪与富家总裁联动文章 身价过亿的帝都富豪对小码农说预处理学的不错

独立按键与矩阵按键

独立按键

图样

按键按下去之后,往往会有抖动的问题,按键本身的弹性,按键按下去或者放开,都会形成撞击的不稳定过程,这个过程需要一定的时间,所以单片机在这个过程中不能读取IO状态,可以软件延迟或者硬件延迟

原理图

按键的简单功能(为了智能小车,可以朝上面靠)

显示的过程

没有制作GIF的原因是做完一直不小于1M导致我typora插入我不显示,因此狠心投稿到B站,今后B站就是我的视频库

功能

上面按键就是一按一按没有什么吸引人的地方,没有什么亮点,所以我们推倒重来

半成品示范

加了长按标志的展示

丐版展示

丐版展示

//按键扫描
void Key_Scan_Drive()

	static bit flag = 0;//长短按标志
	static bit key_down = 0;//按下标志,由于双击也用这个,所以标记范围得扩大
	
	static u8 count1 = 0;//计数器1,因为100以内,所以u8足够了
	static u16 count2 = 0;//计数器2,大于255就用u16
	
	if(key_down)//检测按键是否被按下过
	
		count2++;
		if(count2>250)
		
			count2 = 0;		
			flag = 1;	
			//长按程序
			LCD12864_Write_Cmd(0x8c);
			LCD12864_Write_Data(0x30);
			LCD12864_Write_Data(0x30+LCD12864_Num_Buffer[1]);
		
		if(KEY1)
		
			key_down = 0;//松开就把标志清零
			count2 = 0;
			if(flag)
			
				flag = 0;
			
			else
			
				//短按程序
				LCD12864_Write_Cmd(0x8c);
				LCD12864_Write_Data(0x30);
				LCD12864_Write_Data(0x30+LCD12864_Num_Buffer[3]);
			
		
	
	else
	
		if(!KEY1)
		
			count1++;
			if(count1>20)
			
				count1 = 0;
				if(!KEY1)
				
					key_down = 1;
				
							
		
		

还有一直按就是一直加加的功能,但是代码基本类似,就没必要再写了,都是重复的类似工作

高潮来袭

矩阵键盘

P6^0 P6^1 P6^2 P6^3 四线是行扫描,P6^4 P6^5 P6^6 P6^7 四线是列扫描。4 行 4 列总共使用 8 个 IO 口,可以扫描 16 个按键的开关状态,这就是矩阵键盘的优势。( IO 口之间必须串联电阻 )

原理图

分析

#include "all.h"

u8 code KEY4x4_Buffer[4] = 0xef,0xdf,0xbf,0x7f;//列输入 /列控制数组
u8 xdata KEY4x4_Read_Byte = 0;   //读到/检测到的字节


void KEY4x4_Drive_Init()

	P6M1 = 0;
	P6M0 = 0; 


void KEY4x4_Scan_Drive()

	static xdata u16 count = 0;
	u8 i = 0;
	u8 j = 0;//循环扫描变量
	u8 Value = 0;//检测行变量
	count++;
	if(count>10)//通过计数的方式来减少循环次数,还消抖
	
		count = 0;
		for(i = 0;i<4;i++)//列输入 /列控制 
		
			P6 = KEY4x4_Buffer[i];
			Value = 0x08;
			for(j = 0;j<4;j++)
			
				if(!(Value&P6))//哪个位被拉成0了就会被检测到
				
					KEY4x4_Read_Byte = j*4+i+1;
				
				Value >>= 1;//右移一位
					
			
		P6 = 0xff;//P6口用完拉高,因为以后会用到他
	
	

矩阵键盘

帝都富豪与富家总裁联动文章 身价过亿的帝都富豪对小码农说预处理学的不错

身价过亿的女王对小码农说中断会了吗

文章目录为了女王,咳咳,为了知识敢说中断不会吗?==联动文章[身家过亿的帝都富豪对小码农说你时空复杂度会了吗](https://blog.csdn.net/diandengren/article/details/120736416?spm=1001.2014.3001.5502)==单片机的中断系... 查看详情

身价过亿的冰山御萝对小码农说你液晶能显示吗(代码片段)

...,为了知识怎么敢说液晶不显示啊==联动文章[身价过亿的冰山御萝的姐姐对小码农说你有大一点的液晶吗](https://blog.csdn.net/diandengren/article/details/120619762?spm=1001.2014.3001.5501)====我们要清楚液 查看详情

身价过亿的冰山御萝的姐姐对小码农说你有大一点的液晶吗(代码片段)

...样小的液晶呢,我不应该大一点吗==联动文章[身价过亿的冰山御萝对小码农说你液晶能显示吗](https://blog.csdn.net/qq_42832862/article/details/120619604?spm=1001.2014.3001.5501)= 查看详情

身价过亿的温柔萝莉对小码农说adc会采集吗(代码片段)

文章目录小码农电压使者怎么敢说不会采集模拟量与单片机的数字量之间的关系模拟量转换成数字的方式逐次比较器ADC的概念一个超级好的例子分享给你们STC内部ADC模块的寄存器这里我们需要采集电池电压(我们用P1.0采集)==... 查看详情

身价过亿的贤淑才女对小码农说pwm可以控制时间长短吗(代码片段)

文章目录为了贤淑妻子,咳咳,贤淑才女,小码农必定让PWM控制时间什么是脉宽调制PWMSPWM简介用定时器和CPU模拟PWM输出新建工程设置一个定时器,定时10us定时器中断服务函数里面,驱动P2.1脚输出PWM==我... 查看详情

身价过亿的妖媚子对小码农说串口能传送我的爱吗?(代码片段)

文章目录小码农不敢接受妖媚子(想多活几年),但是串口还是可以传送数据的并行通信串行通信==同步:====异步:==串口通信:收发一个字节(只能用时间来同步)串口通... 查看详情

身价过亿的灵仙子说你iic没写完也发?

文章目录小码农很硬气说没写完发咋了,你咬我啊I^2^C协议的简单应用I^2^C协议总体概述I^2^C协议规则==I^2^C协议的数据有效性====I^2^C协议的起始信号、停止信号====I^2^C协议的通讯格式==I^2^C协议的数据读写三种方式I^2^C协议单向发... 查看详情

算法大神对小码农说环形链表可以单独拿出来讲讲(代码片段)

文章目录环链环形链表题目分析延伸问题:==1.为什么fast和slow会在环中相遇,会不会有这么一种情况呢。就是在环中一直交错永远遇不上?请证明一下。==证明:==这里就又衍生出了一个问题就是... 查看详情

身家过亿的帝都太子妃参加1024盛典,小码农弟弟为他献上定时器一篇(代码片段)

文章目录身家过亿的帝都太子妃参加1024盛典,小码农弟弟为他献上定时器一篇内部定时器/计数器中断1.定时/计数器的概念==核心图==定时1ms1.时钟12分频(我们使用传统51的速度)T0x12=0(也就是AUXR&am... 查看详情

身家过亿的帝都富豪来参加1024节专属盛典,小码农献上单链表一篇来庆祝盛典(代码片段)

文章目录身家过亿的帝都富豪来参加1024节专属盛典,小码农献上单链表一篇来庆祝盛典顺序表的缺陷链表链表的概念及结构链表的分类**1.单向或者双向****2.带头或者不带头****3.循环或者非循环**链表的实现无头单向单链表节... 查看详情

ce感恩品牌创始人,一个身价过亿的青年企业家

  希文,GE感恩品牌的创始人,90年出生于江苏的一个商业世家。由于自小受到家族的熏陶,希文早早地学会了独立。在他成就自己事业的时候,虽然没有得到家族的支持,但母亲一直教导他把感恩当成自己事业的核心。... 查看详情

算法给小码农topk重瞳双目(代码片段)

文章目录Topk1000个数中找到最大的前十个方式1:方式2:==方式3:==Topk打印函数TopkPrint没有修改的接口见[算法给小码农堆魂器--铁血柔情](https://blog.csdn.net/diandengren/article/details/121218819?spm=1001.2014.300 查看详情

算法开启小码农双链表血脉(代码片段)

文章目录==也欢迎大家能来到我们小伙伴的社区[慧编程开源俱乐部](https://bbs.csdn.net/forums/mzt)==双链表双链表结构图双链表节点双链表初始化函数ListInit双链表尾插函数ListPushBack双链表打印函数ListPrint双链表尾删函数Lis... 查看详情

算法开启小码农栈血脉(代码片段)

栈栈的概念及结构栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(LastInFirstOut)的原... 查看详情

算法开启小码农队列血脉(代码片段)

队列队列的概念及结构队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(FirstInFirstOut)入队列:进行插入操作的一端称为队尾出队列:进行删除操作的一... 查看详情

算法给小码农链式二叉树-----一根草可斩星辰(代码片段)

文章目录链式二叉树那么链式二叉树有什么好的地方呢二叉树的遍历前序、中序以及后序遍历按照规则,二叉树的遍历有:前序/中序/后序的递归结构遍历:(上图为例图)(前中后访问根的时机不一样... 查看详情

凛冬已至,雪花算法会了吗?(代码片段)

点击获取福利15张学习路线导图10G学习资料100本计算机书籍点赞再看,养成习惯。微信搜索【一条coding】关注这个在互联网摸爬滚打的程序员。本文收录于技术专家修炼,里面有我的学习路线、系列文章、面试题库、自学... 查看详情

面试必问的volatile,你真的会了吗(代码片段)

谈谈你对volatile的理解?你知道volatile底层的实现机制吗?volatile变量和atomic变量有什么不同?volatile的使用场景,你能举两个例子吗?文章收录在GitHubJavaKeeper,包含N线互联网开发必备技能兵器谱之前算是... 查看详情