作者共發了3篇帖子。 字體大小:較小 - 100% (默認)▼  內容轉換:不轉換▼
 
點擊 回復
511 2
【STM32入门级程序4】8位共阴数码管显示12345678
一派護法 十九級
1樓 發表于:2016-5-13 22:09
【代码】
#include <stm32f10x.h>

#define _BV(n) (1 << (n))

uint32_t n = 12345678;
uint8_t segdisp[] = {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90}; // 共阳数码管段码表,取反后就是共阴的段码

void delay()
{
    int i;
    for (i = 0; i < 2500; i++);
}

void init()
{
    int i;
    RCC->APB2ENR |= _BV(2) | _BV(3); // 打开GPIOA和GPIOB的时钟
   
    // 把PA0~7都设置为输出模式(速率50MHz)
    for (i = 0; i < 8; i++)
    {
        GPIOA->CRL |= _BV(4 * i + 1);
        GPIOA->CRL |= _BV(4 * i);
    }
   
    // 把PB8~15都设置为输出模式
    for (i = 0; i < 8; i++)
    {
        GPIOB->CRH |= _BV(4 * i + 1);
        GPIOB->CRH |= _BV(4 * i);
    }
}

int main()
{
    init();
   
    while (1)
    {
        GPIOB->ODR = ~segdisp[n % 10] << 8;
        GPIOA->ODR = ~_BV(7);
        delay();
        GPIOA->ODR = 0;
       
        GPIOB->ODR = ~segdisp[n % 100 / 10] << 8;
        GPIOA->ODR = ~_BV(6);
        delay();
        GPIOA->ODR = 0;
       
        GPIOB->ODR = ~segdisp[n % 1000 / 100] << 8;
        GPIOA->ODR = ~_BV(5);
        delay();
        GPIOA->ODR = 0;
       
        GPIOB->ODR = ~segdisp[n % 10000 / 1000] << 8;
        GPIOA->ODR = ~_BV(4);
        delay();
        GPIOA->ODR = 0;
       
        GPIOB->ODR = ~segdisp[n % 100000 / 10000] << 8;
        GPIOA->ODR = ~_BV(3);
        delay();
        GPIOA->ODR = 0;
       
        GPIOB->ODR = ~segdisp[n % 1000000 / 100000] << 8;
        GPIOA->ODR = ~_BV(2);
        delay();
        GPIOA->ODR = 0;
       
        GPIOB->ODR = ~segdisp[n % 10000000 / 1000000] << 8;
        GPIOA->ODR = ~_BV(1);
        delay();
        GPIOA->ODR = 0;
       
        GPIOB->ODR = ~segdisp[n / 10000000] << 8;
        GPIOA->ODR = ~_BV(0);
        delay();
        GPIOA->ODR = 0;
    }
}

void SystemInit()
{
}

一派護法 十九級
2樓 發表于:2016-5-13 22:12
库函数版本的程序请参阅:
https://zh.arslanbar.net/post.php?t=24015#FLOOR13
一派護法 十九級
3樓 發表于:2016-5-14 19:20
若下载程序后数码管最后一位无法显示,请参考:
https://zh.arslanbar.net/post.php?t=24017

回復帖子

內容:
用戶名: 您目前是匿名發表
驗證碼:
(快捷鍵:Ctrl+Enter)
 

本帖信息

點擊數:511 回複數:2
評論數: ?
作者:巨大八爪鱼
最後回復:巨大八爪鱼
最後回復時間:2016-5-14 19:20
 
©2010-2024 Arslanbar Ver2.0
除非另有聲明,本站採用共享創意姓名標示-相同方式分享 3.0 Unported許可協議進行許可。