采用AT89C2051的智能时钟 点击:994 | 回复:1



高建华

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 2回
  • 年度积分:0
  • 历史总积分:73
  • 注册:2004年8月10日
发表于:2005-06-15 10:54:00
楼主
采用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 _program 2000-10-12 ;*************** fl_250ms bit 00h fl_500ms bit fl_250ms+1 set_clk_f bit fl_500ms+1 set_al4_f bit set_clk_f+1 am_f bit set_al4_f+1 fl_3s bit am_f+1 al1_f bit fl_3s+1 al2_f bit fl_3s+2 al3_f bit fl_3s+3 al4_f bit fl_3s+4 set_over bit al4_f+1 ha_f bit set_over+1 ha_over bit ha_f+1 fl_ms_f bit ha_over+1 fl_s_f bit fl_ms_f+1 key_over bit fl_s_f+1 ;************************************************** key_data equ 08h timers equ key_data+1 t_30ms equ timers+1 t_20ms equ t_30ms+1 t_1s equ t_20ms+1 k1_data equ t_1s+1 k2_data equ k1_data+1 stat_work equ k2_data+1 stat_led equ stat_work+1 t_1ms equ stat_led+1 t_20m equ t_1ms+1 beep equ t_20m al1 equ beep+1 al2 equ beep+2 al3 equ beep+3 al4 equ beep+4 al5 equ beep+5 al6 equ beep+6 al7 equ beep+7 al8 equ beep+8 ret_timer equ al8+1 ;************************************************** sec equ 23h min equ sec+1h hour equ min+1h day equ hour+1h mon equ day+1h year equ mon+1h w_adj equ year+1h week equ w_adj+1h ;*************************************** al1_h equ week+1h al1_m equ al1_h+1h al2_h equ al1_m+1h al2_m equ al2_h+1h al3_h equ al2_m+1h al3_m equ al3_h+1h al4_h equ al3_m+1h al4_m equ al4_h+1h al5_h equ al4_m+1h al5_m equ al5_h+1h al6_h equ al5_m+1h al6_m equ al6_h+1h al7_h equ al6_m+1h al7_m equ al7_h+1h al8_h equ al7_m+1h al8_m equ al8_h+1h beep_t equ al8_m+1 frist equ beep_t+1 ;************************************** led1 equ frist+1 led2 equ led1+1 led3 equ led2+1 led4 equ led3+1 led5 equ led4+1 sp_data equ led5+1 ;************************************** led_1 bit p3.5 led_2 bit p3.4 led_3 bit p3.3 led_4 bit p3.2 led_5 bit p3.1 beep_f BIT P3.7 key_f bit p3.0 ;******************************************************** t_h_100ms equ 05dh ;100 ms for 6MHz t_l_100ms equ 07fh ;c6 for 100ms timer_no equ 8d ;3c90+30d=3cb0h w_adj_dat equ 50d key_da equ 00000110b ;********************************************************* blk_led equ 20d dot_led equ 21d f_led equ 22d n_led equ 23d u_led equ 24d t_led equ 25d b_led equ 26d d_led equ 27d oRG 0000H; ; sJMP start ORG 0003H; ; reti; ORG 000BH ; ;ajmp t0 reti ; ORG 0013H reti ; ORG 001BH ; aJMP T1 ; ORG 0023H ; RETI; AJMP RS_485 ; ;************************************** start: call clr_ram MOV SP,#sp_data ; call int_t0 call timer_int call timer_20ms STAR_BI: call clock call week_auto call al_out CALL KEY_bord call key_del call set_clk_al call key_jmp call reback call led_jmp sjmp star_bi ;******************************************* reback: mov a,stat_work jz reback_end jb al1_f ,ka1 mov ret_timer,sec setb al1_f sjmp reback_end ka1: mov a,ret_timer add a,#05d mov b,#60d div ab mov a,sec cjne a,b,reback_end clr al1_f mov stat_work,#00d reback_end: ret key_jmp: mov a,key_data jz key_jmp_end mov ret_timer,sec cjne a,#01d,kk1 mov a,stat_work inc a ;k1_key cjne a,#9d,kka1 mov a,#00d kka1: mov stat_work ,a sjmp key_jmp_end kk1: mov a,stat_work ;k2_key jnz kk2 mov a,stat_led inc a cjne a,#05d,kka2 mov a,#00d kka2: mov stat_led,a sjmp key_jmp_end kk2: acall all1 cpl a mov @r0,a key_jmp_end: ret all1: mov r0,#al1 mov a,stat_work dec a add a,r0 mov r0,a mov a,@r0 ret led_jmp: ;*************



不悔

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 53回
  • 年度积分:0
  • 历史总积分:78
  • 注册:2005年8月31日
发表于:2005-09-09 17:33:00
1楼
我想学这搞一下,蛮有兴趣的,请多指教哟

热门招聘
相关主题

官方公众号

智造工程师