磁动力电子网-雕刻机DIY论坛,单片机论坛,CNCDIY,DIYCNC

 找回密码
 加入磁动力

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 69506|回复: 182

[原创]详解DS1302电子钟+DS18B20温度显示制作

[复制链接]
发表于 2007-11-18 22:00:00 | 显示全部楼层 |阅读模式

详解DS1302电子钟+DS18B20温度显示制作

有一段时间没有上论坛了,近日看了一下论坛,有好多关于电子钟的制作,非常不错,也抽空做了一个玩玩。

在制作过程中,也碰到一些问题,结合论坛上好多朋友提出的各种问题,我想有必要围绕电子钟制作这个话题,做一些

比较详细的说明,如有错漏还请指正。

首先,说明一下,电子钟的制作电路各种各样,单片机编程环境也是多样的,我想应该尽量围绕实践应用,以简单、高效、基础的出发点考虑写作。

一、制作好的电子钟实物

[原创]详解DS1302电子钟+DS18B20温度显示制作

[原创]详解DS1302电子钟+DS18B20温度显示制作

显示时间:

显示为24小时制,调整小时/分钟时,小时或分钟呈闪烁状态,每调整一次,秒钟从零开始计时。

注意:从左向右数,第3、第5数码管倒装,第4、5数码管小数点变为秒闪烁指示。

[原创]详解DS1302电子钟+DS18B20温度显示制作

[原创]详解DS1302电子钟+DS18B20温度显示制作

显示温度:
显示范围:-55/125摄氏度,低于0度显示“-”符号

[原创]详解DS1302电子钟+DS18B20温度显示制作

[原创]详解DS1302电子钟+DS18B20温度显示制作

显示计时:
计时范围:00:00:00-23:59:59,循环计时。



[原创]详解DS1302电子钟+DS18B20温度显示制作

[原创]详解DS1302电子钟+DS18B20温度显示制作

二、电路原理图/ASM源代码/HEX烧录码/BIN烧录码/编程流程图

待续。。。

三、编程原理-源代码详解(数码管扫描。。。。。。)

待续。。。

四、常见问题:

1、关于DS1302

2、关于DS18B20

3、关于数码管

4、关于选用51兼容单片机(如W78E516B,STC8951等),烧录程序方法

待续。。。

[此贴子已经被作者于2007-11-18 22:18:32编辑过]
回复

使用道具 举报

发表于 2007-11-19 15:52:00 | 显示全部楼层
不错的作品,期待楼主的待续中......
回复 支持 反对

使用道具 举报

发表于 2007-11-19 00:07:00 | 显示全部楼层
把管子倒过来的主意不错!
我第一次看到
很巧!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-11-22 15:24:00 | 显示全部楼层

电子钟制作初步

电子钟制作初步


下面是电子钟制作过程,写这个过程,只是想通过一些比较形象的文字图片资料,给广大爱好单片机电路制作的朋友,特别是初学者,很多朋友搞不懂如何入门,希望能够帮到这些朋友。

由于写作水平有限,如有错漏,敬请见谅。如果你是技术高手,欢迎提出批评意见。

制作电子钟其实就是单片机学习的实践之一,它需要一些软件和硬件的物质基础为保证,要学的快,纸上谈兵是不行的,需要进行实践。

一般硬件基础配备:

1、电脑一部

学习单片机,电脑是必备的,编译软件在电脑上运行,才能调试代码、生成编译文件等等,偶尔还能听说,不用电脑即可学单片机的声音,可以说是误导一大片朋友。若干年前,有些开发板是直接输机器码的,确实不需要电脑,即可使单片机运行,这种方式早已淘汰啦!!

图片就不上啦

2、编程器一部

编程器连接电脑,通过电脑上使用配套软件,将编译好的代码烧录文件写入单片机中。

现在市场上买的多是多功能编程器,可以适应很多规格的单片机型号。

