lxa0 发表于 2017-6-24 23:49:58

[原创diy]极其简单的小电子表

电路结构极其简单
成本不到15元
最适合放在床头柜上
。。。。。



lxa0 发表于 2017-6-24 23:50:39

调整时间的遥控器



ljy99731 发表于 2017-6-25 00:33:32

复位RC的C用得也太大了。。

jathenal 发表于 2017-6-25 01:30:38

话说这电子表也不算小了吧

qiqirachel 发表于 2017-6-25 01:33:42

你这个算电子钟了吧

zqf441775525 发表于 2017-6-25 01:54:08

这至少也得用个DS1302噻

Put_down 发表于 2017-6-25 03:54:04

调时间的按钮还是加上好一些。

xgzn 发表于 2017-6-25 06:50:36

至少要有茶色有机玻璃板蒙在数码管上,要么看时间不是很容易分辨

LML 发表于 2017-6-25 08:23:25

怎么不用ds类时钟ic,掉电,精度,32.768k石英,精度,怎么不用低功耗mcu,你要加个ups供电吗?

guanglv2008 发表于 2017-6-25 08:33:40

合页是亮点,赞一个!

avr_sz 发表于 2017-6-25 10:32:03

这个确实不小了。

建议功耗也要考虑,24小时工作的。然后晚上睡觉时,最好能到时间点固定关闭屏显,不然就当床头灯用了

avr_sz 发表于 2017-6-25 10:34:12

动手能力强, 不知道背面是怎么样的{:smile:}

tongdayusu 发表于 2017-6-25 10:49:15

晚上自动将亮度降低。否则影响睡眠。另外,这电磁辐射……

wei669 发表于 2017-6-25 11:43:56

电磁辐射怎么分析出来的?

zhiwei 发表于 2017-6-25 11:53:05

调时间太麻烦,自己加个GPS模块,定期校正时间。

wumaoxu 发表于 2017-6-25 11:56:20

本帖最后由 wumaoxu 于 2017-6-25 11:58 编辑

好像数码
之家发过。
还是用ds3231这种rtc好用。
编辑原因:刚才用手机点错了,发了一半。

ordinary 发表于 2017-6-25 11:57:22

AT89c2051    差不多二十年前的东西了

xiaobendan 发表于 2017-6-25 12:04:01

2051我有几十片,有人要不{:lol:}

not_at_all 发表于 2017-6-25 12:39:24

这能叫做“表”吗? 另外,遥控器不建议用电视那些巨无霸,搞个多媒体用的,小巧玲珑,面板很清爽。

kafeiwutang 发表于 2017-6-25 13:10:36

其实这应该叫极其简单的51开发板

yufan 发表于 2017-6-25 13:30:07

这个比较经典啊,想当初自己也做了一个,满满的回忆!{:smile:}

castiello 发表于 2017-6-25 13:31:31

LZ可否考虑换STM8

3DA502 发表于 2017-6-25 15:56:29

我的第一个程序,就是用汇编和2051写的闹钟

NJ8888 发表于 2017-6-25 16:06:16

3DA502 发表于 2017-6-25 15:56
我的第一个程序,就是用汇编和2051写的闹钟

我第一个是汇编的比例遥控电子调速器,在89C2051上的

su33691 发表于 2017-6-25 16:06:40

电子钟是入门砖,。。。。。

J4GHW 发表于 2017-6-25 20:19:29

at89c2051老爷级的入门IC

~just_yy 发表于 2017-6-25 21:11:58

这。。放床头的东西好歹也要讲一些颜值的吧

闪耀的空白 发表于 2017-6-25 21:20:29

共享一下程序。

linghu886 发表于 2017-6-25 21:26:56

红外接收模块,不需要加一个滤波电容,一个上拉电阻,一个限流电阻吗?

linghu886 发表于 2017-6-25 21:27:41

晶振,复位电路,可以用内置的,

lizg 发表于 2017-6-25 21:45:02

相同的电路,我也做过一个,十多年了,现在还在使用,芯片用的是AT89C52。因为只做了一个,每个月10S左右的时间偏差,如果不停电,几乎不用调整时间 。
问题是时间久了,LED亮度降低了很多,正在考虑是否需要更换LED 。

Ilove51andAVR 发表于 2017-6-25 21:52:29

楼主,AT89c2051市场居然还能买得到??你的下载程序应该是用专用的编程器下载的吧?{:lol:}

zkf0100007 发表于 2017-6-25 21:52:54

原理图画的漂亮

our2008 发表于 2017-6-26 08:56:00

哈哈!最开始学单片机c语言编程语言,也是用的2051,十多年了。时空穿越一般。

ilikemcu 发表于 2017-6-26 12:15:59

嘿嘿,N年前学51入门的一个制作,就是楼主这个东东,当时没配遥控器,但是弄了一个串口输入端,可以从串口输入命令校准时间,VB的上位机,用了一个抓取当前PC时间段函数,实时同步PC和时钟的时间,也是一边翻书学VB,一边学C51,可以设置14个闹点,配合一个蜂鸣器做闹钟用。这个闹钟1年多前翻到过,还能工作。

