求助51微控制器高手數碼管動態顯示問題要求是數碼管動態顯示

2021-05-13 17:15:47 字數 3842 閱讀 2990

1樓:聞人忻慕邸嬋

把一個多位抄數(大於9的數襲)分別顯示在兩個數碼

管上面就是把這個數的每一位拆開,用數碼管的動態掃描進行顯示。至於閃動,不就是一亮一滅嗎?就用個定時器定時,在一秒的時間內,一半時間是亮的,一半時間是滅的,不就閃爍了嘛

2樓:申綠定湃

沒有if成立的條件時數碼管的的位選保持最後下次狀態,然後j一直加到最大值,再從0開始加,所以最後一個管一直亮,因為其他位選情況你沒有加延時,所以只會閃一下

求助51微控制器高手一個數碼管動態顯示問題 要求是數碼管動態顯示

3樓:最近的天涯海角

你的位選是你最後一次的位選值,雖然j大於5以後沒有和jj相匹配的if語句,但是你的段碼還是在不停的變化,所以會出現最後一個數碼管總是從0-7變化,另外數碼管動態顯示需要一定的延時,否則就會出現如你所說閃一下的情況,個人愚見僅供參考

4樓:手機使用者

乾脆你發程式 我給你改吧~~

都不知道 你那些按鍵跟數碼管 要體現的功能顯示00 那時你段選 p0口的段選 問題且~ 你到底要讓數碼管這麼顯示 (要顯示多少)

5樓:匿名使用者

沒有if成立的條件時數碼管的的位選保持最後下次狀態,然後j一直加到最大值,再從0開始加,所以最後一個管一直亮,因為其他位選情況你沒有加延時,所以只會閃一下

6樓:匿名使用者

先搞清楚什麼叫動態顯示

這是一個4位共陽數碼管動態顯示9999~1(每次變化值為1)。為什麼不能點亮。求高手解答。c51微控制器 c語言

7樓:匿名使用者

你既然用共陽數碼管,那位碼就應該是1有效,可是你的程式卻是0有效。所以,顯示子程式有問題。

更重要的問題出在主程式,主程式沒有while(1)語句,肯定是錯誤的。主程式問題太多了,自己看吧。還有那兩個計數i和b,計數到9999的要用整型的,才能計到9999,而你有char型的,最大才是255。

再看一下你的**圖中的數碼管,確定是共陽的嗎。看下圖中的4位一體的數碼管元件的名稱是什麼,與你用的一樣嗎?

**圖和修改後的顯示子程式和主程式如下,其餘部分沒有修改的沒有貼上來。特別 要對照一下**圖。

void disp4bit(unsigned char d1,d2,d3,d4)  //4個數字d1,d2,d3,d4依次點亮10毫秒

void  main (void)      // 主函式

for(j=0;j<15;j++)}}}

8樓:做而論道

先得解決顯示的問題,成功後,再琢磨怎麼變化。

9樓:匿名使用者

確定是共陽?試一下共陽共陰有沒有搞錯!

如何在51微控制器矩陣鍵盤裡按一個鍵可實現數碼管動態顯示而不是一個值

10樓:匿名使用者

#include

#define uchar unsigned char;

uchar distab=;  //0到fvoid delay(unsigned int a){unsigned int i,j;

