矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
楼主: nnn2688

应rdrd888的要求,上一个数字钟的电路

[复制链接]
发表于 2007-12-1 18:42:13 | 显示全部楼层
每小时慢20秒?那程序应该没问题哦.是不是你的晶振不良啊,换个优质的晶振试试
发表于 2007-12-1 18:43:23 | 显示全部楼层
帮人要帮到底,谢谢你!
这句话挺压韵的.
     
 楼主| 发表于 2007-12-1 18:52:14 | 显示全部楼层

回复 61# 的帖子

这个我就无能为力了,我也只能简单的改改字形表什么的,别的地方我也看不懂。我只能把汇编的源程序贴出来,你自己研究吧。
我倒是觉得应该在
MOV TH0,#(65536-2000) / 256
MOV TL0,#(65536-2000) MOD 256
这两个语句上改才对。
  1. ;89C51时钟程序
  2. ;显示方式为13-34-56
  3. ;P0口输出段数据,P2口输出位数据
  4. ;P1.0校时,P1.1校分,P1.2校秒
  5. ;晶振12MHz,共阳数码管

  6.       SECOND EQU 30H
  7.       MINITE EQU 31H
  8.       HOUR EQU 32H
  9.       HOURK BIT P1.0
  10.       MINITEK BIT P1.1
  11.       SECONDK BIT P1.2
  12.       DISPBUF EQU 40H
  13.       DISPBIT EQU 48H
  14.       T2SCNTA EQU 49H
  15.       T2SCNTB EQU 4AH
  16.       TEMP EQU 4BH

  17.       ORG 00H
  18.       LJMP START
  19.       ORG 0BH
  20.       LJMP INT_T0
  21.       START: MOV SECOND,#00H
  22.       MOV MINITE,#00H
  23.       MOV HOUR,#12
  24.       MOV DISPBIT,#00H
  25.       MOV T2SCNTA,#00H
  26.       MOV T2SCNTB,#00H
  27.       MOV TEMP,#0FEH
  28.       LCALL DISP
  29.       MOV TMOD,#01H
  30.       MOV TH0,#(65536-2000) / 256               ;是不是应该在这个地方改呢?
  31.       MOV TL0,#(65536-2000) MOD 256        ;;是不是应该在这个地方改呢?
  32.       SETB TR0
  33.       SETB ET0
  34.       SETB EA
  35.       WT: JB SECONDK,NK1
  36.       LCALL DELY10MS
  37.       JB SECONDK,NK1
  38.       INC SECOND
  39.       MOV A,SECOND
  40.       CJNE A,#60,NS60
  41.       MOV SECOND,#00H
  42.       NS60: LCALL DISP
  43.       JNB SECONDK,$
  44.       NK1: JB MINITEK,NK2
  45.       LCALL DELY10MS
  46.       JB MINITEK,NK2
  47.       INC MINITE
  48.       MOV A,MINITE
  49.       CJNE A,#60,NM60
  50.       MOV MINITE,#00H
  51.       NM60: LCALL DISP
  52.       JNB MINITEK,$
  53.       NK2: JB HOURK,NK3
  54.       LCALL DELY10MS
  55.       JB HOURK,NK3
  56.       INC HOUR
  57.       MOV A,HOUR
  58.       CJNE A,#24,NH24
  59.       MOV HOUR,#00H
  60.       NH24: LCALL DISP
  61.       JNB HOURK,$
  62.       NK3: LJMP WT
  63.       DELY10MS:
  64.       MOV R6,#10
  65.       D1: MOV R7,#248
  66.       DJNZ R7,$
  67.       DJNZ R6,D1
  68.       RET
  69.       DISP:
  70.       MOV A,#DISPBUF
  71.       ADD A,#8
  72.       DEC A
  73.       MOV R1,A
  74.       MOV A,HOUR
  75.       MOV B,#10
  76.       DIV AB
  77.       MOV @R1,A
  78.       DEC R1
  79.       MOV A,B
  80.       MOV @R1,A
  81.       DEC R1
  82.       MOV A,#10
  83.       MOV@R1,A
  84.       DEC R1
  85.       MOV A,MINITE
  86.       MOV B,#10
  87.       DIV AB
  88.       MOV @R1,A
  89.       DEC R1
  90.       MOV A,B
  91.       MOV @R1,A
  92.       DEC R1
  93.       MOV A,#10
  94.       MOV@R1,A
  95.       DEC R1
  96.       MOV A,SECOND
  97.       MOV B,#10
  98.       DIV AB
  99.       MOV @R1,A
  100.       DEC R1
  101.       MOV A,B
  102.       MOV @R1,A
  103.       DEC R1
  104.       RET
  105.       INT_T0:
  106.       MOV TH0,#(65536-2000) / 256               ;是不是应该在这个地方改呢?
  107.       MOV TL0,#(65536-2000) MOD 256        ;是不是应该在这个地方改呢?
  108.       MOV A,#DISPBUF
  109.       ADD A,DISPBIT
  110.       MOV R0,A
  111.       MOV A,@R0
  112.       MOV DPTR,#TABLE
  113.       MOVC A,@A+DPTR
  114.       MOV P0,A
  115.       MOV A,DISPBIT
  116.       MOV DPTR,#TAB
  117.       MOVC A,@A+DPTR
  118.       MOV P2,A
  119.       INC DISPBIT
  120.       MOV A,DISPBIT
  121.       CJNE A,#08H,KNA
  122.       MOV DISPBIT,#00H
  123.       KNA: INC T2SCNTA
  124.       MOV A,T2SCNTA
  125.       CJNE A,#100,DONE
  126.       MOV T2SCNTA,#00H
  127.       INC T2SCNTB
  128.       MOV A,T2SCNTB
  129.       CJNE A,#05H,DONE
  130.       MOV T2SCNTB,#00H
  131.       INC SECOND
  132.       MOV A,SECOND
  133.       CJNE A,#60,NEXT
  134.       MOV SECOND,#00H
  135.       INC MINITE
  136.       MOV A,MINITE
  137.       CJNE A,#60,NEXT
  138.       MOV MINITE,#00H
  139.       INC HOUR
  140.       MOV A,HOUR
  141.       CJNE A,#24,NEXT
  142.       MOV HOUR,#00H
  143.       NEXT: LCALL DISP
  144.       DONE: RETI
  145.       TABLE:
  146.         DB        0C0H;0
  147.         DB        0F9H;1
  148.         DB        0A4H;2
  149.         DB        0B0H;3
  150.         DB        099H;4
  151.         DB        092H;5
  152.         DB        082H;6
  153.         DB        0F8H;7
  154.         DB        080H;8
  155.         DB        090H;9
  156.         DB        0BFH;-
  157.         TAB: DB 7FH,0BFH,0DFH,0EFH,0F7H,0FBH,0FDH,0FEH
  158.       END
  159. 
