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

單片機匯編語言數碼管

發布時間:2022-04-14 14:02:09

Ⅰ 51單片機匯編語言編程數碼管顯示問題

稍稍做了一些改動:

/******************溫度數碼顯示模塊*********************/
DISP1:
MOV R1, #70H
MOV R0, #74H
MOV R5, #0FEH
PLAY:
MOV DPTR, #TAB
MOV P2, #0FFH ;原來是 P1

MOV A, @R1
MOVC A, @A+DPTR
MOV P1, A

MOV A, @R0
MOVC A, @A+DPTR
MOV P0, A

MOV P2, R5
MOV A, R5
JB ACC.1, LOOP1
CLR P1.7
CLR P0.7
LOOP1:
CALL DL1MS
INC R1
INC R0
JNB ACC.3, ENDOUT
RL A
MOV R5, A
MOV A, 73H
......

Ⅱ 怎麼用單片機匯編語言數碼管靜態顯示1234

數碼管連接電路如圖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
b a
0
0
1
1
1
1
1 1
0 3fh
0
0
0
0
0
1
1 0
1 06h
0
1
0
1
1
0
1 1
2 5bh
0
1
0
0
1
1
1 1
3 4fh
0
1
1
0
0
1
1 0
4 66h
0
1
1
0
1
1
0 1
5 6dh
0
1
1
1
1
1
0 1
6 7dh
0
0
0
0
0
1
1 1
7 07h
0
1
1
1
1
1
1 1
8 7fh
0
1
1
0
1
1
1 1
9 6fh
1
0
0
0
0
0
0 0
小數點80h
只要把上面的相關數,改成學好就可以了。

Ⅲ 51單片機匯編語言如何用定時器中斷實現數碼管從0-F每秒進1且循環進行。

ORG0000H
JMPBEGIN
ORG000BH
LJMPT0ISR
ORG0030H
TABLE:;共陰極數碼管顯示代碼表
DB3FH,06H,5BH,4FH,66H;01234
DB6DH,7DH,07H,7FH,6fh;56789
;---------------------------------------
BEGIN:
MOVTMOD,#01H
MOVTH0,#HIGH(65536-50000)
MOVTL0,#LOW(65536-50000)
SETBTR0
SETBET0
SETBEA
MOVR2,#20
CLRA
LOOP:
MOVDPTR,#TABLE
PUSHACC
MOVCA,@A+DPTR
MOVP0,A
POPACC
SJMPLOOP
T0ISR:
CLRTR0
MOVTH0,#HIGH(65536-50000)
MOVTL0,#LOW(65536-50000)
SETBTR0
DJNZR2,T0E
INCA
ANLA,#0FH
T0E:
RETI
END

Ⅳ 單片機數碼管編程 匯編語言,急

U16INC	MACRO	U16,;;16位無符號型變數加1
LOCALZZ
INC U16+1
MOV A,U16+1
JNZ ZZ
MOV U16+1,#0
INC U16
ZZ:
ENDM

U16MOV MACRO U16,VAL;;16位無符號型變數賦值
MOV U16+1,#LOW(VAL)
MOV U16,#HIGH(VAL)
ENDM

U16DAYV MACRO U16,VAL,;;16位無符號型變數判斷大小,最後根據Cy判斷
MOV A,U16+1
CLR C
SUBB A,#LOW(VAL)
MOV A,U16
SUBB A,#HIGH(VAL)
ENDM

WX1 EQU P2.0
WX2 EQU P2.1
WX3 EQU P2.2
WX4 EQU P2.3

S4 EQU P1.3
S5 EQU P1.4

LED1 EQU P1.6;;兩個LED
LED2 EQU P1.7

JDQ EQU P1.5;;繼電器

SMGBZ1 EQU 0X30
DS1 EQU 0X31

ZT EQU DS1+4
JSBZ1 EQU ZT+1;0-39的計數
JSBZ2 EQU ZT+2;計時標志,用於閃爍和計時
JSBZ3 EQU JSBZ2+2;;繼電器通斷兩次的計時和計數

ORG 0
JMP MAIN
ORG 0XB
JMP TimeInterupt

