根据stm32的LCD12864显示16个矩阵键盘程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include "stm32f10x.h"
#define read_busybit() GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_7 ) #define DATAOUT GPIOC->ODR//
unsigned char table1[]={"65"};
unsigned char table2[]={"大学"} ;
unsigned char table3[]={"学院"} ;
unsigned char table4[]={"电子信息"} ;
unsigned char table5[]={"姓名"} ;
unsigned char hy5;
unsigned char k=0;
void delay(unsigned int x)
{
while(x--);
}
// 外设时钟使能
/*************************************************************************/
void RCC_Configuration(void) //在208页这里是引脚时钟配置{
/* 使能外设时钟*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 |
RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC |
RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);
}
/*******************************************************************************
全部用到1602的引脚将在在配置
*******************************************************************************/
void GPIO_Configuration(void) // 1602引脚配置
{
GPIO_InitTypeDef GPIO_InitStructure;
/* LD1 & LD2 & LD3 & LD4 configration */
GPIO_InitStructure.GPIO_Pin
=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin _6|GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOE, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin =GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
//矩阵键盘引脚输出配置
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOB,&GPIO_InitStructure );
//矩阵键盘引脚输入配置
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13|GPIO_Pin_11|GPIO_Pin_7|GPIO_Pin_ 6;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOB,&GPIO_InitStructure);
}
void key()//按键检测
{
unsigned char ii,jj;
unsigned int key[10][10];
u16 ling[]={GPIO_Pin_7,GPIO_Pin_6,GPIO_Pin_11,GPIO_Pin_13};
u16 heng[]={GPIO_Pin_0,GPIO_Pin_1,GPIO_Pin_2,GPIO_Pin_9};
GPIO_SetBits(GPIOB,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_9);
for (ii=0;ii<4;ii++)
{
GPIO_ResetBits(GPIOB,heng[ii]);
for(jj=0;jj<4;jj++)
{
delay(50000);
delay(50000);
//delay(50000);
if(GPIO_ReadInputDataBit(GPIOB,ling[jj])==0)
{