『壹』 51單片機4為數碼管顯示
估計你的中斷服務程序有問題,或者中斷設置有問題。
『貳』 51單片機數碼管怎樣才能同時在兩個數碼管上面顯示不同的數字
是因為人眼的視覺暫留效應,實際上兩個數碼管是交替顯示的,但是因為交替的速度十分快,所以會有因為視覺暫留效應而看到兩個數碼管都是同時現實的。
視覺暫留現象即視覺暫停現象(Persistence of vision,Visual staying phenomenon,ration of vision)又稱「余暉效應」,1824年由英國倫敦大學教授皮特.馬克.羅葛特在他的研究報告《移動物體的視覺暫留現象》中最先提出。
人眼在觀察景物時,光信號傳入大腦神經,需經過一段短暫的時間,光的作用結束後,視覺形象並不立即消失,這種殘留的視覺稱「後像」,視覺的這一現象則被稱為「視覺暫留」。
(2)51單片機數碼管擴展閱讀:
led數顯管分類:
1、按控制方式分:分為內控方式(內部有單片機,通電自動變色)和外控方式(需要外接控制器才能變色)。
2、按變化方式分:分為固定色彩的和七彩、全彩的;固定色彩的是用來勾輪廓的,全彩的可以勾輪廓,也可以組成管屏顯示文字、視頻等。
3、按尺寸分:有D50的、D30的,這是直徑;長度基本上1米的(可以定製);這個需要根據實際需要進行選擇就行了。
4、按內部可控性分:有1米6段的,有1米8段的和1米12段、1米16段、1米32段的。也就是1米的管子內有幾段可以獨立受控。 1米段數越多,做視頻的效果越好。如果密度低,或者做些追逐效果,做1米6段也就可以了。
『叄』 51單片機的共陰數碼管怎麼顯示數字(c語言)
要讓51單片機共陰數碼管顯示數字,只需要將單片機的P2埠輸出數字對應的段碼即可。
以顯示數字「0」為例,c語言程序如下:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
//數碼管的段碼編碼
Uchar table[10] ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void main(){//主函數
P0 = table[0];//顯示0,大家可以修改裡面的數據。
while(1);//程序不再執行其他步驟;
}
(3)51單片機數碼管擴展閱讀:
數字0-9的對應段碼:
數字0 0x3f
數字1 0x06
數字2 0x5b
數字3 0x4f
數字4 0x66
數字5 0x6d
數字6 0x7d
數字7 0x07
數字8 0x7f
數字9 0x6f
『肆』 51單片機數碼管問題(匯編)
以下程序可以循環顯示:0~F。
START:
MOV DPTR, #SEGPT
INI_R2:
MOV R2, #0
DISP_LOOP:
MOV A, R2
MOVC A, @A+DPTR ;查到8段碼
MOV P0, A
MOV P2, #11000011B ;(故意讓四位亮了)
LCALL DELAY
INC R2
CJNE R2, #16, $+3
JC DISP_LOOP
LJMP INI_R2
SEGPT: DB 0C0H, 0F9H, 0A4H, 0B0H ;0、1、2、3
DB 99H, 92H, 82H, 0F8H ;4、5、6、7
DB 80H, 90H, 88H, 83H ;8、9、A、B
DB 0C6H, 0A1H, 86H, 8EH ;C、D、E、F
DELAY:
......
『伍』 51單片機數碼管顯示程序
#include<reg52.h>
//52系列單片機頭文件
#define
uchar
unsigned
char
//宏定義
#define
uint
unsigned
int
sbit
la=P2^6;
//申明u1鎖存器的鎖存端
sbit
wela=P2^7;
//
u2
uchar
num1,num2;
uchar
code
table[]={
//數組定義
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
uchar
code
aable[]={
//位選數組定義
0xfe,0xfd,0xfb,0xf7,0xef,0xdf};
void
delays(uint);
//子函數申明
void
main()
{
while(1)
{
for(num1=0;num1<48;num1++)
//6個數循環顯示
{
wela=1;
//打開u2鎖存端
P0=aable[num1%6];
//送入位選信號
wela=0;
//關閉u2鎖存端
//
delays(1);
la=1;
//打開u1鎖存端
P0=table[num1%16];
//送入段選信號
la=0;
//關閉u1鎖存端
delays(1);
}
}
}
/*---------主函數-----------------------------------------------*/
void
delays(uint
xs)
{
uint
i,j,k;
for(i=xs;i>0;i--)
for(j=1000;j>0;j--)
for(k=110;k>0;k--);
}
/*----------------延時程序-----------------------------------------------*/
『陸』 51單片機數碼管
定時器函數有問題。程序太亂,數碼管顯示一般都是把要顯示的斷碼做為數組,顯示的時候調用數組中的顯示碼就可以了,沒必要abcdefg的這樣去定義。
『柒』 89c51單片機兩個數碼管同時工作怎麼弄
那就最小的改動用你現在的程序,把兩段穿插就好了,也就是在每個延時前同時給兩個數碼管輸出埠賦值。比如
P0=p0[1];
P2=p2[1];
delay1s;
P0=p0[2];
P2=p2[2];
delay1s;
……
但其實這樣是不規范的,用到了太多輸出介面,電路復雜,單片機整機電流大,並且如果數碼管很多關鍵不夠用。超過一位數碼管時一般用動態掃描法,也就是每個數碼管的8個數據口並聯,公共端位選口再用另外的單片機管腳控制,同一時刻只讓一個亮,快速切換 比如1秒切換50次。視覺上就都能看到了
『捌』 51單片機數碼管為什麼不亮的原因,一點反應都沒有
第一、定時器的處理是很有問題的。
第二、可能你選擇的數碼管不對,應該用共陰極數碼管,可能你選擇了共陽極。
第三,你的電路圖或者接線可能有問題。