51微控制器8051數碼管顯示8位二進位制數匯程式設計序無

時間 2021-09-01 18:42:15

1樓:修者世界

//*****數碼管顯示8位二進位制數程式段******////*****待顯示數值存放在20h單元******//org 50h

mov 20h,#07fh ;待顯示二進位制數寄存單元,如01111111

start:

mov dptr, #dispcode ;表首位址賦給dptrmov a,20h

rr a

mov 20h,a

anl a,#01h

mov 21h,a ;二進位制數第1位送21h單元mov a,20h

rr a

mov 20h,a

anl a,#01h

mov 22h,a ;二進位制數第2位送22h單元mov a,20h

rr a

mov 20h,a

anl a,#01h

mov 23h,a ;二進位制數第3位送23h單元mov a,20h

rr a

mov 20h,a

anl a,#01h

mov 24h,a ;二進位制數第4位送24h單元mov a,20h

rr a

mov 20h,a

anl a,#01h

mov 25h,a ;二進位制數第5位送25h單元mov a,20h

rr a

mov 20h,a

anl a,#01h

mov 26h,a ;二進位制數第6位送26h單元mov a,20h

rr a

mov 20h,a

anl a,#01h

mov 27h,a ;二進位制數第7位送27h單元mov a,20h

rr a

anl a,#01h

mov 28h,a ;二進位制數第8位送28h單元ini:

mov p2, #7fh

mov r0, #21h

mov r7, #08h

loop:

mov a,@r0

movc a,@a+dptr

mov p0,a

acall delay

inc r0

mov a,p2

rr a

mov p2,a

djnz r7,loop

jmp ini

delay: mov 26h,#4 ;延時服務子程式dly1: mov 27h,#250djnz 27h,$

djnz 26h,dly1

retdispcode:db 0c0h,0f9h ;共陽極連線時 0,1的顯示碼end

2樓:匿名使用者

無法顯示哪些數值?0?1?或是哪個位不能顯示?

用組合語言程式設計使51微控制器實現6位共陽數碼管一位迴圈顯示0-9

3樓:做而論道

正確程式如下:

org   0000h

ljmp  start

org   0030h

start:

mov   dptr, #tab

mov   r4, #0feh

mov   r5, #0

ss:mov   p2, r4

mov   a, r5

movc  a, @a + dptr

mov   p0, a

call  delay

mov   a, r4

rl    a

mov   r4, a

cjne  r4, #0feh, ss

inc   r5

cjne  r5, #10, ss

ljmp  start

delay:

mov   r1, #2

l1: mov   r2, #200

l2: mov   r3, #200

l3: djnz  r3, l3

djnz  r2, l2

djnz  r1, l1

rettab:

db    0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90hend

4樓:匿名使用者

你的程式問題太多了,修改後如下,自己對照一下吧org 0000h

ljmp start

org 0030h

start:mov p2,#0fehmov r6,#00h ;不能用a儲存計數值,要用另乙個暫存器mov dptr,#tab

ss: mov a,r6 ;計數值送amovc a,@a+dptr ;a取出段碼後發生變化,計數值就沒有了

mov p0,a

call delay

inc r6 ;計數值加1

cjne r6,#0ah,ss

mov r6,#0 ;回0重新計數ajmp ss ;返回繼續顯示delay:mov r1,#5

l1: mov r2,#200

l2: mov r3,#200

l3: djnz r3,l3 ;改過djnz r2,l2

djnz r1,l1 ;改過

rettab: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90hend

5樓:修者世界

以下程式實現6位數碼管,每一位依次迴圈顯示0--9org 0000h

ljmp main

org 0030h

main:

mov p2,#0feh

mov a,#00h

mov dptr,#tab

loop:

movc a,@a+dptr

mov p0,a

lcall delay

inc a

cjne a,#0ah,loop

mov a,p2

rl a

mov p2,a

jb acc.6,ss1

mov p2,#0feh

ss1:

clr a

sjmp loop

delay:

mov r1,#2

l1: mov r2,#200

l2: mov r3,#200

l3: djnz r3,l1

djnz r2,l2

djnz r1,l3

ret sjmp $

org 0080h

tab:

db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90hend

在51微控制器中,使用組合語言,如何將8位2進製數轉換成2位16進製制顯示 5

6樓:匿名使用者

太高深了,真沒看懂

難道8位2進製不是2位16進製制?

是不是要顯示成字元啊?

比如0101_1010,在顯示器上顯示0x5a ?

7樓:匿名使用者

在微控制器組合語言 程式設計中 ,其實 8位2進製數 就可以直接 看成 2位16進製制數,

只是 與 10進製數 有轉換關係, 組合語言中 也是通用的 如mov a, #11111111bmov a, #0ffh ; 彙編 中 資料的第乙個 數不能以字元開頭

mov a, #255 ; 這 三條語句是相同的

8樓:做而論道

顯示16(或10、或2)進製數字,需要顯示器,led數碼管、lcd1602,都很常用。

如何顯示?

樓主必須指定顯示器和電路。

9樓:匿名使用者

在微控制器中是可以識別2進製和16進製制的,直接轉換就可以的如mov a,00110101b;

mov r1,a;

and a,0fh;

mov porta,a;

mov a,r1

swap a;

and a,0fh

mov porta,a;

10樓:匿名使用者

要把8位的,變成兩個4位的二進位制數

高位部分,右移4位即可,

低位部分,對之取與0f,即可

11樓:匿名使用者

將8位2進製數除以16,商就是2位16進製制資料的高位,餘數是低位。

12樓:朝酒晚舞

分解成高四位、低四位,分別找出顯示**,送到顯示器即可。

順便問一下:你有顯示器嗎?

13樓:匿名使用者

還要看是靜態顯示的,還是動態顯示的。

51微控制器c語言,p1口讀取了8位二進位制數,要分個十百三位送去數碼管顯示。看語句

14樓:揮劍五號

不用,p1口讀取的是8位的2進製數,它存在變數aa中,aa用十進位制表示,也可以用16進製表示。可以直接運算。

51微控制器數碼管滾動顯示,51微控制器數碼管動態顯示從右往左

薩日朗本郎 include unsigned char code a data 10 void delay ms int ms 毫秒延時程式 void main p2 a data j p0 a data i 用乙個for迴圈,利用陣列,在主函式中定義兩個變數i和j,i表示各位,j表示十位,差不多就...

微控制器驅動數碼管顯示問題,51微控制器數碼管顯示問題

引腳夠的話,直接p0口接個位的數碼管,p2口接十位數碼管,引腳不夠就兩個數碼管掃描顯示,用一暫存器存計數值,然後設一無限迴圈不斷讀暫存器值七段譯碼輸出就可以了,然後計數端接在中斷上,有計數就進中斷 51微控制器數碼管顯示問題 大草原黃花菜 等於零顯示,然後置一關掉,再顯示下一位吧 鎖存器吧。關掉後。...

51微控制器控制數碼管並顯示,51微控制器控制8個數碼管並顯示1 8

啟巖 數碼管段選連線到微控制器p0口,位選連線到p2口org 0000h main call display ajmp main display mov r0,0 mov r1,0x01 mov dptr,tab loop inc r0 mov a,r0 movc a,a dptr mov p0,0...