智能时钟.docx
- 文档编号:29273057
- 上传时间:2023-07-21
- 格式:DOCX
- 页数:34
- 大小:171.39KB
智能时钟.docx
《智能时钟.docx》由会员分享,可在线阅读,更多相关《智能时钟.docx(34页珍藏版)》请在冰豆网上搜索。
智能时钟
关键字:
AT89C2051的智能时钟制作
智能电子钟的功能:
1。
全日历计时。
2。
12/24小时转换。
3。
8路定时输出(可关/开控制)
4。
误差:
15S+1uS
5。
大、小月,润年,周,自动追踪
二、调校:
上电后,电子钟显示“1:
00”。
1。
8路定时时间查询
按下K1键依此显示8路定时时间。
星期位显示:
“H”表示:
打开当前定时输出;“L”表示:
关闭当前定时输出。
此时按K2键可进行“H”、“L”的切换。
所有输出,均由蜂鸣器输出!
2。
显示状态的控制
按下K2键可进入以下工作状态:
1)12小时/日月交替显示。
2)12小时固定显示。
3)24小时/日月交替显示。
4)24小时固定显示。
3。
校时
按下K2键3S后,进入校时菜单。
按下K1键依次进入校时状态:
分、时、天、月、年、微调系数。
此时按K2键,完成+1。
当显示“d”时,表示要调整微调系数(0-99),其值越小,时钟走时越慢。
当使用的6MHz的晶振偏差大时,应仔细调整微调系数!
当显示“out”时,按K2键,即可退出!
退出后,按任意键即可启动时钟。
4。
设置定时时间
按下K1键3S后,进入设置菜单。
按下K1键依次进入8路定时调整状态:
时、分。
此时按K2键,完成+1。
当显示“out”时,按K2键,即可退出!
;2001.5.24
;***************
;all_clk1_program2000-10-12
;***************
fl_250msbit00h
fl_500msbitfl_250ms+1
set_clk_fbitfl_500ms+1
set_al4_fbitset_clk_f+1
am_fbitset_al4_f+1
fl_3sbitam_f+1
al1_fbitfl_3s+1
al2_fbitfl_3s+2
al3_fbitfl_3s+3
al4_fbitfl_3s+4
set_overbital4_f+1
ha_fbitset_over+1
ha_overbitha_f+1
fl_ms_fbitha_over+1
fl_s_fbitfl_ms_f+1
key_overbitfl_s_f+1
;**************************************************
key_dataequ08h
timersequkey_data+1
t_30msequtimers+1
t_20msequt_30ms+1
t_1sequt_20ms+1
k1_dataequt_1s+1
k2_dataequk1_data+1
stat_workequk2_data+1
stat_ledequstat_work+1
t_1msequstat_led+1
t_20mequt_1ms+1
beepequt_20m
al1equbeep+1
al2equbeep+2
al3equbeep+3
al4equbeep+4
al5equbeep+5
al6equbeep+6
al7equbeep+7
al8equbeep+8
ret_timerequal8+1
;**************************************************
secequ23h
minequsec+1h
hourequmin+1h
dayequhour+1h
monequday+1h
yearequmon+1h
w_adjequyear+1h
weekequw_adj+1h
;***************************************
al1_hequweek+1h
al1_mequal1_h+1h
al2_hequal1_m+1h
al2_mequal2_h+1h
al3_hequal2_m+1h
al3_mequal3_h+1h
al4_hequal3_m+1h
al4_mequal4_h+1h
al5_hequal4_m+1h
al5_mequal5_h+1h
al6_hequal5_m+1h
al6_mequal6_h+1h
al7_hequal6_m+1h
al7_mequal7_h+1h
al8_hequal7_m+1h
al8_mequal8_h+1h
beep_tequal8_m+1
fristequbeep_t+1
;**************************************
led1equfrist+1
led2equled1+1
led3equled2+1
led4equled3+1
led5equled4+1
sp_dataequled5+1
;**************************************
led_1bitp3.5
led_2bitp3.4
led_3bitp3.3
led_4bitp3.2
led_5bitp3.1
beep_fBITP3.7
key_fbitp3.0
;********************************************************
t_h_100msequ05dh;100msfor6MHz
t_l_100msequ07fh;c6for100ms
timer_noequ8d;3c90+30d=3cb0h
w_adj_datequ50d
key_daequ00000110b
;*********************************************************
blk_ledequ20d
dot_ledequ21d
f_ledequ22d
n_ledequ23d
u_ledequ24d
t_ledequ25d
b_ledequ26d
d_ledequ27d
oRG0000H;;
sJMPstart
ORG0003H;;
reti;
ORG000BH;
;ajmpt0
reti;
ORG0013H
reti;
ORG001BH;
aJMPT1;
ORG0023H;
RETI;AJMPRS_485;
;**************************************
start:
callclr_ram
MOVSP,#sp_data;
callint_t0
calltimer_int
calltimer_20ms
STAR_BI:
callclock
callweek_auto
callal_out
CALLKEY_bord
callkey_del
callset_clk_al
callkey_jmp
callreback
callled_jmp
sjmpstar_bi
reback:
mova,stat_work
jzreback_end
jbal1_f,ka1
movret_timer,sec
setbal1_f
sjmpreback_end
ka1:
mova,ret_timer
adda,#05d
movb,#60d
divab
mova,sec
cjnea,b,reback_end
clral1_f
movstat_work,#00d
reback_end:
ret
key_jmp:
mova,key_data
jzkey_jmp_end
movret_timer,sec
cjnea,#01d,kk1
mova,stat_work
inca;k1_key
cjnea,#9d,kka1
mova,#00d
kka1:
movstat_work,a
sjmpkey_jmp_end
kk1:
mova,stat_work;k2_key
jnzkk2
mova,stat_led
inca
cjnea,#05d,kka2
mova,#00d
kka2:
movstat_led,a
sjmpkey_jmp_end
kk2:
acallall1
cpla
mov@r0,a
key_jmp_end:
ret
all1:
movr0,#al1
mova,stat_work
deca
adda,r0
movr0,a
mova,@r0
ret
led_jmp:
;**********************************
;movstat_work,#01d
;movstat_tw,#01d
mova,stat_work
jnzled_al1
mova,stat_led
acallled_t_d
movled1,week
sjmpled_jmp_end
led_al1:
acallall1
movled1,#f_led
jnzle_t2
movled1,#n_led
le_t2:
jbfl_250ms,le_t4
movled1,#blk_led
le_t4:
acallal_led
led_jmp_end:
acallled
ret
;*************************************
time_24:
mova,hour
acallbcd_8
movled2,a
jnztim4
movled2,#blk_led
tim4:
movled3,b
jbfl_500ms,tim1
mova,b
adda,#10d
movled3,a
tim1:
acallled_min
time_12_end:
ret
;***********************************
led_min:
mova,min
acallbcd_8
jbfl_500ms,tim2
adda,#10d
tim2:
movled4,a
movled5,b
ret
;*************************************
date_led:
mova,mon
acallbcd_8
movled2,a
jnzda1
movled2,#blk_led
da1:
mova,b
adda,#10d
movled3,a
mova,day
acallbcd_8
movled4,a
jnzda2
movled4,#blk_led
da2:
movled5,b
date_led_end:
ret
;*************
;D_8=>BCD
;*************
BCD_8:
MOVB,#10D
DIVAB
RET
;****************************************
LED:
movp1,#0
movdptr,#led_asc
;***************************led1
mova,led1
movca,@a+dptr
movp1,a
clrled_1
acalltimer_1ms
acalltimer_1ms
;acalltimer_1ms
;acalltimer_1ms
;acalltimer_1ms
setbled_1
;*************************led2
led_led2:
mova,led2
movca,@a+dptr
movp1,a
clrled_2
acalltimer_1ms
setbled_2
;*************************led3
led_led3:
mova,led3
movca,@a+dptr
movp1,a
clrled_3
acalltimer_1ms
setbled_3
;*************************led4
led_led4:
mova,led4
movca,@a+dptr
movp1,a
clrled_4
acalltimer_1ms
setbled_4
;*************************led5
led_led5:
mova,led5
movca,@a+dptr
movp1,a
clrled_5
acalltimer_1ms
setbled_5
;*************************
led_end:
movp1,#0
ret
;************************************
;bafhcdeg
led_asc:
db11101110B;0
db10001000B;1
db11000111B;2
db11001101B;3
db10101001B;4
db01101101B;5
db01101111B;6
db11001000B;7
db11101111B;8
db11101101B;9
db11111110B;0.=>10d
db10011000B;1.
db11010111B;2.
db11011101B;3.
db10111001B;4.
db01111101B;5.
db01111111B;6.
db11011000B;7.
db11111111B;8.
db11111101B;9.
DB00000000B;BLACK=>20d
DB00010000B;dot=>21d
DB00100110b;l=>22d
dB10101011B;h=>23d
DB10101110B;u=>24d
DB00100111B;t=>25d
dB00101111B;b=>26d
dB10001111B;d=>27d
;bafhcdeg
;**********************************
;delay
;********************************
timer_1ms:
movt_1ms,#030h
r2_1:
djnzt_1ms,r2_1
ret
timer_20ms:
movt_20m,#050d
r2_2:
callclock
callled
djnzt_20m,r2_2
callweek_auto
callal_out
ret
;#############################################
;ifmon<=2andyear=4Z(0,1,2,3...)
;gs1=>week=mod([5/4]*year+mon_asc(mon)+day-1)/7
;else
;gs2=>week=mod([5/4]*year+mon_asc(mon)+day)/7
week_auto:
mova,YEAR
movb,#05
mulab
movr4,b
movr5,a
movr7,#04
callmul_2
MOVDPTR,#MON_ASC
MOVA,MON
deca
MOVCA,@A+DPTR
ADDA,r3
;*********************
MOVB,DAY
ADDA,B
movr3,a;r3=gs2
;*******jbmon<=2******
MOVA,MON
CJNEA,#02D,WEEK_1
SJMPWEEK_2
WEEK_1:
JCWEEK_2
week_3:
mova,r3
movb,#07
divab
mova,b
sjmpweek_4
WEEK_2:
;*****jbyear=4N******
mova,year
movb,#04
divab
mova,b
jnzweek_3
mova,r3
deca
movb,#07
divab
mova,b
week_4:
MOVWEEK,a
jnzweek_end
movweek,#07h
week_end:
RET
MON_ASC:
DB6d,2d,2d,5d,0d,3d,5d,1d,4d,6d,2d,4d;2002.5.5
;r4r5/r7=r3
mul_2:
D457:
CLRC
MOVA,R4
SUBBA,R7
JCDV50
SETBOV
RET
DV50:
MOVR6,#8;;求平均值(R4R5/R7-→R3)
DV51:
MOVA,R5
RLCA
MOVR5,A
MOVA,R4
RLCA
MOVR4,A
MOVF0,C
CLRC
SUBBA,R7
ANLC,/F0
JCDV52
MOVR4,A
DV52:
CPLC
MOVA,R3
RLCA
MOVR3,A
DJNZR6,DV51
MOVA,R4;;四舍五入
ADDA,#0;R4
JCDV53
SUBBA,R7
JCDV54
DV53:
INCR3
DV54:
CLROV
RET
;*************************************************************
clr_ram:
MOVR7,#78h;
MOVR0,#0bH;
CLRA;
CR:
INCR0;
MOV@R0,A;
djnzr7,cr;CLRRAM
ret
;**************INT_CTRL
int_t0:
setbet1
MOVTMOD,#00010001b;
movw_adj,#w_adj_dat
setbea
jmpadj_w
;**********************************************
al_led:
movr0,#al1_h
mova,stat_work
deca
rla
adda,r0
movr0,a
mova,@r0
acallbcd_8
movled2,a
jnzal_1
movled2,#blk_led
al_1:
mova,b
adda,#10d
movled3,a
incr0
mova,@r0
acallbcd_8
adda,#10d
movled4,a
movled5,b
al_led_end:
ret
;********************************
set_clk_al:
jnbset_clk_f,see1
callset_clock
clrset_clk_f
sjmpsee2
see1:
jnbset_al4_f,see2
callset_al4
clrset_al4_f
see2:
ret
;*********************************
procled_t_d
led_t_d:
movdptr,#led_ord_3
movb,#02h
mulab
jmp@a+dptr
led_ord_3:
ajmpled_k0_2
ajmpled_k1_2
ajmpled_k2_2
ajmpled_k3_2
ajmpled_k4_2
led_k0_2:
;timer_12anddatetoled
acalltime_12
jnbfl_3s,lk1
acalldate_led
lk1:
ajmpled_jmp_5_end
led_k1_2:
;timer_12toled
acalltime_12
ajmpled_jmp_5_end
led_k2_2:
;timer_24anddatetoled
acalltime_24
jnbfl_3s,lk2
acalldate_led
lk2:
ajmpled_jmp_5_end
led_k3_2:
;timer_24toled
acalltime_24
ajmpled_jmp_5_end
led_k4_2:
;sectoled
movled1,#blk_led
movled2,#blk_led
movled3,#dot_led
mova,sec
acallbcd_8
adda,#10d
movled4,a
movled5,b
led_jmp_5_end:
ret
end
;****************************************
procset_al4
set_al4:
movk1_data,#01d
movk2_data,#01d
clrset_over
acallled_al
acallkey_bord
callsf_key
movkey_data,#0
movfrist,#0
set_al41:
callclock
callweek_auto
acallled_al
acallkey_bord
callkey_del
acallkey_al
jnbset_over,set_al41
clra
movk1_data,a
movk2_data,a
movkey_data,a
movfrist,a
ret
end
;**************************************
prockey_al
key_al:
mova,key_data
jzkey_al_end
cjnea,#01d,k2_al
inck1_data;(1-9)
mova,k1_data
cjnea,#19d,key_al_end
movk1_data,#01d
sjmpkey_al_end
k2_al:
mova,k1_data
cjnea,#018d,ke2
setbset_over
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 智能 时钟