基于STM32普中成品开发板精灵一,实现独立按键1按下数码管加1,独立按键2按下数码管减1,独立按键3按下数码管清零。数码管最大显示数字20。

//共阴极数码管显示0~F的段码数据
u8 gsmg_code[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
u8 a=0;
u8 smgweixuan[2];

void SMG_Init(void)
{
	GPIO_InitTypeDef GPIO_InitStructure;
	
	RCC_APB2PeriphClockCmd(LSA_PORT_RCC,ENABLE);
	RCC_APB2PeriphClockCmd(LSB_PORT_RCC,ENABLE);
	RCC_APB2PeriphClockCmd(LSC_PORT_RCC,ENABLE);
	RCC_APB2PeriphClockCmd(SMG_A_DP_PORT_RCC,ENABLE);
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
	GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);
	GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable,ENABLE);
	
	GPIO_InitStructure.GPIO_Pin=LSA_PIN; 
	GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;	
	GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;	  
	GPIO_Init(LSA_PORT,&GPIO_InitStructure); 	  
	GPIO_InitStructure.GPIO_Pin=LSB_PIN; 
	GPIO_Init(LSB_PORT,&GPIO_InitStructure);
	
	GPIO_InitStructure.GPIO_Pin=LSC_PIN; 
	GPIO_Init(LSC_PORT,&GPIO_InitStructure);
	
	GPIO_InitStructure.GPIO_Pin=SMG_A_DP_P
stm32 通过外部中断来实现程序的切换 主函数代码 int key_can(void); //按键扫描函数的声明 void GPIO_Configuration(void); //按键IO口初始化函数的声明 //全局变量声明 作用:在所有的函数里面都可以使用这个变量,否则只能在cheak定义的函数里面使用 int cheak=0; //矩键按下的标志位 int main(void) { u8 code[10]={0xf3,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; u8 ss[]={'1','2','3','A','4','5','6','B','7','8','9','C','*','0','#','D'}; //定义个u8型数组 u8 cod[14]={0x06,0x5b,0x4f,0x3f,0x66,0x6d,0x7d,0x3f,0x07,0x7f,0x6f,0x3f,0x3f,0x3f}; u8 t=0; int j; delay_init(); //延时函数初始化 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级 uart_init(115200); //串口初始化为115200 LED_Init(); //初始化与LED连接的硬件接口 // BEEP_Init(); //初始化蜂鸣器IO EXTIX_Init(); GPIO_Configuration();//初始化外部中断输入 LED0=0; //先点亮红灯 while(1) { if(a==1) //按键KEY1 // /消抖 { for(j=9;j>=0;--j) { if(b!=1) { GPIO_Write(GPIOB,code[j]); delay_ms(1000); } } } if(b==1) //按键KEY0 { printf("请按键 \n"); { t=key_can(); //按下的某个键对应的返回值,并赋值给t if(cheak) //if(非零),执行if的对应语句;if(0),不执行if对应语句; { printf("\n\r key=:%c \n\r",ss[t]); GPIO_Write(GPIOB,cod[t]); cheak=0; } } } } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值