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口資源,如果要求精度高的...