如何实现LED数码管的动态扫描显示?
为了实现LED数字管的动态扫描显示,您可以按照以下步骤进行操作:1 硬件连接布局设计:将LED数字管的段代码末端连接到微控制器的P0端口,以控制数字管的每个段的开放和到期,从而显示不同的数字或字符。位代码控制:将数字管的位选择端连接到微控制器的P2 端口,以控制哪个数字管点亮。
通过更改P2 端口的输出状态,可以依次选择和点亮不同的数字管。
2 扫描原理扫描方法:使用动态扫描,即按一定顺序和时间间隔按顺序点亮每个数字管。
由于人眼的视觉保留效果,当扫描速度足够快时,人眼将看到稳定的显示效果。
扫描频率:通常,应将扫描频率设置在每秒数十个和数百次之间,以确保稳定的显示效果并且没有明显的闪烁。
3 编程实现初始化:程序中的微控制器的I/O端口初始化,并将P0和P2 端口设置为输出模式。
段代码设置:根据要显示的数字或字符设置P0端口的输出状态,以控制要打开和关闭的数字管的各个段。
比特码扫描:通过循环或计时器中断更改P2 端口的输出状态,从而选择并点亮不同的数字管。
延迟处理:点亮每个数字管后,添加适当的延迟以确保适度的扫描速度并避免闪烁。
循环扫描:将上述步骤封装到循环中并反复执行以实现连续的动态扫描显示。
通过上述步骤,可以实现LED数字管的动态扫描和显示。
在实际应用中,基于特定的硬件平台和显示需求,也可能需要进行适当的调整和优化。
什么是LED数码显示中的静态、动态显示技术?各自特点是什么?
数字管道的静态视图意味着每个数字管道的驱动水平不会改变,我们知道该数字管道的价值将会改变。动态观看是利用人眼的缓慢反应。
数字管道依次出现一段时间,例如2 0ms。
效果似乎是同时正在照亮更多的数字管道(实际上,只有一个被点亮,其他人可以联系)。
静态屏幕的亮度更明亮,并且具有大量功耗。
动态屏幕的亮度稍差一些,但是屏幕截图的数量很大。
请注意不要低于5 0Hz,最好高于6 0Hz,否则您会看到数字管眨眼。
简而言之:1 静态屏幕需要更多的驾驶员电路。
成本要高得多。
该软件更加方便。
2 动态屏幕实际闪烁。
许多人在眼中感到舒适。
静态查看没有问题。
3 静态屏幕的输出光强度很高。
室外LED屏幕几乎是静态而动态的。
扩展信息:LED屏幕1 区域延展性的好处。
LCD区域很大,很难实现无缝剪接。
可以根据需要扩展LED屏幕,并实现无缝接头。
2 LCD等离子体屏幕的发光通量减弱非常快。
通常,必须在操作大约一年半后将其替换,但是在相同的操作条件下,LED屏幕已经运行了至少五年。
3 . LED Flushing Machine可以使用交互式技术来改善屏幕冲洗机作为广告媒介和广告受众的相互作用,例如调整触摸屏,实现射击技术广播控制管理的管理等。
4 到达时 - 屏幕。
LED冲洗机通常用于机场,购物中心,酒店,高速轨道,地铁,剧院,展览,办公楼等。
目标客户具有强大的消费能力,并且具有巨大的广告价值。
数码管显示技术:静态与动态
数字管显示技术是数字显示的常见方法。在本文中,提出了数字管的静态和动态显示方法及其优势和缺点。
&#1 2 8 1 6 1 ;数字管的静态显示的静态显示意味着每个数字管的驱动水平保持不变,直到值变化为止。
它具有高亮度,但消耗了很多电力。
&#1 2 7 7 4 4 ;数字管动态显示的动态显示使用了人眼的短视觉停留,因此可以在一定时间段内显示数字管,例如B. 2 0 ms,导致幻觉是几个数字管同时点亮。
它可以指示更多的数字,但亮度略低。
&#1 2 8 06 4 ;预防测量动态扫描频率不应小于5 0 Hz,理想情况下,闪烁应高于6 0 Hz。
什么是数码管动态显示
该实验的实验地图上的板周围的资源如下:其中P0端口是一个段代码,在低级别上有效。P2 端口是一个位代码,价值高。
P2 .0端口将第一个数字管控制到P2 .7 端口控制第八个。
片段代码板本板如下:每个数字管都输出一个P0端口,即每个数字管中的代码输入的片段是相同的。
要显示不同的数字,可以采用动态显示,这只是时间延迟后要显示的最低位置(每个点),然后是第二个低位置1 只要延迟时间短,足够的数字显示就可以查看稳定且清晰的,只要延迟时间停留。
该过程在下面。
上面的方法和想法是:org00000h启动:mova,#08 H; 0;段代码MOVP0P0,A MOV2 ,#01 代码LCALLDELAY_1 MS MOVA,#0ABH,1 MOVP0,A MOVP0,AMOVER,#02 H LCALLDELAY_1 MS MOVA,#1 2 H,A MOVP3 ,#04 H LCALLDEL lcalldel lcalldel ay__1 ms ay_1 ms mova,#2 2 H; 3 movp0,a mov3 ,#08 H lcalldelay_1 ms mova,#0a1 h,4 movp0,a movp2 ,#1 0H lcalldelay_1 ms mova,#1 0H lcalldelay_1 ms mova,#1 0H 4 H; 5 movp0,一个movp2 ,#2 0H lcalldelay_1 ms mova,#04 H; 6 movp0,一个movp2 ,#4 0H lcalldelay_1 ms; Mova,#0AAH,7 MOVP0,A MOVP0,#0AAH; 1 认为,上述两个句子,也许这个习惯在将来的movp2 ,#8 0H lcalldelay_1 ms ljmpstart on_1 ms:movr6 ,#2 临时:movr5 ,#0ffhh djnzr5 ,$ djnzr6 ,$ djnzr6 ,tempe 0ff,tempe 0ff tempe 0ff tempe 0ff tope n of(包括点)(包括点)(包括点)(包括点)(包括点)(包括点)(包括点)(包括点)(包括点)。
★上限将值分配给P0或p2 一方面,复杂的程序增加了,另一方面,灵活性程序将减少。
如果要更改显示号码,更改程序非常麻烦。
因此,我们需要在5 1 微控制器,表查找方法中使用共同模式。
对于P0端口中的输出段代码,我们可以分割表上显示的代码,然后可以从该表中的数字发送并发送P0端口。
通过在P2 端口中输出一些代码,您可以在此表中放置一些位代码,并在此表中从该表中拿出一个数字,然后发送P2 端口。
这意味着,如果您想更改数字,则只需要更改表上的数字即可。
,org0000h启动:movr7 ,#0ffh; R7 ,R6 查找表格时,它将发送到索引寄存器(因为添加1 后为0,因此FFH为预设)movr6 ,#0FFH循环:lcallplay1 ; CallPlay2 ;呼叫播放,呼叫磁盘子例程lcalldelay_1 ms cjnea,#8 0H,loop; Judgment Whether it to leftmost number, that is 8 th bit code AJMPartart play1 :: Search board segment Code subroutine + DPR, base movs Bitcode Sabroutine: Play1 ) Mova, R6 Inc Movr6 , a MovdPtr, # Table2 Movca, @ A + DPTR Movp2 , A ret Table1 : DB08 H, 0ABH, 1 2 H, 2 4 h, 04 H, 02 H, 04 H, 02 H,04 H,1 0H,2 0H,4 0H,8 0H;位代码表Maderag5 :#02 H;模式1 MS子例程温度:MOGR4 ,#0FFH DJNZR4 ,$ DJNZR5 ,TEMP R下载到董事会以验证预期结果。
------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------- Cum gatum P2 .0 Portus Digital Tube unsignedCharcodedis_code [xi] = {0x08 ,0xAb,0x1 2 ,02 2 .02 ,0a1 ,// 0,1 ,1 ,2 ,3 ,4 0x2 4 ,04 ,04 ,04 ,0aA,0x,0x,0x2 0fffff}; // 5 ,6 ,7 ,8 ,9 折扣unsignedchardatadis_buf [8 ] off // dis_buf在缓冲基础上发送电子邮件unsigningchardatadadis_index; //推送显示索引以识别当前显示的数字管和缓冲区vougmain(){p0 0xff; //关闭所有数字P2 0x000x00; dis_buf [0] = dis_code [0]; dis_buf [i] = dis_code [i]; dis_buf [ii] = dis_code [2 ]; dis_buf [ii] = dis_code [3 ]; dis_buf [4 ] = dis_code [4 ]:dis_buf [v] = dis_code [v]; dis_buf [vi] = dis_code [6 ]; dis_buf [7 ] = dis_code [7 ]; dis_digit = 0x01 ; //第一个门p2 .0 dis_index = 0; //当前偏移量为0 {p0 = dis_buf [dis_indigit p2 = dis_digit,// dis_digit = _crol_(dis_digit,1 ),// bits(dis_digit,1 ); // = _crol_(dis_digit,1 ):// brazil_folia,1 ); //(dis_digit I); //位(dis_digit,1 ),// bit下次庆祝下一次dis_index ++ //然后片段代码dis_index&= 0x07 ; //参见}}}}(unsignedcharm){unsignedcharrit; while(ms--){and(1 = 0; 1 <1 2 0; 1 ++); }}★注意:该短语是一次扫描所有8 个数字管,然后首先开始进行下一次扫描。
写入通用形式:dis_index = dis_index&0x07 此模式非常新。
我第一次看到十六进制7 是二进制(8 )1 01 ,因此循环可以控制操作。
例如,在第一个循环之后,值为dis_index为3 000,在操作后,该值保留,操作后的值保留为0x01 在第二个循环中,其值为0x02 ,在相同的循环之后(仍然为0x02 ),在相同的循环之后,保持在0x07 的值增加。
但是,在循环再次为0x8 0之后,该循环完成为0x00,这再次是原始循环。
可以用(dis_index == 8 )dis_index = 0替换此句子,效果是相同的。
★当通过上述度量的方法实现时,其段代码将放置在dis_buf [1 1 ]的数组中,而dis_buf []的值将其值放置在dis_buf [1 1 ]中,很明显,结构很明显,很明显。
此外,只要延迟(M)并将其下载到Tabula,VOS就可以动画数字瘘管实际上是Ostendi等分的frenum a humilis ad humilis ad altum ostendi。
------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------- // If equal to 0x01 , Porta P2 .0 Ports Digital Tube is unsignedcharcodedis_code [1 1 ] = {0x08 ,0xab, 0x1 2 ,02 .02 ,0a1 , // 0,1 ,2 ,4 0x2 4 ,04 ,04 ,04 , 0x02 ,3 ,4 0x2 4 ,0x04 ,0aa, 0x00,02 0,0ff // 5 ,6 ,7 ,8 ,9 , OFFSIGNEDCHARDIS_INDEX; //显示索引以识别当前显示,以识别显示的数字管和buffer vougmain(){p0 = 0xff; //几乎所有数字代码管P2 = 0x00; dis_index = 0; //当前偏移到0 dis_digit = 0x01 ; // Strobe P2 .0而(1 ){p0 = dis_code send p2 = p2 = dis_digit(1 ); dis_digit = _crol_(dis_digit,1 ); //位门向左转,然后门下一个位dis_index ++; dis_index&0x07 ; }}}} voundElaycs(UnignedCharms)//程序下延迟(Crystal 1 2 m){unsignedChari; while(ms--){and(1 = 0; 1 <1 2 0; 1 ++); }}★我会注意到(dis_index = 0; dis_index = 0; dis_index <8 ,dis_index <8 ,p2 p2 p2 p2 p2 p2 p2 p2 p2 p2 p2 p2 p2 p2 ,p2 ,p2 ,三分之二的四分之三数字没有显示出一些误解。
案例[2 006 .5 .2 ]找出系统,我今天再次看了上方。
当时,我想将dis_index的值对一个位代码使用,这是当第一个位显示0时,段代码为dis_code [0,在此时间为1 的值。
当第二位显示1 时,段代码为dis_code [1 ],ERI_INDEX的值为1 ,此时间为2 因此,简单地使用添加1 个活动将偏移值端口P0与P2 的位代码相关联。
但是,如果您仔细地想到一些开始,这很明显。
只是为了验证您理解的一步。
这是第三位显示2 时,段代码为dis_code [2 ],dis_index值2 ,在添加1 (0001 00B。
)中的1 个添加1 之后,因此出了点问题。
In fact, the correspondence of a relationship is, but not only adds I. The bit code is a dis_Index virtue 2 . What is: 0--1 1 -2 2 -4 3 --8 4 --1 6 in the power of operation office floatpow (floaty is xy (nato type): for (dis_index = 0; dis_index = 0; dis_index = 0; dis_Index <8 ; dis_Index]; // segment code P2 Port Delays (2 5 5 );} is the board again and finds what is still a problem, This is a very small, the display of darkness, if the delay is increased (as the value of the program is also in the tube, in the tube in the tube. In addition, it is very important to be in this case, and it is not applicable in this experiment, and a little significance, so that all. [Supplement end] --------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------- S.h> // habet sinistram subcinctus function_crol_ () unsigningChardatAdis_Digit; // BIT PORTI P2 P2 门通往当前数字管。
//如果等于0x01 ,则Porta P2 .0端口数字管unsignedCharcodedis_code [1 1 ] = {0x08 ,0xAb,0x1 2 ,02 ,0a1 ,// // 0,1 ,2 ,3 ,4 0x2 4 ,0x04 ,0x04 ,0aa,0x00,0x00,0x2 0,0fff}; // 5 ,6 ,7 ,8 ,9 折扣unsigningChardAtAdis_Buf [8 ]: // dis_buf以缓冲基础地址显示了当前Ostentatus数字和当前ostentatatus数字和buffer dialding and Buffer的unsignedChardis_festSets insports odders odder offer odders odvers odvers odder odignedChardis_festSetsset。
//关闭所有数字管P2 = 0x00; TMD = 0x01 ; // 000000001 B LEO针对模式1 的0作品,1 6 位计时器 /计数器TH0 = 0xFC; TL0 = 0x1 7 ; //预设初始值FC1 7 H = 6 4 5 3 5 D,2 1 6 -6 4 5 3 5 = 1 001 US = 1 MS IE = 0x8 2 ; // 1 000001 0bt0溢出许可dis_buf [0] = dis_code [0x0 [0x0 [0x0 [0x0 [0x0 [0x0 [0x0 [0x0 [0x0 [0x0 [0x0 [0x0 [0x0 [0x0 [0x0 [0x0 [0x0 [0x0 [0x0] [0x1 ]; dis_buf [ii] = dis_code [0x2 ]; dis_buf [iii] = dis_code [0x3 ]; dis_buf [4 ] = dis_code [0x4 ]; dis_buf [v] = dis_code [0 x5 ]; dis_buf [vi] = dis_code [0x6 ]; dis_buf [7 ] = dis_code [0x7 ]; dis_digit = 0x01 ; //读取0th数字管dis_index = 0; //偏移初始值为0xfc 0xfc 0xfc(//中断///中断时间//中断时间//我觉得这是0x1 8 ,第1 7 ,// dis_index p2 = dis_digit dis_digit dis_digit = _crol_ 0x07 ; //在所有数字曲调开始以启动下一个扫描频率。
使用晶体振荡器为1 2 m,输入脉冲周期间隔为1 UU。
1 us和周期是一个周期。
假设T0的初始值为1 0,初始值中的模型是1 6 位计时器,也就是说,如果此值超过遗嘱值,则最大值= 6 5 00,导致中断并输入处理中断的中断。
在这里,如果您想保持1 ms(即1 000,1 ,000),则没有2 1 6 -x = m的公式,您可以获得x = 6 4 3 6 ,它在刺激th0 = 0xfc中,即初始= 0x1 8 这是恐惧从6 4 3 3 6 开始计数,而1 ,000个计数后的6 5 5 3 6 值开始计算。
狮子中断并完成。
输入中断处理子例程后,还原初始值以及其中的周期。
在上面的示例中,加载的初始值或FC1 8 (6 4 5 3 6 ),但FC1 7 (6 4 5 3 5 )。
我认为情况是,计数范围为0〜(6 5 5 6 5 ,我还考虑了这个问题,如果您使用2 1 6 个计数初始值=间隔或使用= intersubant = interpolabant?我在检查了许多书,其他许多书籍,但其中许多书。
我认为您的前者是合理的。
您认为您的1 6 位二进制计算机可以代表6 5 5 3 6 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 MEL 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 MEL对键的响应。
这是我发表意见的方式。
例如,如果这种情况也需要验证。
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Digital tube is the first and a rigro end of the octave of the site, which is contrary to the order of the board, so because of统一,图属于片剂。
上图还可以在不增加电阻的情况下模拟结果,但是高水平的P0端口显示为灰色,即高电阻。
数码管的显示与闪烁
实验简介:数字管的动态显示是蓝桥杯单芯片单元竞赛中的一个常见测试问题。通过控制和关闭数字管中的磁场来显示值。
数字管显示分为一般阳极和一般阴极。
Lanqiao杯官方开发委员会的数字管模块被典型的阳极点亮。
本节涵盖了数字管理的原则以及如何控制显示器。
知识点公共阳极原理常见阳极数字管连接阳极形成一个公共端子,该端子连接到电源正阳性电极。
如果特定字段处于低端,则打开发光二极管。
当水平高时,它会关闭。
通过控制此规则,二极管将打开和关闭。
数字管连接图蓝桥杯的官方示意图清楚地显示了DS1 和DS2 数字管。
原理分析如果Y7 C = 1 ,则从控制场A关闭DP。
如果Y6 C = 1 ,则控制控制数字管COM END。
具有数字0-9 的现场表是通过上述原则学习的,并且获得了数字管的基本动作。
问题:在数字管上显示“ F”。
Y6 C和Y7 C值的描述。
套头帽和连接图使用7 4 HC1 3 8 解码器和7 4 HC02 北约门,通过跳线帽连接,y6 = 0,然后y6 c = 1 在输入和输出表中搜索Y6 配置方法。
选择数字管位置的第一个位置,选择DS1 ,初始化,选择一个位置并显示数字2 选择DS2 的第四位置,初始化它,选择位置并显示数字9 显示数字9 代码:在周期中初始化,选择[位置],选择[位置],选择[位置],和显示编号9 按顺序显示cops nuble nuble nuble norde:更改LOOP P0 P0值,以更改LOOP P0值,显示为0-9 实验摘要在学习了数字管的原理后,掌握了示意图和接口的使用,并根据示例代码实现显示和闪烁。
本节是蓝桥杯的一般测试,必须熟练。