KEIL5做的,当数码管数值高于1时,led灯会亮,回到0时灯灭。proteus仿真。
单片机源程序如下:
- #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);
- }
- void LED_Init()
- {
- GPIO_InitTypeDef gpio_init;//定义一个变量
-
- //第一步: 使能LED端口-GPIOA时钟
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
-
- //第二步:配置端口的工作模式并初始化
- gpio_init.GPIO_Mode=GPIO_Mode_Out_PP;
- gpio_init.GPIO_Pin=GPIO_Pin_All;
- gpio_init.GPIO_Speed=GPIO_Speed_50MHz; //速度:50M
- GPIO_Init(GPIOC,&gpio_init); //初始化GPIO
- //第三步:配置端口默认电平
- }
- uint8_t button0()
- {
- return(!GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_0));
- }
- uint8_t button1()
- {
- return(!GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_1));
- }
- //uint8_t button3()
- //{
- // return(!GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_3));
- //}
- //uint8_t button5()
- //{
- // return(!GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_5));
- //}
- /*****************************************
- main函数
- *****************************************/
- int main(void){
- uint8_t i,j,k=1;
- uint16_t temp;
- LED_Init();
- 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(j>1&k==0)
- {
- delay_ms(10);
- delay_ms(10);
- GPIO_ResetBits(GPIOC,GPIO_Pin_6);
- delay_ms(10);
- GPIO_ResetBits(GPIOC,GPIO_Pin_7);
- delay_ms(10);
- k++;
- }
- if(j==1&k==1)
- {
- delay_ms(10);
- GPIO_SetBits(GPIOC,GPIO_Pin_6);
- delay_ms(10);
- GPIO_SetBits(GPIOC,GPIO_Pin_7);
- k=0;
-
- }
-
- if(button1())
- {
- delay_ms(10);
- if(button1())
- {
- while(button1());
- j--;
- if(j==0)
- j=16;
- GPIO_Write(GPIOA,table[j-1]);
- }
- }
-
- }
- //return 0;
- }
复制代码
所有资料51hei提供下载:
新建文件夹 (5).7z
(1.01 MB, 下载次数: 49)
|