如何让单片机四位数码管显示相同数字?

如题所述

每一次只能让一个数码管位选,其他的关闭,给数码管赋值。重复4次就可以了。
假设要显示“1234”:

#include<reg52.h>
sbit k1 = P1^1;
sbit k2 = P1^2;
sbit k3 = P1^3;
sbit k4 = P1^4;//k1-k4 4个位选开关,我假设你的电路是低电平有效

uchar code table[]={0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8;
0x80,0x98};//共阳极1-9
void delay( char t )//延时函数
{
char x,y;

for( x = t;x > 0;x-- )

{
for( y = 100;y > 0;y-- );

}
}

void main()//主函数
{
int i = 1234;

int temp;

while(1)
{
temp = i;//temp = 1234;
//显示第4位
k1 = k2 = k3 = k4 = 1;//关闭所有未选
k4 = 0;//打开第4位位选
P2 = table( temp%10 );//假设P2口控制数码管
temp = temp / 10;//temp = 123

delay( 5 );

//显示第3位
k1 = k2 = k3 = k4 = 1;//关闭所有未选
k3 = 0;//打开第3位位选
P2 = table( temp%10 );//,假设P2口控制数码管
temp = temp / 10;//temp = 12
delay( 5 );

//显示第2位
k1 = k2 = k3 = k4 = 1;//关闭所有未选
k4 = 0;//打开第4位位选
P2 = table( temp%10 );//,假设P2口控制数码管
temp = temp / 10;//temp = 1;
delay( 5 );
//显示第1位
k1 = k2 = k3 = k4 = 1;//关闭所有未选
k4 = 0;//打开第1位位选
P2 = table( temp%10 );//假设P2口控制数码管
delay( 5 );

}

}
温馨提示:内容为网友见解,仅供参考
无其他回答

51单片机4位数码管显示数字
1、静态显示:对于静态显示,可以直接利用IO口将对应的数字编码发送到数码管的段选引脚上。将P0口设置为0x3f,可以显示数字0。2、动态显示:对于动态显示,有两种常见的方法。一种是提高刷新频率,使得人眼无法分辨,产生显示的效果。另一种是利用锁存器件,先显示一个数字,锁定到一个数码管上,再显示...

AT89C51单片机怎么用汇编语言让4个数码管同时显示1234?
1、首先我们先打开keil。2、接着,我们要定义好库函数,void main(){while(1)\/\/不断循环显示{dispaly();}}void dispaly(){P0=smg[1];\/\/选择显示数字几,P1=0x7f;\/\/控制是否点亮数码管。3、接着,我们加上一条循环语句。delay(5);\/\/显示5毫秒P0=0XFF;\/\/消影P0=smg[2];P1=0xbf;delay...

如何利用单片机让4位数码管显示
(1)掌握单片机控制四位数码管的动态扫描技术,包括程序设计和电 路设计,本任务的效果是让四位数码管稳定的显示1234。(2)用PROTEUS进行电路设计和实时仿真 3.3 知识点链接 (1)数码管动态扫描 (动态扫描的定义以及与静态显示的区别)动态显示的特点是将所有位数码管的段选线s一位数码管有效。选...

如何让单片机按下键时数码管显示的值和点阵屏显示一致的数字
1、定义数码管和点阵屏的接口。2、定义按键和数码管、点阵屏驱动的接口。3、编写按键按下的处理函数。4、编写数码管和点阵屏驱动的函数。5、在主程序中调用按键按下的处理函数和数码管、点阵屏驱动的函数。

四位一体数码管的控制原理
动态显示驱动动态显示驱动:数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I\/O线控制,当单片机输出字形码时,所有数码管都接收到...

求救,单片机at89c51 用四位七段数码管怎么样动态显示一个数字,我的不...
0;P2 = dcode[n \/ 100 % 10]; c = 1; delay1ms(10); c = 0;P2 = dcode[n \/ 10 % 10]; b = 1; delay1ms(10); b = 0;P2 = dcode[n % 10] ; a = 1; delay1ms(10); a = 0;} } P2用共阳的数码管。单片机c51 用四位七段数码管动态显示一个数字。

如何利用单片机让4位数码管显示?
display(1,2,3,4);\/\/主程序始终调用数码管显示子程序 } } void display(uchar a,uchar b,uchar c,uchar d){ P2=0xef;P0=table[a];\/\/给第一个数码管送"a"delay(1);\/\/延时1ms P2=0xdf;P0=table[b];\/\/给第二个数码管送"b"delay(1);\/\/延时1ms P2=0xbf;P0=table[c];\/\/给第...

怎样通过单片机将四个双位七段数码管连接显示相同的数字,急求硬件连接...
如果你想让数码管工作而LED灯不工作,或者LED等工作而数码管不工作。就是不同时工作,就得接两个573。一个接数码管,一个接LED灯,输入端接在一组IO口上就可以。想让那个亮就控制哪个LE为高电平,哪个不亮就设置哪个LE为低电平即可。

四位数码管动态显示?
在代码层面,实现8位数码管同时点亮包括以下几个关键步骤:首先,引入动态显示代码,覆盖静态显示逻辑,并创建用于显示不同数据的数组。例如,使用`u8 Show_Tab[8]`数组来选择每个位的显示内容,根据具体需求调整数组值。通过修改显示函数,确保正确处理闪烁现象,特别是当显示数据无规律时,需调整代码以适应...

用单片机怎么实现四位数码管?
2、不用单片机,用数字电路实现很容易呀。用一片10线-4线编码器,接10个按键,输出为BCD码,再用一片74LS247,七段译码器\/驱动器,输出接一个共阳数码管即可,按几号键,数码管就显示几了。下表就是74LS147的真值表。3、LS147是优先编码器,从高位起,为0的就输出对应的编码的反码值。而其后...

相似回答