STM32的控制數碼管按鍵設計
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.png (28.5 KB, 下載次數: 65)
下載附件
2021-6-22 04:35 上傳
單片機源程序如下:
- #include "main.h"
- uint16_t table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
- void key_init()
- {
- GPIO_InitTypeDef gpio_init;
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
- //將PA設置為推挽輸出
- gpio_init.GPIO_Mode=GPIO_Mode_IPU;
- gpio_init.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1;
- GPIO_Init(GPIOB,&gpio_init);
- }
- void seg7_init()
- {
- GPIO_InitTypeDef gpio_init;
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
- //將PA設置為推挽輸出
- gpio_init.GPIO_Mode=GPIO_Mode_Out_PP;
- gpio_init.GPIO_Pin=GPIO_Pin_All;
- gpio_init.GPIO_Speed=GPIO_Speed_50MHz;
- GPIO_Init(GPIOA,&gpio_init);
- }
- uint8_t button0()
- {
- return(!GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_0));
- }
- uint8_t button1()
- {
- return(!GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_1));
- }
- /*****************************************
- main函數
- *****************************************/
- int main(void){
- uint8_t i,j=1;
- uint16_t temp;
- key_init();
- seg7_init();
- GPIO_Write(GPIOA,table[j-1]);
- while(1){
-
- if(button0())
- {
- delay_ms(10);
- if(button0())
- {
- while(button0());
- j++;
- if(j>16)
- j=1;
- GPIO_Write(GPIOA,table[j-1]);
- }
- }
-
- if(button1())
- {
- delay_ms(10);
- if(button1())
- {
- while(button1());
- j--;
- if(j==0)
- j=16;
- GPIO_Write(GPIOA,table[j-1]);
- }
- }
-
- }
- //return 0;
- }
復制代碼
51hei.png (11.89 KB, 下載次數: 74)
下載附件
2021-6-22 04:36 上傳
所有資料51hei提供下載:
STM32F103_KEY_7SEG.7z
(868.44 KB, 下載次數: 173)
2021-6-22 04:36 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|