四位数码管如何显示
使用LED时,请注意这两种不同连接方法的区别。
要查看数字或字符,必须编码数字或字符。
一个具有七个段的数字管以及一个小数点为8 个部分。
有关详细信息,请参见图像。
根据您要查看的,必须对数字管进行编码,主要设置位的选择(选择了数字管以查看)和选择段(数字管显示的特定)。
数字管的光和黑暗是进行和切割发光的二极管的过程,请参阅该图。
此外,数字管道有两种类型:静态显示和动态显示。
如果有4 位,则通常使用动态显示。
动态显示的特征在于,所有数字管道的段的选择线并行连接,并控制位置选择线,并控制数字管有效的位置选择线。
明亮的数字管显示了动态扫描。
SO称为的动态扫描显示意味着,使用光发射管的光芒和人眼的临时保护,依次将角色代码和相应的位选择依次发送到每个数字管,这使得人感觉好像数字管道同时显示了数字管道。
这是一个参考: /*使用动态扫描和计时器1 查看数字管的程序,该数字管从7 6 5 4 3 2 开始,降低至1 /1 0秒速度最高为7 6 5 3 9 8 ,并继续查看此数字。
同时,使用计时器0以5 00毫秒的速度将流灯从上到下移动。
当减少数字试管上的数字时,实验卡上的流灯会停止,一切都开始闪烁。
3 秒钟后(随着T0的时间),流动灯全部关闭,“ Hello”显示在数字管上。
留在这里。
(假设1 2 MHz晶体振荡器)*/ #includes #include #define uch uch not签名char #define uint uint uint uint untsbit dula = p2 ^6 ; sbit wela = p2 ^7 ; UCHAR代码表[] = {0xc0.0xf9 ,0xa4 ,0xB0,0x9 9 .0x9 2 ,0x8 2 ,0x8 2 ,0x5 8 ,0x8 0.0x9 0.0x9 0.0x8 9 .0x8 6 ,0x8 6 ,0xc7 ,0xc7 ,0xc7 ,0xc0 Uint Shu; void init(); void Display(Uchar,Uchar,Uchar,U Char,UChar); void delay(uint z){uint t1 ,y; 对于(t1 = z; t1 > 0; t1 -)for(y = 1 1 0; y> 0; y-);} void main(){init(); 而(1 ){if(flag1 != 1 )显示(7 .6 .5 ,bai,shi,ge); //其他计数(1 0,1 1 ,1 2 ,1 2 ,1 3 ,1 4 ); //保持hello}} void init(){shu = 4 3 2 ; temp = 0xfe; p1 = temp; tmod = 0x1 1 ; th0 =(6 5 5 3 6 -5 0000)/2 5 6 ; TL0 =(6 5 5 3 6 -5 0000)%2 5 6 ; th1 =(6 5 5 3 6 -5 0000)/2 5 6 ; TL1 =(6 5 5 3 6 -5 0000)/2 5 6 ; TL1 =(6 5 5 3 6 -5 0000)%2 5 6 ; EA = 1 ; ET0 = 1 ; ET1 = 1 ; tr0 = 1 ; tr1 = 1 ;} void Timer0()中断1 {th0 =(6 5 5 3 6 -5 0000)/2 5 6 ; TL0 =(6 5 5 3 6 -5 0000)%2 5 6 ; T0 ++; 如果(flag!= 1 )//表示计数未完成{if(t0 == 1 0){t0 = 0; temp = _crol_(temp,1 ); p1 = temp; }} else {if(t0%1 0 == 0)//每5 00毫秒每5 00毫秒(flash恰好3 次)p1 = 〜p1 ; if(t0 == 6 0)// 3 miao {tr0 = 0; p1 = 0xff; flag1 = 1 ; }}} void Timer1 ()中断3 {th1 =(6 5 5 3 6 -5 0000)/2 5 6 ; TL1 =(6 5 5 3 6 -5 0000)%2 5 6 ; T1 ++; if(t1 == 2 ){t1 = 0; shu-; bai = shu/1 00; shi = shu%1 00/1 0; ge = shu%1 0; if(shu == 3 9 8 ){tr0 = 0; //计时器OFF th0 =(6 5 5 3 6 -5 0000)/2 5 6 ; TL0 =(6 5 5 3 6 -5 0000)%2 5 6 ; tr0 = 1 ; //重新启动计时器标志= 1 ; //位flat t0定义= 0; // T0取消P1 = 0xFF; // false Flow Light TR1 = 0; // TIMER OFF}}} void Display(UCHAR AA,UCHAR BB,UCHAR CC,UCHAR BAI,UCHAR SHI,UCHAR GE){//最高位显示为7 dula = 1 ; p0 = table [aa]; dula = 0; p0 = 0x00; wela = 1 ; p0 = 0x01 ; wela = 0; 延迟(1 ); //第二个位置显示6 个dula = 1 ; p0 = table [bb]; dula = 0; p0 = 0x00; wela = 1 ; p0 = 0x02 ; wela = 0; 延迟(1 ); //第三位置显示5 dula = 1 ; p0 = table [cc]; dula = 0; p0 = 0x00; wela = 1 ; p0 = 0x04 ; wela = 0; 延迟(1 ); dula = 1 ; p0 = table [bai]; dula = 0; p0 = 0x00; wela = 1 ; p0 = 0x08 ; wela = 0; 延迟(1 ); dula = 1 ; p0 = table [shi]; dula = 0; p0 = 0x00; wela = 1 ; p0 = 0x1 0; wela = 0; 延迟(1 ); dula = 1 ; p0 = table [ge]; dula = 0; p0 = 0x00; wela = 1 ; p0 = 0x2 0; wela = 0; 延迟(1 );}
本人菜鸟,做课程设计,要求89C51单片机实现4位7段数码管动态和静态显示,希望大神能给写个程序,谢谢了
/ *************。
显示 * / #include #define uintsted int #define uchar uchar unchar unsigned char sbit dp = p0 ^ 6 ; SBIT D1 = P2 ^ 4 ; SBIT D2 = P2 ^ 5 ; SBIT D3 = P2 ^ 6 ; SBIT D4 = P2 = P2 ^ 6 ; SBIT D4 = P2 = P2 ^ 5 ; SBIT D3 = P2 ^ 6 ; ^ 7 ;代码表Uchar [] = {0x2 8 .0xeb,0x3 2 .0xa2 .0x1 .0xa4 .0x2 4 .0xea,0x2 0.0xa0.0xf7 }; UCHAR代码table1 [] = {0xfe,0xfd,0xfb}; uint num1 = 0,temp,num,flag = 0; char char [5 0] =“ ===”, * p; uchar dp = 0,wei; fl燕麦a = 0; void delay(uint z){uint x; uint y; 对于(x = z; x> 0; x-)for(y = 1 1 0; y> 0; y--); } void jian()//键盘的扫描{if(num1 == 3 )num1 = 0; p2 = table1 [num1 ]; temp = p2 ; temp = temp&0xf0; if(temp!= 0xf0){del ay(5 ); temp = p2 ; temp = temp&0xf0; if(temp!= 0xf0){temp = p2 ;标志= 1 ; 开关(temp >> 4 ){0x0e框:num = 0 + 4 * num1 ; 打破; Cas 0x0d:num = 1 + 4 * num1 ; 打破; 情况0x0b:num = 2 + 4 * num1 ; 打破; CAS 0x07 :num = 3 + 4 * num1 ; 打破; } while(temp!= 0xf0){temp = p2 ; temp = temp&0xf0; }截止日期(5 ); while(temp!= 0xf0){temp = p2 ; temp = temp&0xf0; }}} num1 ++; p2 = 0xff;} //数字显示void视图(char z [],uchar z1 )//“:”表示“ - ” / *** no {if(z [0] - '0''<1 3 )//不能小于或等于0 {d1 = 0; p0 = table [z [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); }}材料电路图
4位LED数码管显示原理
答:显示LED数字管的原理是通过控制LED灯关闭来显示数字或字母。
具体而言,在4 位LED数字管中,每个数字管都有许多LED珠,并且通过控制电路点亮相应的灯组合,以显示一些或特定的符号。
说明:1 LED数字管的基本组成:LED数字管包括许多LED粒子,以一定的安排结合在一起以显示数字或字母。
每个灯可以独立打开和关闭。
2 显示原理:通过加密和电路设计,当应显示一个数字或字母时,将点亮相应位置的LED粒子。
例如,当显示“ 5 ”数字时,代表“ 5 ”的数字管上的相应光颗粒将点亮。
通过控制不同的灯粒子的组合,可以显示不同的数字或符号。
3 .4 位LED数字管的功能:4 -bit 4 -bit Digital Tube可以同时显示4 个数字或字符。
在实际应用中,可以通过编程或外部电路控件转换显示以识别动态显示或静态显示。
这种类型的数字管被广泛用于电子仪,计算机,工具和其他字段。
简而言之,4 位4 位数字管的显示原理是通过控制LED灯来显示信息,可以关闭显示信息,并且可以通过编程或外部电路来控制显示。
由于其视觉和易于阅读的特征,LED数字管被广泛用于日常生活和工业生产中。
51单片机 编写4个LED数码管同时循环显示0—9的数字 的程序。
编写一个程序,其中4 个LED数字管也可以通过0到9 的数字进行,可以使用5 1 个微控制器实现。
程序中定义了一个数组CODELEDTAB,以将十六进制编码从0到9 节省。
这些编码用于控制数字LED管以显示某些数字。
该程序还定义了用于控制周期时间的可变时间,扫描和TIAO,以扫描LED数字管并调整显示速度。
代码中定义了延迟功能以创建延迟。
此功能使用循环实现延迟。
通过更改循环变量的值,可以设置延迟的时间长度。
通过CODELEDTAB数组,我们可以将数字从0到9 转换为相应的LED数字管格式。
每个数字对应于数组中的一个值,例如0x3 f,1 0x06 等的值。
在程序中,我们必须使用一个循环显示0到9 的数字。
它可以用一个循环实现。
可以通过更改循环变量的值来控制显示的数字。
传递与电数相对应的CODELEDTAB值,即数字LED管,以匹配相应的电数。
为了确定4 个LED数字管道的同时显示,可以在程序中使用扫描显示。
通过快速切换显示的LED数字管道,观察者可以创建一种幻觉,同时显示所有数字管。
在每个循环中,在显示电数后,将数字管切换为下一个,然后继续循环。
在实际应用中必须考虑显示的亮度和速度。
您可以通过停止延迟功能中的延迟时间来控制显示速度。
同时,可以通过充分提高或降低亮度来提高显示效果。
可以在各种数字显示设备(例如计时器,口袋计算机,温度计等)中使用此类程序的编写。
通过更改代码中的数字和延迟时间可以轻松实现不同的功能。
51单片机led4位数码管动态显示“0123”的程序,急急,,,能帮忙的就快点,谢谢啦
在选定的正确位置的四根电线,即数字管由光驱动。
左边的七条线,政府选择了七个数字管的七个部分。
你明白吗?一段时间内循环:我选择第一个数字管,关闭另一个数字管,然后选择第一个数字管的部分以点亮; 2 选择第二个数字管,关闭另一个数字管,然后选择第二个数字管的部分以点亮; 3 4 -在同一时间,只要连续箭头箭头,您就可以实现动态显示。