自学教程三开始教大家点亮 本教程为静态照明数字管。
利用STM32与数字管接口技术完成STM数字管静态显示电路设计和程序设计、运行和调试。要求使用任务STM32F103R6芯片的PC0~PC15引脚分别接2个共阴极LED数码管。个位数码管接PC0~PC七、十位数码管接PC8~PC15。通过静态显示,编写程序循环显示两位数字管 0~20。
嵌入式电子产品常用的显示器LED和LCD两种方式
LED数字显示器价格低廉,体积小,功耗低,可靠性好,应用广泛。

共阴极就是把二极管的阴极全部连在一起,共阳极就是把二极管的阳极全部连在一起。
那么写程序的时候还是跟上一个说法一样吗?当然不是,不然就不用再说了。我们还有另一个简单的写作方法。就是提前做这些abcdefg状态集体制成数组,方便我们下一步使用。
为了在数字管上显示字符,必须在其8个位置添加相应的电平组合,即8位数据,称为字符的字体编码。 常用位段的编码规则如下图所示。
共阴极和共阳极数字管的字体编码是不同的。对于相同的字符,共阴极和共阳极的字体编码是相反的。下图显示led请自行补充数字管共阴极数据00-08、09。
一、Proteus仿真图
模拟数码管将在00和99之间循环显示。LS245为LED数字管驱动芯片可以理解为信号放大,其过程不会改变任何电平逻辑。即单片机输出高电平,数字管端仍为高电平。
二、MDK代码
int main(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); //使能GPIOB时钟 GPIO_InitStructure.GPIO_Pin = 0xffff;//PC0-PC15引脚配置 //GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11;//PB8- PB11引脚配置 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //配置PB8为推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //GPIOB速度为50MHz GPIO_Init(GPIOC, &GPIO_InitStructure); //初始化PB8 //GPIO_SetBits(GPIOB,GPIO_Pin_8); //PB8输出高电平,LED熄灭 //GPIO_Write(GPIOC, 0x0FFFF); ////先熄灭所有数字管 //while(1); while(1) { //GPIO_ResetBits(GPIOC, 0x0FFFF); ///先熄灭一切LED // temp = 0x0001; for(i=0;i<=99;i ) { disp[1]=table[i/10]; //十位数码管显示0 disp[0]=table[i]; //个位数码管显示0 temp=~((disp[1]<<8)|(disp[0]&0x0ff)); GPIO_Write(GPIOC,temp); //GPIO_SetBits(GPIOC, temp); //向GPIOB口写控制码 Delay(100); //temp =( temp<<1) 1; // temp左移一位加1获得下一个控制码 } } }
数字管数组答案现在公布。共阳极数字管显示0~与共阴极数码管编码与共阴极数码管的字型编码相反,字型编码如下:0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80, 在程序中,如果继续使用共阴极数码管的字形码,可以通过取反共阴极字形码获得共阳极数码管的字形码。硬件和软件取反共阴极字形码有两种方法:硬件取反是通过反相器实现的;软件取反是通过取反操作符~”实现的。
三、模拟效果和源代码资源
基于Proteus无实物STM32入门自学教程(3)-数字管-单片机文档资源-CSDN下载