#include
#include
#define uint unsigned int
#define uchar unsigned char
#define key_menu 0x01
#define key_up 0x02
#define key_down 0x03
#define key_clk 0x04
#define key_ok 0x05
#define key_cancle 0x06
uint hour,minute,sec,t;
uchar code tabdu=
;/*共陽極數碼管編碼從0到f*/
uchar code tabwe=
;/*數碼管位選編碼,當p0為tablewe[0]時表示第一位數碼管亮,其他五個不亮*/
uint n[4]
;uchar tiao,ctiao;
//分別控制調時的時候時分秒跳動,跳動的頻率,鬧鐘控制位
uchar clkh=
24,clkm,clks;
//鬧鐘的定時時間 時、分、秒
uchar hour1,min1,sec1;
bit clk,stopclk;
bit contime;
bit flag;
//sbit dula=p2^6; //段選控制位
//sbit wela=p2^7; //位選控制位
sbit key_menu=p1^1;
sbit key_up=p1^2;
sbit key_down=p1^3;
sbit key_clk=p1^4;
sbit feng=p3^1;
sbit led=p3^0;
void
delay
(uint n)
//延時函式
void
getval()
//將時分秒的各位資料存放到陣列n中
if(contime)
n[0]
=hour/10;
n[1]
=hour%10;
n[2]
=minute/10;
n[3]
=minute%10;
}void
clock()
//鬧鐘處理函式
void
baoshi()
//整點報時
uchar get_key()
//如果有鍵按下則返回想應的值
switch
(val)
}void
key_val
(uchar key1)
//處理按鍵
switch
(keyval)
else
break
;case key_up :
if(clk==0)
}else
}break
;case key_down :
if(clk==0)
switch
(key)
else
switch
(key)
break
;case key_clk :
if(clkh==hour&&clkm==minute&&stopclk==1)
//關鬧鐘
else
break
;//設定鬧鐘
case key_ok :
if(clk)
tiao=flag=key=
0;contime=
0;hour=hour1;minute=min1;
/*sec=sec1*/
;return
;case key_cancle :
if(clk)
tiao=flag=key=contime=0;
return
;default
:break;}
}void
disply()
}else
break
;case2:
if(i==
0||i==1)
}else
break
;default
: p2=tabwe[i]
;p0=tabdu[n[i]];
break;}
delay(1
);}}
/********************t0定時/計數器初始化*******************/
void
t0_init()
void
t1_init()
void
main()
clock()
;//鬧鐘響一分鐘後停止
baoshi()
;}}
void
inter0
(void
) interrupt 1
//t0中斷服務函式
if(sec==60)
if(minute==60)
if(hour==24)
hour=0;
}void
iter1
(void
) interrupt 3
//用於動態顯示數碼管
關於51微控制器電子時鐘精度的問題
前幾天用stc89c52微控制器製作了乙個電子時鐘,經過一段時間的實驗,發現時間精度存在誤差,一分鐘慢4秒左右。這可了不得,十分鐘就要慢40秒,一天下來不得慢半96分鐘!這個微控制器晶振頻率為11.0592mhz,和大部分時鐘的晶振頻率相同,應該沒有問題。後天考慮到源 在定時器中斷函式裡 void ...
51微控制器實戰之電子時鐘
源 工作模式下,51微控制器從ds1302中獲取資料,再把資料傳遞到lcd來顯示時間和日期 設定模式下,通過k2和k3來改變資料 計時模式下,通過k2來開啟或關閉定時器1,來實現開始 暫停計時,通過k3來計時初始化 鬧鐘響時,開啟定時器1,通過天空之城樂譜來控制蜂鳴器的音調。十進位制數 8421碼 ...
51微控制器電子琴
這是我在論壇第一篇文章,大一時用arduino寫過電子琴,大二了用51再寫一次。電路圖 注意事項 需要修改一下蜂鳴器的電壓值其他的引數應該不需要改,實測可用。上面的電路多了乙個元件是揚聲器,本來想用揚聲器的沒有想到合適的方法。程式 include define uchar unsigned char...