MAIN:
MOV SP,#0X70
MOV R0,#0x70
CLR A
MA1: MOV @R0,A ;數據全清0
DJNZ R0,MA1
CALL JDQLC_STOP
CALL Time0Init

;主循環
LOOP: CALL AJPD
CALL RUN
JMP lOOP

;主運行函數
RUN: MOV A,ZT
CJNE A,#1,RR1
JMP RUN1
RR1: CJNE A,#2,RR2
JMP RUN2
RR2: RET

;;0-39循環
RUN1:
MOV DS1+0,#0X10
MOV DS1+1,#0X10
MOV A,JSBZ1
MOV B,#10
DIV AB
MOV DS1+2,A
MOV DS1+3,B

U16DAYV JSBZ2,1000
JC RUN1_1
U16MOV JSBZ2,0
INC JSBZ1
MOV A,JSBZ1
CJNE A,#39+1,RUN1_1
MOVJSBZ1,#0
RUN1_1:
RET

;;FFFF閃爍
RUN2: U16DAYV JSBZ2,500
JC RUN2_1
MOV DS1+0,#0X10
MOV DS1+1,#0X10
MOV DS1+2,#0X10
MOV DS1+3,#0X10
SETB LED1
SETB LED2
U16DAYV JSBZ2,1000
JC RUN2_2
U16MOV JSBZ2,0
JMP RUN2_2
RUN2_1:
MOV DS1+0,#0X0F
MOV DS1+1,#0X0F
MOV DS1+2,#0X0F
MOV DS1+3,#0X0F
CLR LED1
CLR LED2
RUN2_2:
CALL JDQLC

RET

;按鍵判斷
AJPD:
JNB S4,AJ1
JNB S5,AJ2
RET
AJ1: JNB S4,$
MOV ZT,#2
CALL JDQLC_START
RET
AJ2: CALL JDQLC_STOP
SETB LED1
SETB LED2
JNB S5,$
MOV ZT,#1
MOV JSBZ1,#0
U16MOV JSBZ2,0
RET

JDQLC_START:
U16MOV JSBZ3,0
RET
JDQLC_STOP:
U16MOV JSBZ3,30000
SETB JDQ
RET
;繼電器通斷兩次
JDQLC:
U16DAYV JSBZ3,1000
JNC JDQ_1
CLR JDQ;通1s
RET
JDQ_1: U16DAYV JSBZ3,1500
JNC JDQ_2
SETB JDQ;斷0.5s
RET
JDQ_2: U16DAYV JSBZ3,1500+1000
JNC JDQ_3
CLR JDQ;通1s
RET
JDQ_3: U16DAYV JSBZ3,3000
JNC JDQ_4
SETB JDQ;斷
JDQ_4: RET


;;定時器初始化
Time0Init:
MOV TMOD,#0X01
MOV TH0,#HIGH(65536-1000)
MOV TL0,#LOW(65536-1000)
SETB TR0
SETB ET0
SETB EA
RET

;;數碼顯示
SMXS:
INC SMGBZ1
MOV A,SMGBZ1
SUBB A,#4
JC SMXS1
MOV SMGBZ1,#0

SMXS1:
MOV P2,#0XF0
MOV A,SMGBZ1
ADD A,#DS1
MOV R0,A
MOV A,@R0
MOV DPTR,#TABD
MOVC A,@A+DPTR
MOV P0,A
MOV DPTR,#TABW
MOV A,SMGBZ1
MOVC A,@A+DPTR
MOV P2,A
RET

TABD:;段碼
DB0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90
DB0X88,0X83,0XC6,0XA1,0X86,0X8E,0XFF,0XBF
TABW:;位碼
DB0xF1,0xF2,0xF4,0xF8


;;定時器0中斷
TimeInterupt:
PUSH PSW
PUSH ACC

MOV TH0,#HIGH(65536-1000)
MOV TL0,#LOW(65536-1000)
CALL SMXS
U16INC JSBZ2
U16DAYV JSBZ3,30000
JNC TimeOut
U16INC JSBZ3


TimeOut:
POP ACC
POP PSW
RETI