同时,由于技术进步,现在很多单片机具有ISP(在线下载)功能,做一个简单的接口电路,即可实现烧录代码,如果你用的单片机型号不是很多,可以不用采购编程器。专业的单片机开发人员一般都会配置一台编程器。

早年采购的TOP2000BS编程器 使用串口连接 (目前市场上多为USB接口)

电子钟制作初步

电子钟制作初步

TOP2000BS 编程器软件截图

电子钟制作初步

电子钟制作初步

3、51仿真器一部

一个非常重要的工具,编程必备,顾名思义,它的作用等于等于仿真一个51系列的集成电路,把它直接插在线路板上,连接电脑,通过仿真软件,即可方便的调试程序,专业的仿真器,功能齐全,如可以观察寄存器、RAM值、单步、全速运行等,有些网站出售简易型的仿真器,限制较多,几乎对调试程序、特别是观察寄存器值没有任何帮助。

建议采购专业的仿真器,对学习工作帮助很大,你会发现进步提高的很快。

购置多年的万利51仿真器,非常好用!

电子钟制作初步

电子钟制作初步

仿真器连接到电路板

电子钟制作初步

电子钟制作初步

仿真器连接到电路板---局部

电子钟制作初步

电子钟制作初步

万利配套的仿真软件 MedWin 2.39 截图

电子钟制作初步

电子钟制作初步

方便的查看寄存器值

电子钟制作初步

电子钟制作初步

方便的查看ram值

电子钟制作初步

电子钟制作初步

方便的查看指令执行时间,对时序严格的器件,基本不用计算。

电子钟制作初步

电子钟制作初步

4、相关软件若干

。。。。

[此贴子已经被作者于2007-11-22 17:05:24编辑过]

电子钟制作初步

电子钟制作初步

电子钟制作初步

电子钟制作初步

电子钟制作初步

电子钟制作初步
回复 支持 反对

使用道具 举报

发表于 2007-11-22 13:45:00 | 显示全部楼层
楼主,,,,很忙吗??我在等你继续写下去啊,,,,,,这么好的贴子不要让它沉了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-11-22 14:32:00 | 显示全部楼层

编辑好像超时了(论坛限制),源代码和电路发在这里



电路图做的尺寸较大(为了清晰),在论坛上看,效果不好,请右键-图片另存为-------你的电脑上,再打开

u4JM9yKF.rar (8.66 KB, 下载次数: 3308)

[原创]详解DS1302电子钟+DS18B20温度显示制作

[原创]详解DS1302电子钟+DS18B20温度显示制作

[原创]详解DS1302电子钟+DS18B20温度显示制作

[原创]详解DS1302电子钟+DS18B20温度显示制作

[原创]详解DS1302电子钟+DS18B20温度显示制作

[原创]详解DS1302电子钟+DS18B20温度显示制作
回复 支持 反对

使用道具 举报

发表于 2007-11-25 09:30:00 | 显示全部楼层
感谢楼主的分享啊!!!顶了!!![em01][em01][em01]
回复 支持 反对

使用道具 举报

发表于 2007-11-25 16:15:00 | 显示全部楼层

总工,怎么不见你来了啊!

回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-11-22 22:41:00 | 显示全部楼层

[原创]ASM汇编代码详解

ASM汇编代码详解

(完整源代码、烧录码、电路图在5楼下载)

准备好开发调试工具后,按电路图搭建电子钟,完成后,先不插51单片机及DS1302、DS18B20,检查没有明显短路、断路,错焊后,通电检查,稳压电路7805后应有+5v电压,如有故障,立即排除。

单片机要写入代码才能按我们的要求及想法运行, 单片机编制程序,特别对于初学者,往往一时找不到方向,很多单片机网友与我交流时都提到这个问题,我也一时说不清,我只能以这个电子钟为例,把我的设计思路尽量说清楚,希望与大家共勉。

