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語言 編寫程式,使從鍵盤輸入的三位數倒著輸出
getchar函式 字元輸入函式 的作用是從終端輸入一個字元。用法 getchar 如 char a a getchar 表示從鍵盤輸入一個字元,並把他賦值給字元變數a 還可以用scanf 語句輸入資料。用法 scanf 格式控制,地址表列 如int a scanf d a scanf d d d ...
怎麼用c語言開啟應用程式,怎麼用C語言開啟一個應用程式
吉祥二進位制 c語言中開啟一個應用程式可以呼叫system 也可以呼叫作業系統的api函式,比如windows系統可以呼叫createprocess shellexecuteex 等函式來開啟一個應用程式。include include int main 安徽新華電腦專修學院 fopen函式用來開啟...
用C語言編寫程式資料結構,用C語言編寫程式 資料結構
第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...