Ⅰ 单片机共阴极四位数码管如何让后三个数字常亮
void main()
{
if(button==0)
{ while(1) {。。。} }
}
这样的程序结构运行起来根毕虚本没有效果手漏燃;
你想要这4位数码管显搜知示什么,什么效果啊
Ⅱ 单片机时钟数码管中间那两个点怎么点亮
你可以先用万用表测量哪个引脚是控制中间点LED的脚,调到二极管档,黑表笔接负极,红表笔,依次接不同脚,直到中间两点亮为止,然后就像控制其他数字段一样,给这个引脚电,中间就亮。
Ⅲ 请问单片机用控制数码管的亮度怎么调节
如果共阴极数码管用单片机直接驱动,电流需10ma左右,接1K的上拉电阻,单段LED电流只有3ma左右,并且还不是连续的,亮度肯定不足,可以减小上拉电阻至510欧。当然有的单片机可设成推挽输出模式,外部上拉电阻就没用了,还需另加限流电阻,否则亮度上去了,电流过大很可能会损坏单片机或数码管。另外数码管位数过多,每个数码管点亮的时间太短,也会使亮度下降。
Ⅳ 如何利用单片机让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--);
}
(4)单片机怎么让数字管亮扩展阅读
led数码管是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。led数码管常用段数一般为7段有的另加一个小数点,还有一种是类似于3位“+1”型。
位数有半位,1,2,3,4,5,6,8,10位等等,led数码管根据LED的接法不同分为共阴和共阳两类,了解LED的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。
Ⅳ 单片机控制数码管为什么显示很暗
长期点亮蔽闭改就是 数码管最亮 的时候。
但动态显示中做不到长期点亮,那么就要换种说法:最大可能让它长期亮,就是 数码管最亮的时候。也就是说,数码管亮的时间越长,它就越亮。
又但是,动态显示中,数码管亮的时间越长,几个数码管就会变得一闪一闪的,甚至是,一个亮完另一个亮,跟流水灯似的。这就是所谓的:刷屏!
因此,又得换一种说法:在保证不闪的情况下宏判,最大可能让它长期亮。
这就是主题了——刷新率。这个名词不陌生,以前的显示器,特别是台式显示器上就要调这个参数。调高了(75Hz),显示器支持不了,调低了(50Hz),屏幕忽闪忽闪的。但用在数码管上,估计比较难入座。
从以态运前的显示器上,可以得到经验,50Hz对人而言,会闪烁。75Hz已经完全看不出来了。降低一点要求,60Hz绝大多数人已经感觉不到闪烁了。这个刷新率怎么用在数码管上?
为了方便计算,以50Hz为例,则周期T=1/F=20ms,也就是20ms重复一周。假设你有4个数码管,则每个数码管有 5ms 的时间。也就是说,这就是“最大可能的时间”了。每隔这“最大时间”切换一位数码管,就能让数码管到达 最大辉度(亮度)了。
当然,最大亮度也不可能超出硬件设计范围,如果硬件设计驱动电流不够,那么软件怎么弄都是白扯!
Ⅵ 51单片机怎么点亮数码管
单片机通过驱动电路给数码管中相应各段的发光二极管加正向电压,该段发光二极管就会被点亮。
不同段的发光二极管加正向电压则亮,不加正向电压则灭,这样就可以通过各段的亮灭组合,来显示不同的数字和字符了。
单片机是通过向数码管送段形(即显示编码),来给数码管相应的各段加正向电压来实现的。
Ⅶ 51单片机如何让一个数码管闪烁而其他数码管一直保持亮的状态不受影响
假如有6 个数码管,每个亮5ms,30ms是一轮,用一个变量a计数,40轮为一周期,如果a小于20,需闪烁的哪一位数码管不亮,a大于20,该位正常显示。就形成了亮0.6s灭0.6S的效果。
下面是4位数码管闪烁程序:
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77};//七段码表
modtable={ {0,0,0,0},{1,0,0,0},{0,1,0,0},{0,0,1,0},{0,0,0,1} ,{1,1,1,1} }
//5种模式4个数码管,所以表格为5*4
//4个0表示4个数码管都可以正常亮
void display(uint m,uchar mode )//4位显示子程序 带某位闪烁功能
//mode=0,都不闪烁 mode=1 千位闪烁 mode=2 百位闪烁 mode=3 十位闪烁 mode=4 个位闪烁
//mode=5 全部闪烁
{
uchar a1,a2,a3,a4;
staic ia;
uchar modeaa;
a1=m/1000;
a2=m/100%10;
a3=m/10%10;
a4=m%10;
if(ia<20)
{
modeaa=mode;//前20次与闪烁模式有关
}
else
{
modeaa=0;//后20次只管正常扫描
}
dataport=~(table[a1]);
sm1=modtable[modeaa][0]; Delay1ms(2);sm1=1;//sm1=0,一号数码管亮
//但它是否为0,由modeaa决定,modeaa又受ia控制,可以等于mode,也可以为0
dataport=~(table[a2]);
sm2=modtable[modeaa][1]; Delay1ms(2);sm2=1;
dataport=~(table[a3]);
sm3=modtable[modeaa][2]; Delay1ms(2);sm3=1;
dataport=~(table[a4]);
sm4=modtable[modeaa][3]; Delay1ms(2);sm4=1;
ia++;
if(ia==40) ia=0;
}
Ⅷ 如何将52单片机的数码管点亮
#include<reg52.h>
#define uint unsigned int
uint code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
uint num=0,aa=0,,shi,ge;
void display(uint ,shi,ge);//数码管位显示子函数
void init(); //定时器子函数
void delay(uint z); //延时子函数
void main()
{
init();//初始化定时器
while(1)//进入大循环等待中断的产生
{
if(aa==20)
{
aa=0;
num++;
if(num==100)num=0;
=num/100;
shi=num%100/10;
ge=num%10;
}
display(,shi,ge);
}
}
void display(uint ,shi,ge)
{
P1=0xfe;
P0=table[];
delay(5);
P1=0xfd;
P0=table[shi];
delay(5);
P1=0xfb;
P0=table[ge];
delay(5);
}
void timer0() interrupt 1
{
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
aa++;
}
void init()
{
TMOD=1;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void delay(uint z)
{
uint a,b;
for(a=z;a>0;a--)
for(b=110;b>0;b--);
}
提醒:如果对你的数码管是共阳极的,那么uint code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
要改成int code table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,
0x82,0xF8,0x80,0x90,0x88,0x83,
0xC6,0xA1,0x84,0x0E};
希望对你有帮助!
Ⅸ 单片机:如何让数码管闪烁
其它照常
一段时间输出与0xff做与运算
一段时间输出与0x00做与运算
Ⅹ 我用51单片机做了一个秒表,使用四位共阴数码管显示,但是数码管很暗,怎么是数码管增加亮度
把一个多位数(大于9的数)分别显示在两个数码管上面就是把这个数的每一位拆开,用数码管的动态扫描进行显示。至于闪动,不就是一亮一灭吗?就用个定时器定时,在一秒的时间内,一半时间是亮的,一半时间是灭的,不就闪烁了嘛