想起这事,很感谢《平凡的单片机世界》的平凡老师,他写的C51教程让我从讨厌的汇编,转向了C51的编程。

lxa0 发表于 2017-6-26 12:27:37

xiaobendan 发表于 2017-6-25 12:04
2051我有几十片,有人要不

我要~~~~~~~~~~~~~~~

aammoo 发表于 2017-6-26 13:02:00

我有个STM8的,带电池和RTC,小巧很多,跟数码管一样大,从正面看就只有一个数码管。

hefen-cai 发表于 2017-6-26 13:12:44

原理图画的很漂亮

lxa0 发表于 2017-6-26 13:22:22

~just_yy 发表于 2017-6-25 21:11
这。。放床头的东西好歹也要讲一些颜值的吧

有颜值的见下面:


EMC菜鸟 发表于 2017-6-26 13:26:49

这个东西楼主放在床头靠着脑袋,也不怕夜里老做梦??

newuseruser 发表于 2017-6-26 13:31:49

lxa0 发表于 2017-6-26 13:22
有颜值的见下面:

我觉得还不如裸着呢。

i7gly 发表于 2017-6-26 14:00:12

我还以为,,,我穿越了,,,

isakura 发表于 2017-6-26 14:43:51

我还想着能比我们初中买的几块钱的电子表简单吗。。。。。。

four_zhg 发表于 2017-6-27 10:37:05

关键是你这个耗电怎么样啊?还是要连个电源变压器一直插着的啊

Mingrui 发表于 2017-6-27 11:05:22

这个铰链有点个性!

lxa0 发表于 2017-6-27 11:32:59

本帖最后由 lxa0 于 2017-6-28 22:46 编辑

four_zhg 发表于 2017-6-27 10:37
关键是你这个耗电怎么样啊?还是要连个电源变压器一直插着的啊

用手机充电器就可以
耗电量测试一年一度

gtnr 发表于 2017-6-27 14:46:53

这么丑,也不准。

huangqi412 发表于 2017-6-27 16:32:39

这个也能摆在床头简直不能直视

zhangfuhg 发表于 2017-6-27 21:32:05

hao,好思路,大量旧原件可以发热了!

airwolf09921 发表于 2017-6-27 23:16:13

原来李工也在这里啊!很是佩服啊!李工可以在坛里开个胆机板块 这可是您的拿手活啊!

kkey 发表于 2017-6-28 00:04:03

没RTC,不爽,断电再调时间麻烦啊

ljy99731 发表于 2017-6-28 00:12:01

four_zhg 发表于 2017-6-27 10:37
关键是你这个耗电怎么样啊?还是要连个电源变压器一直插着的啊

LED显示的东西还有人希望用电池能用几年吗?那应该选择LCD的产品

柯铭凯 发表于 2017-6-28 00:13:46

wei669 发表于 2017-6-25 11:43
电磁辐射怎么分析出来的?

同问,强顶

dz20062008 发表于 2017-6-28 01:51:06

做的不错,加油。

lxa0 发表于 2017-6-28 22:47:18

airwolf09921 发表于 2017-6-27 23:16
原来李工也在这里啊!很是佩服啊!李工可以在坛里开个胆机板块 这可是您的拿手活啊! ...

多谢你的支持!!!!!!!

亲爱的混蛋 发表于 2017-6-29 15:42:05

xiaobendan 发表于 2017-6-25 12:04
2051我有几十片,有人要不

送吗?

istars2005 发表于 2017-6-29 17:17:17

attach://378590.jpg

有这个简单吗?

xiaobendan 发表于 2017-6-29 20:03:14

亲爱的混蛋 发表于 2017-6-29 15:42
送吗?

全新的哦,便宜卖吧
当年做产品剩下的。
还有几百片贴片的MEGA48

lxa0 发表于 2017-7-1 02:08:07

闪耀的空白 发表于 2017-6-25 21:20
共享一下程序。

代码是汇编的
怕是很多坛友看不懂啊~~~~~~~~~~~~~~~所以就没发上来

lxa0 发表于 2017-7-1 02:12:56

newuseruser 发表于 2017-6-26 13:31
我觉得还不如裸着呢。

这2个还行吧?


lxa0 发表于 2017-7-1 02:16:18

xiaobendan 发表于 2017-6-29 20:03
全新的哦,便宜卖吧
当年做产品剩下的。
还有几百片贴片的MEGA48

便宜是多少元/片?
邮费几元?

xiaobendan 发表于 2017-7-1 07:22:51

lxa0 发表于 2017-7-1 02:16
便宜是多少元/片?
邮费几元?

良心价就好,放着也没用。
邮费的话10元左右吧,圆通,或者顺丰到付也行。

xiaobendan 发表于 2017-7-1 07:23:44

lxa0 发表于 2017-7-1 02:08
代码是汇编的
怕是很多坛友看不懂啊~~~~~~~~~~~~~~~所以就没发上来

