共阴极就是吧二极管的阴极全部连在一起,共阳极就是把二极管的阳极全部连在一起。
千言万语汇成一句话,LED数码管本质就是多个led灯摆成了数码的形状而已。
那么写程序的时候还是跟上一讲一样吗?当然不是,否则就不需要再讲了。我们有另外一种简便的写法。就是事先把这些abcdefg的状态集体做成数组,方便我们来下一步使用。数码管的字型编码,要使数码管上显示某个字符,必须使它的8个位段上加上相应的电平组合,即一个8位数据,这个数据就叫该字符的字型编码。 通常用的位段的编码规则如下图所示。
共阴极和共阳极数码管的字型编码是不同的,对于同一个字符,共阴极和共阳极的字型编码是反相的。下图给出来led数码管共阳极的数据00-08,09请同学们自行补充。
一、Proteus仿真图
仿真数码管会在00和99之间循环显示。其中74LS245为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