51单片机数码管显示问题
shuma=a[d1];LED_1=0;delay_ms(1);LED_1=1;这是四位数码管第一位的显示,为什么led=0后还要再等于1啊...
shuma=a[d1];
LED_1=0;
delay_ms(1);
LED_1=1;这是四位数码管第一位的显示,为什么led=0后还要再等于1啊 展开
LED_1=0;
delay_ms(1);
LED_1=1;这是四位数码管第一位的显示,为什么led=0后还要再等于1啊 展开
展开全部
采用这种方式一般都是所谓的动态扫描显示,往往不止一个数码管。一个数码管8段加一个公共端需要9根口线才能完全显示任意数字,为了节省IO口线,就利用了人眼视觉驻留的原理(就像电影胶片每秒24帧,连续起来播放你觉得没有任何间断),每一位数码管显示一会儿,然后关掉它,再去显示下一个数码管。只要保证在1秒内每个数码管能扫上个十几次二十几次,视觉上就好像同时点亮了所有数码管了。
你这段程序就是这种方式:
shuma=a[d1]; //送第d1位数码管的段码,d1范围是0~3共4位
LED_1=0; //打开d1位数码管显示允许,数码管被点亮
delay_ms(1); //保持显示1ms
LED_1=1; //关闭d1位数码管显示,准备显示下一位
你这段程序就是这种方式:
shuma=a[d1]; //送第d1位数码管的段码,d1范围是0~3共4位
LED_1=0; //打开d1位数码管显示允许,数码管被点亮
delay_ms(1); //保持显示1ms
LED_1=1; //关闭d1位数码管显示,准备显示下一位
追问
如果不关闭会怎样呢?想象一下,没想出来
追答
因为是四个数码管,每个数码管送显示的内容是第一句shuma=a[d1];所决定的,每一位显示的内容不一样,而每个数码管的8段的控制线全部连载一起(比如四个数码管的小数点的dp线就连在一起),所以如果不关闭,比如本来给第一位数码管送0,其它3个数码管同样也会显示0,然后给第2个送1,其它3个同样会显示1.。。。。这样下来,你所看到的就是四个数码管都一样,而且显示的也不知道是什么内容,举个例子,比如你四位送的数只包含两个数1和5,实际看到的是4个9,如果只包含1和2,看到的则是关于Y轴的镜像6了。总之就是叠在一块儿了。你可以修改程序体验一下。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果不关闭,第二个数码管得数字也在第一个数码管中显示!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
锁存器吧。关掉后。还要给继续给别的复制、
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
等于零显示,然后置一关掉,再显示下一位吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询