博士
最后登录1970-1-1
在线时间 小时
注册时间2016-4-28
|
楼主 |
发表于 2016-7-21 14:08:23
|
显示全部楼层
我采用的值这种办法,我贴上来代码#include "main.h"
#include "usart.h"
#define IO_COL_1_H() {GPIO_SetBits(GPIOG,GPIO_Pin_0);}
#define IO_COL_1_L() {GPIO_ResetBits(GPIOG,GPIO_Pin_0);}
#define IO_COL_2_H() {GPIO_SetBits(GPIOG,GPIO_Pin_1);}
#define IO_COL_2_L() {GPIO_ResetBits(GPIOG,GPIO_Pin_1);}
#define IO_COL_3_H() {GPIO_SetBits(GPIOG,GPIO_Pin_2);}
#define IO_COL_3_L() {GPIO_ResetBits(GPIOG,GPIO_Pin_2);}
#define IO_COL_4_H() {GPIO_SetBits(GPIOG,GPIO_Pin_3);}
#define IO_COL_4_L() {GPIO_ResetBits(GPIOG,GPIO_Pin_3);}
#define IO_COL_5_H() {GPIO_SetBits(GPIOG,GPIO_Pin_4);}
#define IO_COL_5_L() {GPIO_ResetBits(GPIOG,GPIO_Pin_4);}
#define IO_COL_6_H() {GPIO_SetBits(GPIOG,GPIO_Pin_5);}
#define IO_COL_6_L() {GPIO_ResetBits(GPIOG,GPIO_Pin_5);}
#define IO_COL_7_H() {GPIO_SetBits(GPIOG,GPIO_Pin_6);}
#define IO_COL_7_L() {GPIO_ResetBits(GPIOG,GPIO_Pin_6);}
volatile u8 i;
void pr(u8 i, double num, u8 row_cnt)
{
char str[10];
double result;
result = num + (row_cnt*2.400);
if (i == 1)
{
sprintf(str, "%f", result); //将浮点数转换成字符串
printf("%s\r", str);
}
}
void Key_Delay(uint32_t nCount)
{
nCount *=1000;
while(nCount > 0)
{
nCount --;
}
}
int main(void)
{
u8 row_cout = 0;
GPIO_InitTypeDef GPIO_InitStructure;
SystemInit(); //系统初始化
USART2_Config(); //串口初始化
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_GPIOE | RCC_AHB1Periph_GPIOF | RCC_AHB1Periph_GPIOG , ENABLE);
/***********************行方向***************************/
/***********************key input************************/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN; //定义PE0到PE3为下拉输入
GPIO_Init(GPIOE, &GPIO_InitStructure);
/***********************列方向***************************/
/***********************key output***********************/
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_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //定义PG0到PG6为推挽输出
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOG, &GPIO_InitStructure);
IO_COL_1_L();
IO_COL_2_L();
IO_COL_3_L();
IO_COL_4_L();
IO_COL_5_L();
IO_COL_6_L();
IO_COL_7_L();
while(1)
{
/**********************第1行***********************/
/***************PG0,PG2,PG4,PG6-->PE2**************/
#if 1
Key_Delay(10);
IO_COL_1_H();
Key_Delay(1);
if(GPIO_ReadInputDataBit(GPIOE, GPIO_Pin_2))
{
i = 1;
pr(i, 0.200*13, row_cout);
}
IO_COL_1_L();
Key_Delay(10);
IO_COL_3_H();
Key_Delay(1);
if(GPIO_ReadInputDataBit(GPIOE, GPIO_Pin_2))
{
i = 1;
pr(i, 0.200*9, row_cout);
}
IO_COL_3_L();
Key_Delay(10);
IO_COL_5_H();
Key_Delay(1);
if(GPIO_ReadInputDataBit(GPIOE, GPIO_Pin_2))
{
i = 1;
pr(i, 0.200*5, row_cout);
}
IO_COL_5_L();
Key_Delay(10);
IO_COL_7_H();
Key_Delay(1);
if(GPIO_ReadInputDataBit(GPIOE, GPIO_Pin_2))
{
i = 1;
pr(i, 0.200*1, row_cout);
}
IO_COL_7_L();
#endif
}
} |
|