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啊
展开
 我来答
lylxy1965
2011-08-03 · TA获得超过2413个赞
知道小有建树答主
回答量:436
采纳率:100%
帮助的人:222万
展开全部
采用这种方式一般都是所谓的动态扫描显示,往往不止一个数码管。一个数码管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];所决定的,每一位显示的内容不一样,而每个数码管的8段的控制线全部连载一起(比如四个数码管的小数点的dp线就连在一起),所以如果不关闭,比如本来给第一位数码管送0,其它3个数码管同样也会显示0,然后给第2个送1,其它3个同样会显示1.。。。。这样下来,你所看到的就是四个数码管都一样,而且显示的也不知道是什么内容,举个例子,比如你四位送的数只包含两个数1和5,实际看到的是4个9,如果只包含1和2,看到的则是关于Y轴的镜像6了。总之就是叠在一块儿了。你可以修改程序体验一下。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
广飇22
2011-08-03 · 超过10用户采纳过TA的回答
知道答主
回答量:62
采纳率:0%
帮助的人:35.3万
展开全部
如果不关闭,第二个数码管得数字也在第一个数码管中显示!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友e794d70
2011-08-03 · 超过18用户采纳过TA的回答
知道答主
回答量:79
采纳率:50%
帮助的人:24.7万
展开全部
锁存器吧。关掉后。还要给继续给别的复制、
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
大草原黄花菜
2011-08-03 · TA获得超过1587个赞
知道小有建树答主
回答量:1479
采纳率:40%
帮助的人:880万
展开全部
等于零显示,然后置一关掉,再显示下一位吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式