矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
查看: 7549|回复: 6

【DIY参赛】12时制数字钟

 关闭 [复制链接]
     
发表于 2009-7-5 18:02:16 | 显示全部楼层 |阅读模式
原贴在这里http://www.crystalradio.cn/bbs/thread-53935-1-1.html
代代拉拉的用了一个多月的时间作了一个12时制的数字钟。其实最难的还是写程序,这个是我第一次写带有中断的程序,说实在的,真的费了我好多的时间啊。
先来一张作完的成品照

大家猜猜,壳是用什么做的?

里面的结构

背面

变压器是以前一个随身听上的,初级绕组烧掉了,后来重绕了一下,结果用的漆包线较粗,只绕了一半就绕不下了,所以就串了个电容降压使用。

来几张加电后的效果图



关灯之后的

以下是以前在试验阶段拍的几张照片









下面是电路图

程序
  1. ;简单的89C2051时钟程序
  2. ;显示方式为.12:34
  3. ;P1口输出段数据,P3口输出位数据
  4. ;P1.7为秒点,P3.7为PM输出
  5. ;P3.4校时,P3.5校分
  6. ;晶振12MHz
  7. ;作者:李树雨   E-mail:nnn2688@163.com
  8.        flash equ 31h
  9.        sec equ 32h      ;定义秒存储位置
  10.        min equ 33h      ;定义分存储位置
  11.        hour equ 34h
  12.        hourk bit p3.4   ;调时按钮
  13.        mink bit p3.5    ;调分按钮
  14.        pm bit p3.7      ;PM输出端
  15.        org 0000h
  16.        ajmp start
  17.        org 000bh
  18.        ajmp int_t0
  19.        org 0100h
  20. start: mov a,#00h       ;清0
  21.        mov 30h,a
  22.        mov flash,a
  23.        mov sec,a        ;秒清0
  24.        mov min,#00      ;分清0
  25.        mov hour,#12
  26.        mov sp,#60h      ;重设堆栈指针
  27.        setb pm          ;PM清0
  28.        mov p1,#0ffh
  29.        mov p3,#0ffh
  30.        mov tmod,#01h    ;设定定时器0工作于方式1
  31.        mov tl0,#0b0h    ;设定定时初始值50ms
  32.        mov th0,#3ch
  33.        setb ea          ;启动定时
  34.        setb et0
  35.        setb tr0
  36. key:   lcall disp       ;按键处理子程序
  37.        jb hourk,mmm
  38. hhh:   lcall disp
  39.        jnb hourk,hhh
  40.        inc hour         ;时加1
  41.        mov a,hour
  42.        cjne a,#12,ppp
  43.        cpl pm           ;PM取反
  44. ppp:   cjne a,#13,key
  45.        mov hour,#01h    ;12小时到,清零.
  46. mmm:   jb mink,key
  47. nnn:   lcall disp
  48.        jnb mink,nnn
  49.        inc min
  50.        mov a,min
  51.        cjne a,#60,key
  52.        mov min,#00h     ;一小时时间到
  53.        ajmp key
  54. int_t0:push acc         ;保护现场
  55.        mov tl0,#0b0h    ;赋定时初值
  56.        mov th0,#3ch
  57.        inc 30h          ;20H地址加1
  58.        mov a,30h
  59.        cjne a,#10,reti1
  60.        mov 30h,#00h     ;半秒钟时间到
  61.        inc flash        ;半秒加1
  62.        mov a,flash
  63.        cjne a,#2,reti1
  64.        mov flash,#00h
  65.        inc sec          ;秒加1
  66.        mov a,sec
  67.        cjne a,#60,reti1
  68.        mov sec,#00h     ;一分钟时间到
  69.        inc min          ;分加1
  70.        mov a,min
  71.        cjne a,#60,reti1
  72.        mov min,#00h     ;一小时时间到
  73.        inc hour         ;时加1
  74.        mov a,hour
  75.        cjne a,#12,cont
  76.        cpl pm           ;PM取反
  77. cont:  cjne a,#13,reti1
  78.        mov hour,#01h    ;12小时到,清零.
  79. reti1: pop acc          ;恢复现场
  80.        reti             ;中断返回
  81. disp:  mov a,#10
  82.        mov b,a
  83.        mov a,hour
  84.        div ab      
  85.        cjne a,#01,zero
  86.        jmp normal
  87. zero:  mov a,#10        ;消隐无效零
  88. normal:mov dptr,#tab
  89.        movc a,@a+dptr
  90.        mov p1,a
  91.        clr p3.0
  92.        lcall dely
  93.        setb p3.0
  94.        mov a,b
  95.        mov dptr,#tab
  96.        movc a,@a+dptr
  97.        mov p1,a
  98.        clr p3.1
  99.        lcall dely
  100.        setb p3.1
  101.        mov a,#10
  102.        mov b,a
  103.        mov a,min
  104.        div ab
  105.        mov dptr,#tab
  106.        movc a,@a+dptr
  107.        mov p1,a
  108.        clr p3.3
  109.        lcall dely
  110.        setb p3.3
  111.        mov a,b
  112.        mov dptr,#tab
  113.        movc a,@a+dptr
  114.        mov p1,a
  115.        clr p3.2
  116.        lcall dely
  117.        setb p3.2
  118.        mov a,flash
  119.        cjne a,#00,light
  120.        setb p1.7
  121.        lcall dely
  122.        jmp over
  123. light: clr p1.7
  124.        lcall dely
  125. over:  ret              ;子程序返回
  126. tab:   db 88h,0afh,91h,0a1h,0a6h,0e0h,0c0h,0adh,80h,0a0h,0ffh;共阳段码表0123456789不亮
  127. dely:  mov r6,#10
  128. d1:    mov r7,#20
  129. d2:    djnz r7,d2
  130.        djnz r6,d1
  131.        ret

  132.        end
复制代码

评分

1

查看全部评分

     
发表于 2009-7-6 20:35:27 | 显示全部楼层
做得不错,做工还有进步余地
     
发表于 2009-7-7 13:46:55 | 显示全部楼层
这个做正投影好合适。
     
发表于 2009-7-8 16:50:03 | 显示全部楼层
不错!
可改进为分时显示月日、星期和时分。我是显示月日五秒,星期几五秒,时分二十秒。再用一个I/O口控制可控硅控制家用电器。我的放在“电脑与单片机”板块,名为《我的数字钟与时间控制器》,请指导。
     
发表于 2009-7-10 19:59:03 | 显示全部楼层
表还要程序!!!!!
发表于 2009-7-16 03:18:01 | 显示全部楼层
小巧精致,很不错
     
发表于 2009-7-21 11:03:24 | 显示全部楼层
看看我的,呵呵。
24小时制,带定时闹钟,显示年月日,时分秒,温度

[ 本帖最后由 renzhiy 于 2009-7-22 14:56 编辑 ]
您需要登录后才可以回帖 登录 | 加入会员

本版积分规则

小黑屋|手机版|矿石收音机 ( 蒙ICP备05000029号-1 )

蒙公网安备 15040402000005号

GMT+8, 2024-4-18 23:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表