Ⅰ 單片機共陰極四位數碼管如何讓後三個數字常亮
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的數)分別顯示在兩個數碼管上面就是把這個數的每一位拆開,用數碼管的動態掃描進行顯示。至於閃動,不就是一亮一滅嗎?就用個定時器定時,在一秒的時間內,一半時間是亮的,一半時間是滅的,不就閃爍了嘛