看来是落后了
这个年代还要用汇编。

lxa0 发表于 2017-7-1 14:30:38

xiaobendan 发表于 2017-7-1 07:22
良心价就好,放着也没用。
邮费的话10元左右吧,圆通,或者顺丰到付也行。 ...

邮费10元不算贵
你说的良心价是多少呀?

另:我只玩汇编,如今就要退休了,学不进C语言了~~~~~~~~呵呵

xiaobendan 发表于 2017-7-1 16:41:10

lxa0 发表于 2017-7-1 14:30
邮费10元不算贵
你说的良心价是多少呀?



C可以不用学那些结构联合的,只用简单的语法,比汇编容易多了。
我不知道现在什么价格,3元左右吧好像,淘宝应该有,你自己查吧,然后给我个接收价格

wiser803 发表于 2017-7-1 17:48:27

还不错,挺亮的,自娱自乐就好。{:lol:}

lxa0 发表于 2017-7-2 12:06:22

wiser803 发表于 2017-7-1 17:48
还不错,挺亮的,自娱自乐就好。

谢谢你的支持与理解~~~~~~~~~~~~~玩的是开心

lxa0 发表于 2017-7-2 12:07:05

xiaobendan 发表于 2017-7-1 16:41
C可以不用学那些结构联合的,只用简单的语法,比汇编容易多了。
我不知道现在什么价格,3元左右吧好像, ...

你先说下有多少存货?

xiaobendan 发表于 2017-7-2 13:25:17

lxa0 发表于 2017-7-2 12:07
你先说下有多少存货?

这个我还真得去看看,
2051好像不多,MEGA48贴片的比较多

xiaobendan 发表于 2017-7-2 13:40:35

lxa0 发表于 2017-7-2 12:07
你先说下有多少存货?

刚看DIP20的了2051有58片,还有4片DIP40的P89C58BP,飞利浦的。还有几十个DIP20的座。
MEGA48贴片的有800片左右
我还有一些STC的SOP20的12C5201什么的,还有11F01什么的,都不多了。

lxa0 发表于 2017-7-3 01:19:05

xiaobendan 发表于 2017-7-2 13:40
刚看DIP20的了2051有58片,还有4片DIP40的P89C58BP,飞利浦的。还有几十个DIP20的座。
MEGA48贴片的有800 ...

2051有58片是AT公司的吧?
说说几米出?
还有就是邮费多少?
别的不要

xiaobendan 发表于 2017-7-3 12:00:52

lxa0 发表于 2017-7-3 01:19
2051有58片是AT公司的吧?
说说几米出?
还有就是邮费多少?


150包顺丰怎样?送座给你

xiaobendan 发表于 2017-7-3 12:01:57

lxa0 发表于 2017-7-3 01:19
2051有58片是AT公司的吧?
说说几米出?
还有就是邮费多少?


当然是AT啊,早期的剩货,当初做东西也是出了力的,做的东西目前还有很多在服役。

lxa0 发表于 2017-7-3 13:11:11

xiaobendan 发表于 2017-7-3 12:01
当然是AT啊,早期的剩货,当初做东西也是出了力的,做的东西目前还有很多在服役。 ...

先上个图看看吧?

fuze2009 发表于 2017-7-31 06:25:06

还批量了?LZ

lxa0 发表于 2017-7-31 17:56:34

fuze2009 发表于 2017-7-31 06:25
还批量了?LZ

是的
给好几个好友做的

mon51 发表于 2017-8-1 08:30:05

看了这个想起1998年做的AT89C2051.电子钟。

mon51 发表于 2017-8-1 08:30:47

mon51 发表于 2017-8-1 08:31:54

本帖最后由 mon51 于 2017-8-1 08:34 编辑

2000年加入了农历显示,全部汇编编写。现在还有一个在床头。8路定时使用很方便。
;2001.5.24
                        ;***************
                        ;all_clk1 _program2000-10-12
                        ;***************
                        fl_250msbit00h
                        fl_500msbitfl_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_overbit 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_overbit 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_workequ 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_timerequ al8+1
        ;**************************************************               
                        sec    equ23h
                        min    equsec+1h
                        hour   equmin+1h
                        day    equhour+1h
                        mon    equday+1h
                        year   equmon+1h
                        w_adjequyear+1h                       
                        week   equw_adj+1h
        ;***************************************
                        al1_h   equweek+1h
                        al1_m   equal1_h+1h
                        al2_h   equal1_m+1h
                        al2_m   equal2_h+1h
                        al3_h   equal2_m+1h
                        al3_m   equal3_h+1h
                        al4_h   equal3_m+1h
                        al4_m   equal4_h+1h
                        al5_h   equal4_m+1h
                        al5_m   equal5_h+1h
                        al6_h   equal5_m+1h
                        al6_m   equal6_h+1h
                        al7_h   equal6_m+1h
                        al7_m   equal7_h+1h
                        al8_h   equal7_m+1h
                        al8_m   equal8_h+1h
                        beep_tequal8_m+1
                        frist   equbeep_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;c6for 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
                       
                       
                        oRG0000H;            ;
                             sJMP start            
                        ORG0003H;            ;
                          reti;
                        ORG000BH             ;
                             ;ajmp t0
                             reti         ;
                        ORG0013H   
                             reti            ;
                        ORG001BH             ;
                             aJMP T1      ;
                        ORG0023H             ;
                          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:
