導航:首頁 > 操作系統 > 單片機匯編語言數碼管顯示

單片機匯編語言數碼管顯示

發布時間:2025-05-26 00:53:29

1. 單片機匯編語言8隻數碼管顯示1-8

1、數碼管顯示演示程序:在8個LED數碼管上依次顯示1,2,3,4,5,6,7,8。引用埠:數碼管數據p0,數碼管控制p2;

DIS_DIGITEQU40H
;位選通值,傳送到P2口用於選通當前數碼管的數值,
;如等於0xfe時,選通P2.0口數碼管
DIS_INDEXDATA41H
;顯示索引,用於標識當前顯示的數碼管和緩沖區的偏移量
DIS_BUFDATA50H
;顯於緩沖區起始地址
ORG0000H
AJMPMAIN
ORG000BH
AJMPINTT0
ORG0100H
MAIN:MOVP0,#0FFH;初始化I/O口
MOVP2,#0FFH
MOVTMOD,#02H;定時器0在模式2下工作
MOVTL0,#38H;每200μs產生一次溢出
MOVTH0,#38H;自動重裝初值
SETBET0;使能定時器0中斷
SETBTR0;啟動定時
SETBEA;使能總中斷
MOVDPTR,#DIS_CODE;設定顯示初值為1-8
MOVA,#1;初值為1,以後順序加1
MOVCA,@A+DPTR
MOVDIS_BUF,A
MOVA,#2
MOVCA,@A+DPTR
MOVDIS_BUF+01H,A
MOVA,#3
MOVCA,@A+DPTR
MOVDIS_BUF+02H,A
MOVA,#4
MOVCA,@A+DPTR
MOVDIS_BUF+03H,A
MOVA,#5
MOVCA,@A+DPTR
MOVDIS_BUF+04H,A
MOVA,#6
MOVCA,@A+DPTR
MOVDIS_BUF+05H,A
MOVA,#7
MOVCA,@A+DPTR
MOVDIS_BUF+06H,A
MOVA,#8
MOVCA,@A+DPTR
MOVDIS_BUF+07H,A
DISPLAY:MOVDIS_DIGIT,#0FEH;初始從第一個數碼管開始掃描
MOVDIS_INDEX,#0
SETBTR0;啟動定時器0,開始動態掃描顯示
MAIN_LP:NOP
;主程序循環,可增加其它代碼以改變50H-57H中的值以改變顯示內容
SJMPMAIN_LP
;=====================================================
INTT0:
;定時器0中斷服程序,用於數碼管的動態掃描

PUSHACC
PUSHPSW
MOVP2,#0FFH;先關閉所有數碼管
MOVA,#DIS_BUF;獲得顯示緩沖區基地址
ADDA,DIS_INDEX;獲得偏移量
MOVR0,A;R0=基地址+偏移量
MOVA,@R0;獲得顯示代碼
MOVP0,A;顯示代碼傳送到P0口
MOVP2,DIS_DIGIT;
MOVA,DIS_DIGIT
;位選通值左移,下次中斷時選通下一位數碼管
RLA
MOVDIS_DIGIT,A
INCDIS_INDEX
;DIS_INDEX加1,下次中斷時顯示下一位
ANLDIS_INDEX,#0x07
;當DIS_INDEX等於8(00001000B)時,清0
POPPSW
POPACC
RETI
DIS_CODE:DB28h,7eh,0a2h,62h,74h,61h,21h,7ah
DB20h,60h,30h,25h,0a9h,26h,0a1h,0b1h
;0-9和ABCDEF的數碼管顯示代碼

END

2. 單片機求助,用匯編語言寫一個雙位數碼管0到99循環

在設計一個單片機程序時,我們面臨一個挑戰:用匯編語言實現一個雙位數碼管循環顯示0到99的過程。這個程序需要讓兩個數碼管交替顯示00至01秒的數字,確保人眼幾乎察覺不到切換的過程。為了實現這一目標,我們需要深入理解數碼管的工作原理和單片機的定時功能。

