51微控制器問題,利用動態掃描方法在六位數碼管上顯示出穩定的

2021-03-22 05:26:29 字數 3939 閱讀 3506

1樓:匿名使用者

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

2樓:

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

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

3樓:做而論道

加上消隱試試:

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--;} }

4樓:匿名使用者

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

5樓:匿名使用者

#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)

6樓:匿名使用者

a=6;

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

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

7樓:匿名使用者

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

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

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

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

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

正好都能用上。

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

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

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

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

8樓:匿名使用者

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

9樓:匿名使用者

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

利用動態掃描方法在六位數碼管上顯示出穩定的654321. 幫忙看看**出錯了! 非常感謝!

10樓:程式設計

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

uchar a,b;

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

11樓:匿名使用者

#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,而且是後面五位。。。我試過了

12樓:hjdnn闖天涯

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

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

13樓:匿名使用者

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

dula=1;

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

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

wela=1;

p0=0xfe;

wela=0;

delay(1);

p0=0x00;// 消隱

郭天祥十天學習微控制器第四課第一題網上答案proteus**不能正常顯示數字第二第六數碼管更是什麼都不顯示

14樓:匿名使用者

sbitdula=p2^6; //數碼管段選鎖存端sbitwela=p2^7; ////數碼管位選鎖存端程式中好象沒有處理...

要看你的硬體才能知道那裡不對.

關於微控制器知識,利用動態掃描方法在8位共陰極數碼管上顯示出穩定的87654321。下面為什麼顯示不了第一位8.

15樓:做而論道

|試試看:

void main()}}

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

16樓:煙火夜空

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

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

問題①,顯示混亂:

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

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

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

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

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

利用微控制器設計59秒計時器,利用51微控制器,4個數碼管設計一個計時器,要求在數碼管上顯示的資料從0開始每1秒鐘加1。

共陽共陰只是你在選com端時給其高低電平的問題無關大雅我給一段pic微控制器的程式讓你參考一下,如果你看懂的話應該能做出來了 include include 此程式實現計時秒錶功能,時鐘顯示範圍00.00 99.99秒,分辨度 0.01秒 unsigned char s0,s1,s2,s3 定義0....

51微控制器URAT中斷接收資料,51微控制器串列埠接收多個字元 假如是4位元組 ,是分4次中斷傳輸的,還是一次中斷完成的?

t1定時器的初始化程式 void init1 main void main tmod 0x01 th0 th0 tl0 tl0 es 1 允許uart串列埠的中斷ri 0 ea 1 et0 1 tr0 1 init1 main tmod,被初始化了兩次不同的數值,只有最後一次,才是有效的。應該統一使...

51微控制器中斷執行過程?坐等,51微控制器中斷中的斷點地址問題,坐等!!!!

51微控制器中斷執行過程,如外部中斷。當 cpu 檢測到 有 中斷觸發 訊號後,首先 執行完成 當前執行的指令,將下一條指令 的 地址 壓入堆疊,cpu 進入中斷 入口 地址,開始 執行 中斷服務程式,當然在中斷服務程式中不能破壞正常執行 程式的各種 暫存器的 狀態 和 資料,中斷服務 程式執行 完...