‘壹’ 如何利用单片机让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--);
}
(1)单片机接三个四段数码管扩展阅读
led数码管是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。led数码管常用段数一般为7段有的另加一个小数点,还有一种是类似于3位“+1”型。
位数有半位,1,2,3,4,5,6,8,10位等等,led数码管根据LED的接法不同分为共阴和共阳两类,了解LED的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。
‘贰’ 单片机中LED显示电路用三极管驱动电路怎么连接啊四个数码管。
//单片机中LED显示电路用三极管驱动电路四个数码管。可以参考一下
#include<reg52.h>
sbit led0=P3^2;
sbit led1=P3^3;
sbit led2=P3^4;
sbit led3=P3^5;
sbit ledd=P3^7;
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
unsigned char g,s,b,d,a;
unsigned int num;
void delay(unsigned char x)
{
unsigned char i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
void display()
{
P1=table[d];
led3=0;
delay(5);
led3=1;
P1=table[b];
led2=0;
delay(5);
led2=1;
P1=table[s];
led1=0;
delay(5);
led1=1;
P1=table[g];
led0=0;
delay(5);
led0=1;
}
void ont()
{
num=0;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void main()
{
ont();
while(1)
{
if(a==20)
{
a=0;
ledd=~ledd;
num++;
d=num/1000;
b=num%1000/100;
s=num%100/10;
g=num%10;
}
display();
if(num==10000)
{
num=0;
}
} }
void time_0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
a++;
}
‘叁’ AT89C51单片机怎么用汇编语言让4个数码管同时显示1234
1、首先我们先打开keil。
‘肆’ 求四位共阳数码管接法,接在单片机上。。。
不知道您使用的是什么单片机,告诉你使用89C51的接法。
用200欧姆的电阻串联在数码管的笔画引脚上然后直接接在P0引脚就可以了,共阳极引脚直接接5V,对P0写0就可以点亮了,而且电流不至于烧毁数码管。
动态显示 需要在共阳极上接PNP三极管,三极管基极串联1K电阻接单片机口,低电平有效。
希望我的回答对您有帮助。
‘伍’ c51单片机如何连接4个数码管 来进行计数 要求用T0中断来编程 求大虾们支招
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar temp,aa,miao,fen,shi;
sbit m=P3^0;
sbit n=P3^1;
uchar code table[]={ //数码管编码表
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f};
void display(uchar miao,uchar fen,uchar shi);
void delay(uint z);
void init();
void main()
{
init();//初始化子程序
miao=0;
shi=0;
fen=0;
while(1)
{
display(miao,fen,shi);
}
}void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}void display(uchar miao,uchar fen,uchar shi) // 显示子函数
{
P0=0x00;
P0=table[miao%10];
P2=0x7f;
delay(1);
P0=0x00;
P0=table[miao/10];
P2=0xbf;
delay(1); P0=0x00;
P0=table[fen%10];
P2=0xdf;
delay(1);
P0=0x00;
P0=table[fen/10];
P2=0xef;
delay(1);
P0=0x00;
P0=table[shi%10];
P2=0xf7;
delay(1); P0=0x00;
P0=table[shi/10];
P2=0xfb;
delay(1);
}void init() // 初始化子函数
{
temp=0;
TMOD=0x01;
TH0=(65536-45872)/256;
TL0=(65536-45872)%256; //定时器初值,定时50ms(12M晶振),由于考虑MCU指令处理时间,此处赋初值位45872
EA=1;
ET0=1;
TR0=1;
}void timer0() interrupt 1 //定时计数器中断
{
TH0=(65536-45872)/256;
TL0=(65536-45872)%256; 、
aa++;
if(aa==20) //中断2次位1S,秒加1
{
miao++;
aa=0;
if(miao==60)
{
fen++; // 满60S, 分加1,秒清0
miao=0;
if(fen==60)
{
shi++; // 小时加1
fen=0;
if(shi==24) shi=0; //小时满
}
}
}
if(m==0) // 调分
{
delay(2);
if(m==0) fen++;
if(fen==60) fen=0;
delay(2);
while(!m);
}
if(n==0) // 调小时
{
delay(2);
if(n==0) shi++;
if(shi==24) shi=0;
delay(2);
while(!n);
}
}
‘陆’ 4位或3位数码管显示,用单片机如何实现
4位或3位数码管显示,用单片机如何实现?这是单片机最基本的最典型的应用了,不论仿真还是实物,都离不开数码管显示呀,别说3,4位,再多也没问题,太简单太容易了。
下图是4位数码管显示电路。
‘柒’ 单片机与数码管的连接
如果22位数码管共用7段来驱动,显示效果很差,太暗!而且单片机直接驱动运行起来也费力。你可以计算一下就知道了:如果想显示没有闪烁感,显示刷新周期就要超过50HZ,也就是每20mS这22位数码管都要显示一次,那么每个数码管每次只能显示20mS÷22=0.91mS,而且单片机在这么短的时间内就没有太多的时间处理其它的任务了。
要解决这个问题,你必须用专用的LED显示驱动IC,而且要保证每个数码管显示的占空比要超过1/8才会有足够的亮度,如果是室外使用最好是1/4或1/3。
如果占空比选用1/6,那么你要在同一时间每次点亮22/6(4)个数码管,你可以看看TM1629A、B、C、D显示驱动IC,可以用2块驱动IC,每个IC同时点亮2个数码管,每个IC驱动11个数码管。
用这种IC比用74系列的芯片的好处是:只有在需要改变显示内容时,单片机才发送数据到驱动IC,平时不必发送数据,这样MCU就可以把时间用于处理其它任务了。
具体的电路你看IC资料就行了。
‘捌’ 四位数码管连接如何连接单片机
1、最开始,先打开keil。
‘玖’ 用单片机的IO口接四位数码管,需要多大的排阻。
用单片机的IO口接四位数码管,需要多大的排阻。
这看似简单的问题,还真需要啰嗦几句才行。
1、LED数码管有普通亮度和高亮度之分,简单说就是发光效率不同。
2、出于成本和实用性考虑,单片机驱动LED数码管没有采用恒流驱动。
3、单片机驱动LED数码管有静态和动态之分。
4、电源电压不同,同样的排阻阻值,LED数码管亮度不同。
上面这四种情况一组合,一句半句说不清。
如果不介意亮度问题,你这个问题好回答,用470欧姆到1K排阻都行。
稍微较点真儿,最好计算一下,每个段的平均电流3-5毫安。
数码管常用型号基本是0.56英寸的(用量大就便宜)。单片机IO如果推挽输出能力,共阴极还是共阳极都一样,没有推挽输出用共阳极有利于简化电路设计。
型号各厂家规定不一样,买数码管基本都淘宝吧,上面减少很清楚。
‘拾’ 4位数码管怎么与单片机连接
数码管封装很多,引脚排列
都不一样,没法告诉你接线,你只要找出段和位就可以了,七个段码和小数点可以通过74hc595直接连接到单片机口上,或者还有cd4511等的bcd解码芯片,共阴或共阳都是可以通过万用表测出来的