51微控制器接led數碼管,怎麼讓數碼管倒計時

2021-03-03 22:09:03 字數 2532 閱讀 9685

1樓:匿名使用者

先看看下面程式,看懂了,就知道咋編了

#include

#define uchar unsigned char#define uint unsigned intuchar a , b=0;

sbit wei1=p1.0;

sbit wei2=p1.1;

//共陰數碼管七段碼

uchar code table=;

void delay1ms(uint i) //1ms延時程式}}void display( uchar a)) /顯示子程式void main(void )//主程式}//中斷子程式

void timer0(void) interrupt 1if(b==60)}

想用51微控制器編個倒計時的c程式,要求用兩位數碼管顯示分鐘的,並用一個按鍵

2樓:空雪夢見

並用一個按鍵啥?

51微控制器我沒設計過電路,用的學習板是現成的,對著電路圖。

那個學習板上沒有鎖存器啥的,只能靠掃描來顯示2個數字(就是兩個數碼管輪流顯示數字,因為輪流速度非常快人眼看不出來一次其實只有一個在顯示)

思路的話,按鍵和計時器都用中斷控制會比較方便,

1個全域性變數代表當前剩餘秒數,一個全域性變數代表當前剩餘分鐘數(或者你要一個16位變數代表秒數也行)

因為計時器無法定時1秒所以還要一個變數來輔助計時器實現每1秒引發一次事件的操作。

加上按鍵,這樣就有2個事件:一個是1秒引發一次,一個是按鈕引發

按鈕作用是什麼我不知道,你自己看著辦

計時器就是全域性變數的秒數減去1

這兩個事件實現以後,主程式邏輯就是一開始啟用中斷、啟用定時器、初始化全域性變數,

然後就開始死迴圈,迴圈裡的功能是把全域性變數裡的數字顯示到數碼管上,只管顯示不管別的的話還是很容易的,別的(計時、按鈕)全部交給中斷去完成,即可。

3樓:歪有小愛

你這數碼管的1、2口就這麼懸著或者接dp一起了真的沒問題嗎……

全域性變數2個用於表示個位和十位,顯示的時候可以省點力不用每次計算個位十位。

然後一個全域性變數代表秒

程式設計的話,首先是按鍵響應中斷,控制某個全域性變數flag的值,三種狀態:正常、暫停、到時間。按鍵可以在前兩種之間切換,如果已經是第三種狀態則沒反應(或者要重置什麼隨你)

然後定時器,一直開著就好,比如定10ms,每10ms就給一個全域性變數的值+1

這個變數到了100的時候就說明一秒過了,重設值,全域性變數的秒減一。如果到0了,就恢復60,然後給分鐘的個位減一。如果個位不夠減,就把十位減一然後個位設9。

如果十位和不夠減,就是時間到了,flag設定為第三種狀態

主函式在初始化各種狀態之後不斷迴圈給數碼管顯示數字,就ok了。

我想用51微控制器編個倒計時的c程式,要求用兩位數碼管顯示分鐘的,並用一個按鍵

4樓:空雪夢見

你這數碼管的1、2口就這麼懸著或者接dp一起了真的沒問題嗎……

全域性變數2個用於表示個位和十位,顯示的時候可以省點力不用每次計算個位十位。

然後一個全域性變數代表秒

程式設計的話,首先是按鍵響應中斷,控制某個全域性變數flag的值,三種狀態:正常、暫停、到時間。按鍵可以在前兩種之間切換,如果已經是第三種狀態則沒反應(或者要重置什麼隨你)

然後定時器,一直開著就好,比如定10ms,每10ms就給一個全域性變數的值+1

這個變數到了100的時候就說明一秒過了,重設值,全域性變數的秒減一。如果到0了,就恢復60,然後給分鐘的個位減一。如果個位不夠減,就把十位減一然後個位設9。

如果十位和不夠減,就是時間到了,flag設定為第三種狀態

主函式在初始化各種狀態之後不斷迴圈給數碼管顯示數字,就ok了。

5樓:匿名使用者

你這個圖有問題,兩數碼管只接了8個io口,也就是同時點亮兩個數碼管

6樓:小馬達

#include

#define uchar unsigned charsbit p13=p3^0;

sbit p14=p3^1;

uchar c,i,a=60,z;

uchar code numcode=;

void delay(z)

void main()

/*if(a>=0)

*/if(a>=0)

else}}

void timer0() interrupt 1

怎樣用51微控制器實現累加計時和倒計時,並用六個共陰極數碼管顯示出來。用兩個按鍵分別切換。

7樓:匿名使用者

剛開始上電時, system_mode不是1 也不是2,不知你初始化時是否給它賦值?另外你的按鍵檢測程式沒加入到迴圈程式中,剛上電時若沒有按鍵按下,則很快跳過兩個按鍵檢測語句,然後進入迴圈顯示程式中,這是一個死迴圈,只有中斷才可打斷其執行,所以再按什麼鍵也沒反應了,建議把按鍵檢測放入顯示迴圈中,它對顯示效果不會有什麼影響,或在初始化後加一個迴圈,若兩個按鍵都沒有按下,一直檢測按鍵

微控制器LED數碼管掃描程式題

除錯通過!p0接abcdefg,p1接位1,2,3,4.其實捱過 來才是最好的。p0要加上拉電阻!c bit equ 30h org 00h ajmp init sys org 0bh inc c bit mov dptr,tab mov th0,244 mov tl0,0 mov a,c bit ...

微控制器按鍵數碼管顯示問題,微控制器C51實現按鍵一次數碼管加1程式問題。高手進。

default那句的break刪掉試試。51微控制器中如何按下按鍵時數碼管正常顯示而不閃爍,並且實現長按連續 不要檢測按鍵是否抬起即可,但為了防止連續加得太快,所以程式裡還是要加延時,這樣造成 數碼管顯示閃爍,且這個延時和閃爍是一個矛盾if key 0 display num 當然也好可以將延時函式...

51微控制器程式設計,為什麼只有數碼管亮。微控制器是STC89C52RC,程式是看的郭天祥的

解釋一來下wela,dula是指什麼?如果是數原始碼管的公共端,bai那說明一下du是共陰還是共陽?根據我的理解zhi,如果要兩個數dao碼管一起亮,應該把上面的幾句都包含在while 1 迴圈內吧?即 include sbit dula p2 6 sbit wela p2 7 void main ...