1樓:煙火夜空
這個叫 殘影!人眼視覺殘留造成的。
其實 2個程式都會出現這個結果,只是,第二個程式的 殘影時間 太短間隔太遠,才沒有在 人眼中 形成 定型。讓雀。
為了方便分析,請lz 一下,duanlock =1,是 禁止段選(即鎖存不改變),還是 允許段選(即直通輸出)的意思。
不過從現象來看,資料「1」被多個位 顯示,足以推斷,duanlock=1 是允許段選,(直通輸出)的意思。
以下為分析過程:
程式開始,duanlock=1,允許段選,再賦值p0=0x06(資料「1」);關閉段選,weilock=1,允許 位選,此時,p0 依然是 0x06(0000 0110)。從後指滑衡面的0xfe來看,數碼管位選為低電平有效,最低位控制左邊數碼管,可見,此時 除了 左。
二、左三外,其他6位均被選中(0x06),而此時 段選的資料為「1」,所以 這6個位均顯示 「1」;
那麼 不延時 跟 延時 的區別呢?
一條賦值語句 2個機械週期,按標準51微控制器 12mhz 晶振計算,1個機械週期 1us,一條賦值 2us,6條 賦值語句 共 12us,也就是 說,每隔12us 重複執行一次。每次被選中6位的時間為 2us。如此高效 的頻率 與 佔空比,足以在 人眼形成 圖案了。
而 延時 後,6位數碼選中時間 依然是 2us,但 卻隔了 n(延時時間)久後 ,才 重複一次,頻率太低,佔空比 太唯做低,成不了形。
2樓:網友
需要給你完成乙份嗎。
51微控制器數碼管動態顯示12345,我為了讓它掃瞄更快,去掉了延時,結果沒有達到預期效果,請問為什麼會這樣
3樓:網友
去掉延時估計就該閃了,連數字都顯示不清楚。你給他電,他還沒亮起來呢你就斷電了。
4樓:網友
一方面動態掃瞄顯示7段led是利用人眼的視覺暫留原理來實現的,如果你不延時,那麼暫留也就留不住了,所以要讓人眼捕捉到顯示的led,必須有足夠的延時時間,另一方面要保證led顯示的亮度,也必須有足夠的時間讓led將電壓建立起來,畢竟,從0到1實際上不是瞬時達到的,有乙個漸變過程。
5樓:靜雨月軒
動態顯示數碼管,延時是必須的哦,延時個5到10ms就夠了,而且要想顯示效果好,最好還是清屏一下,
微控制器驅動數碼管動態顯示延遲時間
6樓:網友
不可以!掃瞄間隙延時,時間太長會閃爍,太短會造成重影!自己慢慢設定吧、、、
7樓:網友
不延時的話。
一閃而過。你看不清楚呀!
所以必須有延遲。
才能夠保證顯示的效果。
8樓:網友
沒有具體的原理圖,所以就從原理上說明一下吧,首先應該先根據原理圖推出每個數碼管每個數字對應的8位驅動訊號型別,既然是共陰極,那麼如果給數碼管對應的引腳置1,就會讓該位發光,這樣就可以推出從0到9的數碼管驅動序列,如果是以乙個51微控制器的乙個p0口為例,可以編成八位序列的形式以便賦值,比如0xff等,這樣編乙個陣列。data[9]=;以便在主程式中應用。
主程式中實現的過程應該如下(假設是由p0和p1口實現):
while(1)
數碼管動態顯示時,位掃瞄間隔時間是多少
9樓:網友
先廢話一下:掃瞄頻率太低數碼管會出現閃爍的現象,頻率太高則亮度不夠甚至無法看清,所以一般掃瞄間隔多為幾毫秒。
一般間隔1ms就差不多了,如果不夠亮可以適當地增大間隔時間,不會有影響。但是,有一點需要注意,從點亮第一支數碼管到最後乙隻數碼管被點亮,整個過程最好不要超過20ms,一旦超過則會出現閃爍的現象。
另外,點亮乙隻數碼管後,在點亮第二支數碼管之前需要先關斷第一支數碼管,否則會出現顯示混亂的情況。
用微控制器進行動態掃瞄程式設計時,需要先對每一段都進行賦值,段之間還要延時,我有乙個
10樓:網友
你的意思是,定時器中斷後,在中斷服務程式那去做你某段程式的事情,然後延時5ms 後,定時器中斷,又在中斷服務程式裡去做別的 一段程式的事情? 這樣說對的吧?
如果你的 意思是那樣的話,你定時器中斷的時間如果按你說的加1就中斷,那麼這個中斷時間非常小的了,如果你中斷後,在中斷服務程式裡處理程式的話,那麼這個處理程式的時間不能超出定時器設定的中斷時間,要不,就沒有辦法響應下一次中斷的了!
最好的做法是,在中斷服務程式那隻給處理的事件的要求,然後主程式根據要求去處理你要處理的程式段,那樣就不會影響你的中斷!
11樓:網友
不清楚你想表達什麼?中斷時是肯定能響應的不然怎麼叫中斷,數碼管動態掃瞄點亮段碼不需要延時可一下點亮8段,掃下乙個數碼管時為了保證亮度需要點延時,只要保證眼睛看不閃爍就可以。
微控制器菜鳥求教,關於延遲和按鍵去抖的問題
12樓:網友
數碼管動態顯示頻率需要大於50hz人眼才能看不到數碼管閃,像你在按鍵中延時1s肯定會造成數碼管閃,有兩種解決方法:
第一種:在延時中加入數碼管的動態掃瞄函式,這樣延時的過程中不會造成數碼管閃的問題;
第二種:如果你的定時器充足,可以把數碼管動態掃瞄放到定時器裡(20ms顯示一次),這樣無論主程式中怎樣延時都不會造成數碼管的顯示問題。
其實按鍵消抖動只需要延時10ms即可,你延時1s應該是因為按一次會重複進入按鍵掃瞄,所以增加了延時,其實只需加上判斷按鍵釋放即可,比如:
if(p1_0!=1)
但是這樣如果按鍵按得時間比較長的話也會出現閃的問題,解決方法可以把數碼管顯示獨立出來寫個顯示函式(比如display();把while(!p1_0);改成while(!p1_0)display();即可。
13樓:網友
你要做的是在延時程式中呼叫顯示程式,另外要在檢測到按鍵彈起後才能計數和退出鍵盤掃瞄程式,否則容易出現按下一次後加幾次的現象。
微控制器數碼管動態顯示。為什麼在段賦值後加個延遲反而顯示出錯了。
14樓:
當然應該把段和位的資料儘快放好,然後在延時呀。
您現在把段資料放好不改位訊號立即延時,相當於把段資料放到上次選中的位來顯示,這樣看到的顯示就紊亂了。
15樓:tan90度度
你沒有消影啊,就是在放入段選資料後 ,應該來一段p0=0xff ,然後再放位選資料。希望能幫到你。
用51微控制器八位共陰極數碼管三極體,設計微控制器動態掃瞄顯示系統,八位數碼管穩定同時顯示1-8數字。
16樓:網友
樓上的程式不是看你圖編寫的,當然會錯,他那程式裡應該用到鎖存器了,你這兒是直接控制段選,位選的。
微控制器怎麼能延時執行不耽誤正常運轉
17樓:和小敘
微控制器執行一條語句的速度是非常的慢的,接12m晶振其實到了微控制器內部就分到1m而已了。所以時間非常可貴,因為衡量乙個cpu好壞來說,它的速度是很重要的乙個指標,因此,在乙個比較大的工程當中,很不提倡使用簡單的延時函式(也就是我們通常命名為delay的那個函式)來處理延時問題。就像你說的那樣,雖是延時了,但卻耽誤了正常運轉。
什麼意思呢?舉個簡單的例子,在有八個數碼管(採用動態顯示)和幾個按鍵(因需消抖,要延時)的工程當中,程式在不斷地對數碼管和按鍵進行掃瞄,當檢測到某個按鍵按下時,水平不高的人一般都delay(100)來延時消抖,那樣子的話,如果是細心的人會發現數碼管閃了一下(也就是滅了一下),做出這種產品的人只能說是乙個二流工程師做出來的。
那如何不影響數碼管掃瞄,又能達到按鍵消抖的效果呢?這裡,時間把握就很重要了。
其實,按腳抖動的時間持續大約是10ms,乙個發光二極體從亮到完全暗大約也是10ms,而從滅到完全亮需要1ms,因此,懂得這些以後,就好辦了。
說了那麼多,不用延時,那方法是什麼?答案是定時器中斷。是的,定時器中斷,當時間到了,再去處理按鍵動作,這樣,就不回卡住cpu時間(也就是你所說的「不耽誤正常運轉」)了。
那怎麼實現呢?通常是設一些標誌位,這裡就不詳細講了。
當然,像數碼管也是最好用定時器來延時掃瞄最好,大的工程都需要這麼做,本人從不提倡使用簡單的delay延時來處理一切需要延時的事例。
要做精品,並且做好,需要經驗的累加。
18樓:網友
可以借鑑系統的解決方法,比如ucos2,設計乙個時間基準,看看這個帖子。
19樓:九方依秋
你這個想法若能實現,基本上99%的工程專案也就與作業系統無緣了,作業系統出現的原因80%都和怎麼處理延時有關。
20樓:網友
延時有兩種方法,一種是用軟體延時,即寫延時子程式,這種方法是讓微控制器執行無用的指令,就是為了延時,延時期間就不能做其他事情了,很浪費微控制器的時間。這種方法是在微控制器不忙的情況下用,反正閒著也是閒著。
第二種方法就是你要求的,即能延時,又不耽誤主程式的執行,用定時器t0或t1定時,設定定時時間後,定時器開始計時,主程式繼續執行,不用管定時器,當定時時間到,定時器就會申請中斷,微控制器就響應中斷,處理定時子程式需要完成的工作,完成後返回到主程式繼續主程式的執行,這是最合理的方法,充分利用了微控制器的資源,互不影響。
21樓:網友
1.用中斷 2.用標誌位 如if(a==0)當a!=0時跳出。
微控制器掃瞄電路原理,微控制器動態掃瞄的方法有哪些
微控制器行列式鍵盤掃瞄原理如下 行線p p為輸出線,列線p p為輸入線。一開始微控制器將行線 p p 全部輸出低電平,此時讀入列線資料,若列線全為高電平則沒有鍵按下,當列線有出現低電平時呼叫延時程式以此來去除按鍵抖動。 延時完成後再判斷是否有低電平,如果此時讀入列線資料還是有低電平,則說明確實有鍵按下。...
用89c52微控制器做乙個延時1個小時的延時子程式
初學者則正仿,自己試著清陸寫了個。寫的很亂,你看可以不。假設採用的晶振是mhz的。include include static int b static int c int delay hour void intrins init 定時器賦初值。th xe tl x int delay void m...
微控制器延時為什麼要用延時函式而不用定時器做延時
只是延時的話,復 都可製以的。不過微控制器的定時器等資源通常比較緊張,在延時精度要求不高的程式中採用延時函式的比較多,也可以呼叫 一些需要不斷重複但時間關係不是很嚴格的的子程式來延時,例如掃瞄鍵盤,重新整理顯示等 恩到了stm32延時就一般不用軟體延時了,有系統嘀嗒時鐘 看設計要求。定時器資源有限,...