• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

STM32点亮数码管段码问题

韩梅梅 2017-09-28 浏览量:1121
STM32是0-15的IO口,但是数码管只需要8个,所以我会的51的0XXX不能用了,该如何解决呢?我选择的IO口是8-15
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  •  首先你要把IO口配置好,比如我初始化了PB8-15口

    //IO初始化
    void LED_Init(void)
    {
     GPIO_InitTypeDef  GPIO_InitStructure;
     	
     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);	 //使能PB端口时钟
    	
     GPIO_InitStructure.GPIO_Pin = 0XFF00;		//PB.8-15 端口配置
     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 //推挽输出
     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 //IO口速度为50MHz
     GPIO_Init(GPIOB, &GPIO_InitStructure);		//根据设定参数初始化GPIOB.5
     GPIO_SetBits(GPIOB,0XFF00);						 //PB.5 输出高
    }

    然后再写你的数码管控制程序,比如

    假设数码管码表是这个char code distab[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}


    void smg(u8 s)

    {

        u8 i,k;

        k=distab[s];//得到输入的数对应的码表

        for(i=0;i<8;i++)   //对应8个IO口

        {

            if(k&0X01)​GPIO_ResetBits(GPIOB,0X0100<<i);//判断最低位是否为1,是的话拉低对应IO口电平

            else GPIO_SetBits(GPIOB,0X0100<<i);//否的话拉高对应IO口的电平

            k>>1;//右移

        } 

    }


    程序是直接打的,没有实际测试过,所以照搬不一定能编译成功,我的思路就这样了,希望能对你有所启发

    QQ截图20170928172849.png

    • 发布于 2017-09-28
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:8
  • 51是8位机,所以是0xxx共计8bit,STM32是32位机,相同的道理,0-15的IO口,对应的就是0xxxxx,共计16bit,操作8-15的IO口,用0x00xx就可以了呀!
    • 发布于2017-09-28
    • 举报
    • 评论 0
    • 0
    • 0

  • 要根据具体的原理图来设计代码
    • 发布于2017-09-28
    • 举报
    • 评论 0
    • 0
    • 0

  • 可以通过“<<”左移符号移到高位来控制 I\O口
    • 发布于2017-09-28
    • 举报
    • 评论 0
    • 0
    • 0

  • 應該是操作0x0000XX00

    8~15是高位

    可以採用這個做法

    0xXX <<8 即可


    • 发布于2017-09-28
    • 举报
    • 评论 0
    • 0
    • 0

  • GPIO寄存器是16个,你用到了高8位,那么就操作高8位就行了。低8位保持原有数据
    • 发布于2017-09-29
    • 举报
    • 评论 0
    • 0
    • 0

  • 可以用寄存器操作,用与或操作来控制流水灯。比如GPIOA->CRL|=0X00;

    GPIOA->CRL&=0X01;

    就是PA1控制的灯亮

    • 发布于2017-09-29
    • 举报
    • 评论 0
    • 0
    • 0

  • 提醒一下,可以选择最佳答案了
    • 发布于2017-10-17
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

STM32点亮数码管段码问题