《基于stm32的LCD12864显示+16个矩阵键盘程序》由会员分享,可在线阅读,更多相关《基于stm32的LCD12864显示+16个矩阵键盘程序(15页珍藏版)》请在金锄头文库上搜索。
1、 .#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)
2、 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, ENAB
3、LE);/* 全部用到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_Ou
4、t_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); /矩阵键盘引脚输出
5、配置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_InitS
6、tructure.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 key1010; 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_
7、SetBits(GPIOB,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_9); for (ii=0;ii4;ii+) GPIO_ResetBits(GPIOB,hengii); for(jj=0;jj4;jj+) delay(50000); delay(50000); /delay(50000); if(GPIO_ReadInputDataBit(GPIOB,lingjj)=0) while(GPIO_ReadInputDataBit(GPIOB,lingjj=0); keyiijj=1; else keyiijj=0; /delay(50000); G
8、PIO_SetBits(GPIOB,hengii); if(key00=1)&(GPIO_ReadInputDataBit(GPIOB,ling0)=1)hy5=1; /* if(key01=1)&(GPIO_ReadInputDataBit(GPIOB,ling0)=1)hy5=2; if(key02=1)&(GPIO_ReadInputDataBit(GPIOB,ling0)=1)hy5=3; if(key03=1)&(GPIO_ReadInputDataBit(GPIOB,ling0)=1)hy5=4; if(key10=1)&(GPIO_ReadInputDataBit(GPIOB,l
9、ing1)=1)hy5=5; /* if(key11=1)&(GPIO_ReadInputDataBit(GPIOB,ling1)=1)hy5=6; if(key12=1)&(GPIO_ReadInputDataBit(GPIOB,ling1)=1)hy5=7; if(key13=1)&(GPIO_ReadInputDataBit(GPIOB,ling1)=1)hy5=8; if(key20=1)&(GPIO_ReadInputDataBit(GPIOB,ling2)=1)hy5=9; /* if(key21=1)&(GPIO_ReadInputDataBit(GPIOB,ling2)=1)h
10、y5=10; if(key22=1)&(GPIO_ReadInputDataBit(GPIOB,ling2)=1)hy5=11; if(key23=1)&(GPIO_ReadInputDataBit(GPIOB,ling2)=1)hy5=12; if(key30=1)&(GPIO_ReadInputDataBit(GPIOB,ling3)=1)hy5=13;/* if(key31=1)&(GPIO_ReadInputDataBit(GPIOB,ling3)=1)hy5=14; if(key32=1)&(GPIO_ReadInputDataBit(GPIOB,ling3)=1)hy5=15; i
11、f(key33=1)&(GPIO_ReadInputDataBit(GPIOB,ling3)=1)hy5=16;/ hy2=9;/ return hy2; / void LCD_DataIo_In(void)/数据线输入 1602输入引脚配置GPIO_InitTypeDef GPIO_InitStructure;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_M
12、ode = GPIO_Mode_IN_FLOATING;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOE, &GPIO_InitStructure);void LCD_DataIo_Out(void)/数据线输出 1602引脚输出配置GPIO_InitTypeDef GPIO_InitStructure;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); void hy() GPIO_ResetBits(GPIOE,GPIO_Pin_7); GPIO_ResetBits(