该电子钟的代码编制应考虑 : 电子钟功能、操作方法、外围部件连接方式及特性、扫描显示方式等因素

1、电子钟功能

2、操作方法

3、外围部件连接方式及特性

4、扫描显示方式

综合如上因素,设计如下程序流程图:

主程序流程图

[原创]详解DS1302电子钟+DS18B20温度显示制作

[原创]详解DS1302电子钟+DS18B20温度显示制作


中断扫描程序流程图

[原创]详解DS1302电子钟+DS18B20温度显示制作

[原创]详解DS1302电子钟+DS18B20温度显示制作

整个代码的核心其实就3个子程序:

1、DS1302读写子程序

2、DS18B20子程序

3、显示扫描子程序

要快速掌握它们,最简单的办法是移植代码,但要了解它的硬件编程特性。

1、DS1302是时钟电路,网上资料很多,对它的常用操作,只有读取时间、写入时间。

请复制并保存下面的代码(蓝色部分),该代码是网上搜索而得,出处不明,但非常好用,个人认为很标准。

它完全符合DS1302 通讯规则,很多朋友无法操作DS1302 一般都是这个问题。

有些朋友无法操作DS1302 ,认为是晶振频率不对,实质DS1302 对时序要求不严,只要按规则通讯即可,实践证明本代码在4-24M均可正确读取/写入DS1302。

[原创]ASM汇编代码详解

[原创]ASM汇编代码详解
DS1302读写通讯时序

;读取时间代码=READ_TIME

;设置时间代码=Set1302

;**********************************************************
;子程序名:READ_TIME
;功 能:从DS1302 读时间
;调 用:RTInputByte,RTOutputByte
;入口参数:时间保存在:Second,Minute,Hour,Day,Month,Week.YearL
;影响资源:A B R0 R1 R4 R7
;**********************************************************
READ_TIME:
MOV R0, #Second;
MOV R7, #7
MOV R1, #81H ;秒地址
G13021:
SETB T_CLK
CLR T_RST
NOP
NOP
NOP
NOP
NOP
NOP
NOP
CLR T_CLK
NOP
NOP
NOP
SETB T_RST
NOP
NOP
NOP
MOV B, R1 ;秒 分 时 日 月 星期 年 地址
LCALL RTInputByte
LCALL RTOutputByte
MOV @R0, A ;秒
INC R0
INC R1
INC R1
SETB T_CLK
NOP
NOP
NOP
CLR T_RST
NOP
NOP
DJNZ R7, G13021
RET

;**********************************************************
;子程序名:Set1302
;功 能:设置DS1302 初始时间,并启动计时。
;调 用:RTInputByte
;入口参数:初始时间在:Second,Minute,Hour,Day,Month,Week.Year(地址连续)
;影响资源:A B R0 R1 R4 R7
;**********************************************************
Set1302:
CLR T_RST
CLR T_CLK
SETB T_RST
MOV B, #8EH ;控制寄存器
LCALL RTInputByte
MOV B, #00H ;写操作前WP=0
LCALL RTInputByte
SETB T_CLK
CLR T_RST

MOV R0, #Second;
MOV R7, #7 ;秒 分 时 日 月 星期 年
MOV R1, #80H ;秒写地址
S13021: CLR T_RST
CLR T_CLK
SETB T_RST
MOV B, R1 ;写秒 分 时 日 月 星期 年 地址
LCALL RTInputByte
MOV A, @R0 ;写秒数据
MOV B, A
LCALL RTInputByte
INC R0
INC R1
INC R1
SETB T_CLK
CLR T_RST
DJNZ R7, S13021
CLR T_RST
CLR T_CLK
SETB T_RST
MOV B, #8EH ;控制寄存器
LCALL RTInputByte
MOV B, #80H ;控制,WP=1,写保护
LCALL RTInputByte
SETB T_CLK
CLR T_RST
RET

