導航:首頁 > 操作系統 > 單片機8位數碼管

單片機8位數碼管

發布時間:2022-08-04 14:43:45

單片機8位數碼管顯示

給你個程序,可是你的數碼管的位選是什麼?用的鎖存器來選定還是三極體?根據你的意思是只要八個數碼管都亮,不需要選擇哪個亮哪個滅.

既然是共陽接法,你的陰極應該接的是P2口了,給P2口的八個腳低電平,那麼你看這個這個程序吧.

#incluede<reg52.h>//我板子上用的是AT89C52,這是頭文件,其實你這個貌似不需要加頭文件,頭文件里的內容是定義了一些東西,可以包含進來直接用,

voidmain()

{

P2=0xf9;

}

我的是八個三極體來選擇亮哪個數碼管,也是共陽接法.p1口位選(選擇是哪個數碼管亮),P0口段選(操作P0口來實現是顯示0~F),請看我的板子所配的程序.

#inlcude<reg52.h>

voidmain()

{

P1=0;//選種所有的數碼管,也就是八個數碼管都亮.

P0=0xf9;//讓被選種的數碼管都亮"1".

}

看我的截圖,我把三個圖截在一起,第一個圖說的是共陽數碼管的接法,.第二個圖說的是數碼管的段是如何接的,第三個圖是我板子上其中四個三極體控制四數碼管的選亮與否,也就是位選.

數碼管的段說的是數碼管其實是有8段LED接在一起,因此就有所謂的共陽和共陰.

❷ 51單片機控制8個數碼管並顯示1-8

數碼管段選連接到單片機P0口,位選連接到P2口

ORG0000h

MAIN:

CALLDISPLAY

AJMPMAIN

DISPLAY:

MOVR0,#0

MOVR1,#0x01

MOVDPTR,#TAB

LOOP:

INCR0

MOVA,R0

MOVCA,@A+DPTR

MOVP0,#0;消隱

MOVP0,A;送段碼

CALLDELAY

MOVA,R1;送位碼

RLA;移位

MOVP2,A

MOVR1,A

CALLDELAY

CJNER0,#8,LOOP;判斷8次是否循環完成

RET

DELAY:

MOVR6,#25

DD:MOVR7,#50

DJNZR7,$

DJNZR6,DD

RET

TAB:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H

❸ 51單片機八位數碼管原理圖

下面三個圖為開發板的原理圖,此開發板用了兩個74HC573寄存器,可減少單片機io口的使用.鎖存器U8用來控制位選,即控制哪個數碼管.U9控制段選,

❹ 單片機驅動8位數碼管

設位碼接P1;
uchar buf[8] = {0};
void display( ){ //1ms運行一次
static uchar w = 0;
P1 = 0;
P0 = an[buf[w]];
P1 = (1 << w);
w = (w + 1) % 8; //循環+1
}

❺ 單片機 按鍵控制8位數碼管顯示問題

關於數碼管的顯示,是顯示完一個位的是數字後,在顯示下一個位時要先把上一個位顯示徹底關閉掉,通常可以是把全部數碼管位全部顯示為空的狀態,談後在開下一個位的顯示(有延時),這樣在開下一個位的鎖存時上一個位的數據就不會跑到該位顯示,不然會在下一位顯示時會與上一個位的數字出現重影現象。。。
還有對於數碼管的顯示,最好是一次性顯示完全部數碼管,還沒有得位就顯示0ff(要記得初始化你的數組)。我個人不建議你這種顯示按位數變化方式。。。
for(i=0;i<j;i=i+1)
//每次都顯示完8個數碼管比較好。。。
{
/*
在此增加把所有數碼管顯示為0FF狀態,全部位都打開顯示
*/
display=weima_table[i];
//數碼管需要顯示的位
weima_latch=1;
//鎖存器(位碼)打開
weima_latch=0;
//鎖存器(位碼)關閉
display=cunchudisplay[i];
//數碼管需要顯示的段
anma_latch=1;
//鎖存器(段碼)打開
anma_latch=0;
//鎖存器(段碼)關閉
Delay(100);
}
判斷歸零一個變數,最好緊跟在修改該值的後面,不用放在主循環里每次循環都要判斷,雖然你那沒多大問題但可讀性不夠好。。。
j=j+1;
if(j==8)
{j=0;}

❻ 單片機8位數碼管依次顯示0到7,要求用c語言實現

假設8個數碼管公共端均接地,同時顯示0-7
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar code DSY_CODE[]=
{
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0x82,0xf8,0x80,0x90,0xff
};
void DelayMS(uint x)
{
uchar t;
while(x--)
for(t=120;t>0;t--);
}
void main()
{
uchar i=0;
P0=0x00;
while(1)
{
P0=~DSY_CODE[i];
i=(i+1)%10;/*顯示0-9*/
DelayMS(200);
}
}
下面程序從左到右顯示
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int

uchar code DSY_CODE[]=
{
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90
};

void DelayMS(uint x)
{
uchar i;
while(x--)
{
for(i=200;i>0;i--);
}
}

void main()
{
uchar i,k=0x80;
while(1)
{
for(i=8;i>0;i--)
{
P2=0xff;
k=_crol_(k,1);
P0=DSY_CODE[8-i];
P2=k;
DelayMS(3);
}
}
}

❼ 關於單片機驅動八隻數碼管

共陽管,"0"對應0(A)0(B)0(C)0(D)0(E)0(F)1(G)1(DIGHT),注意你的接線順序

注意npn管驅動

0x80左移為0x100,或者高位截斷的話就是0x00,絕不是0x01,是左移,不是循環左移

❽ 51單片機顯示八位數碼管的C語言程序

1、最開始,我們先打開keil。

❾ 51單片機八位數碼管,

以上設計是沒有採用時鍾晶元的,時間來源才用的是單片機定時自動重載的方式計算實現。如果加上時鍾晶元的話,可以實現斷電繼續走時,現在常用的方案就是這樣。

關於單片機程序方面,難者不會,會者不難,在此寥寥幾句話也說不清楚。

有問題可以繼續追加

閱讀全文

與單片機8位數碼管相關的資料

熱點內容
為什麼要編譯源代碼 瀏覽:819
輸入法freetype交叉編譯 瀏覽:436
電阻單片機代號 瀏覽:469
來畫app怎麼添加對話框 瀏覽:318
python序列化分布式 瀏覽:107
域名伺服器是什麼形式 瀏覽:681
rsa加密解密速度快 瀏覽:924
mac電腦如何單片機開發 瀏覽:547
紀念日app怎麼用小插件 瀏覽:331
如何更改安卓手機所在地區 瀏覽:217
程序員負債120萬 瀏覽:80
階層pdf 瀏覽:380
linuxgit安裝配置 瀏覽:319
用源碼搭建app要改什麼 瀏覽:42
密碼學教程pdf 瀏覽:3
亞馬遜做的加密貨幣 瀏覽:81
怎麼搭建雲播伺服器 瀏覽:867
網站客服機器人源碼 瀏覽:317
2021程序員的出路 瀏覽:547
發行與承銷pdf 瀏覽:945