历史上的今天
今天是:2025年08月16日(星期六)
2019年08月16日 | STM32笔记(二)(寄存器)——矩阵键盘
2019-08-16 来源:eefocus
矩阵键盘是我第一个需要动手焊接东西的实验,是3*3的键盘,焊了一个下午。因为是第一次焊东西,有多处不足,但最后也勉强能用。键盘的电路是组长设计的,希望下一次我能自己独立设计电路。
键盘外观
正面

背面

外观略显粗糙。。。。
主要代码
矩阵键盘最主要的一部分代码就是按键扫描部分,通过一个扫描函数对高低电平进行判断,从而确定按键的位置。用过串口输出案件编号1~9。
key.c代码
void KEY_Init1(void)
{
RCC->APB2ENR|=1<<3;
JTAG_Set(SWD_ENABLE);
GPIOB->CRL&=0X000FFFFF; //PB5,6,7
GPIOB->CRL|=0X33300000;
GPIOB->CRH&=0XFFFFF000; //PB8,9,10
GPIOB->CRH|=0X00000888;
GPIOB->ODR|=1<<5;
GPIOB->ODR|=1<<6;
GPIOB->ODR|=1<<7;
KEY1=1;
KEY2=1;
KEY3=1;
}
void KEY_Init2(void)
{
GPIOB->CRL&=0X000FFFFF; //PB5,6,7
GPIOB->CRL|=0X88800000;
GPIOB->CRH&=0XFFFFF000; //PB8,9,10
GPIOB->CRH|=0X00000333;
GPIOB->ODR|=1<<8;
GPIOB->ODR|=1<<9;
GPIOB->ODR|=1<<10;
KEY4=1;
KEY5=1;
KEY6=1;
}
u8 KEY_Scan(void)
{
u8 a=0,b=0;
KEY_Init1();
if(KEY4_in==1||KEY5_in==1||KEY6_in==1)
{
delay_ms(10);
if(KEY4_in==1) a=1;
else if(KEY5_in==1) a=2;
else if(KEY6_in==1) a=3;
}
else return 0;
GPIOB->ODR &=~(1<<5);
GPIOB->ODR &=~(1<<6);
GPIOB->ODR &=~(1<<7);
KEY_Init2();
delay_ms(10);
if(KEY1_in==1) b=1;
else if(KEY2_in==1) b=2;
else if(KEY3_in==1) b=3;
else return 0;
GPIOB->ODR &=~(1<<8);
GPIOB->ODR &=~(1<<9);
GPIOB->ODR &=~(1<<10);
KEY_Init1();
return ((a-1)*3+b);
}
这一部分也是最主要的代码,u8 KEY_Scan()是扫描函数。
实验结果
史海拾趣
|
CNET英国网站将iPhone(手机上网)评为“全球最差电话” 导读:CNET英国网站今天撰文称,虽然iPhone拥有诸多功能,但其电话功能却存在很多缺陷,甚至可以被称作全球最差的电话。 以下为文章概要: iPhone或许是最棒的手持上网设备 ...… 查看全部问答> |
|
avr通过rs485接收的串口数据错码怎么解决?高手来看下。 用串口调试软件发数据给单片机,单片机再把收到的数据发出去,用串口调试软件查看单片机发送的数据. 结果发现串口调试软件接收到的数据很多和发出去的不一样,搞不清楚是怎么回事了,懂的人指导一下。 波特率1200,无校验,数据位8,停止位1 。 ...… 查看全部问答> |
|
我学习AD的时候用的就是这个视频,AD就是Altium Designer.其实早就想传了,只是没有时间,今天五一假期最后一天,啥也不干,整理学习资料奉献给大家!~因为前几天我在论坛主页看新帖的时候都是 一样的标题,而且每个标题还都只有很小很小的附件 ...… 查看全部问答> |
|
IAR嵌入式工作平台Embedded Workbench为开发不同的目标处理器的项目提供强有力的开发环境,并为每一种目标处理器提供工具的选择。本章给出嵌入式工作平台的Embedded Workbench使用的项目模式简要讨论,并说明用户怎样用它来开发典型的应用程序。 [ ...… 查看全部问答> |
|
一:成本节约现象一:这些拉高/拉低的电阻用多大的阻值关系不大,就选个整数5K吧点评:市场上不存在5K的阻值,最接近的是4.99K(精度1%),其次是5.1K(精度5%),其成本分别比精度为20%的4.7K高4倍和2倍。20%精度的电阻阻值只有1、1.5、2.2、3.3、 ...… 查看全部问答> |
|
我之前发了个帖子:有人想做或者要28335或者28069的TI的开发板吗?https://bbs.eeworld.com.cn/thread-346517-1-2.html有很多人响应,但是问题都很多,都觉得不够详细,我这里发个简单介绍吧,也希望大家多讨论,能完善下我的想法,谢谢! 附件是 ...… 查看全部问答> |




