利用微控制器內部定時器設計秒錶,顯示最大值為59 99秒

時間 2021-10-14 20:22:43

1樓:匿名使用者

#include

#include

#define u16 unsigned int#define u8 unsigned char#define pin0 0x01

#define pin1 0x02

#define pin2 0x04

#define pin3 0x08

#define pin4 0x10

#define pin5 0x20

#define pin6 0x40

#define pin7 0x80

sbit k1=p3^3;

sbit k2=p3^4;

sbit k3=p3^5;

#define k1 pin0

#define k2 pin1

#define k3 pin2

u8 key=0xff;//消抖後的有效按鍵值u8 key_down=0x00;//按鍵下降沿掃描結果,1有效u8 key_up=0x00;  //上升沿掃描結果,1有效u8 key_sc=0xff;//上次掃描的按鍵值//按鍵掃描程式

void scankey()

}else

key_down=key_sc&(~key);//下降沿掃描key_up=(~key_sc)&key;//下降沿掃描key_sc=key;

}u8 readpin(u8 port,u8 pin)u8 ds[4]; //數碼管顯示快取

code u8 w=; //位碼

code u8 d=;//斷碼

code u8 dand=;

void dispaly()

void timer0init(void) //1毫秒@11.0592mhz

void init() //初始化函式

u16 js_ms=0;

u8 flag=0;

u16 count=0;

void main()//主函式

if(readpin(key_down,k2)==1)if(readpin(key_down,k3)==1) }}void timer0() interrupt 1//定時器,實現倒計時}

2樓:匿名使用者

你好!是c語言寫程式嗎?實物準備好了嗎

利用微控制器設計59秒計時器

3樓:匿名使用者

共陽共陰只是你在選com端時給其高低電平的問題無關大雅我給一段pic微控制器的程式讓你參考一下,如果你看懂的話應該能做出來了#include

#include

//此程式實現計時秒錶功能,時鐘顯示範圍00.00~99.99秒,分辨度:0.01秒

unsigned char s0,s1,s2,s3;

//定義0.01 秒、0.1 秒、1秒、10秒計時器unsigned char s[4];

unsigned char k ,data ,sreg;

unsigned int i;

const table[10]=;

//不帶小數點的顯示段碼錶

const table0[10]=;

//帶小數點的顯示段碼錶

//tmr0初始化子程式

void tmint()

//spi顯示初始化子程式

void spiinit()

//系統其它部分初始化子程式

void initial()

//spi傳輸資料子程式

void spiled(data)

while(sspif==0);

sspif=0;

}//顯示子程式,顯示4位數

void dispaly()

for(k=0;k<4;k++)

ra5=1; //最後給鎖存訊號,代表顯示任務完成}//軟體延時子程式

void delay()

//鍵掃描子程式

void keyscan()

delay(); //若有鍵按下,則軟體延時if ((rb5==0)||(rb4==0)) break;//若還有鍵按下,則終止迴圈掃描,返回}}

//等鍵鬆開子程式

void keyrelax()

//為防止按鍵過於靈敏,每次等鍵鬆開才返回}//系統賦值初始化子程式

void inizhi()

//中斷服務程式

void interrupt clkint(void)}}}s[0]=s0;

s[1]=s1;

s[2]=s2;

s[3]=s3;

}//主程式

main()}

4樓:匿名使用者

我寫的stc89c52的利用定時器1在六位數碼管前三位顯示秒錶。精確到0.01秒,你可以參考下,改下io口。不知道你的硬體設計只能給予程式參考。

#include

#define uint unsigned int#define uchar unsigned charsbit dula=p2^6;

sbit wela=p2^7;

uchar code tabledu=;//段選編碼表uchar code tablewe=; //位選編碼表void delay();

void inti();

uint temp;

display(temp);

void main()

}void inti()

void timer1() interrupt 3display(x)

void delay()

51微控制器的定時器程式,c語言編寫,使用內部定時器設計一個三位秒錶 (秒,十秒,分),顯示秒位的變動, 5

5樓:做而論道

到我的空間找找,有這樣的例項。

6樓:匿名使用者

方法:首先:要學會數碼管的顯示程式

然後:按鍵的操作,注意軟體的消抖(具體的是延時,10ms左右)。

假設有k1~停表,k2~復位,k3~繼續執行先說停表和繼續執行的

停表:如果k1按下,tr0=0;

繼續執行:如果k3按下,tr0=1;

復位:直接用硬體復位微控制器或者k2按下,資料清零。

要實現資料的迴圈:只要定時器計數到最大值時,再把最小值賦給它!

7樓:我是電阻

我也是做實驗的我不會 川大電子 嘿嘿

要求:一 課程設計內容:設計一個微控制器秒錶,該秒錶可顯示00.00到99.99秒的時間,進行相應的微控制器硬體電

8樓:順勢而為自信積累

首先明白有幾個模組:1、51最小系統 2、定時器10ms中斷一次 3、數碼管顯示(建兩個陣列,一個不帶小數的,一個帶小數的)3、按鍵掃描

就這幾個模組,心裡有個數,具體自己寫吧

核心部分是定時器部分,我寫一個:

//timer0

void timer0_init(void)void timer0(void) interrupt 1//主函式可以計t的值,10ms t自增1。 1秒t是多少,會算吧。

這些程式網上也可以找找,比較簡單。

希望對你有點幫助

9樓:匿名使用者

請把微控制器的型號以及開發板的電路圖給出給出,不然沒法做。你也可以找你們學校上屆的學長去要做好的程式。

10樓:匿名使用者

//timer0

void timer0_init(void)void timer0(void) interrupt 1{th0=(65535-10000)/256;

tl0=(65535-10000) %256;

t++;

11樓:匿名使用者

剛好做過一個,助人為快樂之本,不求分!已發到你郵箱了!

時基電路可以用微控制器內部定時器的功能代替

mist 紫櫻陪林皎看星星 完全可以。一般的時基晶片都要靠外部的電容和電阻來調節時間常數,而實際的電容值和電阻值與標稱值有一定誤差,這就導致了用時基電路的定時精度比較低。用微控制器定時器做定時,定時精度要好幾個數量級,特別是加了補償之後,可以做得非常準。如果對微控制器還不熟悉,補償不太會做,也可以用...

微控制器定時器中斷功能和定時器定時功能有什麼區別,什麼情況需要中斷,什麼時候不需要呢,講好必採納

小灰狼 定時器的定時,就像你設定的鬧鐘,中斷,就像你設定的鬧鐘到點自動發出聲音。如果只是定時,不產生中斷,就需要你編寫的主程式經常去檢視定時的時間到了沒,而且就算檢視到定時時間到了,你也不知道是什麼時候到的,如果有中斷,則會自動跳到中斷函式執行你安排好的 鬧鐘發出聲音就是安排好的,也可以是震動 硬體...

51微控制器定時器中斷程式

m愛人 再次重新啟動。用c語言實現的,先要定義好定時器的初值,不管你使用多大的晶振,使用51微控制器,一般都是12分頻出來,也就可以得出一個機器週期,機器週期 12 n n指晶振頻率 假設你要定時的時間為m,那麼定時的初值為 m 機器週期 初值 th0 65536 初值 256 tl0 65536 ...