数码管动态显示原理 (如何让数码管的动态扫描慢一点)
可以没有任何障碍的情况:1 ,询问2 ,显示第一个位3 ,显示第二位5 ,第二位5 ,延迟(2 ms)6 ,显示第三位7 ,延迟(2 ms))8 ,第四位9 ,延迟(2 ms)显示1 0,增加数字(在此处设置寄存器以添加1 ,并且仅在1 000计数时 显示的价值将增加,因此当价格提高4 秒时显示的价格)跳到1 1 ,步骤251单片机数码管静态显示和动态显示原理及实验
非移动显示和动态管是两种常见的显示方法。本文讨论了这两种方法的基本原理和实验方法。
在统计模式下,每个数字管的帐户选择和一个小选择将通过一个小选择来监视。
通常,每个数字试管将携带UPE选择线和分离线,以控制大型端口端口的端口。
它的更新频率是稳定的,但是需要更多的I / OS且价格昂贵。
数据筛选方法可能会在每个数字管显示的数字管显示的最短时期迅速变化,因此人会持续演示眼睛。
在变量显示器中,每个数字管显示器都会通过一小条线选择来监视,类选举由7 4 EC2 5 (例如7 4 EC2 5 )驱动。
这种方法的好处是I / O成本很低,但是显示的效果会影响危险的频率。
在可变的显示模式下,通过连接J1 6 子等级连接DeadE选择。
7 4 天 /芯片类负责监视内部内部内部内部数字管的选举和选举,并控制数字管的一部分。
可以在此变量屏幕中定期查看数字管。
珠宝工作场所实际上可以在桌子上看到。
如果较低,则启用各种AAA1 A2 的控制输出。
例如,如果A0A1 A2 与Y0输出有关,和001 (二进制1 (二进制1 (二进制1 )(二进制1 (二进制1 (二进制1 ),二进制1 (二进制1 (二进制1 )(二进制1 (二进制1 (二进制1 ))二进制1 ),相当于十进制数字的小数。
什么是数码管动态显示
该实验的实验地图上的板周围的资源如下:其中P0端口是一个段代码,在低级别上有效。P2 端口是一个位代码,价值高。
P2 .0端口将第一个数字管控制到P2 .7 端口控制第八个。
该板的段代码表如下:每个数字管从P0 Harbor输出的段代码,即,代码输入本本SE数字管的片段是相同的。
为了使它们不同的数字可以动态显示。
这只是延迟时间后要显示的最低位置(包括点),以及第二个最低位置在1 中显示,仅显示最低位置1 ,因此显示了第二个最低位置1 ,因此,其次,最低位置在1 中显示,第二点显示为1 ,也是如此。
只要延迟时间短,足够的数字显示就可以查看稳定且清晰的,只要延迟时间停留。
该过程在下面。
上述措施和想法是编写的,org5 0000h开始:Mova,#08 H; 0; 段代码MOVI,A MOVP2 ,#01 H,#0ABH,1 MOVP0,#02 H,#02 H,#0 2 0H LCALLDELAY_1 MS MOVA:1 2 H; 2 MOVP0,A MOV3 ,#04 H LCALLDELAY_1 MS MOVA,#2 2 H,3 MOVP0,A MOVP0,A MOV3 ,#08 H LCALLDELAY_1 MS MOVA,#0A1 H,#0A1 H,#0-1 0,#1 0H LCALLDELAY_1 MS MOVA MOVA,#0-1 0:4 LCALLDELAY__1 MS MOVAS MOVA#4 H,5 movp0,a mov3 ,#2 0H lcalldelay_1 ms mova,#04 H; 6 movp0,a mov3 ,#4 0H lcalldelay_1 ms,move,#0aah,7 ,我觉得0aah的意见,7 ,我觉得#0aah; 我觉得以下观点0aah,7 ,我觉得,#0aah; 我觉得0aah,7 ,我觉得,0aah的观点:我觉得0aah,7 ,我觉得,#0aah,7 ,我觉得,我觉得,0aah,07 ,7 ,我觉得,#0aah ,我觉得7 aah,7 岁,我觉得,#0aah,我觉得这是7 aah,7 ,而在这种观点中,0aah句子是 还实施,这种习惯在将来的移动中可能会有所帮助,#8 0H lcalldelay_1 ms ljmpstart ljmpstart ljmpstart on_1 mms:movr6 ,#2 ,$ djnzr6 ,#0ffr6 ,在低数字显示0至7 (包括点)的帐篷上,它在低位数显示的帐篷上。
★上限一个接一个地将值分配给P0或P2 一方面,复杂的程序在另一方面增加,该程序的灵活性将降低。
如果要更改显示号码,更改程序非常麻烦。
因此,我们需要在5 1 微控制器,表查找方法中使用共同模式。
对于P0端口中的输出段代码,我们可以分割表上显示的代码,然后可以从该表中的数字发送并发送P0端口。
通过在P2 端口中输出一些代码,您可以在此表中放置一些位代码,并在此表中从该表中拿出一个数字,然后发送P2 端口。
这意味着,如果您想更改数字,则只需要更改表上的数字即可。
org000000h启动:movr7 ,#0ffh; R6 ,R6 查看表格,即索引注册(0fallPlay1 ,#0fallPlay1 ,#0fhh,lcallPlay1 ;#0ffHH,lcallPlay1 ; callPlay callplay显示段段sent段代码subroutine lcAllplay2 ,callplay _prollia subRoulia subRoutine subRoutine lcalloutine lcalldine lcalldelay__1 mms cjneaea cjneaea cjneaea cjnea cjnea cjnea cjnea,scjnea,#是否到左数,有8 位代码ajmpartart Play1 :: 搜索表并查找段subroutine,r7 ; ,基本寄存器加上索引寄存器电子MOVP0,r /R。
搜索表BitCode子例程(与Play1 相同)movdptr; movdr6 , @ a + dpt2 ,R。
tabula1 :db08 h,0abh,1 2 h,2 2 h,0a1 h,2 4 H,04 H,0aAh,段代码,04 H,04 H,1 0H,2 0H,2 0H,2 0H,4 MH,8 H#0FFR4 #0ffr4 #0ffr4 #0ffr4 #0ffr4 #0ffr4 #0ffr4 # ,#0ffr4 ,#0ffr2 r4 ; #0ffr4 :#0ffr5 ,0ffr4 :#0ffr5 ,0ffr4 ,#0ffr5 ;movr4 :#0ffr2 r4 ,#0ffr4 ,#0ffr5 :$ djnzr5 ,temp r下载到板上以验证并获得预期结果。
----------------------------------------------------------------------------- ----------------------------------------------------------------------------- ----------------------------------------------------------------------------- ----------------------------------------------------------------------------- ----------------------------------------------------------------------------- ----------------------------------------------------------------------------- ------包括
写入通用表单,dis_index = dis_index&0x07 此模式是非常新的。
我第一次看到十六进制7 二进制(8 )1 01 ,因此循环可以控制操作。
被发现和0x01 然后,它在0x07 之后变为0x00,以便再次将此句子替换为if(dis_index == 8 ) 是一样的。
它的想法很明确,结构很清楚,它的用途广泛且易于扩展。
★进一步,程序的延迟延迟,延迟(M)并将其下载到板上,您可以将其视为数字管实际上显示了一些从低显示到高显示。
----------------------------------------------------------------------------- ----------------------------------------------------------------------------- ----------------------------------------------------------------------------- ----------------------------------------------------------------------------- ----------------------------------------------------------------------------- ----------------------------------------------------------------------------- ------关于下标的其他位置的0到7 的值,没有设置缓冲区阵列dis_buf [],以下实现: #include
//如果等于0x01 ,则p2 .0端口数字管中的栅极unsignedchcodedis_code [xi] = {0x08 ,0xab,0x1 0; 0x2 2 ,0xa1 ,// 0,1 ,2 ,3 ,4 0x2 4 ,04 ,04 ,0AA 0x00,0x0.0,0,0ff}; // unsignedchardatadis_index享受5 ,6 ,7 ,8 ,9 ; //显示索引,因为标识当前显示的数字管和缓冲区Vougmain(){p0 = 0xff; //关闭所有数字代码管P2 = 0x00; dis_index = 0; //当前偏移到0 dis_digit =0x01 ,//阅读p2 0 {p0 = dis_code p0 p2 = dis_digit,//代码发送p2 端口pers pre ss(1 ); dis_digit = _crol_(dis_digit,1 ),//在网关++中bit; 下一位是门控dis_index ++; dis_index&= 0x07 ;}} // subnixe程序(Crystal振荡器1 2 m){unsigningchari; while(ms--){and(1 = 0; 1 ★(dis_index = 0; dis_index <8 ; dis_index ++)的方法{p0 = dis_code [dis_index]:// segmentum代码发送p2 p2 p2 = dis_index +1 ; // p2 dis_index + 1 ,//},可以获得总是不好的:0三位数达到三个位置,三个8 s,第三位数显示了7 个及以上的位置 未显示四个手指。
补充:我今天再次查看,发现当时有错误的情况。
段代码为dis_code [0,即0,当第二位显示1 时,位代码为1 这次。
因此,简单地使用添加1 个活动将偏移值端口P0与P2 的位代码相关联。
但是,如果您仔细地想到开始的开始,上述方法显然是错误的。
只是知道一个步骤并理解2 ,即,当第三位显示2 时,该段为第三(2 ]:dis_idex值为2 ,添加1 后,当以下上限为3 ,将此3 用作位代码,而正确的代码为4 (0001 00B)。
dis_index virtue 2 这是0--1 1 -2 2 -4 3 -8 4 -8 MATH.H中包含的操作办公室floatpow(floatx,floaty)的功率,收入价值为xy(xy) floatType)to(dis_index = 0; dis_index <8 ; dis_index ++){p0 = dis_code [dis_index]; p2 =(char)pow(2 ,dis_index); //位代码发送P2 端口dailares(2 5 5 );}再次下载并找到仍然是问题的问题,也就是说,当延迟很小时,显示但是,如果程序中的延迟)在程序中的价值),以估算程序中的估值)在程序中的价值(作为程序中的值)到程序的值)达到价值 该程序是(作为程序的值)以在程序中的价值),您可以看到数字管正确显示。
此外,该方法生成的代码量也非常重要(显然写速)。
这里只提出了一个,并且在本实验中不适用,并且有一点意义,因此所有这些。
[补充端] ------------------------------------------------------------------------------------------------------------------------------------------------------ ----------------------------------------------------------------------- ------------------------------------------------------------------------------------- --------------------------------------------------------------------------- --------------------------------------------------------------------------- ------------------------------------------------------------------------ ----------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------- ----------------------------------------------------------------------------- ----------------------------------------------------------------------------- -----参考修改对董事会的修改,程序如下:#include
晶体振荡器为1 2 m,输入脉冲周期间隔为1 U。
1 us和周期是一个周期。
假设T0的初始值为1 0,计算初始值:在此示例中,计时器体验方法1 ,即1 6 位6 6 6 06 ,如果此值等于6 5 6 3 6 = 6 5 )审讯,并输入中断程序。
在这里,如果要延迟1 ms,即1 000US,则没有公式2 1 6 -1 0 = 1 000,您可以获得x = 6 4 3 6 ,即在FC1 8 的刺激中,即最初的hexadecimal到fc1 8 ,ID在HexadeCimal 0xfc,TL0 = 0x1 8 处是初始的。
也就是说,恐惧从6 4 3 3 6 开始计算,而1 ,000个计数后6 5 5 3 6 的价值。
狮子中断并完成。
输入SubRoutin的启动过程后,替换了初始值和循环。
在上面的示例中,加载的初始值或FC1 8 (6 4 5 3 6 ),但FC1 7 (6 4 5 3 5 )。
我认为这是您计数范围为0〜6 5 5 6 5 的原因,我还考虑了这个问题。
如果我使用2 1 6 计数初始值=中断距离或使用= interpolabant? 从随便的时候,我写了几本书,但前者被更多地使用了,我认为前者更合理,因为1 6 位二进制的计算机可以代表6 5 3 3 6 所有BIIIEM均为6 5 5 3 5 H = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 b,也可以说6 5 5 3 6 是通过溢出获得的。
当答案是响应中断密钥时。
如果初始值为6 3 5 (FC1 7 ),则以示例为示例,而计数为6 5 3 5 ,则在这段时间内不受欢迎。
没有触发中断。
不仅是在下一个计数之后。
精确值为1 001 U。
如果初始值为6 3 6 (FC1 8 ),则确切的必需值,因此示例的初始值为FC1 8 而不是FC1 7 这意味着我的意见。
好像在这种情况下,仍然需要验证。
----------------------------------------------------------------------------- ----------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------- ######################## #################### ################################ :★电路段代码对应于 板载连接方法,即先前的段代码表订单连接。
此外,这八位数字模拟的数字管的最左端是第一个尊严和八度的末端,即板的顺序,这是董事会的顺序,因此数字的均匀性。
上图还可以在不增加电阻的情况下模拟结果,但是高水平的P0端口显示为灰色,即高电阻。
多位数码管动态显示原理
视觉保留效果,位置选择控制,段选择控制等。1 视觉保留效果:人眼具有特殊的视觉保留效果。
这意味着图像在短时间内保留在视网膜中,形成连续的视觉效果。
这种效果允许在多元数字管的显示器之间快速切换,以防止每个数字管的显示时间,以及只有整个数字管的连续显示效果。
2 位选择控制:每个数字管都有一些位选择引脚来选择要显示的数字管。
在动态显示过程中,将位选择引脚切换到每个数字管,一个一个一个一个一个一个一个点启动。
控制位允许您选择高水平和低水平的引脚,然后选择要显示的数字管。
3 段选择控制:在每个数字管中,都有多个段选择引脚来控制数字管的特定显示。
细分选择销钉控制高水平和低水平,以点亮或关闭数字管的各个段。
根据您对显示数字或字符的要求,相应的片段选择引脚被控制高或低,以照亮相应的段。