1樓:匿名使用者
1.數碼管顯復示,是利用制
人眼的視覺暫留效應。不足餘輝,白熾燈斷電後還亮一會,才是餘輝,這可是有區別的,不可混淆。
2.這是利用定時器t0定時1ms來實現數碼管動態顯示的。用查詢法,1ms到顯示一位,實現你說的間隔1ms顯示。
3.數碼管的位控是用譯碼器74ls138的。
4.雖然是書上的程式,但現在的有關微控制器的書,真是良莠不齊,這也只是叫一段**吧,是最爛的程式。電影每年都評最爛片嗎,這可評上最爛程式啦!
微控制器動態數碼管顯示的餘暉問題 10
2樓:匿名使用者
建議你把掃描的程式放在中斷中處理,而把計算b1~b6的內容放在主迴圈中處理。
餘暉的問題,我感覺是掃描過程中,你延時控制的不一致引起的。幫你改了下程式,你試試
#include
#include "intrins.h"
#define uchar unsigned char#define uint unsigned intsbit wela=p2^7;
sbit dula=p2^6;
unsigned long base,num;
uchar count;
uchar code table1=;
uchar code table3=;
uchar display_buf[6];
void main()
}void inter() interrupt 1
3樓:做而論道
while(1)
加上消隱即可。
4樓:能者止於至善
顯示完一位後就關閉顯示就可以了。還有,你這樣寫不覺得太臃腫嗎?建議把經常出現的程式段寫成一個子函式呼叫。
5樓:
導致的原因一般是:選下一位的時候沒有關掉上一次的資料,導致上一次的資料被帶到下一位;所以一般都會在顯示結束後關掉數碼管,下次掃描的時候給資料就不會被黏在一起。
我也經常遇到,不過遇到多了就知道解決的方法和原因,希望能幫助到你~
6樓:風行我閃
你程式是1到6個數碼管同時顯示0,而後加上去吧,如果不是那請你詳細描述一下。
是的話那程式沒有問題,你看看是不是硬體問題。
7樓:匿名使用者
每次顯示完之後都加上一個p0=0;消影
8樓:匿名使用者
為什麼位段選都是0口?
微控制器數碼管動態顯示6個數碼管顯示012345問題
9樓:匿名使用者
#include //52系列微控制器標頭檔案#define uchar unsigned char#define uint unsigned intsbit dula=p2^6; // 申明u1鎖存器的鎖存端
sbit wela=p2^7; // 申明u2鎖存器的鎖存端
uchar code table=;
uchar code wei=; //位選資料,6位數碼管的位選資料
uint i=0;
void delay(uint x) //延時x毫秒void main()}
10樓:我想彈吉他
樓下 njgqzf 的答案,最後if括號裡條件應該為 i==6,如果i==7,則顯示6時,六個數碼管同時顯示6。我剛剛測試的!
利用51微控制器,4個數碼管設計一個計時器,要求在數碼管上顯示的資料從0開始每1秒鐘加1。 10
11樓:anyway丶
共陽數碼管中斷程式:
#include
#define uint unsigned int
#define uchar unsigned char
uchar code table=
;uint num,a;
uchar bai,shi,ge;
void init();
void delay(uint);
void display(ucharbai,ucharshi,ucharge);
uint fb();
uint fs();
uint fg();
void main()
}void init()
void display(ucharbai,ucharshi,ucharge)
void timeoff() interrupt 1}}
void delay(uint z)
uint fb()
uint fs()
uint fg()
擴充套件資料
2個可程式設計定時/計數器·5箇中斷源,2個優先順序(52有6個)
一個全雙工序列通訊口
外部資料儲存器定址空間為64kb
外部程式儲存器定址空間為64kb
邏輯操作位定址功能·雙列直插40pindip封裝
單一+5v電源供電
cpu:由運算和控制邏輯組成,同時還包括中斷系統和部分外部特殊功能暫存器;
ram:用以存放可以讀寫的資料,如運算的中間結果、最終結果以及欲顯示的資料;
rom:用以存放程式、一些原始資料和**;
i/o口:四個8位並行i/o口,既可用作輸入,也可用作輸出
t/c:兩個定時/記數器,既可以工作在定時模式,也可以工作在記數模式;
五個中斷源的中斷控制系統;
一個全雙工uart(通用非同步接收傳送器)的序列i/o口,用於實現微控制器之間或微控制器與微機之間的序列通訊;
片內振盪器和時鐘產生電路,石英晶體和微調電容需要外接。最佳振盪頻率為6m—12m。
12樓:匿名使用者
我剛剛寫好的 我的數碼管是共陽的 用中斷函式來寫#include
#define uint unsigned int#define uchar unsigned charuchar code table=
;uint num,a;
uchar bai,shi,ge;
void init();
void delay(uint);
void display(ucharbai,ucharshi,ucharge);
uint fb();
uint fs();
uint fg();
void main()
}void init()
void display(ucharbai,ucharshi,ucharge)
void timeoff() interrupt 1}}void delay(uint z)
uint fb()
uint fs()
uint fg()
13樓:匿名使用者
#include
#define uint unsigned int
uint qian,bai,shi,ge;
int a;
unsigned char code table=;
void chushihua(); //初始化函式
void delay(unsigned int i); //延時函式
void xianshi(uint qian,uint bai,uint shi,uint ge); //顯示函式
void main()
xianshi(qian,bai,shi,ge); } }
void exter1() interrupt 1
void chushihua()
void delay(unsigned int i)
void xianshi(uint qian,uint bai,uint shi,uint ge)
14樓:匿名使用者
這個不難的 你自己動手練習一下就會了的
怎樣用51微控制器實現累加計時和倒計時,並用六個共陰極數碼管顯示出來。用兩個按鍵分別切換。
15樓:匿名使用者
剛開始上電時, system_mode不是1 也不是2,不知你初始化時是否給它賦值?另外你的按鍵檢測程式沒加入到迴圈程式中,剛上電時若沒有按鍵按下,則很快跳過兩個按鍵檢測語句,然後進入迴圈顯示程式中,這是一個死迴圈,只有中斷才可打斷其執行,所以再按什麼鍵也沒反應了,建議把按鍵檢測放入顯示迴圈中,它對顯示效果不會有什麼影響,或在初始化後加一個迴圈,若兩個按鍵都沒有按下,一直檢測按鍵
微控制器6個數碼管動態顯示1-6的程式裡不加延時程式為什麼會出現8字。每一位數碼管只會顯示一個數字,
16樓:李_老師
把程式貼出來。
從程式中才能找到問題所在。
。我估計,是因為你在每次顯示後,下一位顯示之前,沒有關閉顯示。。
。如果每一位顯示的時間長一點,比如2毫秒,就不會有這種概況。。。
這種情況很多人都會遇到,教材中也是這樣的程式。
17樓:擼粗的人
大佬大佬,我也出現這個問題了,但是看回答沒有找到答案,請問大佬知道答案了嗎?
18樓:匿名使用者
可能是位置錯了,例如1的位置下次顯示2下下次顯示3
19樓:匿名使用者
太快了,你的眼睛看不過來。
20樓:匿名使用者
因為微控制器工作速率太快了,然後顯示1到6把數碼管的每一位段選都用到了,所以看起來就是顯示的就是數字8。(我是這樣認為的,不知道對不哦)
微控制器動態掃描數碼管問題,關於用微控制器實現數碼管動態掃描顯示
電路問題不大,不需要在集電極加上拉電阻。用proteus 和抄實際電路有區別的,數碼管在軟體裡是二極體性質,在有電位差情況下才能導通,而三極體導通需要集電極和發射極之間有電位差,在 開始時,二極體和三極體都是截止的,二極體因為三極體沒有導通而無法開通,三極體因為二極體沒有導通而建立不了集電極電位,或...
微控制器動態數碼管顯示的餘暉問題微控制器動態數碼管顯示的餘暉問題
建議你把掃描的程式放在中斷中處理,而把計算b1 b6的內容放在主迴圈中處理。餘暉的問題,我感覺是掃描過程中,你延時控制的不一致引起的。幫你改了下程式,你試試 include include intrins.h define uchar unsigned char define uint unsign...
51微控制器位選的問題,51微控制器數碼管實驗位選和段選問題共陰極
比如數碼管是共陽的,位選 就是置1,共陰的就是置0 共陽管,原則就是位選先高專電平,屬再送段選段選控制碼,延時1 5ms,位選低電平熄滅,再下一位。你上面的程式 差個延時。送段選 後才幾微秒時間 眼睛還沒反應就滅了,這是錯的。我看過他的。每復一個數碼管都是八制 個發光二極體構成,其陰極是全部接在一起...