复制代码
发表于 2007-12-1 19:54:43 | 显示全部楼层
数字源钟程序+电路图http://www.y007.com/danpianji/ShowArticle.asp?ArticleID=3451    不过我的晶震是新的换了4个12MHZ的都不行还是慢,最后换了一个军机拆的美国的超低温稳频晶体震荡器,可还是每小时慢16秒这样24小时会慢384秒=6.4分钟,应该是程序的错误!!希望大家帮忙改一下!!!
发表于 2007-12-1 21:43:18 | 显示全部楼层
俺没玩过51,也不懂51汇编。不过看了哈楼上恩恩恩2688给出的程序清单,觉得除去要确认定时器常数外,中断服务程序里是不应重置定时器,而应利用硬件的自动重装功能的,因为软件重装会造成积累误差!
不知现在用的T0有没有自动重装功能,不行的话要换个定时器。
发表于 2007-12-2 08:27:50 | 显示全部楼层
;89C51时钟程序
     ;显示方式为13-34-56
    0口输出段数据,P2口输出位数据
    1.0校时,P1.1校分,P1.2校秒
    ;晶振12MHz,共阳数码管

      SECOND EQU 30H
      MINITE EQU 31H
      HOUR EQU 32H
      HOURK BIT P1.0
      MINITEK BIT P1.1
      SECONDK BIT P1.2
      DISPBUF EQU 40H
      DISPBIT EQU 48H
      T2SCNTA EQU 49H
      T2SCNTB EQU 4AH
      TEMP EQU 4BH

      ORG 00H
      LJMP START
      ORG 0BH
      LJMP INT_T0
      START: MOV SECOND,#00H
      MOV MINITE,#00H
      MOV HOUR,#12
      MOV DISPBIT,#00H
      MOV T2SCNTA,#00H
      MOV T2SCNTB,#00H
      MOV TEMP,#0FEH
      LCALL DISP
      MOV TMOD,#01H
      MOV TH0,#(65536-2000) / 256
      MOV TL0,#(65536-2000) MOD 256
      SETB TR0
      SETB ET0
      SETB EA
      WT: JB SECONDK,NK1
      LCALL DELY10MS
      JB SECONDK,NK1
      INC SECOND
      MOV A,SECOND
      CJNE A,#60,NS60
      MOV SECOND,#00H
      NS60: LCALL DISP
      JNB SECONDK,$
      NK1: JB MINITEK,NK2
      LCALL DELY10MS
      JB MINITEK,NK2
      INC MINITE
      MOV A,MINITE
      CJNE A,#60,NM60
      MOV MINITE,#00H
      NM60: LCALL DISP
      JNB MINITEK,$
      NK2: JB HOURK,NK3
      LCALL DELY10MS
      JB HOURK,NK3
      INC HOUR
      MOV A,HOUR
      CJNE A,#24,NH24
      MOV HOUR,#00H
      NH24: LCALL DISP
      JNB HOURK,$
      NK3: LJMP WT
      DELY10MS:
      MOV R6,#10
      D1: MOV R7,#248
      DJNZ R7,$
      DJNZ R6,D1
      RET
      DISP:
      MOV A,#DISPBUF
      ADD A,#8
      DEC A
      MOV R1,A
      MOV A,HOUR
      MOV B,#10
      DIV AB
      MOV @R1,A
      DEC R1
      MOV A,B
      MOV @R1,A
      DEC R1
      MOV A,#10
      MOV@R1,A
      DEC R1
      MOV A,MINITE
      MOV B,#10
      DIV AB
      MOV @R1,A
      DEC R1
      MOV A,B
      MOV @R1,A
      DEC R1
      MOV A,#10
      MOV@R1,A
      DEC R1
      MOV A,SECOND
      MOV B,#10
      DIV AB
      MOV @R1,A
      DEC R1
      MOV A,B
      MOV @R1,A
      DEC R1
      RET
      INT_T0:
      MOV TH0,#(65536-2000) / 256
      MOV TL0,#(65536-2000) MOD 256
      MOV A,#DISPBUF
      ADD A,DISPBIT
      MOV R0,A
      MOV A,@R0
      MOV DPTR,#TABLE
      MOVC A,@A+DPTR
      MOV P0,A
      MOV A,DISPBIT
      MOV DPTR,#TAB
      MOVC A,@A+DPTR
      MOV P2,A
      INC DISPBIT
      MOV A,DISPBIT
      CJNE A,#08H,KNA
      MOV DISPBIT,#00H
      KNA: INC T2SCNTA
      MOV A,T2SCNTA
      CJNE A,#100,DONE
      MOV T2SCNTA,#00H
      INC T2SCNTB
      MOV A,T2SCNTB
      CJNE A,#05H,DONE
      MOV T2SCNTB,#00H
      INC SECOND
      MOV A,SECOND
      CJNE A,#60,NEXT
      MOV SECOND,#00H
      INC MINITE
      MOV A,MINITE
      CJNE A,#60,NEXT
      MOV MINITE,#00H
      INC HOUR
      MOV A,HOUR
      CJNE A,#24,NEXT
      MOV HOUR,#00H
      NEXT: LCALL DISP
      DONE: RETI
      TABLE:
        DB        0C0H;0
        DB        0F9H;1
        DB        0A4H;2
        DB        0B0H;3
        DB        099H;4
        DB        092H;5
        DB        082H;6
        DB        0F8H;7
        DB        080H;8
        DB        090H;9
        DB        040H;- DB 05H,0DDH,46H,54H,9CH,34H,24H,5DH,04H,14H,0FEH
      TAB: DB 7FH,0BFH,0DFH,0EFH,0F7H,0FBH,0FDH,0FEH
      END

