微控制器數碼管顯示,外部中斷

時間 2025-04-23 13:05:27

1樓:中人多遠尋夜

實驗2unsigned uhar count=0;

void main(void)

ea=1; /開總中斷。

et0=1; /定時器t0中斷允許。

tmod=0x01; /使用定時器t0的模式1

th0=(65536-50000)/256; /定時器t0的高8位賦初值。

tl0=(65536-50000)%256; /定時器t0的高8位賦初值。

tr0=1; /啟動定時器t0

while(1);/蘆歷無限迴圈等待中斷。

源清***函式功能:定時器t0的中斷服務程式。

void time0(void) interrupt 1 using 0 //雹譁前「interrupt」宣告函式為中斷服務函式。

其後的1為定時器t0的中斷編號;0表示使用第0組工作暫存器。

count++;

th0=(65536-50000)/256; /定時器t0的高8位重新賦初值。

tl0=(65536-50000)%256; /定時器t0的高8位重新賦初值。

if(count==20)

count=0;

d0=~d0; /按位取反操作,將引腳輸出電平取反。

51微控制器定時中斷導致主程式數碼管顯示出問題

2樓:墨竹吟

我猜你的串列埠傳送用的是輪詢等待傳送結束的方式,而數碼管動態掃瞄用的是軟體延時(就是回for迴圈)吧?、答、

這樣串列埠傳送很佔時間——你想,如果是9600baud的話,發一位元組就要1ms左右。因此這個插入的傳送資料的任務會讓延時函式的延時時間比預定的長很久,動態掃瞄就連不起來了。

改善方法有3個:

1,最簡單的,在通訊可靠的前提下儘可能提高串列埠波特率,同時降低傳送頻率(就是增大定時器中斷週期),再把要傳送的資料弄少點,能用縮寫的就別寫一大串。。

2,串列埠傳送改為中斷方式,這個不細說了,網上有資料。。

3,捨棄數碼管掃瞄的軟體延時,改用硬體延時(就是把數碼管的位的切換也放在定時器中斷裡完成),保證動態掃瞄的及時性。這叫微控制器的「前後臺」程式設計方式,相當於將動態掃瞄放在了「後臺」,由定時器中斷來觸發,不觸發則不佔cpu時間。

3樓:陳業鶴

中斷程式放錯位置了吧?儘量把這兩個量段放在兩個子程式中。

4樓:陽光的新手乙個

中斷時間多長啊?如果長的話需要呼叫顯示函式啊 不然肯定要出問題。

微控制器數碼管電路問題

5樓:網友

首先,p0在內部結構上是沒有上拉電阻的,而p1、p2在內部有上拉電阻,所以,在你這樣的應用中,p0需要加外部上拉電阻。

p0-7是數碼的段和點的控制,而p20-3是位的控制。

4位led數碼應該是共陽的,也就是說要點亮led需要p20-3輸出高電平,p0-7輸出低電平。

當然,如果你說4位led數碼是共陰的也可以,要點亮led就需要p20-3輸出低電平,而p0-7輸出高電平,電流由上拉電阻-》led-》p20-3,不過,這樣程式設計的比較少。

微控制器數碼管這個問題怎麼解決?

6樓:網友

用兩個鎖存器,限流電阻用8個就好了,即乙個排阻就行。

數字鐘也是用動態掃瞄的方法實現的,不然的話得多麼佔資源啊。

動態掃瞄是乙個乙個點亮的,但由於掃瞄的速度很快,所以人眼看起來是8個管同時亮的。

這是利用了人眼視網膜的視覺暫留性。

7樓:網友

這樣連線只需要在它的公共短接8個電阻。

8樓:網友

使用共用匯流排方式,可以減少電阻。

如果你數碼管驅動不共用匯流排,在共陰或者共陽端接乙個電阻也可以。

但這樣做有缺點,就是數碼管亮度有一定影響,比如你顯示1的時候,點亮2位就可以了,顯示8的時候,就需要點亮7位,通過每位的電流會有不同。

如果都設定為飽和點亮,基本就看不出來亮度差異。

6個管同時亮,靜態很簡單,估計你知道了。

動態的就掃瞄,掃瞄一次,就閃一次,然後在數碼管餘輝還沒有消失的時候,再掃瞄一次,就可以了,就這樣不斷地掃瞄就可以了。

9樓:網友

共極上接乙個就行了 (乙個數碼管公共端上接乙個)

微控制器驅動數碼管顯示問題,51微控制器數碼管顯示問題

引腳夠的話,直接p0口接個位的數碼管,p2口接十位數碼管,引腳不夠就兩個數碼管掃描顯示,用一暫存器存計數值,然後設一無限迴圈不斷讀暫存器值七段譯碼輸出就可以了,然後計數端接在中斷上,有計數就進中斷 51微控制器數碼管顯示問題 大草原黃花菜 等於零顯示,然後置一關掉,再顯示下一位吧 鎖存器吧。關掉後。...

51微控制器數碼管滾動顯示,51微控制器數碼管動態顯示從右往左

薩日朗本郎 include unsigned char code a data 10 void delay ms int ms 毫秒延時程式 void main p2 a data j p0 a data i 用乙個for迴圈,利用陣列,在主函式中定義兩個變數i和j,i表示各位,j表示十位,差不多就...

STC微控制器AD轉換數碼管顯示

做而論道 採集到電壓值之後,可以算出 1k 電阻中的電流 再用該電壓值,除以電流,即可得出光敏電阻在當時的阻值。 胖大海君 嘿嘿 俺來告訴你吧 1 你的這個電路根本測量不了u31的光敏電阻。要測量電阻必須要為電阻提供乙個電流不變的恆流電流源,而不是 5v電壓源。2 為保證前後電路互補影響,應加入一級...