基于單片機的電子萬年歷

制作好一個電子時鐘時,單片機就差不多學會了80%,這個電子鐘可以顯示時間并且可以調節時間的秒,分,時。單片機主要的作用就是定時和中斷,如何充分利用好這兩個方面就是學習的重點。首先介紹下中斷,中斷就是指你在執行一個指令的時候突然要執行另一個指令時就要先將指令暫停先去執行另一個指令,當另一個指令完成時再返回完成中斷前的指令。單片機含有5個中斷,外部中斷0和1,定時器/計數器中斷0和1,串行口中斷。要執行中斷時就要打開總中斷EA,將EA=1(高電平),在數字電路中1代表高電平,0代表低電平。總中斷開完后,如果要開定時器中斷0的話就輸入ET0=1;再將TR0=1;這就開啟了定時器0的中斷(簡單吧)。中斷條件條件:1,有中斷請求(下面講),開總中斷EA=1,開中斷源中斷(ET0=1)。關于中斷的詳細解說大家可以查看www.51hei.com單片機網首頁上的第18課。



定時器有四種方式,我就用了方式1來寫電子鐘。如何定時呢?先聲明定時器工作方式TMOD,定時器0為低四位,定時器1為高四位。GATE大多數情況為 0(不詳細介紹),C/T為0時是定時器,1為計數器。我們選工作方式1所以第二位為01,所以TMOD=0x01;后面我們要裝初值也就是要往定時器 16位中裝初始值,由于單片機一個機器周期約為1微秒,一個機器周期定時器加1個值,TH0為定時器0的高8位,TL0為低八位。大家都知道一個字節為最大值為65535,所以假如你要定時50ms的話就要裝65535-50000的值。只裝滿后就溢出執行中斷(我就大概的介紹下)。中斷出去后執行一個中斷函數大概形勢為
TMOD=0x01;
TH0=0x4c;
TL0=0x00;
EA=1;
ET0=1;
TR0=1;
void timer0() interrupt 1{
TH0=0x4c;
TL0=0x00;
}
主站蜘蛛池模板:
舟曲县|
沙河市|
布尔津县|
商城县|
东丰县|
广元市|
金乡县|
东港市|
鹤壁市|
东方市|
安国市|
巴林左旗|
商水县|
太和县|
青岛市|
桂平市|
金阳县|
娄底市|
双鸭山市|
万年县|
阜平县|
苗栗市|
荔波县|
潜江市|
肇东市|
黄大仙区|
巴里|
肥乡县|
黔江区|
杭州市|
新和县|
胶州市|
莎车县|
通化县|
竹山县|
衡南县|
曲松县|
敖汉旗|
潍坊市|
彭泽县|
余庆县|
}
接下來我要寫我電子鐘的程序,這個程序還沒完全寫好,還差一個I^2c總線斷電數據保存的程序,以后再補充。單片機不同端口具有不同的作用,當我們向端口輸入不同的高低電平時就有不同的作用,這里我們用到了液晶屏的控制,定時器,中斷系統,鍵盤。以后改進會用到蜂鳴器,I^2c總線。額,電腦要沒電了
關鍵詞:
單片機電子萬年
評論