继我的上一个博客数码管之后是动态数码管
由于蓝桥杯的特殊设置,具体请看我的初始化解释,所以蓝桥杯的不同数字展示是和其他数码管有区别的,因为蓝桥杯的寄存器比较少,所以就是需要另一个知识来实现这个不同数字显现问题。
那就是利用人眼视觉的暂留效应来实现这个功能
也就是不停转换位选来显现不同位置上的数字,通过分流轮流控制各个数码管的com端,这就是动态驱动
在一定时间范围内,尽管不是同时显示,但扫描足够快,给人印象就是一组稳定的数据。
在我的数码管学习的博客上介绍了数码管的工作原理,我们也就不多哔哔,直接起飞~~~,直接实现程序:
来,我们让数码管显示01234567。
以下是示例程序(附上注释):
#include "reg52.h"
sbit P25=P2^5;
sbit P26=P2^6;
sbit P27=P2^7;
sfr AUXR =0x8E;
unsigned int yi,er,san,tt,num;
unsigned int code tab[12]={
0xc0,
0xf9,
0xa4,
0xb0,
0x99,
0x92,
0x82,
0xf8,
0x80,
0x90
};
/*void main(){小小的演示,演示一下切换位选
P2=0xa0;P0=0x00;
P2=0x80;P0=0xff;
//P25=0;P26=1,P27=1;
P2=0xc0;
P0=0x01;//0000 0001
P2=0xff;
P0=tab[0];
}*/
void delayms(int ms){
int i;
while(ms--)
for(i=0;i<628;i++);
}
void main(){
P2=0xa0;P0=</