基于Proteus无实物STM32入门自学教程(三)--静态数码管
时间:2023-12-17 15:07:02
利用STM32与数字管接口技术完成STM数字管静态显示电路设计和程序设计、运行和调试。要求使用任务STM32F103R6芯片的PC0~PC15引脚分别接2个共阴极LED数码管。个位数码管接PC0~PC七、十位数码管接PC8~PC15。通过静态显示,编写程序循环显示两位数字管 0~20。
LED数字显示器价格低廉,体积小,功耗低,可靠性好,应用广泛。

数字管的结构和工作原理
八个数字管内部LED(简称位段)由七个条形组成LED小圆点LED。
LED导通时,相应的线段或点发光,将这些LED排成一定图形,常用来显示数字0~9、字符A~G,还可以显示H、L、P、R、U、Y、符号-和小数点.”等。
LED数字管可分为共阴极和共阳极两种结构。
共阴极就是把二极管的阴极全部连在一起,共阳极就是把二极管的阳极全部连在一起。
千言万语汇成一句话,LED数码管本质就是多个led灯摆成数码形状。
为了在数字管上显示字符,必须在其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,0x90
在程序中,如果继续使用共阴极数码管的字形码,可以通过取反共阴极字形码获得共阳极数码管的字形码。硬件和软件取反共阴极字形码有两种方法:硬件取反是通过反相器实现的;软件取反是通过取反操作符~”实现的。
三、模拟效果和源代码资源
基于Proteus无实物STM32入门自学教程(3)-数字管-单片机文档资源-CSDN下载