单片机数码管静态显示到底是什么意思?
静态显示位代码始终有效,并且显示与数据线的值完全相同。
动态显示使用人眼的临时保存,将位代码更改为圆形顺序,并在数据线中发送显示。
静态显示占据最短的CPU时间,但消耗了大量的硬件资源。
动态显示恰恰相反。
CPU需要对位代码进行连续扫描以传输显示数据,但是硬件开销相应地很小。
c语言 怎样用两个独立按键控制一位数码管显示 就是按下其中一个按键就加1 按下另一个按键就减1 0~9显示
这个简单的实现是通过两个独立的密钥来控制数字管的显示。
按键之一将数字管值增加1 ,然后按另一个键将数字管值降低到1 ,并且周期出现在0到9 之间。
如果您首先实现两个键,则负责添加一个键。
该程序如下:#defineucharansignedcharuchartable [] = {0x3 f,0x06 ,0x5 b,0x4 f,0x6 6 ,0x6 d,0x7 d,0x07 ,0x7 f}; sbityup = p3 ^0; sbitKeyDn = p3 ^1 ; ain(){uchari; i = 0;而(1 ){p1 = table [i]; if(keyup == 0){i ++; while(keyup == 0);} if(keydn == 0){if(i> 0)i-;此程序,表中的数据是从P1 端口输出的,并且控制数字管以显示相应的数字。
按下键U-UP键时,I值会增加。
按下键DN键时,I值会减小。
为了避免钥匙抖动,我使用循环一段时间来等待键发布。
请注意,i的值范围限制为0到9 ,并且在I%= 1 0时达到了圆形显示的效果。
这样,即使我超过9 ,它也会自动恢复为0,从而在0和9 之间产生圆形显示。
上面的程序控制数字管的添加和亚负式显示功能。
此设计想法适用于需要简单数字显示的各种应用程序场景,例如计数器,计时器等。
本人菜鸟,做课程设计,要求89C51单片机实现4位7段数码管动态和静态显示,希望大神能给写个程序,谢谢了
/*********************************键静态显示不同的数字。
也就是说,按1 到1 个动态显示:数字移动。
显示*/ #including
#define uint unsigned inttr #define uchar sbit dp = p0^6 ; SBIT D1 = P2 ^4 ; SBIT D2 = P2 ^5 ; SBIT D3 = P2 ^6 ; SBIT D4 = P2 = P2 ^6 ; SBIT D4 = P2 ^5 ; SBIT D3 = P2 ^6 = P2 ^7 ; UCHAR代码表[] = {0x2 8 ,0xeb,0x3 2 ,0xa2 ,0xe1 ,0xa4 ,0x2 4 ,0xea,0x2 0,0xa0,0xf7 }; UCHAR代码表1 [] = {0xfe,0xfd,0xfb}; uint num1 = 0,temp,num,flag = 0; char char [5 0] =“ ===”,*p; uchar dp = 0,wei; fl aat a = 0; void delay(uint z){uint x; uint y; (x = 1 1 0; y> 0; y-)} void jian()//键盘扫描{if(num1 == 3 )num1 = 0; p2 =表1 [num1 ]; 温度= P2 ; 临时=临时&0xf0; if(temp!= 0xf0){del ay(5 ); 温度= P2 ; 临时=临时&0xf0; if(temp!= 0xf0){temp = p2 ;标志= 1 ; 开关(temp >> 4 ){case 0x0e:num = 0+4 *num1 ; 破碎的; 情况0x0d:num = 1 +4 *num1 ; 破碎的; 示例0x0b:num = 2 +4 *num1 ; 破碎的; 示例0x07 :num = 3 +4 *num1 ; 破碎的; } while(temp!= 0xf0){temp = p2 ; 临时=临时&0xf0; }延迟(5 ); while(temp!= 0xf0){temp = p2 ; 临时=临时&0xf0; }}} num1 ++; p2 = 0xff;} //数字管显示void display(char z [],uchar z1 )//“:”表达式“ - ”/*** no {if(z [0] - '0'0'<1 3 )// p0 = table [z [z [z [z [z [0] - '0'0']; if(z1 == 1 )dp = 0; 延迟(1 ); D1 = 1 ; p0 = 0xff; } if(z [1 ] - '0'<1 3 ){d2 = 0; p0 = table [z [1 ] - '0']; if(z1 == 2 )dp = 0;延迟(1 ); d2 = 1 ; p0 = 0xff; } if(z [2 ] - '0'<1 3 ){d3 = 0; p0 = table [z [2 ] - '0']; if(z1 == 3 )dp = 0;延迟(1 ); d3 = 1 ; p0 = 0xff;} if(z [3 ] - '0'<1 3 ){d4 = 0; p0 = table [z [3 ] - '0']; if(z1 == 4 )dp = 0;延迟(1 ); D4 = 1 ; p0 = 0xff; }}} void main(){while(1 ){jian(); if(flag == 1 ){flag = 0; char [wei+3 ] ='0'+num; wei ++; p = char+wei-1 ; } if(wei> 0)显示(p,dp); }}硬件电路
数码管显示技术:静态与动态
数字管显示技术是数字显示的常见方法。
本文介绍了数字管的静态和动态显示方法,优势和缺点。
&#1 2 8 1 6 1 ;数字管静态显示器的静态显示意味着每个数字管的驾驶水平在值变化之前不会更改。
它是明亮的,但消耗了很多力量。
&#1 2 7 7 4 4 ;数字管的动态显示使用了人眼的简短视觉适应性,以与2 0ms同一时期显示数字管,从而导致幻想同时打开数字管。
您可以显示更多的数字,但是亮度略低。
&#1 2 8 06 4 ;动态扫描频率的预防措施必须超过5 0Hz,理想的是,避免闪烁应高于6 0Hz。