;**********************************************************
;功 能:写1302一字节 (内部子程序)
;**********************************************************
RTInputByte:
MOV R4, #8
Inbit1: MOV A, B
RRC A
MOV B, A
MOV T_IO, C
NOP
NOP
NOP





SETB T_CLK
NOP
NOP
NOP
CLR T_CLK





DJNZ R4, Inbit1
NOP
NOP
NOP
RET
;**********************************************************
;功 能:读1302一字节 (内部子程序)
;**********************************************************
RTOutputByte:
MOV R4, #8
Outbit1: MOV C, T_IO
RRC A
SETB T_CLK
NOP
NOP
NOP
CLR T_CLK
NOP
NOP
NOP
DJNZ R4, Outbit1
RET

;*************************************************************

以上代码读或写DS 1302时,按“秒 分 时 日 月 星期 年”顺序进行操作,非常方便有效。

在使用该代码时,首先需要按硬件连接情况作一些配置,

在本电子钟由于

DS1302 的管脚 5---------------------------------51管脚 3

DS1302 的管脚 6---------------------------------51管脚 2

DS1302 的管脚 7---------------------------------51管脚 1

同时为了方便我们将“秒 分 时 日 月 星期 年”的读写缓存设置在60H-66H

所以



;DS1302设置

T_CLK Bit P1.0 ;实时时钟时钟线引脚
T_IO Bit P1.1 ;实时时钟数据线引脚
T_RST Bit P1.2 ;实时时钟复位线引脚

second equ 60h ;秒的缓冲区
minute equ 61h ;分的缓冲区
hour equ 62h ;小时的缓冲区
date equ 63h ;日期的缓冲区
month equ 64h ;月的缓冲区
WEEK equ 65h ;星期的缓冲区
year equ 66h ;年的缓冲区

举例:设置DS1302 时间=07年 星期=5 月=11 日=23 小时=20 分钟=50 秒=28 并立即走时的代码

MOV 66H,#07H
MOV 65H,#05H
MOV 64H,#11H
MOV 63H,#23H
MOV 62H,#20H
MOV 61H,#50H
MOV 60H,#28H

CALL SET1302 ;调用写1302子程序

你看非常简单,由于源代码开头位置已经作了地址定义,所以也可以写成

MOV year,#07H
MOV WEEK,#05H
MOV month,#11H
MOV date,#23H
MOV hour,#20H
MOV minute,#50H
MOV second,#28H

CALL SET1302 ;调用写1302子程序

效果相同,但可以方便的修改数据缓存地址,如要修改地址,只要在源代码开头位置修改即可。

举例:读DS1302 时间 星期 月 日 小时 分钟 秒 并将读到的数据存入定义好的缓存中66H-60H(RAM地址)

call read_time

简单吧!

DS1302每个字节(8位)分成高4位、低4位,除了个别“位”代表特定参数外,分别表示

[原创]ASM汇编代码详解

[原创]ASM汇编代码详解

1302寄存器,左边是地址,右边是读出或写入值的位定义,详细请网上搜索数据手册

由于读出DS1302小时 分钟 秒的值是3个字节表示(在地址62H、61H、60H),而数码管显示是6位,显示时是一个一个数码管送显示数据的,第1、2位小时,第3、4位分钟,第5、6位秒钟,因此要进行字节拆分,才能正常显示。

举例:

读出3个字节数据:小时=23H 分钟=37H 秒=52H,

拆分成6个数码管对应显示值:小时十位=02H,小时个位=03H,分钟十位=03H,分钟个位=07H,秒钟十位=05H,秒钟个位=02H,

并且规定拆分后的数据作为显示缓存,地址对应

小时十位=45H,小时个位=44H,分钟十位=43H,分钟个位=42H,秒钟十位=41H,秒钟个位=40H,

代码如下:

