‘壹’ 如何用一个单片机驱动四个四位数码管同时显示四组不同数据
方法一:两个HD7279,正好可以驱动16个数码管,电路简单,不占单片机资源
方法二:74HC154译码扫描,或者两个P口扫描,需要16个三极管驱动或者两片ULN2003之类的,比较占用单片机资源
‘贰’ 如何利用单片机让4位数码管显示
程序如下(用的是STC89C52芯片):
#include<reg52.h>//52系列单片机头文件
#defineucharunsignedchar
#defineuintunsignedint
uintx,y;
ucharcodetable[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};//共阴极数码管编码
voiddisplay(uchar,uchar,uchar,uchar);//声明子函数
voiddelay(int);//声明子函数
voidmain()
{
while(1)
{
display(1,2,3,4);//主程序始终调用数码管显示子程序
}
}
voiddisplay(uchara,ucharb,ucharc,uchard)
{
P2=0xef;
P0=table[a];//给第一个数码管送"a"
delay(1);//延时1ms
P2=0xdf;
P0=table[b];//给第二个数码管送"b"
delay(1);//延时1ms
P2=0xbf;
P0=table[c];//给第三个数码管送"c"
delay(1);//延时1ms
P2=0x7f;
P0=table[d];//给第三个数码管送"d"
delay(1);//延时1ms
}
voiddelay(uintz)//延时子函数
{
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
(2)单片机驱动4位数码管扩展阅读
led数码管是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。led数码管常用段数一般为7段有的另加一个小数点,还有一种是类似于3位“+1”型。
位数有半位,1,2,3,4,5,6,8,10位等等,led数码管根据LED的接法不同分为共阴和共阳两类,了解LED的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。
‘叁’ 四位数码管连接如何连接单片机
1、最开始,先打开keil。
‘肆’ 单片机做四位数码管静态显示实验时要不要锁存器呀,最好发一张电路图解释一下锁存器作用,不太懂锁存器
用锁存器主要是方便IO口复用
四位数码管静态显示实验时要不要锁存器,是根据你的硬件决定的,如果你的4个数码管各占一个完整的端口,就不用锁存器,但需要占用32个IO口,一般单片机的IO引脚被用完了
如果你用4个锁存器,它们就可以共用1个8位IO口,另外用4个引脚控制哪个锁存器打开
总之,静态显示浪费硬件资源,四位数码管要么占单片机32个IO口,要么需4个锁存器,因此单片机系统中多用动态显示方式
锁存器就是能将输入数据锁存的器件,如74LS273,有8 个输入端(D0-D7)和8个输出端(Q0-Q7),另有一个控制端LA,当LA为高电平时,输出端和输入端的数据是相同的,输入端数据变化,输出端也跟着变化,当LA出现低电平(下降沿)时,输出数据就锁死了,无论输入端数据怎么变化,输出端保持原数据
驱动4位数码管时,这4个数码管可以共用单片机的一个端口,如P0,4个锁存器的D0-D7都接单片机的P0.0至P0,7,Q0-Q7分别接4个数码管的8个阳极(称为段,共阴极),P0口先输出数据给第一个数码管的锁存器,经锁存后,再用P0口给第二个数码管送数据,不影响第一个数码管的状态,再锁存后,P0口继续给第三个第四个数码管送数据,这就是IO口的分时复用
‘伍’ 单片机如何用有限的I/O口来驱动4位数码管以及四个按键(I/O口只剩11个)
可以选用按键、显示接口芯片BC7281或者ZLG7290,SPI接口或者I2C接口,最多只占用4个口线。软件模拟SPI或I2C的时序。
如果不允许选用接口芯片,可以用7个段选+4个位选。选用共阳极数码管,在位选的口线上通过按键、限流电阻接电源地。分时完成数码管显示和按键识别。
‘陆’ 4位共阳极led数码管动态显示驱动原理
要是数码管显示数字,有两个条件:1.是要在VT端加合适的电源(一般每颗LED还需串上合适的电阻,起限流作用);2.要使(a,b,c,d,e,f,g,dp)端接低电平或“0”电平。这样才能显示的
能够点亮数码管后,就可以通过单片机控制数码管显示数字或字母。为了控制方便,我们将数码管的a~dp引脚依次连接单片机的P10-P17引脚
‘柒’ 单片机如何同时控制四位数码管显示不同数字。
你的图不是很清楚,根据你图上的功能来看,器件应该是:
单片机(51系列) -> 8路缓冲器(74HC245) -> 数码管(四位)
1、由于单片机IO口的驱动能力有限,在单片机和数码管中间增加了缓冲器
这样可以有效的保护单片机,提高了驱动能力。
2、接法:四位数码管有四个选择端,保证统一时间只A-G字段,只对一个数码管有效。
3、点亮数码管,通过选取不同的选择端,选择好某一位数码管,通过A-G字段点亮。这个10K的上拉电阻,就针对单片机的,
因为单片机的P0口,内部是不带上拉电阻的,
10K,既能保证单片机有可靠的高电平输出,又能保证有一定的驱动
‘捌’ 单片机最小系统没有锁存器,如何控制四位数码管,如何位选
用数码管动态显示,然后就是把这四位数码管共阴或者共阳,为增加单片机的驱动能力,添四个三极管!控制这四个三极管,实现位选
‘玖’ 单片机驱动四位数码管需要138译码器吗
不需要,直接接单片机管脚就可以了,单片机I/0口足够点亮数码管,用138译码器是可以省管脚,项目一般都会用译码器,自己拿来玩玩可用可不用
‘拾’ 使用单片机实现四位八段的数码管显示,显示出852.6如何实现,请写出实现流程
有两种方式,一种是动态扫描,假设你数码管有COM1,COM2,COM3,COM4,然后有8个段,常见的是7个控制数码管段还有一个小数点一共8个段
那么这里就描述单片机一次扫描4位的过程,首先,如果你的数码管是共阳,那么显示第一位就将COM1引脚拉到高电平,然后8个引脚接到单片机IO口上,你说你要显示852.6,那么第一位是8,7个段全亮,所以7个IO全部拉低电平就行,随后延迟差不多1ms左右
接下来就是显示第二个数码管,和之前一样,COM2拉高,然后你要显示5的话有两个段是不亮的,所以哪两个脚你不想让他亮,你直接把对应的IO拉高就行,你要让剩下哪5个段亮直接拉高电平即可,随后再延时1ms左右
接下来两位和上面一样,对应位的COM口拉高电平,对应的字段IO你要让哪个段亮就把哪个拉低电平,哪个段不想亮就拉高电平,最后延时1ms就行
最后程序外面套个while(1)就可以实现无限循环了
还有一种方式就是用74HC595和4个数码管连接起来,74HC595是一个串行锁存寄存器,只需要4个74HC595和4个数码管就行,最少只占用单片机2个IO
这里就说明一下74HC595的控制方式
首先74HC595应该有个EN口,拉低,然后时钟拉高,循环8次,再把时钟信号拉低,用一个AND运算,如你要传输一个0XAA,那么就是
void InputData(0XAA)
{
for(int i=0;i<8;i++)
{
if(dat&0x01==1)
{
digitalWrite(SCK,LOW);
digitalWrite(DAT,HIGH);
delayMicroseconds(10);
}
else
{
digitalWrite(SCK,LOW);
digitalWrite(DAT,LOW);
delayMicroseconds(10);
}
dat=dat>>1;
digitalWrite(SCK,HIGH);
}
}
这里我是直接复制我以前写的一个arino驱动74HC595的程序,SCK是时钟,DAT是数据
建议你把单片机和你数码管的电路图发出来,你说如何实现我不知道你是怎么接的数码管