一、按键模块的选用:
薄膜按键
8P杜邦头,间距2.54mm,可插在排针上连接电路;键盘背面臼色贴纸揭去即可牢固粘贴于机箱表面。
适用于单片机外扩展,有利于单片机外围扩展键盘的学习等。
二、产品参数:
类别 |
PET银浆印刷线路 |
电子特性 |
电路等级 :3 5V (DC) ,100mA,1W |
标准方阻:≤ 50mQ / 口 / mil |
|
接触电阻:10 - 500Q(随引线长度和材料变化) |
|
绝缘阻抗:100MΩ 100V |
|
介质耐压:250VRms(50- 60Hz/min) |
|
触点抖动时间:≤ 5ms |
|
机械特性 |
操作压力·金属弹片型 220 - 350g |
环境参数 |
开关行程:金属弹片型 0.6 - 0.8mm |
储荐温度: + 15℃ - 35℃ |
|
储存湿度: 70% -90% |
|
测试温度 :- 0℃ - + 6 0℃ 16H |
|
测试湿度: 70%-90% |
|
振动: 20G' s msx. |
|
材质特性 |
线路厚度:≤0.13 M M |
使用寿命胶片按键型 50万次以内 |
三、薄膜按键模块程序(STM32):
/*******************************************************************************
================================================================================
【平 台】stm32f103zet6_sumjess平台
【编 写】sumjess
【E-mail 】1371129880@qq.com
【软件版本】V2.0
【最后更新】2018年09月06日
【相关信息参考下列地址】
【网 站】
https://blog.csdn.net/qq_38351824
http://www.openedv.com/
http://www.stmcu.org/
http://www.firebbs.cn/forum.php
---------------------------------------------------------------------------------
【dev.env.】MDK5.14及以上版本
【Target 】stm32f103zet6
第一次修订:2017/11/09
第二次修订:2018/01/21
第三次修订:2018/09/06
---------------------------------------------------------------------------------
没有完美的代码,只有不断的奉献,大家一起努力;
赠人玫瑰手留余香,欢迎大家反馈bug!
================================================================================
********************************************************************************/
//4*4按键初始化/
///初始化PF6-13为输出口.并使能这两个口的时钟
void key44_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF, ENABLE); //使能PF端口时钟
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_6|
GPIO_Pin_7|
GPIO_Pin_8|
GPIO_Pin_9; //端口配置
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz
GPIO_Init(GPIOF, &GPIO_InitStruct); //根据设定参数初始化GPIOF
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_10|
GPIO_Pin_11|
GPIO_Pin_12|
GPIO_Pin_13; //端口配置
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPD; //下拉输入
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz
GPIO_Init(GPIOF, &GPIO_InitStruct); //根据设定参数初始化GPIOF
}
/**-------------------------------------------------------------
* @函数名 STM32_KEYScan
* @功能 获取KEY按键的输入电平状态,按键按下时为低电平0
* @参数 无
* @连接 将模块正面朝上,顺次插入即可。
* @返回值 1 对应开发板上第一个KEY按键处于按下状态
* 2 对应开发板上第二个KEY按键处于按下状态
* 3 对应开发板上第三个KEY按键处于按下状态
* 4 对应开发板上第四个KEY按键处于按下状态
* 0 开发板上没有KEY按键处于按下状态
* @参数说明 ( GPIOF->ODR & 0xfc3f ) 将PF6-PF9在ODR对应的位清零,然后赋值
***-------------------------------------------------------------*/
int STM32_KEYScan(void) //实现矩阵键盘。返回值为各按键的键值,此键值由用户自己定义。
{
u8 KeyVal; //keyVal为最后返回的键值。
GPIO_Write(GPIOF,(( GPIOF->ODR & 0xFC3F ) | 0x0040)); //让PF6到PF9输出二进制的0001.
switch(GPIOF->IDR & 0x3C00)//对PF10到PF13的值进行判断,以输出不同的键值。
{
case 0x0400: KeyVal=1; break;
case 0x0800: KeyVal=2; break;
case 0x1000: KeyVal=3; break;
case 0x2000: KeyVal='A';break;
}
GPIO_Write(GPIOF,(( GPIOF->ODR & 0xFC3F ) | 0x0080)); //让PF6到PF9输出二进制的0010
switch(GPIOF->IDR & 0x3C00) //对PF10到PF13的值进行判断,以输出不同的键值。
{
case 0x0400: KeyVal=4; break;
case 0x0800: KeyVal=5; break;
case 0x1000: KeyVal=6; break;
case 0x2000: KeyVal='B';break;
}
GPIO_Write(GPIOF,(( GPIOF->ODR & 0xFC3F ) | 0x0100)); //让PF6到PF9输出二进制的0100
switch(GPIOF->IDR & 0x3C00) //对PF10到PF13的值进行判断,以输出不同的键值。
{
case 0x0400: KeyVal=7; break;
case 0x0800: KeyVal=8; break;
case 0x1000: KeyVal=9; break;
case 0x2000: KeyVal='C';break;
}
GPIO_Write(GPIOF,(( GPIOF->ODR & 0xFC3F ) | 0x0200)); //让PF6到PF9输出二进制的1000
switch(GPIOF->IDR & 0x3C00) //对PF10到PF13的值进行判断,以输出不同的键值。
{
case 0x0400: KeyVal='*'; break;
case 0x0800: KeyVal=0; break;
case 0x1000: KeyVal='#'; break;
case 0x2000: KeyVal='D'; break;
}
return KeyVal;
}
//--------------------------------------------------------------------------------------------//
评论(0)
您还未登录,请登录后发表或查看评论