51单片机中在编写数码管动态显示时,书上是这样做的: 打开段选,送段选数据,关闭段选,消影,打开位 51单片机 数码管段选写法

作者&投稿:检鲁 (若有异议请与网页底部的电邮联系)
按照你的顺序来说,输出下一位数字时是会在上一位的数码管上显示一会儿的,因为你先打开的是段选。所以在送下一位段选信号时,位选仍然保持在上一位数码管那里,但是由于程序运行很快,所以你只看到上一位数码管会隐隐约约的显示下一位数字;由于显示正确数据加了延时,使得正确的显示时间比较长,所以你看到会很清晰,而下一位的数据虽然也加了进来,但显示时间很短(约1uS,视晶振频率而定),所以你会看到数码管会隐约显示下一位的数字。这也就是为什么加延时的原因,延时之后,正确的数字显示时间长一点,显示就会清晰一点;如果你没有延时,那么数码管显示就会比较暗,而且你会发现显示出来的数字有点乱。

没错呀!位选不打开数码管上是不会显示数据的,延时是为了让你看到显示的数据,要不你看到的就是好几个重叠的显示了!延时时间依据视觉停留,要大于它!

不会乱,打开段选,端口为上一次的位选数据,然而端口马上陪被赋予新的短选数据,这时你的位选还没打开,所以不会乱

书上讲的不好,我的做法是 关闭位选,送入数据,打开相应位选, 另外,我的程序中,如果不是遇到通信需要延时外,我从来不会去加延时函数

单片机读程序的速度是很快的,不延时的话是看到两个数字一起显示

数码管动态显示中为什么一定要先送段选数据再送位选数据?请详细回答~

如果你是用单片机自己编程驱动数码管,那无所谓先段选还是先位选,反正都得两者选通了数码管才能亮。

如果用的数码管驱动芯片,那要看该驱动芯片的数据格式是怎样的了,不同的芯片是不一样的。去下载芯片的Datasheet,里面会详细说明数据格式。

实际中的写法,差不多都是先送数据再送使能的,
这个区别,没有原理可以说的,按照实际效果决定的
非要说原理,就是使能之後,由於上一次数据没有清空,数码管显示上一个数据,然後再送数据才显示当前数据,在视觉上就会有“残影”

51单片机中在编写数码管动态显示时,书上是这样做的: 打开段选,送段选...
答:按照你的顺序来说,输出下一位数字时是会在上一位的数码管上显示一会儿的,因为你先打开的是段选。所以在送下一位段选信号时,位选仍然保持在上一位数码管那里,但是由于程序运行很快,所以你只看到上一位数码管会隐隐约约的显示下一位数字;由于显示正确数据加了延时,使得正确的显示时间比较长,所...

单片机 汇编 LED数码管动态显示
答:所谓的动态显示就是:led灯按设定的循序不停的一个一个(一个数用一块八段管)数的输出显示,由于led灯的闪烁速度很快,而人的眼睛最多只能识别0.2秒间隙以上的变化。那么在人看来,不停闪烁的led管就像是静态显示一样。图中,段控制和位控制分时复用P0口,选用两个锁存器573来分开段控制和位控制...

C语言单片机代码 数码管动态显示
答:那就要看你设计程序时定义数组的作用才能确定.table[1]对应的元素为0x06,是十六进制数,转换成二进制数是00000110B,分别对应于数码管的Dp、g、f、e、d、c、b、a 脚,所以在共阴数码管上点亮b、c两段,显示的是数字1,其它同理。

单片机数码管动态显示的过程中,怎么实现让其中一个闪烁,其他的不受影...
答:1 单片机数码管动态显示的过程中,设置一个闪烁寄存器,专门保存要闪烁显示的位子,再增加一个闪烁显示码的暂存器。2 每次调用显示程序时,先要判断需要显示闪烁的位子的显示码,是不是等于“灭”的显示码,不是的话,将该位的显示码送闪烁显示码的暂存器进行保存,将“灭”的显示码送入相应的显示缓冲...

51单片机数码管,用动态显示0到123怎么编程?
答:0-123,需要三位数码管。include<reg51.h>#define uchar unsigned char;uchar distab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; //0到fuchar number,dat[3],nn=0,cnt=0;;void t0isr() interrupt 1{TH0=(65536-5000)...

单片机数码管动态显示
答:下面是用段选和位选的数码管动态显示程序,可以参照下写法 include <AT89X51.H> unsigned char dispbitcnt; //数码管位码扫描变量 unsigned char second;//秒变量 unsigned char minite;//分变量 unsigned char hour;//时变量 unsigned char tcnt;//秒信号产生变量 unsigned char mstcnt;/...

C语言单片机代码 数码管动态显示
答:或者 在别的函数里面有用到 你仔细看你的程序……P0=table[1],意思就是说 往P0里面送table这组数里面的第2个数也就是0x06,0x06正好是共阴数码管显示1的编码。所以数码管就会显示1,同理 table[2]就是显示2的编码,需要注意的是table[0]指定的是table里面的第一个数。

用51单片机控制4位一体数码管实现1234轮流显示的程序代码是什么,求!pro...
答:下面是使用AT89S51单片机控制4位一体数码管轮流显示1234的程序代码:```c include <reg51.h> // 数码管显示字型码表 unsigned char code LEDDisplay[] = { 0x3F, // 0 0x06, // 1 0x5B, // 2 0x4F // 3 };sbit DIO = P1^0; // 串行数据输入 sbit RCLK = P1^1; /...

电路如下图请问单片机动态数码管显示C语言程序怎么写呢?
答:code unsigned char tab[]= {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共阴数码管 0-9 unsigned char Dis_Shiwei;//定义十位 unsigned char Dis_Gewei; //定义个位 /***/ /* 延时函数 */ /***

求一个51单片机汇编程序,让四个数码管动态显示1 2 3 4,不是静态轮流显 ...
答:w1=1;w2=0;w3=0;P0=table[*(shuzi+1)];delay_nms(40);w0=0;w1=0;w2=1;w3=0;P0=table[*(shuzi+2)];delay_nms(40);w0=0;w1=0;w2=0;w3=1;P0=table[*(shuzi+3)];delay_nms(40);} void main(){ uchar ii[4]={1,2,3,4};while(1){ DisplayShumaguan(ii);} } ...