[ 本帖最后由 110919645 于 2007-12-2 08:29 编辑 ]
发表于 2007-12-2 18:40:07 | 显示全部楼层
我的晶震是新的换了4个12MHZ的都不行还是慢,最后换了一个军机拆的美国的超低温稳频晶体震荡器,可还是每小时慢16秒这样24小时会慢384秒=6.4分钟,应该是程序的错误!!希望大家帮忙改一下!!!
发表于 2007-12-3 00:54:09 | 显示全部楼层
再次读了一哈程序,看出它走表不是靠硬件,而是靠软件楞凑的clock数,这样肯定做不了很准。
不是俺上面猜测的定时器重装问题,定时器只被用来做扫描,其实扫描倒是准不准无所谓的。

[ 本帖最后由 仙猫 于 2007-12-3 00:58 编辑 ]
发表于 2007-12-3 18:55:19 | 显示全部楼层
希望大家帮忙改一下!!!
发表于 2007-12-3 21:41:51 | 显示全部楼层
可不可以帮我改一下,难道论坛里没有高手吗?我在电脑前等了3天了,一点回音都没有,难道就没一个人来解决一下?,我看这个帖子如果没人解决,就绝对不可以加入精华,因为没有用的帖子是算不上是精华,因为不够资格。
  尤其是我这样的出学者,看完了帖子,会被误捣的!!!!!
