视觉暂留程序
『壹』 在单片机里怎样解决数码管的余晖效应
有两种可能:一是你的程序有问题,扫描时送给同一个数码管的值是变化的。
二就是硬件问题,电流太大或者换个型号的数码管试试,FPGA和单片机我都做过数码管显示,还没有遇到这样的问题。
『贰』 数码管动态显示程序设计时,延时程序有什么作用,延时时间的长短对其显示效果有什么影响
延时程序的来作用是保持当前显示自数码管足够时间,同时稳定显示效果,以形成视觉暂留。延时时间长短视具体情况而定,一般要大于2毫秒,所有数码管一次扫描完成总时间不能大于40毫秒,40毫秒基本上是人眼视觉暂留的极限了。
『叁』 关于单片机动态显示的,下面是我编写的程序但是很闪,求高手帮助
调整第个字的显示时间及显示出所有字符后停留的时间。你这第个字的显示时间delay(3000)有点长了。自己慢慢试试。别着急
『肆』 基于8086的汇编语言延时程序
again:
mov cx,9875h
loop again
你可以试试感觉对否?或者:
again:
mov cx,9875h
nop
loop again
『伍』 关于单片机设计模拟交通灯的数码管显示问题及程序
数码管,也称7段数码管,分为ABCDEFG,7个字段,通过字段的点亮显示不同的数字。
数码管又分为:共阳极数码管和共阳极数码管,根据需要自己选择。
关键还是字段的驱动,根据人眼的视觉暂留,通过对IO口的高速扫描,实现数字的显示。
显示--单片机IO口--编码
0 -- 0011,1111--0x3F
1 -- 0000,0110--0x06
2 -- 0101,1011--0x5B
3 -- 0100,1111--0x4F
4 -- 0110,0110--0x66
5 -- 0110,1101--0x6D
6 -- 0111,1101--0x7D
7 -- 0000,0111--0x07
8 -- 0111,1111--0x7F
9 -- 0110,1111--0x6F
也就是如下的形式,16进制的显示,对应单片机IO口的关系:
显示值: 0 1 2 3 4 5 6 7 8 9 a b c d e f
IO口值:0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71
『陆』 怎么用C语言程序使双位数码管显示出稳定的数字
可能原因:1.你的延时时间可能太短,超过人眼视觉暂留时间,你可以改你的delayms(3)或者直接把delay 函数里的110改小一些(当然改了110就不是1ms一次了,不过本身就不是精确计时无所谓)
2.你的数码管开关顺序不对,不知道你用的是共阴还是共阳,不过一般是写完数据后再开数码管控制位,如果你的程序里1是开,0是关的话,那么这个程序相当于是两个数码管在P1=table之后会有一个同时工作的时间,之后才关断其中一个,这时数码管的显示会受到影响。推荐编写顺序是shu12=0;
shu11=1;
P1=table[shi1];
delayms(5);
shu11=0;
shu12=1;
P1=table[ge1];
delayms(5);这样保证一个时间内只有一个数码管工作,新写入的数据不会对另一个数码管造成影响。下面的程序同样采用这种顺序。
3.虽然可能性不大,不过也有可能是硬件电路的连接接触不良导致的信号跳变,这个万用表测下就能知道了
『柒』 为什么在单片机中要用到延时程序
这个原因还是蛮多的,分同的情况,单片机的处理速度是很快的,有的时候为了让我们便于观察需要加入延时,例如一个指示灯的亮灭,如果不加入延时是看不出来的,再有就是键盘去抖动,一般按键都有20ms左右的抖动,为了更好的检测防止干扰,也需要延时一段时间在进行判断,总之延时的作用在不同的情况下也不同
『捌』 静态显示与动态显示在硬件电路和程序编写上的区别区别
常用的LED显示器有LED状态显示器(俗称发光二极管)、LED七段显示器(俗称数码管)和LED十六段显示器。发光二极管可显示两种状态,用于系统状态显示;数码管用于数字显示;LED十六段显示器用于字符显示。
1. 数码管简介
1) 数码管结构
数码管由8个发光二极管(以下简称字段)构成,通过不同的组合可用来显示数字0 ~9、字符A ~ F、H、L、P、R、U、Y、符号“-”及小数点“.”。数码管的外形结构如下图所示。数码管又分为共阴极和共阳极两种结构。
2) 数码管工作原理
共阳极数码管的8个发光二极管的阳极(二极管正端)连接在一起。通常,公共阳极接高电平(一般接电源),其它管脚接段驱动电路输出端。当某段驱动电路的输出端为低电平时,则该端所连接的字段导通并点亮。根据发光字段的不同组合可显示出各种数字或字符。此时,要求段驱动电路能吸收额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。
共阴极数码管的8个发光二极管的阴极(二极管负端)连接在一起。通常,公共阴极接低电平(一般接地),其它管脚接段驱动电路输出端。当某段驱动电路的输出端为高电平时,则该端所连接的字段导通并点亮,根据发光字段的不同组合可显示出各种数字或字符。此时,要求段驱动电路能提供额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。
3) 数码管字形编码
要使数码管显示出相应的数字或字符,必须使段数据口输出相应的字形编码。对照图7.10(a),字型码各位定义为:数据线D0与a字段对应,D1与b字段对应……,依此类推。如使用共阳极数码管,数据为0表示对应字段亮,数据为1表示对应字段暗;如使用共阴极数码管,数据为0表示对应字段暗,数据为1表示对应字段亮。如要显示“0”,共阳极数码管的字型编码应为:11000000B(即C0H);共阴极数码管的字型编码应为:00111111B(即3FH)。依此类推。
2.静态显示接口
静态显示是指数码管显示某一字符时,相应的发光二极管恒定导通或恒定截止。这种显示方式的各位数码管相互独立,公共端恒定接地(共阴极)或接正电源(共阳极)。每个数码管的8个字段分别与一个8位I/O口地址相连,I/O口只要有段码输出,相应字符即显示出来,并保持不变,直到I/O口输出新的段码。采用静态显示方式,较小的电流即可获得较高的亮度,且占用CPU时间少,编程简单,显示便于监测和控制,但其占用的口线多,硬件电路复杂,成本高,只适合于显示位数较少的场合。
3.动态显示接口
动态显示是一位一位地轮流点亮各位数码管,这种逐位点亮显示器的方式称为位扫描。通常,各位数码管的段选线相应并联在一起,由一个8位的I/O口控制;各位的位选线(公共阴极或阳极)由另外的I/O口线控制。动态方式显示时,各数码管分时轮流选通,要使其稳定显示,必须采用扫描方式,即在某一时刻只选通一位数码管,并送出相应的段码,在另一时刻选通另一位数码管,并送出相应的段码。依此规律循环,即可使各位数码管显示将要显示的字符。虽然这些字符是在不同的时刻分别显示,但由于人眼存在视觉暂留效应,只要每位显示间隔足够短就可以给人以同时显示的感觉。
采用动态显示方式比较节省I/O口,硬件电路也较静态显示方式简单,但其亮度不如静态显示方式,而且在显示位数较多时,CPU要依次扫描,占用CPU较多的时间。
『玖』 用单片机开发板能否把流水灯数码管动态显示结合起来,两个程序中都有while(1),不知道怎么结合,
在while(1)里分段执行流水灯及数码管就好了,注意延时的共用问题就好了,流水灯的延时应该大于数码管,因为数码管是动态的,要注意视觉暂留及消隐问题
『拾』 单片机用余晖效应实现6个数码管的动态显示(计时器)
1.数码管显示,是利用人眼的视觉暂留效应。不足余辉,白炽灯断电后还亮一会版,才是余辉,这权可是有区别的,不可混淆。
2.这是利用定时器T0定时1ms来实现数码管动态显示的。用查询法,1ms到显示一位,实现你说的间隔1ms显示。
3.数码管的位控是用译码器74LS138的。
4.虽然是书上的程序,但现在的有关单片机的书,真是良莠不齐,这也只是叫一段代码吧,是最烂的程序。电影每年都评最烂片吗,这可评上最烂程序啦!