;**********************************
                ;mov stat_work,#01d
                ;mov stat_tw,#01d

                mov a,stat_work
                jnz led_al1
                mov a,stat_led
                acall led_t_d               
                mov led1,week
                sjmp led_jmp_end
        led_al1:
                acall all1
                mov led1,#f_led
                jnz le_t2
                mov led1,#n_led
        le_t2:
                jb fl_250ms ,le_t4
                mov led1,#blk_led
        le_t4:
                acall al_led       
led_jmp_end:
                acall led
                ret
;*************************************

time_24:
                mov a,hour
                acall bcd_8
                mov led2,a
                jnz tim4
                mov led2,#blk_led
        tim4:
                mov led3,b
                jb fl_500ms,tim1
                mov a,b
                add a,#10d
                mov led3,a               
        tim1:       
                acall led_min
time_12_end:
                ret
;***********************************       
        led_min:
                mov a,min
                acall bcd_8
                jb fl_500ms ,tim2
                add a,#10d
        tim2:       
                mov led4,a
                mov led5,b
                ret
;*************************************


date_led:
                mov a,mon
                acall bcd_8
                mov led2,a
                jnz da1
                mov led2,#blk_led
        da1:       
                mov a,b
                add a,#10d
                mov led3,a
                mov a,day
                acall bcd_8
                mov led4,a
                jnz da2
                mov led4,#blk_led
        da2:       
                mov led5,b
date_led_end:
                ret

;*************
; D_8=>BCD
;*************
   BCD_8:   
                MOV B,#10D
                DIV AB
                RET
;****************************************
LED:            
                mov p1,#0
                mov dptr,#led_asc
        ;***************************led1
                mov a,led1
                movc a,@a+dptr
                mov p1,a
                clr   led_1
                acall timer_1ms
                acall timer_1ms
                ;acall timer_1ms
                ;acall timer_1ms
                ;acall timer_1ms
       
                setb led_1
        ;*************************led2
        led_led2:
                mov a,led2
                movc a,@a+dptr
                mov p1,a
                clrled_2
                acall timer_1ms
                setb led_2
        ;*************************led3
        led_led3:
                mov a,led3
                movc a,@a+dptr
                mov p1,a
                clr   led_3
                acall timer_1ms
                setb led_3
        ;*************************led4
        led_led4:
                mov a,led4
                movc a,@a+dptr
                mov p1,a
                clr   led_4
                acall timer_1ms
                setb led_4
        ;*************************led5
        led_led5:
                mov a,led5
                movc a,@a+dptr
                mov p1,a
                clr   led_5
                acall timer_1ms
                setb led_5
        ;*************************      
led_end:
                mov p1,#0
                ret
;************************************
;                   bafhcdeg       
led_asc:
                db 11101110B;0
                db 10001000B;1
                db 11000111B;2
                db 11001101B;3
                db 10101001B;4
                db 01101101B;5
                db 01101111B;6
                db 11001000B;7
                db 11101111B;8
                db 11101101B;9
                db 11111110B;0.   =>10d
                db 10011000B;1.
                db 11010111B;2.
                db 11011101B;3.
                db 10111001B;4.
                db 01111101B;5.
                db 01111111B;6.
                db 11011000B;7.
                db 11111111B;8.
                db 11111101B;9.
                DB   00000000B;BLACK=>20d
                DB   00010000B;dot=>21d
                DB   00100110b;l=>22d
                dB   10101011B;h=>23d
                DB   10101110B;u=>24d
                DB   00100111B;t=>25d
                dB   00101111B;b=>26d
                dB   10001111B;d=>27d

;                  bafhcdeg       

;**********************************
;delay
;********************************
timer_1ms:
                mov t_1ms,#030h
        r2_1:       
                djnz t_1ms , r2_1               
                ret
timer_20ms:
                mov t_20m,#050d
        r2_2:       
                call clock
                call led
                djnz t_20m , r2_2               
                call week_auto
                call al_out
                ret
;#############################################
;if mon<=2 and year=4Z(0,1,2,3...)
;gs1=>week=mod(*year+mon_asc(mon)+day-1)/7
;else
; gs2=>week=mod(*year+mon_asc(mon)+day)/7
week_auto:      
      
      mov a,YEAR
              mov b,#05
              mul ab
        mov r4,b
        mov r5,a
        mov r7,#04
        call mul_2

      MOV DPTR,#MON_ASC
      MOV A,MON
      dec a
      MOVC A,@A+DPTR
      ADD A,r3
;*********************
      MOV B,DAY
      ADD A,B
        mov r3,a;r3=gs2