发表于 2007-12-4 17:12:34 | 显示全部楼层
呵呵.面对现实吧,小弟
发表于 2007-12-4 21:39:35 | 显示全部楼层
    不是要面对现实,要有人提出解决意见和方法,就个人看法,如果这样没人解决的帖子,就不要存活在这里,以免影响环境,般主也要负有一定的责任,这里只有版主是高手,如果向这样推卸责任的话,那大家的论坛就不是论坛了,变成了辩论,推卸,废坛了!难道就没一个人站出来解决问题,只是在推卸责任{是谁谁说的!你找他去吧!}这样的话,让全论坛的人来评评,是不是这个礼,人要有高尚的品德和敢于解决问题承认错误的勇气,难道大家连这点道理也不知道??让全论坛的人来评评是不是这个礼!!!
     
 楼主| 发表于 2007-12-4 22:17:42 | 显示全部楼层
原意是想发这个贴子活跃一下气氛,没想到惹出娄子来了。
不过汇编也不是很难学,只是我没有时间更深入的学习,所以对于程序真的是无能为力,我也希望有更多的高手站出来解决问题,但论坛终归是论坛,大家也不都是专门搞这个专业的,多数都是业余的爱好罢了,况且大家都很忙,除了上班,真正能够余下来的时间也不是很多,还有,就是写程序是个既费时间又费精力的事,所以,很少能有人抽出这么长的时间和精力来研究这个程序,与其这样,倒不如我们自己每天抽出一段时间,学学汇编,学学C,到那时,就不用麻烦别人帮忙改程序了。
发表于 2007-12-5 01:32:29 | 显示全部楼层

这个小弟似乎不太懂事,咋呼什么呢?

首先必须明确的是,这里谁也不欠谁的,毕竟上论坛不是本职工作(包括版主),谁也没义务非要解决什么难题不可。如果有人出手你该感谢,一时没人吱声你也无权抱怨。
其次,俺看这里的人其实都很热心,如果只是举手之劳的话,恐怕早就解决不止八遍了,几天无进展必有其原因。
第3,问题并不深奥,但即便对高手来说也要费点事——写程序是需要调试的,手里没相同的目标机怎么验证?这是最大的障碍,不知你想过没。
俺劝你不妨再耐心等等,高手一般是不会长久作壁上观的。如果时间充裕而高手又忙不过来的话,俺们低手或许也会瞅空试试……不过俺这低手比较惨,得现学51汇编。
先睡会儿觉再说,已经欠睡个把月了。
     
发表于 2007-12-5 12:48:28 | 显示全部楼层
初步研究了一下这个程序,它的走时是采用的是软件延时制作的,这种延时很不精确,它还会受到中断的影响,所以不可能指望它实现一个实用的电子钟。
这个用来做个演示的程序还可以,离实用很远。
您需要登录后才可以回帖 登录 | 加入会员

本版积分规则

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

蒙公网安备 15040402000005号

GMT+8, 2025-4-30 18:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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