;拆分字节Second,取低4位,写入秒钟个位显示缓存40H
GET_DISPBUFF:
MOV A,Second
ANL A,#00001111B
MOV 40H,A
;拆分字节Second,取高4位,写入秒钟十位显示缓存41H
CLR C
MOV A,Second
ANL A,#01110000B
RRC A
RRC A
RRC A
RRC A
MOV 41H,A
;拆分字节MINUTE,取低4位,写入分钟个位显示缓存42H
MOV A,MINUTE
ANL A,#00001111B
MOV 42H,A
;拆分字节MINUTE,取高4位,写入分钟十位显示缓存43H
CLR C
MOV A,MINUTE
ANL A,#01110000B
RRC A
RRC A
RRC A
RRC A
MOV 43H,A


;拆分字节HOUR,取低4位,写入小时个位显示缓存44H
MOV A,HOUR
ANL A,#00001111B
MOV 44H,A
;拆分字节HOUR,取高4位,写入小时十位显示缓存45H
CLR C
MOV A,HOUR
ANL A,#00110000B
RRC A
RRC A
RRC A
RRC A
MOV 45H,A
RET

无论设置或写入DS1302,最终都要通过LED数码管显示出来的,我们来看看数码管显示的基本代码:

明晚继续。。




[此贴子已经被作者于2007-11-23 22:30:36编辑过]
回复 支持 反对

使用道具 举报

发表于 2007-11-23 22:34:00 | 显示全部楼层

非常感谢!小弟是才入门的,希望楼主能帮我修改后能直接用.我的时间和秒表显示都正常,晶振也换了12M的.

cvsgL1lu.rar (63.69 KB, 下载次数: 2326)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-11-23 21:22:00 | 显示全部楼层

[原创]请把修改后的的代码和电路图,打包后发上来

请把修改后的的代码和电路图,打包后发上来,我帮你看看,估计3种情况

1、如果时钟显示正常,电路连接应该没有问题,如果不是,请先检查电路连接

2、数值在变化,应该是与1820有通讯,只是通讯错误,晶振要12M,1820有严格的时序要求。

3、代码修改后,有RAM地址冲突

[此贴子已经被作者于2007-11-23 21:33:56编辑过]
回复 支持 反对

使用道具 举报

发表于 2007-11-23 21:08:00 | 显示全部楼层

很感谢楼主能和我们共享你的成果,我把你的下来的程序修改了一下放在实验板上显示,发现温度显不正常,显示-68度(实际23度),手一摸探头温度慢慢的变成-40,-30,-15.不知是不是出错在哪里?希望楼主能指点一下!

[此贴子已经被作者于2007-11-23 21:09:42编辑过]
回复 支持 反对

使用道具 举报

发表于 2007-11-23 18:13:00 | 显示全部楼层
先谢啦!!!!能否将完整的万年历程序上传一个???????
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-11-29 21:48:00 | 显示全部楼层

电子钟代码解析-2

电子钟代码解析-2

近日身体欠佳,没有及时上网,非常抱歉!也多谢众多朋友的关心!我会想尽力把《详解电子钟。。》写好,写完整。

由于论坛的设置,我无法在原来的帖子上继续写,只能以回复的形式发表,请查找阅读,在完成后,我想整理成WORD格式的完整文档供大家下载。

无论设置或写入DS1302,最终都要通过LED数码管显示出来的,我们来看看数码管显示的基本代码:

在看代码前,先说一下基本扫描显示原理:

LED扫描显示方式常用的2种:


1、动态扫描


优点:节约端口、降低功耗

缺点:亮度低、显示时需不断调用扫描程序,多任务处理不方便

2、静态扫描


优点:亮度高,显示时一般调用一次扫描程序

缺点:占用端口多

注意:以上优缺点不是绝对的,主要看电路如何连接,即选用哪些外围部件。

我们在该例电子钟的电路设计用动态扫描方式,主要考虑可以减少LED数码管的连接线,降低复杂程度。

