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...