利用動態掃描方法在六位數碼管上顯示出穩定的654321 幫

2021-03-27 17:56:57 字數 3651 閱讀 1461

1樓:程式設計

把這個定義為全域性變數就行了!

uchar a,b;

也就是說,把這句放到void main ()之前就行了

2樓:匿名使用者

#include

#define uint unsigned int#define uchar unsigned charuchar a,b;

void delay(uint z);

uchar code table=;

uchar code tablewe=;

sbit dula=p2^6;

sbit wela=p2^7;

void main()

dula=1;

p0=table[a];

dula=0;

p0=0xff;

wela=1;

p0=tablewe[b];

wela=0;

delay(1);

a--;b++;}}

void delay(uint z)

這樣才行啊,你的那個好像不行,只能顯示65432,而且是後面五位。。。我試過了

3樓:hjdnn闖天涯

可以吧,模擬圖給我看看嘛?

利用動態掃描方法在六位數碼管上顯示出穩定的654321(連線圖如下)

4樓:匿名使用者

8255有三個8位的並行介面,只有pc口是可以拆分使用的,所以:

用pa口的8條線,輸出數碼管的段選;

用pc口的6條線,輸出數碼管的位選;

用pc口的2條線,作為鍵盤輸入;

用pb口的8條線,作為鍵盤輸入。

正好都能用上。

8255的初始化,控制字要寫對,才行。

宜選用共陽的數碼管,電路中,還要有位驅動、段限流的部分。

鍵盤應接地,口線要接上拉電阻。

微控制器高手請進 利用動態掃描方法在六位數碼管上顯示出穩定的654321,而我的結果是198432. 5

5樓:做而論道

加上消隱試試:

void main()

/這裡要/改一下.

//----------------------------------------

p0 = 0xff; //加上這兩行,就是消隱.

wela = 1; p0 = 0xff; wela = 0;

//----------------------------------------

p0 = 0x00; //加上這行.

dula = 1; p0 = table[a]; dula = 0;

p0 = 0xff;

wela = 1; p0 = tablewe[b]; wela = 0;

delay(1);

b++;

a--;} }

6樓:匿名使用者

它能顯示出數字,就證明程式原理沒有問題。錯誤應該在顯示資料編碼上,這和硬體接線息息相關。數碼管就是7個led(除去點),同時點亮部分led就顯示出數字了,結合硬體接線改改程式中的顯示資料就好了。

7樓:匿名使用者

#include

#define uint unsigned int#define uchar unsigned charsbit wela=p2^7;

sbit dula=p2^6;

uchar code table=;

uchar code tablewe=;

void delay(uint z);

uchar a,b;

void main()

p0=0xff;

wela=1;

p0=0xff;

wela=0;

dula =1;

p0=table[a];

dula=0;

p0=0xff;

wela=1;

p0=tablewe[b];

wela=0;

delay(1);

b++;

a--;} }

void delay(uint z)

8樓:匿名使用者

a=6;

b=0; //陣列中0為第1 位。

微控制器數碼管的動態顯示問題,求大神看看**出錯了

9樓:煙火夜空

程式的中的tt,並沒有起任何作用。刪掉的效果一樣。

從你程式的高速重新整理來看,除了不知道顯示了什麼鬼,6個數碼管應該都是有亮的。這郭派教的程式,為什麼他不提供支援,解決問題呢?

問題①,顯示混亂:

如果沒有猜錯,wela=1,dula=1,應該分別是位選鎖存器、段選鎖存器的輸出使能。「使能」表示鎖存器將資料輸出。而它輸出前,p0的資料,卻是上一次的值。

於是,上次的段選,輸出到了位選上,然後位選修正,跟著修正後的位選,又輸出到了這次的段選上,再修正段選,於是一團亂。

問題②,輝度,也就是亮度。

動態顯示中,重新整理率與輝度成反比。題目程式的高速重新整理(直接用while(1)重新整理),導致輝度為最低。

問題③,其實也不算問題。6個數碼管顯示1-6,num1 跟num2 的值,什麼時候有區別?根本沒有,那為什麼不用1個變數呢?

利用動態掃描方法在六位數碼管上顯示出穩定的654321

10樓:匿名使用者

應該是定時的問題,本來就是利用led的餘暉和人的視覺暫留效應看到的穩定的數字

11樓:匿名使用者

大哥你能說清楚點嗎,你提出的要求像個繞口令你到底想做甚麼?難道是6不同數碼管瞎碰數字數字?而且你要用什麼控制?

用動態掃描方法在六位數碼管上顯示出穩定的654321怎麼我用proteus**出問題,下面是我的程式和**圖

12樓:匿名使用者

**試試這樣消隱(實物不能這樣),下面只寫出1的,其它的類同:

dula=1;

p0=table[one]; //送段資料dula=0;

//p0=0xff; //送位資料前關閉所有顯示,防止開啟位選鎖存後段選資料通過位選鎖存器

wela=1;

p0=0xfe;

wela=0;

delay(1);

p0=0x00;// 消隱

51微控制器問題,利用動態掃描方法在六位數碼管上顯示出穩定的654321,如何用for語句實現這個功能? 10

13樓:匿名使用者

既然用了定時器, 還不如用定時器掃描

14樓:

它顯示的資料,證明是沒有問題的方案理論。會顯示錯誤資訊資料編碼,並密切相關的硬體接線。 7 led數碼管(不包括點),同時點亮的led顯示屏數字顯示資料的一部分,結合硬體接線改程式一樣。

掌握數碼管動態顯示的原理,動態掃描方法五位數的管上顯示出穩定的95043

用六顆珠子在算盤表示最大的六位數是多少

950000 在算盤上用6顆珠表示三位數,其中最大的是 最小的最 在計數器上撥6顆珠可以表示最大的三位數是600,最小的三位數是105。因為算盤每個珠都表示1,所以6顆珠最大隻能表示6,而不是9。最小,百位最小為1 1顆下珠 最高位不能為0 十位一個也不放。個位放餘下的5個珠子 全放在下珠位置 所以...

1開頭尾數4的六位數有哪些

111114 111124 111134 111144 111154 111164 111174 111184 111194 111204 111214 111224 111234 111244 111254 111264 111274 111284 111294 111304 111314.等99...

最大的五位數是它比最小的六位數,最大的五位數是多少,最小的六位是多少,它

最大的五位數是 99999 它比最小的六位數 100000 最大的五位數是多少,最小的六位是多少,它 最大的五位數是99999,最小的六位數是100000,它們相差1。最大五位數99999 最小六位數100000 兩數相差1 99999,100000 最大的五位數 99999 最小的六位數 1000...