;*******jb mon<=2 ******
      MOV A,MON
      CJNE A,#02D,WEEK_1
      SJMP WEEK_2
WEEK_1:
      JC WEEK_2
week_3:
        mov a,r3
        mov b,#07
        div ab
        mov a,b
        sjmp week_4
WEEK_2:
;*****jb year=4N ******
        mov a,year
        mov b,#04
        div ab
        mov a,b
        jnz week_3
        mov a,r3
        dec a
        mov b,#07
        div ab
        mov a,b       
week_4:
      MOV WEEK,a
      jnz week_end
      mov week,#07h
week_end:               
      RET
MON_ASC:
      DB 6d, 2d, 2d, 5d, 0d, 3d, 5d, 1d, 4d, 6d, 2d, 4d ;2002.5.5
;r4r5/r7=r3
mul_2:
D457: CLR C
MOV A,R4
SUBB A,R7
JC DV50
SETB OV
RET
DV50: MOV R6,#8 ;;求平均值(R4R5/R7-→R3)
DV51: MOV A,R5
RLC A
MOV R5,A
MOV A,R4
RLC A
MOV R4,A
MOV F0,C
CLR C
SUBB A,R7
ANL C,/F0
JC DV52
MOV R4,A
DV52: CPL C
MOV A,R3
RLC A
MOV R3,A
DJNZ R6,DV51
MOV A,R4 ;;四舍五入
ADD A,#0;R4
JC DV53
SUBB A,R7
JC DV54
DV53: INC R3
DV54: CLR OV
RET
;*************************************************************
        clr_ram:
             MOV R7,#78h       ;
                MOV R0,#0bH       ;
                CLR A             ;
CR:             INC R0            ;
                MOV @R0,A         ;
                djnz r7,cr      ;CLR RAM
                ret
;************** INT_CTRL
int_t0:
               setb et1
               MOV TMOD,#00010001b   ;
                mov w_adj,#w_adj_dat
                setb ea
                jmp adj_w
;**********************************************
al_led:
                mov r0,#al1_h
                mov a,stat_work
                dec a
                rl a
                add a,r0
                mov r0,a
                mov a,@r0
                acall bcd_8
                mov led2,a
                jnz al_1
                mov led2,#blk_led
        al_1:
                mov a,b
                add a,#10d
                mov led3,a
                inc r0
                mov a,@r0
                acall bcd_8
                add a,#10d
                mov led4,a
                mov led5,b
al_led_end:
                ret
               
;********************************
set_clk_al:
                jnb set_clk_f,see1
                call set_clock
                clr set_clk_f
                sjmp see2
        see1:
                jnb set_al4_f,see2
                call set_al4
                clr set_al4_f
        see2:   
                ret       
;*********************************
                proc led_t_d
led_t_d:
                mov dptr,#led_ord_3
                mov b,#02h
                mul ab
                jmp @a+dptr
               
led_ord_3:      ajmp led_k0_2
                ajmp led_k1_2
                ajmp led_k2_2
                ajmp led_k3_2
                ajmp led_k4_2
               
led_k0_2:    ;   timer_12 and date to led
                acall time_12
                jnb fl_3s ,lk1
                acall date_led                               
        lk1:
                ajmp led_jmp_5_end
led_k1_2:    ;timer_12 to led
                acall time_12
                ajmp led_jmp_5_end
led_k2_2:       ;timer_24and date to led
                acall time_24
                jnb fl_3s ,lk2
                acall date_led                               
        lk2:
                ajmp led_jmp_5_end
led_k3_2:       ;timer_24to led
                acall time_24
                ajmp led_jmp_5_end

led_k4_2:       ;sec to led
                mov led1,#blk_led
                mov led2,#blk_led
                mov led3,#dot_led
                mov a,sec
                acall bcd_8
                add a,#10d
                mov led4,a
                mov led5,b                       
led_jmp_5_end:
                ret
                end

;****************************************
                proc set_al4
set_al4:
                mov k1_data,#01d
                mov k2_data,#01d
                clr set_over               
                acall led_al
                acall key_bord
                call sf_key
                mov key_data,#0
                mov frist,#0
set_al41:

                call clock
                call week_auto
                acall led_al
                acall key_bord
                call key_del
                acall key_al
                jnb set_over,set_al41               
                clr a
                mov k1_data,a
                mov k2_data,a
                mov key_data,a
                mov frist,a
                ret
                end
;**************************************
                proc key_al
key_al:
                mov a,key_data
                jz key_al_end
                cjne a,#01d,k2_al

                inc k1_data   ;(1-9)
                mov a,k1_data
                cjne a,#19d,key_al_end
                mov k1_data,#01d
                sjmp key_al_end       
       
       
        k2_al:
                mov a,k1_data
                cjne a,#018d,ke2
                setb set_over
                sjmp key_al_end
        ke2:       
                mov r0,#al1_h
                dec a
                add a,r0
                mov r0,a
                inc @r0
                acall jj_bit
                mov b,#24d
                jnz ke3       
                mov b,#60d
        ke3:
                mov a,@r0
                div ab
                mov a,b
                mov @r0,a