首先,我們需要了解數碼管的基本工作原理。數碼管通常由多個LED段組成,通過控制這些段的點亮與熄滅,可以顯示不同的數字。在本例中,我們將使用雙位數碼管,這意味著每個數碼管可以顯示0到9。為了實現0到99的循環顯示,我們需要對這兩個數碼管進行編程

接下來,我們需要考慮如何實現交替顯示。為了使交替顯示的過程不被人眼察覺,我們需要精確控制兩個數碼管的顯示時間。通常,我們可以使用單片機的定時器功能來實現這一點。設定定時器以固定的時間間隔更新數碼管的內容,從而實現平滑的交替顯示效果。

在編寫匯編語言程序時,我們還需要考慮如何控制數碼管的段。每個數碼管由多個段組成,每個段對應一個二進制位。通過控制這些段的高低電平,可以實現數字的顯示。例如,要顯示數字0,我們需要點亮所有的段;而要顯示數字1,則只需要點亮特定的幾個段。

在編寫程序時,我們還需要注意以下幾個關鍵點:

- 確保定時器的精度足夠高,以實現平滑的交替顯示。

- 為每個數字設置相應的段控制代碼,確保數碼管能夠正確顯示。

- 在交替顯示過程中,確保兩個數碼管的顯示時間盡量一致,以達到最佳的視覺效果。

通過這些步驟,我們可以實現一個高效的雙位數碼管循環顯示程序。這不僅能夠滿足顯示0到99的需求,還能確保交替顯示的過程不被人眼察覺。

3. 51單片機如何用匯編語言讓4個共陰數碼管同時顯示1234 P3口是片選 P0是段選

在進行51單片機的編程時,利用匯編語言實現四個共陰數碼管同時顯示數字1234是一個有趣的實驗。實驗中,P3口被用作片選信號,而P0口則負責段選,即控制數碼管的點亮狀態。

要實現這一功能,可以使用proteus軟體進行模擬。在proteus中,創建一個四位一體的共陰數碼管模型,並將其連接到51單片機的P0和P3口。具體配置中,P3口的每個引腳分別連接到四個數碼管的片選引腳,而P0口的引腳則對應控制數碼管的段選信號。

接下來,編寫匯編程序來實現顯示功能。程序首先將數據1234分別送入四個數碼管的顯示緩沖區。然後通過循環切換數碼管的片選信號,使每個數碼管依次顯示相應的數字。同時,P0口的輸出數據也相應地更新,以確保顯示正確的段選狀態。

在proteus模擬過程中,可以通過觀察數碼管的顯示效果來驗證程序的正確性。當數碼管依次顯示1234時,說明程序已經成功實現了四個共陰數碼管的同步顯示功能。

整個實驗不僅能夠加深對51單片機和匯編語言的理解,還能鍛煉編程和調試能力。通過實際操作,可以更好地掌握數碼管顯示技術在嵌入式系統中的應用。

在編寫程序時,需要注意數碼管的驅動方式和顯示代碼的編寫。對於共陰數碼管,通常需要將段選信號置高電平來點亮相應的段,而片選信號則用於選擇需要顯示的數碼管。在程序中,可以通過合理的邏輯判斷和循環結構來實現數碼管的同步顯示。

總之,利用51單片機和匯編語言實現四個共陰數碼管同步顯示1234,是一個既實用又有趣的實驗項目。通過這樣的實踐,可以提高對硬體和軟體的綜合應用能力,為今後的嵌入式系統開發打下堅實的基礎。

4. 51單片機怎麼讓數碼管顯示學號用匯編語言

