#include "led.h" u8 seg_tab[16] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; void LED_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); 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_Pin_8; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_SetBits(GPIOA,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_Pin_8); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE); 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_Pin_8; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOE, &GPIO_InitStructure); GPIO_SetBits(GPIOE,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_Pin_8); } void Display(u8 index) { DX0 = seg_tab[index]&0x01; DX1 = (seg_tab[index]>>1)&0x01; DX2 = (seg_tab[index]>>2)&0x01; DX3 = (seg_tab[index]>>3)&0x01; DX4 = (seg_tab[index]>>4)&0x01; DX5 = (seg_tab[index]>>5)&0x01; DX6 = (seg_tab[index]>>6)&0x01; DX7 = (seg_tab[index]>>7)&0x01; }
时间: 2023-08-02 19:10:43 浏览: 170
好的,以下是修改后的key.c文件,请替换您原来的代码:
#include "led.h"
#include "key.h"
u8 seg_tab[16] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
u8 key_value = 0;
void KEY_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);
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_Pin_8;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(GPIOE, &GPIO_InitStructure);
}
u8 KEY_Scan(void)
{
u8 key = 0;
if (KEY1 == 0)
{
key = 1;
}
else if (KEY2 == 0)
{
key = 2;
}
else if (KEY3 == 0)
{
key = 3;
}
else if (KEY4 == 0)
{
key = 4;
}
else if (KEY5 == 0)
{
key = 5;
}
else if (KEY6 == 0)
{
key = 6;
}
else if (KEY7 == 0)
{
key = 7;
}
else if (KEY8 == 0)
{
key = 8;
}
return key;
}
void Display(u8 index)
{
DX0 = seg_tab[index % 10] & 0x01;
DX1 = (seg_tab[index % 10] >> 1) & 0x01;
DX2 = (seg_tab[index % 10] >> 2) & 0x01;
DX3 = (seg_tab[index % 10] >> 3) & 0x01;
DX4 = (seg_tab[index / 10] & 0x01);
DX5 = (seg_tab[index / 10] >> 1) & 0x01;
DX6 = (seg_tab[index / 10] >> 2) & 0x01;
DX7 = (seg_tab[index / 10] >> 3) & 0x01;
}
请注意,我在原有代码的基础上添加了KEY_Init()和KEY_Scan()函数,用于初始化和扫描键盘输入。同时,在Display()函数中,我对数码管的显示进行了修改,使其能够满足题目所要求的各种显示方式。
相关推荐



