key_al_end:
        ret
        end       
jj_bit:
                mov a,k1_data
                mov b,#02d
                div ab
                mov a,b ;(a=1,0)
                ret
;*********************************       
        led_out1:
                mov led2,#00h
                mov led3,#u_led
                mov led4,#t_led
                mov led5,#blk_led
                mov led1,#blk_led
                ret
;********************************
led_al:
                mov a,k1_data
                cjne a,#017d,lo1
                acall beep_timer       
                sjmp led_al_end
        lo1:       
                cjne a,#18d,ld1
                acall led_out1
                sjmp led_al_end
        ld1:       
                inc a
                mov b,#02d
                div ab
                ;**********
                mov led1,a
                ;**********
                dec a
                rl a
                mov r0,#al1_h
                add a,r0
                mov r0,a
                mov a,@r0
                acall bcd_8
                mov led2,a
                jnz ld2
                mov led2,#blk_led
        ld2:       
                mov a,b
                add a,#10d
                mov led3,a
;************************************               
                inc r0
                mov a,@r0
                acall bcd_8
                add a,#10d
                mov led4,a
                mov led5,b

;***************************flash bit
                jb fl_250ms,led_al_end
                acall jj_bit
                jnz led_al_e
                mov led4,#blk_led
                mov led5,#blk_led
                sjmp led_al_end
        led_al_e:
                mov led2,#blk_led
                mov led3,#blk_led
led_al_end:
                acall led
                ret
;***************************************
                proc set_clock
set_clock:
                mov k1_data,#01d
                mov k2_data,#01d
                clr set_over               
                call led_cl
                call key_bord
                call sf_key
                mov key_data,#0
                mov frist,#0
set_al41:
                callclock
                acallweek_auto
                callal_out
                acall led_cl
                acall key_bord
                call key_del
                acall key_cl
                jnb set_over,set_al41               
                ;acall key_bord
                clr a
                mov k1_data,a
                mov k2_data,a
                mov key_data,a
                mov frist,a
                ret
                end
;**************************************
                proc key_cl
key_cl:
                mov a,key_data
                jz key_al_end
                cjne a,#01d,k2_al

                inc k1_data   ;(1-8)
                mov a,k1_data
                cjne a,#9d,key_al_end
                mov k1_data,#01d
                sjmp key_al_end       
        k2_al:
                mov a,k1_data
                cjne a,#08d,ke2
                setb set_over
                sjmp key_al_end
        ke2:       
                dec a
                mov dptr,#asc_h
                movc a,@a+dptr
                mov b,a               
;********************************               
                mov r0,#sec
                mov a,k1_data
                dec a
                add a,r0
                mov r0,a
                inc @r0
                mov a,@r0
                div ab
                mov a,b
                mov @r0,a
key_al_end:
        ret
        end       
asc_h:
        db 60d,60d,24d,32d,13d,100d,100d

mon51 发表于 2017-8-1 08:34:17

                proc led_cl
led_cl:
                mov dptr,#led_ord_3
                mov a,k1_data
                dec a
                mov b,#02h
                mul ab
                jmp @a+dptr
led_ord_3:      ajmp led_k0_2
                ajmp led_k1_2
                ajmp led_k2_2
                ajmp led_k3_2
                ajmp led_k4_2
                ajmp led_k5_2
                ajmp led_k6_2
                ajmp led_k7_2
               
led_k0_2:    ; led sec
                mov led2,#blk_led
                mov led3,#dot_led
                mov a,sec
                acall bcd_8
                add a,#10d
                mov led4,a
                mov led5,b
                jb fl_250ms ,lk1
                mov led4,#blk_led
                mov led5,#blk_led               
        lk1:       
                ajmp led_jmp_5_end
led_k1_2:    ; led min,hour
                acall led_hour
                jb fl_250ms ,lk2
                mov led4,#blk_led
                mov led5,#blk_led               
        lk2:       
                ajmp led_jmp_5_end
led_k2_2:       ;led min,hour
                acall led_hour
                jb fl_250ms ,lk3
                mov led2,#blk_led
                mov led3,#blk_led               
        lk3:       
                ajmp led_jmp_5_end
led_k3_2:       ;led day,mon
                acall led_mon
                jb fl_250ms ,lk4
                mov led4,#blk_led
                mov led5,#blk_led               
        lk4:       
                ajmp led_jmp_5_end
led_k4_2:    ; led day,mon
                acall led_mon
                jb fl_250ms ,lk5
                mov led2,#blk_led
                mov led3,#blk_led               
        lk5:       
                ajmp led_jmp_5_end
led_k5_2:    ; led year
                mov led2,#2d
                mov led3,#0d
                mov a,year
                acall bcd_8
                mov led4,a
                mov led5,b
                jb fl_250ms ,lk6
                mov led4,#blk_led
                mov led5,#blk_led               
        lk6:       
                ajmp led_jmp_5_end
