)//2毫秒@11.0592mhz
void
distime
(uchar i,
int time_dis)
else
}void
display()
else}
p2 =
0xc0
; p0 = semg_bit[i]
; p2 =
0x00
; p0 =
0xff;
i++; time_dis++;if
(i ==8)
i =0;
if(time_dis ==
500)
time_dis =0;
}void
led()if
(j ==3)
else
state_led = s0;
}break
;case s1:
else}if
(!alarm || time_led ==
2500)}
break
;default
: state_led = s0;
break;}
p2 =
0x00
; p0 =
0xff;}
void
fun(
) interrupt 1
}else}}
char
keyscan()
void
menu
(char keyvalue)
else
if(keyvalue ==7)
else
if(keyvalue ==6)
}break
;case s1:
else
}else
if(keyvalue ==5)
else
}switch
(state_set)}}
break
;case s1:}}
break
;default
: state_set = s0;
break;}
}break
;default
: state = s0;
break;}
}void
main()
}
/*
程式說明: ds1302驅動程式
軟體環境: keil uvision 4.10
硬體環境: ct107微控制器綜合實訓平台 8051,12mhz
日 期: 2011-8-9
*/#include
#include
#define uchar unsigned char
sbit sck=p1^
7;
sbit sda=p2^
3;
sbit rst = p1^3;
// ds1302復位
void
write_ds1302
(unsigned
char temp)
}void
write_ds1302_byte
(unsigned
char address,
unsigned
char dat )
unsigned
char read_ds1302_byte (
unsigned
char address )
rst=0;
_nop_()
; sck=0;
_nop_()
; sck=1;
_nop_()
; sda=0;
_nop_()
; sda=1;
_nop_()
;return
(temp);}
void
write_ds1302_main
(char
*time)
write_ds1302_byte
(0x8e
,0x80);
}void
write_ds1302_interrupt
(char
*time)
write_ds1302_byte
(0x8e
,0x80);
}char
*read_ds1302()
write_ds1302_byte
(0x8e
,0x80);
return time;
}
/*
程式說明: 單匯流排驅動程式
軟體環境: keil uvision 4.10
硬體環境: ct107微控制器綜合實訓平台(外部晶振12mhz) stc89c52rc微控制器
日 期: 2011-8-9
*/#include
"reg52.h"
#define uchar unsigned char
sbit dq = p1^4;
//單匯流排介面
//單匯流排延時函式
void
delay_onewire
(unsigned
int t)
//stc89c52rc
}//通過單匯流排向ds18b20寫乙個位元組
void
write_ds18b20
(unsigned
char dat)
delay_onewire(5
);}//從ds18b20讀取乙個位元組
unsigned
char
read_ds18b20
(void
)delay_onewire(5
);}return dat;
}//ds18b20裝置初始化
bit init_ds18b20
(void
)uchar get_tempr()
51微控制器實戰之電子時鐘
源 工作模式下,51微控制器從ds1302中獲取資料,再把資料傳遞到lcd來顯示時間和日期 設定模式下,通過k2和k3來改變資料 計時模式下,通過k2來開啟或關閉定時器1,來實現開始 暫停計時,通過k3來計時初始化 鬧鐘響時,開啟定時器1,通過天空之城樂譜來控制蜂鳴器的音調。十進位制數 8421碼 ...
51微控制器電子時鐘
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 d...
關於51微控制器電子時鐘精度的問題
前幾天用stc89c52微控制器製作了乙個電子時鐘,經過一段時間的實驗,發現時間精度存在誤差,一分鐘慢4秒左右。這可了不得,十分鐘就要慢40秒,一天下來不得慢半96分鐘!這個微控制器晶振頻率為11.0592mhz,和大部分時鐘的晶振頻率相同,應該沒有問題。後天考慮到源 在定時器中斷函式裡 void ...