LED数码管动态扫描原理(视觉原理、扫描原理、数码管段位及倒装):

视觉原理:人的眼睛有视觉惰性。简单讲看一个断续放光的物体,当它闪烁到一定速度,人眼就分辨不出它在闪烁还是持续发光,直接判定为持续发光。也就是电影和动画的原理,1秒钟播放60帧画面,我们就认为是电影,1秒钟播放25帧,我们认为是动画。

在本例中,有6位数码管,按动态扫描的方式连接:

电路图:

电子钟代码解析-2

电子钟代码解析-2

代码编写格式: 送字形码(相应的数码管段位)---数码管通电(点亮)----延时------数码管断电(熄灭)---循环

动态扫描流程图

电子钟代码解析-2

电子钟代码解析-2

源代码:

;**********************************************
;时钟正常显示扫描方式
;**********************************************
CLOCK_SCAN:
MOV R0,#40H

MOV DPTR,#TAB1
MOV A,@R0
MOVC A,@A+DPTR
MOV D_OUT,A
CLR D6
CALL DELAYS
SETB D6

MOV DPTR,#TAB2
INC R0
MOV A,@R0
MOVC A,@A+DPTR
ANL A,#10111111B ;小数点
MOV D_OUT,A
CLR D5
CALL DELAYS
SETB D5




MOV DPTR,#TAB1
INC R0
MOV A,@R0
MOVC A,@A+DPTR
ANL A,#01111111B ;小数点
MOV D_OUT,A
CLR D4
CALL DELAYS
SETB D4

MOV DPTR,#TAB2
INC R0
MOV A,@R0
MOVC A,@A+DPTR
ANL A,#10111111B ;小数点
MOV D_OUT,A
CLR D3
CALL DELAYS
SETB D3


MOV DPTR,#TAB1
INC R0
MOV A,@R0
MOVC A,@A+DPTR
ANL A,#01111111B ;小数点
MOV D_OUT,A
CLR D2
CALL DELAYS
SETB D2

MOV DPTR,#TAB1
INC R0
MOV A,@R0
MOVC A,@A+DPTR
MOV D_OUT,A
CLR D1
CALL DELAYS
SETB D1


RET


;正装LED段码表-共阳
TAB1: DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H;0123456789

DB 07FH,088H,0C6H,086H,08EH,0FFH,0BFH;DOT,A,C,E,F,-

;倒装LED段码表-共阳
TAB2: DB 0C0H,0F9H,064H,070H,059H,052H,042H,0F8H,040H,050H;0123456789

DB 0BFH,088H,0C6H,086H,08EH,0FFH,07FH;DOT,A,C,E,F,-


在上面扫描代码中,

我们规定显示的数据(即数字)存在地址45H-40H中,

电子钟代码解析-2

电子钟代码解析-2

我们是从秒钟个位(D6)开始向小时十位(D1)方向扫描的,

TAB1和TAB2分别表示数码管显示0、1、2、3、4、5、6、7、8、9、DOT(小数点),A,C,E,F,-的段位字形码,

由于秒钟十位(D5)和分钟十位(D3)为倒装,因此只需简单将字形表指向TAB2。

举例:6个数码管 从左向右显示1、2、3、4、5、6

MOV 40H,#06 ;个位寄存器初值
MOV 41H,#05 ;十位寄存器初值
MOV 42H,#04 ;百位寄存器初值
MOV 43H,#03 ;千位寄存器初值
MOV 44H,#02 ;万位寄存器初值
MOV 45H,#01 ;十万位寄存器初值

CALL CLOCK_SCAN

上边的代码执行后,只会一闪而过,动态扫描必须不断的扫描,因此,代码应为:

MOV 40H,#06 ;个位寄存器初值
MOV 41H,#05 ;十位寄存器初值
MOV 42H,#04 ;百位寄存器初值
MOV 43H,#03 ;千位寄存器初值
MOV 44H,#02 ;万位寄存器初值
MOV 45H,#01 ;十万位寄存器初值

