如何把c51微控制器中的二進位制數在數碼管(共陰極)中用十進位制顯示出來?謝謝

時間 2021-09-10 12:14:00

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都是針對特殊暫...