數碼管連接電路如圖1所示,P0口輸出碼型,P2口輸出位選。鎖存器74HC573起驅動作用,提供驅動電流供數碼管發光。解碼器74HC138將位選地址轉換成位選信號,例如當前是第5個數碼管顯示,那麼P2口輸出位選地址05H,解碼器輸入CBA=110,輸出位選信號Y7-Y0=11101111,其中Y5=0,第5個數碼管選通並顯示,其它數碼管不顯示。實驗時將J6的左邊兩個引腳針(1和2)用跳冒連接,鎖存器11腳接VCC,關閉鎖存功能。

數碼管顯示方式為動態掃描方式,當P0口送絕搏第一個數0的碼型到鎖存器時,P2送位選地址01H,即Y0=0,只有第一個數碼管亮,宏宏枯顯示0,其他數碼管不顯示。當P0口送第二個數1的碼型到鎖存器時,P2送位選地址02H,即Y1=0,只有第二個數碼管亮,顯示1,其他數碼管不顯示。即每次只有一個數碼管點亮,8個數碼管是輪流被點亮的,輪流點亮的間隔時間很短(一般用延時程序延時幾個毫秒),由於視覺蔽洞的暫留現象,看到的卻好象全都點亮著,這就是動態掃描。

數碼管顯示數字的碼型由數碼管的數據腳a~dp決定,圖2為數碼管的筆段分布圖,由於是共陰極的,所以當a~dp為高電平時相應的筆段會亮,電路中P1.0~P1.7分別接數碼管的a.b.c.d.e.f.g.dp,得到0~9這10個數字的碼型如表1所示。

圖2數碼管的筆段分布圖

引腳 P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1P0.0數字碼型

筆段 dp g f e d c ba

0 0 1 1 1 1 11 03FH

0 0 0 0 0 1 10 106H

0 1 0 1 1 0 11 25BH

0 1 0 0 1 1 11 34FH

0 1 1 0 0 1 10 466H

0 1 1 0 1 1 01 56DH

0 1 1 1 1 1 01 67DH

0 0 0 0 0 1 11 707H

0 1 1 1 1 1 11 87FH

0 1 1 0 1 1 11 96FH

1 0 0 0 0 0 00 小數點80H

只要把上面的相關數,改成學好就可以了。

5. 單片機控制74LS164控制數碼管顯示怎麼編程(匯編語言)

74LS164是串入並出轉換晶元,可以藉助串口來實現,也可以用普通IO口模擬實現。舉例如下:

#include<reg51.h>

#define uchar unsigned char

uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f};

sbit keyup=P3^6;

sbit keydn=P3^7;

void delay()

{

int i=1000;

while(i--);

}

main()

{

uchar i;

i=0;

SCON=0x00;

TI=1;

while(1)

{

SBUF=table[i];

while(TI==0);

TI=0;

delay();

if(keyup==0)

{

i++;

while(keyup==0);

}

if(keydn==0)

{

if(i>0)i--;

while(keydn==0);

}

i%=10;

}

}

閱讀全文

與單片機匯編語言數碼管顯示相關的資料

熱點內容
怎麼換冰箱壓縮機 瀏覽:288
柴火是著火源碼 瀏覽:503
股票帶指標源碼 瀏覽:727
linux下怎麼退出python 瀏覽:255
40wjava程序員必知技術 瀏覽:536
oa4a伺服器內部錯誤怎麼辦 瀏覽:429
androidapp自動退出 瀏覽:842
遼寧伺服器系統租用雲空間 瀏覽:691
名片app哪個好用 瀏覽:662
filedialog獲取文件夾 瀏覽:166
掃描圖片轉換成pdf 瀏覽:52
sas高級程序員 瀏覽:399
什麼情況下不能靜態編譯 瀏覽:58
對外介面加密軟體 瀏覽:121
程序員在奧克蘭能找工作嗎 瀏覽:805
在線pdf轉換成word免費版 瀏覽:339
idc伺服器託管什麼意思 瀏覽:917
國家反詐中心app在哪裡報案 瀏覽:247
androidN開機動畫 瀏覽:435
命令行調用vs編譯 瀏覽:711