led_k6_2:       ;led w_adj
                mov led2,#d_led
                mov led3,#blk_led
                mov a,w_adj
                acall bcd_8
                mov led4,a
                mov led5,b
                jb fl_250ms ,lk7
                mov led4,#blk_led
                mov led5,#blk_led               
        lk7:       
                ajmp led_jmp_5_end
led_k7_2:       ;led out
                acall led_out1
led_jmp_5_end:
                mov led1,week
                acall led
                ret
                end
               
        led_hour:
                mov a,hour
                acall bcd_8
                mov led2,a
                jnz lj1
                mov led2,#blk_led       
        lj1:       
                mov a,b
                add a,#10d
                mov led3,a
        ;*********************       
                mov a,min
                acall bcd_8
                add a,#10d
                mov led4,a
                mov led5,b
                ret
        led_mon:
                mov a,mon
                jnz lj5
                inc mon
                mov a,mon       
        lj5:
                acall bcd_8
                mov led2,a
                jnz lj2
                mov led2,#blk_led
        lj2:       
                mov led3,b
        ;*********************       
                mov a,day
                jnz lj4
                inc day
                mov a,day       
        lj4:
                acall bcd_8
                mov led4,a
                jnz lj3
                mov led4,#blk_led       
        lj3:       
                mov led5,b
                ret
;********************************************
al_out:
                jb ha_over,al_out_end
                mov r7,#8d
                mov r1,#al8_m                               
al_ch_1:
                mov r0,#min
                mov r6,#02d    ;min hour
        al_l:
                mov a,@r0
                mov b,@r1
                cjne a,b ,al_ch
                inc r0
                dec r1
                djnz r6 ,al_l       
;**************************************************
                mov a,r7
                dec a
                mov r0,#al1
                add a,r0
                mov r0,a
                mov a,@r0
                mov c,acc.0
                cpl c
                anl c,fl_250ms
                cpl c
                mov beep_f,c       
                acall beep_out               
al_ch:
                clr c
                mov a,r1
                subb a,r6
                mov r1,a
                djnz r7,al_ch_1
al_out_end:
                ret

beep_out:
                jb ha_f,ba1
                mov beep,sec
                setb ha_f                                              
        ba1:
                mov a,beep
                add a,beep_t
                mov b,#60d
                div ab
                mov a,sec
                cjne a,b,beep_out_end
                setb beep_f
                setb ha_over
                clr ha_f
beep_out_end:
                ret
timer_int:
                MOV T_1S,#TIMER_no
                mov beep_t,#15d
                mov year ,#01d
                mov mon , #011d
                mov day , #06d
                mov hour ,#13d
                mov min , #00d
                mov sec , #00d
                mov r7,#16
                mov dptr ,#al_asc
                mov r0,#al1_h
        al_read:
                clr a
                movc a,@a+dptr
                mov @r0,a
                inc r0
                inc dptr
                djnz r7,al_read
                ret

;************************************
beep_timer:
                mov led1,#blk_led
                mov led2,#b_led
                mov led3,#blk_led
                mov a,beep_t
                acall bcd_8
                mov led4,a
                mov led5,b
                jb fl_250ms,ft1
                mov led4,#blk_led
                mov led5,#blk_led
ft1:
        ret               

time_12:
                mov dptr,#asc_12
                mov a,hour
                rl a
                movc a,@a+dptr
                mov led2,a
                jnz iu2
                mov led2,#blk_led       
        iu2:       
                inc dptr
                mov a,hour
                rl a
                movc a,@a+dptr
                jb fl_500ms ,iu1
                add a,#10d       
        iu1:       
                mov led3,a
                               
;*************************************** min to led
                acall led_min
time_24_end:
                ret
asc_12:
        db 11d,2d,21d,1d,21d,2d,21d,3d,21d,4d,21d,5d,21d,6d,21d,7d
        db 21d,8d,21d,9d,11d,0d,11d,1d
        db 1d,2d,0d,1d,0d,2d,0d,3d,0d,4d,0d,5d,0d,6d,0d,7d,0d,8d,0d,9d
        db 1d,0,1d,1d

clock:
;********************************
                mov a,sec       
                cjne a,#60d,clock_end;!!!!!!!!!!!!!!!!!!!!!!
                mov sec,#00h

                inc min
                ;**********
                clr ha_over;2001.5.6
               
                mov a,min
                cjne a,#60d,clock_end
                mov min,#00h
               
                inc hour
                mov a,hour
                cjne a,#24d,clock_end
                mov hour,#00h
               
                mov a,mon
                xrl a,#02d
                jnz mm_1
                mov dptr,#year_d
                mov a, year
                movc a,@a+dptr
                sjmp mm_2
        mm_1:
                mov a,mon
                dec a   
                mov dptr,#mou_12
                movc a,@a+dptr
        mm_2:
                mov b,a
                inc b
                inc day;***************day+1
                mov a,day
                cjne a ,b ,clck_end
                sjmp clck1
        clck_end:
                jc clock_end
        clck1:
                mov day,#01h
       
                inc mon
                mov a,mon
                cjne a,#13d ,clock_end
                mov mon,#01d                               

                inc year
                mov a,year
               cjne a,#100d ,clock_end
                mov year,#00d              