for(i=0;i

c51微控制器數碼管動態顯示工作原理是什麼?

11樓:匿名使用者

數碼管要正常顯示,就要用驅動電路來驅動數碼管的各個段碼,從而顯示出我們要的數字,因此根據數碼管的驅動方式的不同,可以分為靜態式和動態式兩類。

12樓:匿名使用者

1:數碼管如果是8位的話,一般是由靜態工作方式與掃描工作方式

靜態工作方式 與led單燈工作一樣 只不過是把多個led燈泡放在一塊了,安裝位置組成了數碼形式

它引出了很多腳,有極性之分 ,把全部led的正極連線到一塊為共陽極,負極則為共陰極,

把他們各個管腳都同電源 則都亮,所有用微控制器管腳對應每一個數碼管管腳,然後進行 通斷的轉換 顯示出字元,

濰坊05368938908

2.掃描 是在靜態工作原理基礎上迴圈 8位的改變 人眼有餘光 看起來都亮,其實輪著亮的,掃描方式是為了節省 微控制器io口

13樓:匿名使用者

工作原理就是利用人眼的視覺暫留效應。

14樓:匿名使用者

多位數碼管按從左到右或從右到左順序分時顯示,顯示的重新整理速率不低於人的暫留視覺,讓人感覺不出數碼管的顯示有先後順序,就像所有的數碼管同時顯示一樣,這就是數碼管動態顯示的基本原理。

51微控制器,數碼管動態顯示,不影響其它程式

15樓:做而論道

動態顯示程式,必須不停的、反覆的呼叫。

稍有停頓,就只能看見最後顯示的一位字元。

解決方法,可以參考我以前回答的問題:

16樓:匿名使用者

就在主程式裡反覆呼叫 改變變化數字,用暫存最好 要改變的時候改變暫存就可以了 不影響其他程式 如果閃就可以改變顯示子程式的延時子程式時間

17樓:匿名使用者

動態掃描程式放定時器中斷裡面做,nms進一中斷。

51微控制器數碼管動態顯示的過程中,怎麼實現讓最後一個閃爍,其他的不受影響?

18樓:匿名使用者

閃爍原理,別的數碼管都是反覆重新整理,需要閃爍的那一位則重新整理幾十次後再有幾十次不顯示

下例是20次亮 20次滅

uchar modtable[6][4]=,,,,, };

//有1的那一位數碼管不亮 不閃爍 4位全閃爍

uchar ia;

uchar bai,shi,ge;

uchar flag=0;

uint a=0;

//共陰數碼管七段碼,轉成共陽的需取反,程式中已這樣做了

uchar code table=;

void delay1ms(uint i) //1ms延時程式}}

void display(uint m,uchar mode )//4位顯示子程式 帶某位閃爍功能

//mode=0,都不閃爍 mode=1 千位閃爍 mode=2 百位閃爍 mode=3 十位閃爍 mode=4 個位閃爍

//mode=5 全部閃爍

else

dataport=~(table[a1]);

sm1=modtable[modeaa][0]; delay1ms(2);sm1=1;

dataport=~(table[a2]);

sm2=modtable[modeaa][1]; delay1ms(2);sm2=1;

dataport=~(table[a3]);

sm3=modtable[modeaa][2]; delay1ms(2);sm3=1;

dataport=~(table[a4]);

sm4=modtable[modeaa][3]; delay1ms(2);sm4=1;

ia++;

if(ia==40) ia=0;//40次一輪}

51微控制器,數碼管動態顯示,不影響其它程式

19樓:壽鬆蘭野未

第一,數碼管型別沒說清楚,共陽

還是共陰;

第二,既然單個數字顯示正常,那就說明硬體沒問題,不出字跟亂碼的原因,很明顯,是程式的問題,lz在數碼管顯示的動態切換上

沒注意;

第三,根本沒看到你說的程式。

51微控制器數碼管動態顯示從右往左

這是四位數碼管從右從左流動顯示,像滾動字幕一樣的。用不著矩陣按鍵哪版。其實程式很簡單權,沒那麼複雜。程式如下 include define uchar unsigned char define uint unsigned intuchar code tab 共陰段碼碼,0x00為滅void dela...

微控制器數碼管動態掃描顯示,時間這樣設定才能更好的顯示一連串數在螢幕上,有沒有數碼規律

要根據數碼來管的數量 源來定的。但是,一般bai來說,每一位數碼管需要du一定的顯示時間zhi,也dao就是說,你輸出一位數碼管的資料點亮這個數碼管之後,需要一定的時間才能熄滅它並點亮下一個數碼管,而不能一輸出就馬上熄滅它,否則亮度會非常低。另外,全部數碼管全部掃描一遍的總時間最好不要超過25ms,...

如何通過程式設計,實現51微控制器控制數碼管顯示0 9這幾個數字

while後加邏輯語句,如果值為true也就是1時就會執行下面的語句,執行完再判斷是不是true,如果是的話繼續執行,然後就迴圈了 如果為false也就是0就會停止 如果不加的話也就是執行一次,執行完後結束,燈就不亮了,按理說應該亮一次,但是執行太快你根本沒來得及看到燈亮就已經結束了 如果加迴圈語句...