买了STM32 MINI板没有带屏的,做其他实验无法显示数据,今天没事弄了个8位数码管显示数据的程序,直接调用shuma_display()这个函数就行了,方便以后用啊,是控制BSRR寄存器实现的,断码用PA0-7口,位码用PB5-7口控制38译码器选择8位数码管,没有用到锁存器,是IO口直接驱动的,3.3V看着还行,能显示很清楚,现把主要代码粘上来,各位大虾请指点有没有更好的方法
/*************************shuma.c*********/
#include "stm32f10x.h"
#include "shuma.h"
#include "delay.h"
u32 str[8];
u32 wei_table[]={0x00E00000,0x00C00020,
0x00A00040,0x00800060,
0x00600080,0x004000A0,
0x002000C0,0x000000E0,
}; //PB5-7,数码管位码,8位数码管,138译码器控制选择,写入BSRR寄存器,用其他IO口该码需改变
u32 duan_table[]={0x00C0003F,0x00F90006,
0x00A4005B,0x00B0004F,
0x00990066,0x0092006D,
0x0082007D,0x00F80007,
0x0080007F,0x0090006F,
}; //PA0-7,数码管段码0-9,共阴,写入BSRR寄存器
void shuma_init() //数码管IO管脚初始化,断码为PA0-7,位码为PB5-7,位码为3个IO口,通过38译码器控制8位数码管
{
RCC->APB2ENR|=1<<2; //使能GPIOA时钟
RCC->APB2ENR|=1<<3; //使能GPIOB时钟
GPIOA->CRL&=0x00000000;
GPIOA->CRL|=0x33333333; //设置PA0-7为推挽输出
GPIOB->CRL&=0x000FFFFF;
GPIOB->CRL|=0x33300000; //设置PB5-7为推挽输出
// GPIOA->ODR|=0xFF; //设置PA0-7输出高,上拉
// GPIOB->ODR|=0xE0; //设置PB5-7输出高,上拉
}
void shuma_display(u32 value) //显示8位数据,分离8次,即千万
{
u8 i;
str[0]=duan_table[value/10000000]; //千万位
str[1]=duan_table[(value%10000000)/1000000]; //百万位
str[2]=duan_table[((value%10000000)%1000000)/100000]; //十万位
str[3]=duan_table[(((value%10000000)%1000000)%100000)/10000]; //万位
str[4]=duan_table[((((value%10000000)%1000000)%100000)%10000)/1000]; //千位
str[5]=duan_table[(((((value%10000000)%1000000)%100000)%10000)%1000)/100]; //百位
str[6]=duan_table[((((((value%10000000)%1000000)%100000)%10000)%1000)%100)/10]; //十位
str[7]=duan_table[((((((value%10000000)%1000000)%100000)%10000)%1000)%100)%10]; //个位
for(i=0;i<8;i++) //循环8次,动态扫描
{
GPIOA->BSRR|=str;
GPIOB->BSRR|=wei_table;
delay_ms(2);
}
}
/***********************************************/
/*******************main.c****************************/
#include "stm32f10x.h"
#include "delay.h"
#include "sys.h"
#include "shuma.h"
int main(void)
{
SystemInit(); //初始化系统时钟72MHZ
delay_init(72); //初始化延时函数
NVIC_Configuration(); //设置中断分组
shuma_init();
while(1)
{
shuma_display(76543210);
}
}
/*********************************/
78bb7694db2cb88e218231eb3d539ed7_578.jpg (0 Bytes, 下载次数: 2)
2010-12-14 22:54 上传