1樓:做而論道
;-----------------------------------
display: ; 顯示 子程式.
mov a, r0 ; 取來二進位制數字.
mov b, #10 ; 換成10進位制.
div ab ; a÷b商存a, 餘數存bmovc a, @a+dptr;取.
mov p0, a
clr p2.1 ; 開十位顯示.
acall dly10ms ; 調延時10ms程式 十位.
setb p2.1 ; 關閉十位顯示.
mov a, b
movc a, @a+dptr ;取表子程式.
mov p0, a
clr p2.0 ; 開個位顯示.
acall dly10ms ; 調延時10ms程式.
setb p2.0 ; 關閉個位顯示.
ret;-----------------------------------
摘自:http://zhidao.baidu.com/question/290559430.html
2樓:jhy煙雨
假如十六進位制數是w,則:
千位=w/1000;
百位=w%1000/100;
十位=w%1000%100/10;
個位=w%1000%100%10;
3樓:匿名使用者
不斷除以10,將各位的數字分離出來。
如何用51微控制器組合語言編寫一個將十六進位制數轉換成十進位制數,並在七段數碼管上顯示出來的程式
4樓:匿名使用者
keyval equ 30h
dat equ 33h
scanled equ 39h
org 0000h
ljmp main
org 001bh
ljmp t1isr ;掃描顯示
org 0030h
main:
mov sp,#5fh
mov tmod,#10h
mov th1,#0ech
mov tl1,#078h
mov 33h,#10h
mov 34h,#10h
mov 35h,#10h
mov 36h,#10h
setb tr1
setb et1
setb ea
mov keyval,50h
loop:
lcall datchg
jb p1.0,loop1
jnb p1.0,$
inc keyval
sjmp loop
loop1:
jb p1.1,loop
jnb p1.1,$
mov a,keyval
dec a
mov keyval,a
sjmp loop
t1isr:
push acc
clr tr1
mov th1,#0ech
mov tl1,#78h
setb tr1
mov dptr,#ledtab
t100:
mov r0,#dat
mov a,scanled
add a,r0
mov r0,a
mov a,scanled
jnz t101
mov p2,#01h
sjmp t1dis
t101:
dec a
jnz t102
mov p2,#02h
sjmp t1dis
t102:
dec a
jnz t103
mov p2,#04h
sjmp t1dis
t103:
mov p2,#08h
t1dis:
mov a,@r0
movc a,@a+dptr
mov p0,a
inc scanled
mov a,scanled
cjne a,#4,t1end
mov scanled,#0
t1end:
pop acc
reti
datchg:
mov a,keyval
mov b,#100
div ab
mov 34h,a
xch a,b
mov b,#10
div ab
mov 35h,a
mov 36h,b
retledtab: ; 共陰極數碼管顯示**表db 3fh,06h,5bh,4fh,66h ;01234db 6dh,7dh,07h,7fh,6fh ;56789end
在微控制器程式中如何將p1口的二進位制資料讀出後轉換成十進位制送給數碼管的前三位
5樓:月下獨酌
你讀取p2的資料之後儲存
t=p2;
p1_0=t/100;
p1_1=t%100/10;
p1_2=t%10;
然後你在從p1輸出就可以了
6樓:匿名使用者
從p1讀出的資料給一個陣列input;
int i, tn, dec = 0, t = 1;
for(i = 0; i 為每一項的值*/dec = dec + tn;
t = t * 2; /* 每往前進一次, 基值 *2 */} printf("%d", dec);
} 此時就轉換成十進回制了
然後給數碼管答相應的管腳就ok了。
控制數碼管一般都是用二進位制和十六進位制,您怎麼用十進位制呢
7樓:匿名使用者
用74ls164作為橋樑就ok了。
有幾位數碼管就用幾個74ls164。
具體接法網上都有。
需要注意的是p1口輸出的資料一定要依據你的電路接法。
51微控制器的共陰數碼管怎麼顯示數字(c語言)
8樓:匿名使用者
要讓51微控制器共陰數碼管顯示數字,只需要將微控制器的p2埠輸出數字對應的段碼即可。
以顯示數字“0”為例,c語言程式如下:
#include
#define uchar unsigned char#define uint unsigned int//數碼管的段碼編碼
uchar table[10] =;
void main()
9樓:匿名使用者
共陰極數碼管也就是說,當控制訊號為1時該段led點亮,8段數碼管的數字0~9定義為:
3fh,06h,5bh,4fh,66h ;012346dh,7dh,07h,7fh,6fh ;56789以下為簡易8路搶答器的例程:
#include
#define uchar unsigned charuchar table=;
sbit rstkey=p2^2;
sbit speaker=p2^0;
void delay()//延時約400毫秒main()
switch(key)
p1=table[i];//顯示按下搶答器的號p0=key;//顯示按下鍵號的led
while(1)}}
10樓:匿名使用者
不涉及動態顯示,未用鎖存器
#include
#define _x10 (0xfe)
#define _x1 (0xfd)
unsigned char code tab=;
void main()
}void show(unsigned char duan,unsigned char wei)
else}
11樓:走在時間的前頭
你的l1/l2/l3都是什麼啊?還有latchduan??我有做過類似的設計,需要可以互相交流一下!
51微控制器8051數碼管顯示8位二進位制數匯程式設計序無
修者世界 數碼管顯示8位二進位制數程式段 待顯示數值存放在20h單元 org 50h mov 20h,07fh 待顯示二進位制數寄存單元,如01111111 start mov dptr,dispcode 表首位址賦給dptrmov a,20h rr a mov 20h,a anl a,01h mo...
你對c51微控制器的看法,C51微控制器。XX!你怎麼看?
我認為初學者還是要從51開始。雖然很多人建議說不要再學51了,退出時代了。這話就像說有了c語言就別學彙編了一樣。我一直在學51,現在開始學430,雖然剛開始學,但是對430學習還是很有信心的,而且遇到的困難可以很快的解決,這都歸於學習51的透徹吧。別人說我怎麼學51這麼久,我給自己定的目標是,如果5...
51微控制器C51語言的幾個問題,c51微控制器控制12864程式(c語言),顯示幾個字,或一些簡單的圖片就行!先謝謝了!
1.把psw中的第二位用乙個名字a來表示,只要後面使用到a,就是使用psw的第二位。2.sfr是用來給特殊暫存器區的乙個位址命名的,假設在特殊暫存器區有個位址0xac,將其命名為xaf暫存器,就用 sfr xaf 0xac。sbit是針對特殊暫存器區的位位址命名的。因此sbit和sfr都是針對特殊暫...