clock_end:
                call   fl_out
                ret
mou_12:
                db 31d, 28d, 31d, 30d, 31d,30d
                db 31d, 31d, 30d,31d, 30d,31d
       
year_d:
        db 29d, 28d, 28d, 28d, 29d, 28d        , 28d, 28d, 29d, 28d       
        db 28d, 28d, 29d, 28d, 28d, 28d        , 29d, 28d, 28d, 28d       
        db 29d, 28d, 28d, 28d, 29d, 28d        , 28d, 28d, 29d, 28d       
        db 28d, 28d, 29d, 28d, 28d, 28d        , 29d, 28d, 28d, 28d       
        db 'li jie 2000.5.15'
;***************************************
t1:
                push a
                push psw
                push b
                clr fl_ms_f
                djnz t_1s ,t1_end
                clr fl_s_f
                inc sec
                call adj_w
;********************************
t1_end:
                pop b
                pop psw
                pop a
                reti

        adj_w:
                clr tr1
                mova,#T_L_100ms
                add a, w_adj ;*******have 5 order
                mov tl1 ,a
                mov a,#T_H_100ms
                addc a, #00h
                mov th1,a               
                mov t_1s,#timer_no
                setb tr1
                ret

fl_out:       
                jb fl_ms_f ,fl_out_end
                setb fl_ms_f
                mov a,t_1s
                mov b,#02d
                div ab
                mov a,b
                jnz to_d1
                cpl fl_250ms
        to_d1:       
                mov a,t_1s
                mov b,#04d
                div ab
                mov a,b
                jnz to_d2
                cpl fl_500ms
        to_d2:       
fl_out_end:
                call sec_out
                ret
       
sec_out:
                jb fl_s_f ,sec_out_end
                setb fl_s_f
                mov a,sec
                mov b,#07d
                jnb fl_3s,za1               
                mov b,#02d
        za1:
                div ab
                mov a,b
                jnz sec_out_end
                cpl fl_3s       
sec_out_end:
                ret
;**********************************
key_del:
                mov a,key_data
                jnz kl_12
                mov a,frist
                jnz kl_13
                ret
        kl_13:
                mov key_data,frist
                mov frist,#0
                clr key_over               
                jmp sf_beep
        kl_12:       
                jnb key_over,kl11
                mov a,t_30ms
                add a,#03
                mov b,#60d
                div ab
                mov a,sec
                cjne a,b,key_del_end
                clr key_over               
                jmp set_key
        kl11:
                mov t_30ms,sec
                setb key_over
key_del_end:
                call sf_a
                cjne a,#key_da,sfg_12
                clr key_over               
                jmp sf_beep
        sfg_12:
                mov frist,key_data
                mov key_data,#0
                ret
;****************************************               
key_bord:
                acall re_k
                mov a,key_data
                jz key_bord1_end
                ;acall psf_key0
key_bord1_end:
                setb key_f
                ret
set_key:
        mov a,key_data
        cjne a,#01h,set_cc1
        setb set_al4_f
        sjmp sf23
set_cc1:
        cjne a,#02h,sf23
        setb set_clk_f
sf23:
        ret
;************************************
sf_key:
                call clock
                call week_auto
                call al_out
                setb key_f
                call led
                call sf_a
                cjne a,#key_da,sf_key
                call sf_beep
        ret

sf_beep:

        clr beep_f
        call timer_20ms
        setb beep_f
        ret       
;********************************
re_k:       
                mov key_data,#00h
                mov p1,#00h
                mov a,p3
                orl a,#01111111b
                mov p3,a
                clr key_f
                mov a,p3
                setb key_f
                mov p1,#0ffh
                anl a ,#00000110b
                cjne a,#00000110b,you_key
re_k_end:       
                ret
you_key:
                call timer_20ms
                ;call led
                mov p1,#00h
                mov a,p3
                orl a,#01111111b
                mov p3,a
                clr key_f
                mov a,p3
                setb key_f
                mov p1,#0ffh
                anl a ,#key_da
                cjne a,#key_da,you_key1
                ret;sjmp re_k_end                                       
you_key1:
        jb acc.1,key_kb
        mov key_data,#02h
key_kb:       
        jb acc.2,sf_key0
        mov key_data,#01h
sf_key0:
        ret               

        sf_a:
                mov p1,#00h
                mov a,p3
                orl a,#01111111b
                mov p3,a
                clr key_f
                mov a,p3
                setb key_f       
                anl a ,#key_da
                ret
al_asc:
        db 06d,40d, 06d,50d, 07d,00d, 07d,10d;am 4_al
        db 07d,15d, 013d,40d, 13d,45d, 14d,15d;pm 4_al
       
页: [1]
查看完整版本: [原创diy]极其简单的小电子表