在51微控制器過定時器讓數碼管進行精確間隔時間顯示,為什麼已經用了中斷了,但是函式裡邊還是有延時函式

時間 2021-09-01 18:44:15

1樓:戶哲茂

tt==20的時候,就開始num++然後顯示num的值,但是tt==20需要一定的時間才會變成tt==21,在20的這段時間,會一直執行括號裡的內容。如果沒有delay,那麼括號裡的幾句話執行完需要的時間很短,執行完後發現tt還是20,所以又執行了一遍,那麼num值就變了,等tt==21了,num已經從0加到4了,中間的123執行太快人眼分辨不出來,一瞬間的事情.而加了delay只要delay的時間大於tt變化的時間,這樣每次tt變化,num只會++一次,就不會出現這個情況了.

我建議儘量不要用delay,你把程式優化一下,比如

if(tt==200)

通過改變200這個值來改變頻率

2樓:匿名使用者

**沒有完全吧,中斷tt++,while裡面沒有初始化這個tt呢

dula應該是使能顯示的,使能之後,延時之後,眼睛才能看出來

3樓:那後來呢

同學你好,這個地方的延時其實就是讓數碼管顯示一段時間,不然會一閃而過,看不見其他數字,延時是為了消隱。中斷與這裡延時不衝突。

4樓:匿名使用者

程式有問題,把最後那個延時改為tt=0就可以了。

5樓:匿名使用者

數碼管顯示,是掃描顯示的,不延時,眼睛沒那麼快、數碼管的顯示也沒那麼快。。。。。~

6樓:匿名使用者

你好!中斷是計秒,延時是為了防止數碼管閃爍

7樓:匿名使用者

你這程式有問題,不過那個軟體延時應該是讓顯示停留一段時間的

51微控制器定時器中斷問題,單個數碼管間隔1秒一次顯示0到9。 5

8樓:匿名使用者

時間太長大哥 估計要好幾秒 根據你的程式 沒必要加延時 還有 如果用不到int這麼大的型別 就改為unsigned char 可以節約微控制器空間

9樓:昔勤

定時器中斷就是用來代替延時delay的 你在加個delay,怎麼可能會用

10樓:匿名使用者

if(tt>=20)/

另外程式這樣寫是不行的,費勁啊

11樓:

延時太大,等延時完成時tt>20,迴圈不能進行。

12樓:匿名使用者

因為 delay(500)延時時間太長

利用51微控制器,4個數碼管設計一個計時器,要求在數碼管上顯示的資料從0開始每1秒鐘加1。

13樓:匿名使用者

我正好也寫了那麼一個程式,我說一下自己的思路吧,我也剛學。

先做一個段選表和位選表,用兩個陣列儲存,如果有八個燈,位選就有8個。然後再定義一個陣列

digit[8] 裡面儲存 個位十位百位等數位。然後再定時器中斷函式裡,用一個switch語句,分別表明位選在01234567的情況。 我把它貼出來吧。

switch (num_we) //控制每一次位選的數碼管顯示

上面ledcode 是段選表 wecode 是位選表 。 num_we是位選標誌,表示選到了第幾個數碼管。

然後在除錯差不多掃描幾回為1秒,每到了一定的回數,個位數字就+1,個位數字到10,個位清零,十位+1,,以此類推。

14樓:絕種好風

那得看你的數碼管是怎麼接的,其實重要的是51微控制器定時器的使用,兩個,t0和t1,隨便選一個,就行了,只是提醒下,

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

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

51微控制器求不用鎖存器的利用定時器讓數碼管顯示從00到

釋奧凌茜 不就是定時器隨便一種工作狀態並開始計時,溢位時啟動中斷,讓數碼管加一,完畢之後再啟動計時器嘛,具體麻煩,有心學微控制器的,就自己寫寫,有了思路,嘗試自己寫程式,這才能收穫點什麼 邶鴻寶紹柳 這個比較簡單。你要熟悉幾個問題。1 數碼管顯示的原理。一般使用動態顯示 2 定時器工作的原理。基本屬...

請問51微控制器數碼管如何驅動,51微控制器能直接驅動數碼管嗎

祁恬靜廣壤 數碼管是由若干個led發光欄位組成,當不同欄位點亮時可形成不同的數字或字元。所有欄位的led陽極接在一起,點亮欄位靠控制led陰極的稱共陽極數碼管,反之為共陰極數碼管。微控制器就是通過輸出埠控制數碼管不同欄位的亮暗完成字元顯示的 有時要加電流驅動電路 對於多位數碼管顯示器在顯示方式上分為...