89c52微控制器無論在做動態數碼管的掃描時,無論怎樣消影,都有一定的重影,這是怎麼回事

2021-04-21 21:00:29 字數 4339 閱讀 7534

1樓:匿名使用者

1.顯示前先將所有數碼管熄滅,然後再顯示。

2.除了顯示數碼外,其他時間都是熄滅的。

3.檢查是否存在交替顯示不同數字。

4.掃描速度要足夠快。

2樓:匿名使用者

應該是你延時時間太短所致,兩個段碼之間的延時時間大於3毫秒就應該沒有重影了。

89c52微控制器的靜態顯示和動態顯示消影問題

3樓:煙火夜空

汗!你都知道 動態需要消影了,那你咋沒想過 為什麼動態要消影啊?

動態消影,是因為:本次顯示的資料,會在上一位 數碼管 短暫的出現。長期以往,將會在上一位數碼管上出現 影子。於是需要消影(通過關閉位選、或段選)。

靜態數碼管,一般都是 一位。不存在 上一位數碼管之說。如果是 多位 靜態數碼管,那它們都是用鎖存器的,資料間不相影響。

也不存在 資料會在 上一位 出現 的情況。所以不需要消影。

4樓:做而論道

靜態顯示和動態顯示,區別,在於硬體電路。

弄懂了電路,就明白了消隱問題。

stc89c51微控制器上的數碼管怎麼消隱?

5樓:匿名使用者

微控制器 數碼管 掃描顯示

用少量的 io 口完成多位數碼管掃描顯示,一般在程式中需要加入顯示消隱,即在 先關閉 數碼管 再寫入段碼 接著寫入 位選碼,電路** 傳不上

#include

#define uchar unsigned char#define uint unsigned intsbit led0 = p3^2;

sbit led1 = p3^3;

sbit led2 = p3^4;

sbit led3 = p3^5;

void main(void)

}void timer0(void) interrupt 1 // t0 中斷 1 ( int0 中斷 0 )

if(a==2)

if(a==3)

if(a==4)}

6樓:影蝶幽話

在每次送完段選資料後,在送入位選資料之前,需要加上一句「p0=0xff;」,這條語句就是「消影」。

寫個片段:

dula=1;

p0=table[1];

dula=0;

p0=0xff;//送位選資料前關閉所有顯示wela=1;

p0=0xfe;

wela=0;

delayms(10);

(對共陽極數碼管)

7樓:匿名使用者

你可以用晶片74hc245,還有一些有消隱引腳的數字晶片,可以上網查查

8樓:匿名使用者

可以清資料,也可以清位選,你看差辦

微控制器89c52如何控制多個數碼管?

9樓:娜莉china小

只想用p3口的話,必須另加控制元件。

1一種方法是用兩個鎖存器來鎖存數碼管的段碼和位碼,進行動態掃描顯示。

2另一方法是,用p3口的4位接一個bcd譯碼器控制數碼管的段碼,再p3口的3位接一個3-8譯碼器來控制數碼管的位進行動態掃描。

3再就是可以用p3口的兩根序列線接串並轉換ic,來驅動數碼管。

10樓:匿名使用者

mov  31h,#00h

mov  32h,#00h

mov  33h,#01h

mov  34h,#06h

mov  35h,#03h

mov  36h,#02h

acall   d0

jmp     $-2

d0:    mov  r0,#31h

mov   r2,#11111110b

mov    dptr,#tab

d1:    orl    p1,#00111111bmov   a,@r0

movc   a,@a+dptr

mov    r3,#8

d2:     rlc  a

mov    p3.2,c

setb   p3.3

clr    p3.3

djnz   r3,d2

inc    r0

mov   a,r2

anl    p1,a

d3:     mov   r3,#250djnz   r3,$

mov   a,r2

rl   a

mov   r2,a

jb   acc.6,d1

rettab:     db 3fh,06h,5bh,4fhdb 66h,6dh,7dh,07h

db 7fh,6fh,77h,7ch

db 39h,5eh,79h,71h

db 40hend

微控制器89c52如何控制多個數碼管?

11樓:匿名使用者

1.用兩個鎖存器來鎖存數碼管的段碼和位碼,進行動態掃描顯示。

