一、按键模块的选用:

          薄膜按键

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;
}
 
 
//--------------------------------------------------------------------------------------------//