END

Ⅳ 單片機控制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;

}

}

Ⅵ 單片機匯編語言讓數碼管顯示0到9

ORG00H
LJMPMAIN
ORG30H
MAIN:
MOVDPTR,#TABLE
MOVR7,#10
MOVA,#0
LOOP:
LCALLDISPLAY
LCALLDELAY
INCA
DJNZR7,LOOP
LJMPMAIN

DISPLAY:
PUSHACC
MOVCA,@A+DPTR
MOVP1,A
POPACC
RET

DELAY:

DL1:DJNZR6,DL1
DL2:DJNZR6,DL2
DJNZR7,DL1
RET

TABLE:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

END


再試試看。

Ⅶ LED數碼管動態顯示2017的51單片機匯編語言

DAT		EQU33H
SCANLED EQU39H
ORG0000H
LJMPMAIN
ORG0003H
LJMPEXTINT0
ORG001BH
LJMPT1ISR ;掃描顯示
ORG0030H
MAIN:
MOVSP,#5FH
MOVTMOD,#10H
MOVTH1,#0ECH
MOVTL1,#078H
MOV33H,#2
MOV34H,#0
MOV35H,#1
MOV36H,#7
SETBTR1
SETBET1
SETBEA
SJMP$
T1ISR:
PUSHACC
CLRTR1
MOVTH1,#0ECH
MOVTL1,#78H
SETBTR1
MOVDPTR,#LEDTAB
T100:
MOVR0,#DAT
MOVA,SCANLED
ADDA,R0
MOVR0,A
MOVA,SCANLED
JNZT101
MOVP2,#01H
SETBDOT
SJMPT1DIS
T101:
DECA
JNZT102
MOVP2,#02H
CLRDOT
SJMPT1DIS
T102:
DECA
JNZT103
MOVP2,#04H
SETBDOT
SJMPT1DIS
T103:
MOVP2,#08H
CLRDOT
T1DIS:
MOVA,@R0
MOVCA,@A+DPTR
JNBDOT,T1DIS1
ORLA,#01H
T1DIS1:
CPLA
MOVP0,A
INCSCANLED
MOVA,SCANLED
CJNEA,#4,T1END
MOVSCANLED,#0
T1END:
POPACC
RETI
LEDTAB:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
END

Ⅷ 單片機匯編語言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

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

MAIN:
;------------------
LOOP:
ACALLSHOW1
ACALLDELAY
ACALLSHOW6
ACALLDELAY
SJMPLOOP
;------------------
SHOW1:
MOVP0,#06H
SETBP2.6
CLRP2.6
MOVP0,#0FEH
SETBP2.7
CLRP2.7
RET
;------------------
SHOW6:
MOVP0,#7DH
SETBP2.6
CLRP2.6
MOVP0,#0FDH
SETBP2.7
CLRP2.7
RET
;------------------
DELAY:
DEL1:
NOP
NOP
DJNZR7,DEL1
RET
;------------------
END

Ⅹ AT89C51單片機怎麼用匯編語言讓4個數碼管同時顯示1234

1、首先我們先打開keil。

閱讀全文

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

熱點內容
把文件夾設鎖 瀏覽:570
命令行語句 瀏覽:218
企友3e財務如何連接伺服器 瀏覽:984
華為手機如何刪除卸載app殘留數據 瀏覽:543
rpm的命令作用 瀏覽:365
如何查看網站的伺服器時間 瀏覽:850
編譯局和人民出版社 瀏覽:652
java泛型extends 瀏覽:326
頭條程序員教學 瀏覽:772
安卓合並什麼意思 瀏覽:530
linux在光碟引導 瀏覽:537
imap伺服器地址怎麼查 瀏覽:654
作曲教程pdf 瀏覽:506
pr怎麼壓縮文件大小 瀏覽:863
查看oracle字元集命令 瀏覽:179
鋰電池增加密度 瀏覽:661
linux用戶密碼忘記 瀏覽:242
gb壓縮天然氣 瀏覽:635
圖片拼接不壓縮app 瀏覽:670
我的世界如何編程 瀏覽:86