2.用p3口的4位接一個bcd譯碼器控制數碼管的段碼,再p3口的3位接一個3-8譯碼器來控制數碼管的位進行動態掃描。

3.用p3口的兩根序列線接串並轉換ic,來驅動數碼管。

51微控制器在動態掃描點亮數碼管的時候,出現如果掃描的時間過短的話,會出現重影的現象??

12樓:匿名使用者

重影主要沒做好消隱

動態顯示的步驟是:開位、送段碼(這2個順序有時要對調)、延時1~5ms、關位,再下一位。。。。。

這樣就不會有重影了。

13樓:匿名使用者

什麼叫重影?

應該是感覺比較暗吧.

14樓:匿名使用者

動態掃描就是給各個數碼管依次顯示,任意時間只有一個數碼管亮,但閃爍的太快了,人眼分辨不出,給人的感覺就是每個數碼管都在亮。一般過程就是賦值,開

微控制器做數碼管的動態顯示,消影消不掉,怎麼回事?求指教!

15樓:匿名使用者

#include//  供參考

#define uchar unsigned char

#define uint unsigned int

uchar code table[18]=;

uchar num,miao,miaoge,miaoshi,feng,fengge,fengshi,shi,shishi,shige;

sbit second=p3^3;

sbit minuate=p3^4;

sbit hour=p3^5;

/***延時***/

void delay(uint x)    //延時xms  晶振頻率12mhz

/***中斷初始化***/

void start()                              //初始化函式

/***顯示函式***/

void display()

/***設定時間***/

timeupdown()

}if(minuate==0)              //分設定

}if(hour==0)                 //時設定}}

/***主函式***/

void main()

}/***t0***/

void t0_time() interrupt 1

if(miao==60)

if(feng==60)

if(shi==24)

shige=shi%10;

shishi=shi/10;

fengge=feng%10;

fengshi=feng/10;

miaoge=miao%10;

miaoshi=miao/10;}

16樓:匿名使用者

1、先檢視一下每位的顯示時間,不能太短了,至少在1ms,否則就會出現重影。

2、因輸出段碼和位碼的時間差過長了,調整一下程式,儘量做到輸出段碼和輸出位碼的兩條指令緊跟著,中間不要加其他指令。也可以在輸出新的段碼之前,輸出位碼斷開所有的顯示,然後再輸出新的段碼,緊跟著再輸出對應的位碼。

17樓:匿名使用者

更新顯示時,

1. 請先消除原有顯示

2. 設定新的顯示內容

如果有問題,就調整1.的時間,或是掃瞄頻率

18樓:匿名使用者

要是明顯閃爍就把頻率調快,要是重影了就調慢。

stc89c52微控制器怎麼實現用兩個串列埠控制兩個模組

89c52只有一個串列埠,11f系列有雙串列埠詳細可以去stc官網找資料 可以,如果大小允許的話。兩個串列埠在程式上的區別僅僅是用的暫存器不同,修改一下就可以。兩個單獨的程式有點麻煩,因為不是獨佔cpu,所以需要協調,兩個程式的main函式要合併,如果寫的不合理可能出問題。串列埠真的只有一個,就是說...

c52微控制器數碼管動態顯示問題程式如圖,總提示語句shi shi temp 100 10存在系統錯誤,求大神解答

朋友,錯誤不在那一行,是上一行,少了個分號啊!細心一點。還有儘量不要用拼音來做變數名。英語不會就去查。修改一個51微控制器c語言程式問題,要求實現數碼管燈動態閃爍 數碼管的動態顯示原理沒搞懂。只要一個if語句就夠了,先顯十位,再顯各位。利用人眼的視覺暫留效應實現動態顯示。你的tr0 1只執行一次啊。...

我要做基於89s52微控制器下的溫室大棚監控系統,要到測光照強度 溫度 溼度的感測器,不知道用哪種

光強用taos的ct810或intersil的isl29030或臺灣敦南科技的al3006,不管微控制器是5v,3v還是1.8v的io,都能接受,而且都是iic協議,很好寫,溫度有dallas或maxim或ns 已被ti併購 的很多便宜的一線溫度ic,單匯流排協議,不佔用io口資源,如果要求精度高的...