DISP: CALL CLOCK_SCAN

JMP DISP

在实际编程中,一般将动态扫描程序放在定时中断中调用,可以很方便的修改定时扫描的周期,以达到眼睛不感觉闪烁的目的,如下程序,就是一个简单读取DS1302并显示时间的代码(用定时中断)(请不要忘了补上扫描子程序及读写DS1302子程序)

;**************************************************************
;**************************************************************

ORG 00H
JMP START



ORG 0BH
JMP TIM0



ORG 30H
START: MOV SP,#70H

MOV SCON,#50H



MOV P2,#0FFH
MOV P1,#0FFH
mov P0,#0FFh
;**********************************************
;设TR1为定时器、TR0为定时器
;**********************************************
MOV TMOD,#00100001B ;设定定时器TIM0为模式1
;**********************************************
;设TR0的定时器初值
;**********************************************
MOV TH0,#HIGH(65536-3000); 设中断定时时间为4000微秒
MOV TL0,#LOW(65536-3000)
;**********************************************
;开定时器TR0、允许定时器0中断、开总中断
;**********************************************
SETB TR0
SETB ET0
SETB EA

JMP $



;*****************************************************************定时中断
TIM0: PUSH ACC ;累加器A压入堆栈
PUSH PSW ;状态寄存器压入堆栈
CLR TR0



MOV TH0,#HIGH(65536-4000); 设中断定时时间为4000微秒
MOV TL0,#LOW(65536-4000)


CALL GET_TIME ;读时间

CALL GET_DISPBUFF ;数据转换

CALL CLOCK_SCAN ;扫描


SETB TR0
POP PSW
POP ACC

RETI


;*****************************************************************

;扫描子程序

;读写DS1302子程序

;数据转换子程序

END

讲到这里,我想大家也明白了,电子钟代码其实就是几个子程序的互相调用。

概括而言:

1、要显示时间: 执行 读DS1302-------数据转换------------扫描显示

2、要显示温度: 执行 读DS18B20-------数据转换------------扫描显示

3、要设置时间: 执行 写DS1302--------数据转换------------扫描显示

OK,主要的程序已经完成,我们只需要添加一些辅助代码,即可完善电子钟的功能,比如调整时间、计时等。

调整时间代码解析:

。。。

[此贴子已经被作者于2007-11-29 23:35:22编辑过]
回复 支持 反对

使用道具 举报

发表于 2007-11-28 14:47:00 | 显示全部楼层
做個電子鐘哪裡要這麼多東西也。買個帶ISP的芯片,直接搭板子就好了.
回复 支持 反对

使用道具 举报

发表于 2007-11-28 19:10:00 | 显示全部楼层
强烈支持!!!!期待下文啊
回复 支持 反对

使用道具 举报

发表于 2007-11-26 14:10:00 | 显示全部楼层

感谢楼主的分享! 请继续 ! 顶!!!!!!

[em17] [em17]
回复 支持 反对

使用道具 举报

发表于 2007-11-26 18:11:00 | 显示全部楼层
支持!!   期待下文啊!!![em01][em01]
回复 支持 反对

使用道具 举报

发表于 2007-11-26 18:13:00 | 显示全部楼层
强烈支持!!!!期待下文啊~~~~~~~[em01][em01][em01][em01][em01]
回复 支持 反对

使用道具 举报

发表于 2007-12-4 23:46:00 | 显示全部楼层
请问 我手上只有很大的LED数码管,它的要7V左右才能点亮,并且是共阴极的,线路该怎样改。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入磁动力

本版积分规则

QQ|小黑屋|手机版|Archiver|www.cdle.net 磁动力电子网 2001-2017 ( 粤ICP备10098153号

粤公网安备 44040402000001号

GMT+8, 2019-3-23 20:10

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.