1樓:匿名使用者
可能原因:1.你的延時時間可能太短,超過人眼視覺暫留時間,你可以改你的delayms(3)或者直接把delay 函式裡的110改小一些(當然改了110就不是1ms一次了,不過本身就不是精確計時無所謂)
2.你的數碼管開關順序不對,不知道你用的是共陰還是共陽,不過一般是寫完資料後再開數碼管控制位,如果你的程式裡1是開,0是關的話,那麼這個程式相當於是兩個數碼管在p1=table之後會有一個同時工作的時間,之後才關斷其中一個,這時數碼管的顯示會受到影響。推薦編寫順序是shu12=0;
shu11=1;
p1=table[shi1];
delayms(5);
shu11=0;
shu12=1;
p1=table[ge1];
delayms(5);這樣保證一個時間內只有一個數碼管工作,新寫入的資料不會對另一個數碼管造成影響。下面的程式同樣採用這種順序。
3.雖然可能性不大,不過也有可能是硬體電路的連線接觸不良導致的訊號跳變,這個萬用表測下就能知道了
2樓:匿名使用者
樓主你好,我用過段碼式lcd,沒有用過數碼管。但是一般來說數字不穩定(閃爍)的原因是你刷一次的週期太長,就比如你延時5毫秒太長,改短試試。
另外處理數碼管程式最好做在中斷裡面,不然延時的時候mcu就一直在那死等,什麼也不做了。
3樓:匿名使用者
delayms(5)太長了,改短成us級的就行
c語言如何程式設計點亮一個數碼管顯示數字
4樓:張濤我愛你
共陰極數碼管也就是說,當控制訊號為1時該段led點亮,8段數碼管的數字0~9定義為:
3fh,06h,5bh,4fh,66h ;012346dh,7dh,07h,7fh,6fh ;56789以下為簡易8路搶答器的例程:
#include
#define uchar unsigned charuchar table=;
sbit rstkey=p2^2;
sbit speaker=p2^0;
void delay()//延時約400毫秒main()
switch(key)
p1=table[i];//顯示按下搶答器的號p0=key;//顯示按下鍵號的led
while(1)}}
用c語言程式設計 怎麼用微控制器使2位數碼管動態顯示00---99?
5樓:匿名使用者
我有個程式
bai,不過是0~
du9 你可以修改下:
#include
unsigned char code1[10] = ;
unsigned int a;
void delay()
main()}}
用c語言編一段程式,要求同時讓四個一位數碼管分別顯示1.-.2.6,急求(51微控制器做的,共陽數碼
6樓:匿名使用者
#include
#define uchar unsigned charuchar tab=; //0到9
uchar num,dat,time;
uchar led=;
void t1isr() interrupt 3p0=~tab[led[num]];
num++;
num&=0x03;
}main()
用C語言編寫程式資料結構,用C語言編寫程式 資料結構 20
第5 題 include include define max 256 typedef int list max typedef int elemtype typedef int status define overflow 1 define ok 1 define list init size 8...
用C語言編寫“背單詞程式”,用C語言編寫如下程式?
董俊錕 include include include struct word 定義一個word的結構體,裡面的兩個成員分別放英語單詞和相應的漢語翻譯 int point 0 統計分數的 int count1 0 測試的次數 void tianjia struct word str 100 int ...
C語言程式設計,編寫程式,求10 用C語言
第0題 include define maxlen 70 main int i,temp,flag 0 printf 請輸入第一個字串 n scanf s s1 printf 請輸入第二個字串 n scanf s s2 i strlen s1 temp strlen s2 if i main x i...