毕业设计方案采用实时时钟芯片DS ATC的红外遥控LED电子钟.docx

上传人:b****6 文档编号:15974953 上传时间:2023-07-09 格式:DOCX 页数:30 大小:85.27KB
下载 相关 举报
毕业设计方案采用实时时钟芯片DS ATC的红外遥控LED电子钟.docx_第1页
第1页 / 共30页
毕业设计方案采用实时时钟芯片DS ATC的红外遥控LED电子钟.docx_第2页
第2页 / 共30页
毕业设计方案采用实时时钟芯片DS ATC的红外遥控LED电子钟.docx_第3页
第3页 / 共30页
毕业设计方案采用实时时钟芯片DS ATC的红外遥控LED电子钟.docx_第4页
第4页 / 共30页
毕业设计方案采用实时时钟芯片DS ATC的红外遥控LED电子钟.docx_第5页
第5页 / 共30页
毕业设计方案采用实时时钟芯片DS ATC的红外遥控LED电子钟.docx_第6页
第6页 / 共30页
毕业设计方案采用实时时钟芯片DS ATC的红外遥控LED电子钟.docx_第7页
第7页 / 共30页
毕业设计方案采用实时时钟芯片DS ATC的红外遥控LED电子钟.docx_第8页
第8页 / 共30页
毕业设计方案采用实时时钟芯片DS ATC的红外遥控LED电子钟.docx_第9页
第9页 / 共30页
毕业设计方案采用实时时钟芯片DS ATC的红外遥控LED电子钟.docx_第10页
第10页 / 共30页
毕业设计方案采用实时时钟芯片DS ATC的红外遥控LED电子钟.docx_第11页
第11页 / 共30页
毕业设计方案采用实时时钟芯片DS ATC的红外遥控LED电子钟.docx_第12页
第12页 / 共30页
毕业设计方案采用实时时钟芯片DS ATC的红外遥控LED电子钟.docx_第13页
第13页 / 共30页
毕业设计方案采用实时时钟芯片DS ATC的红外遥控LED电子钟.docx_第14页
第14页 / 共30页
毕业设计方案采用实时时钟芯片DS ATC的红外遥控LED电子钟.docx_第15页
第15页 / 共30页
毕业设计方案采用实时时钟芯片DS ATC的红外遥控LED电子钟.docx_第16页
第16页 / 共30页
毕业设计方案采用实时时钟芯片DS ATC的红外遥控LED电子钟.docx_第17页
第17页 / 共30页
毕业设计方案采用实时时钟芯片DS ATC的红外遥控LED电子钟.docx_第18页
第18页 / 共30页
毕业设计方案采用实时时钟芯片DS ATC的红外遥控LED电子钟.docx_第19页
第19页 / 共30页
毕业设计方案采用实时时钟芯片DS ATC的红外遥控LED电子钟.docx_第20页
第20页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

毕业设计方案采用实时时钟芯片DS ATC的红外遥控LED电子钟.docx

《毕业设计方案采用实时时钟芯片DS ATC的红外遥控LED电子钟.docx》由会员分享,可在线阅读,更多相关《毕业设计方案采用实时时钟芯片DS ATC的红外遥控LED电子钟.docx(30页珍藏版)》请在冰点文库上搜索。

毕业设计方案采用实时时钟芯片DS ATC的红外遥控LED电子钟.docx

毕业设计方案采用实时时钟芯片DSATC的红外遥控LED电子钟

第1节引言…………………………………………………………………1

第2节电子钟硬件设计………………………………………………………2

2.1电子钟的工作原理……………………………………………………2

2.2电子钟的硬件电路……………………………………………………3

第3节系统软件设计…………………………………………………………5

 

一.引言

自制LED电子钟在很多电子报刊杂志上都可以见到,但大多数在断电后都要重新设置时间等参数,给使用带来很多不便。

也有用后备电池作为备用电源的,但往往体积较大。

本文介绍的LED电子钟克服了以往的弊端,而且采用了家电通用的红外遥控器进行控制,方便使用。

有一路闹铃输出,可以通过遥控器设置闹铃时间及允许与否。

 

二.电子钟硬件设计

电子钟的正面

电子钟的背面

一.工作原理

DS1302为达拉斯公司的一种实时时钟芯片,主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。

采用普通32768Hz晶振。

AT89C2051作为主控芯片,一是对接收到的红外遥控编码进行判断识别,并执行相应的处理;第二就是定期的读取时钟芯片DS1302中的时间并把小时和肥以示在4位LED中;第三就是对设置的闹铃时间与实时时间进行比较,如果时间相同且闹铃允许,那么蜂鸣器就会以1秒的周期鸣响一分钟,提醒使用者。

如果要停止鸣闹,只要按遥控器相应键就可以关闭闹铃。

闹铃时间保存在DS1302自带的RAM中,不需要单独的EEPROM。

二.硬件电路

图一为电子钟的原理图,IC2为DS1302,电子爱好者可以向MAXIM公司索取免费样品。

Y2为32768Hz石英晶振,可以用普通电子表里的。

IC3为三脚的塑封一体化红外接收头。

LED1-4为高亮度共阳数码管。

89C2051所用的晶振Y1如果没有10MHz也可以用其他12M以内的代替,只要修改程序中YS1和YS2的延时参数,让其保持延时长度不变就行。

调整R2可以改变数码管亮度。

P1口接数码管的八字段。

数码管左两位显示小时,右两位显示分,当显示的是闹铃时间时闪动。

第二位和第三位的小数点作为秒闪动,注意第三位数码管按图一布好印制版后安装时要旋转180°,以便让时和分之间出现“:

”,最后一位小数点作为闹铃开关标志,亮表示闹铃开启。

蜂鸣器B2采用小型自带音源的。

要特别说明的是备用电源B1,可以用电池或者超级电容<10万uF以上)。

虽然DS1302在主电源掉电后,耗电很小,但如果要长时间保证时钟正常,最好选用小型充电电池。

可以用老式电脑主板上的那种3.6V充电电池。

如果断电时间较短<几小时或几天)时,就可以用漏电较小的普通电解电容代替。

100uF就可以保证1小时的正常走时。

DS1302在第一次加电后,须进行初始化操作。

初始化后就可以按正常方法调整时间及闹铃。

三.软件

软件部分的重点是对DS1302的操作以及红外遥控的解码。

单片机解码可参看其他文章,这里主要对设置部分作一些说明:

遥控器采用长虹彩电K11F型遥控器,遥控器按照16位地址码,8位数据码以及8位数据码的反码发送。

表一列出了各按键的编码及本电子钟对应的动作。

如果采用其他遥控器,需对程序相应部分的编码作修改。

操作方法中,任意是指该键第一次按后,进入该状态,再次按后退出该状态。

时间设置:

按“菜单”键进入设置状态,LED只显示正常时间的小时,按“↑↓”键调整数值,按“←“、”→”键可在闹铃与正常时间之间移动。

任意时刻再次按“菜单”键就退出设置。

闹铃设置:

闹铃时间在时间设置中进行。

闹铃允许和取消可在任意时刻按“静音”键。

显示开关:

可在任意时刻按“显示”键开启和关闭显示器。

初始化:

在按“菜单”键进入设置状态后任意时刻按“日历”键,初始化后的时间为

2002/12/1/12:

00:

00

DS1302+AT89C2051的LED钟

遥控器各按键数据码,可根据不同的遥控器修改对应的键码

muteMEQU10h。

静音键闹铃开/关

timerTEQU0Ch。

菜单键进入/退出设置状态

leftLEQU46h。

左移键

rightREQU47h。

右移键

upUEQU19h。

增加键

downDEQU1dh。

减少键

d_offEQU16H。

显示键LED数码管显示/关闭

recallEQU44H。

日历键DS1302初始化操作

K_onBITP3.0。

闹铃输出

LED1BITP3.3

LED2BITP3.4

LED3CLKBITP3.5。

DS1302

LED4IOBITP3.7

RSTBITP3.1

SECONDEQU60H

60H秒

61h分

62h时

63h日

64h月

65hDAY

66h年

6Ah闹分from00(1302>

6BH闹时from01(1302>

ORG0000H

AJMPSTART

ORG0003H

LJMPS_INT。

IRF

ORG000BH。

200Us

LJMPP_INT。

ORG001BH。

displayLED

LJMPDISPLAY

mainprogram

ORG0030H

START:

CLRRST

MOVSP,#2AH

SETB05H

CLR06H

SETB07H。

CLR07H

CLR08H

CLR09H

CLR0AH

CLR0BH

CLR0CH

SETB0DH

CLR0EH

CLR0FH

CLR10H

CLR11H

MOVR2,#00H。

MOVR3,#00H。

MOVTMOD,#12H

MOVTL1,#0e5H。

wait

MOVTH1,#0BeH

MOVTH0,#3FH。

200uS3f

MOVTL0,#3FH

SETBET0

SETBET1

setbpt0

SETBTR0

SETBTR1

SETBIT0。

SETBEX0。

CLRPX0

LCALLSET1302。

初始化

MOVR1,#0C1H。

取定时参数从1302中

acallT_6061

MOV6AH,A。

M

MOVR1,#0C3H

ACALLT_6061

MOV6BH,A。

H

MOV61H,#0

MOV62H,#0

SETBEA

sjmp$

DISPLAY:

PUSHACC

PUSHPSW

MOVTL1,#0e0H。

waithowlongtodisplay(20ms>

MOVTH1,#0b0H

movdptr,#tab1

JB0EH,DIS2

JB0FH,DIS3

JB10H,DIS4

JB11H,DIS5

JNB0DH,D_OUT

JNB08H,D_GO。

定时到时,显示闪烁

JNB07H,D_OUT

D_GO:

MOVDPTR,#TAB1

MOVA,62H

ANLA,#0FH

MOVB,A

MOVA,62H

SWAPA

ANLA,#07H

MOVCA,@A+DPTR

MOVP1,A

CLRLED1

LCALLDL2M

SETBLED1

MOVA,B

MOVCA,@A+DPTR

MOVC,07H

MOVacc.7,C。

秒灯闪烁

MOVP1,A

CLRLED2

LCALLDL2M

SETBLED2

movdptr,#tab2。

倒装LED字段表

MOVA,61H

ANLA,#0FH

MOVB,A

MOVA,61H

SWAPA

ANLA,#0FH

MOVCA,@A+DPTR

MOVC,07H

MOVacc.6,C。

秒灯闪烁

MOVP1,A

CLRLED3CLK

LCALLDL2M

SETBLED3CLK

movdptr,#tab1

MOVA,B

MOVCA,@A+DPTR

MOVC,06H

cplc

MOVacc.7,C。

闹铃指示灯

MOVP1,A

CLRLED4IO

LCALLDL2M

SETBLED4IO

D_OUT:

SETBTR1

POPPSW

POPACC

RETI

DIS2:

AJMPDIS_2

DIS3:

AJMPDIS_3

DIS4:

AJMPDIS_4

DIS5:

AJMPDIS_5

DIS_2:

movdptr,#tab1。

显示设置小时

MOV6FH,62H

ACALLBCD_HEX

MOVB,#10

DIVAB

MOVCA,@A+DPTR

MOVP1,A

CLRLED1

LCALLDL2M

SETBLED1

MOVA,B

MOVCA,@A+DPTR

MOVP1,A

CLRLED2

LCALLDL2M

SETBLED2

SETBTR1

POPPSW

POPACC

RETI

DIS_3:

MOVDPTR,#TAB2。

显示设置分

MOV6FH,61H

ACALLBCD_HEX

MOVB,#10

DIVAB

MOVCA,@A+DPTR

MOVP1,A

CLRLED3CLK

LCALLDL2M

SETBLED3CLK

MOVA,B

MOVDPTR,#TAB1

MOVCA,@A+DPTR

MOVP1,A

CLRLED4IO

LCALLDL2M

SETBLED4IO

SETBTR1

POPPSW

POPACC

RETI

DIS_4:

movdptr,#tab1。

显示设置闹时

JNB07H,D4_OUT。

显示时闪烁

MOVA,6BH

MOVB,#0AH

DIVAB

MOVCA,@A+DPTR

MOVP1,A

CLRLED1

LCALLDL2M

SETBLED1

MOVA,B

MOVCA,@A+DPTR

MOVP1,A

CLRLED2

LCALLDL2M

SETBLED2

D4_OUT:

SETBTR1

POPPSW

POPACC

RETI

DIS_5:

MOVDPTR,#TAB2

JNB07H,D5_OUT。

显示时闪烁

MOVA,6AH。

显示设置闹分

MOVB,#0AH

DIVAB

MOVCA,@A+DPTR

MOVP1,A

CLRLED3CLK

LCALLDL2M

SETBLED3CLK

MOVDPTR,#TAB1

MOVA,B

MOVCA,@A+DPTR

MOVP1,A

CLRLED4IO

LCALLDL2M

SETBLED4IO

D5_OUT:

SETBTR1

POPPSW

POPACC

RETI

DL2M:

MOV43H,#14H。

everyLED(2ms>

DL2:

MOV44H,#14H

DL1:

NOP

NOP

DJNZ44H,DL1

DJNZ43H,DL2

RET

************************定时读取1302时间及判断闹铃时间是否到*******

P_INT:

PUSHACC

PUSHPSW

INCR2

CJNER2,#250D,P_OUT

MOVR2,#00H

INCR3

CJNER3,#10D,P_OUT

MOVR3,#00H

CPL07H

MOVP1,#0FFH

ACALLR_1302

OUT:

JNB06H,P_OUT

MOVA,6BH

MOVB,#10

DIVAB

SWAPA

ADDA,B

CJNEA,62H,PP_OUT

MOVA,6AH

MOVB,#10

DIVAB

SWAPA

ADDA,B

CJNEA,61H,PP_OUT

SETB08H。

定时到标志

MOVC,07H

cplc

MOVK_ON,C

P_OUT:

POPPSW

POPACC

RETI

PP_OUT:

SETBK_ON

CLR08H

POPPSW

POPACC

RETI

************************有接收到遥控器信号*******

S_INT:

CLREA

PUSHACC

PUSHPSW

PUSHDPH

PUSHDPL

PUSH02H

PUSH03H

MOVR6,#10D。

SB:

ACALLYS1

JBP3.2,EXIT

DJNZR6,SB

JNBP3.2,$。

ACALLYS2。

JBP3.2,EXIT

MOVR1,#1AH。

MOVR2,#4D

PP:

MOVR3,#8D

JJJJ:

JNBP3.2,$

ACALLYS1

MOVC,P3.2

JNCUUU

JBP3.2,$

UUU:

MOVA,@R1

RRCA

MOV@R1,A

DJNZR3,JJJJ

INCR1

DJNZR2,PP

-------------------------------------

MOVA,1AH。

XRLA,#40h。

判断1AH的值是否等于遥控器低8位地址<40h)

JNZEXIT。

MOVA,1bH

XRLA,#0bfh。

再判断高8位地址是否正确<0bfh)

JNZEXIT

MOVA,1CH

CPLA

XRLA,1DH。

将1CH的值取反后和1DH比较不同则无效丢弃<核对数据是否准确)

JNZEXIT

ACALLDO。

相应按键的处理

EXIT:

SETBEA

POP03H

POP02H

POPDPL

POPDPH

POPPSW

POPACC

RETI

--------------------delay-----------------------

YS1:

MOV70H,#16D。

延时1

D1:

MOV71H,#21D

DJNZ71H,$

DJNZ70H,D1

RET

YS2:

MOV70H,#09D。

延时2

D2:

MOV71H,#220D

DJNZ71H,$

DJNZ70H,D2

RET

---------------------------------------------------------

TAB:

DB00H,01H,02H,03H,04H,05H,06H,07H,08H,09H。

TAB1LED数码管显示表TAB遥控器键值表<未用)

TAB1:

DB3FH,11H,5EH,5BH,71H,6BH,6FH,19H,7FH,7bH,77H,7CH,39H,5EH,79H,71H

tab1:

DB0C0H,0F9H,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0a7h,0a1h,86h,8EH

TAB2:

DB0c0H,0f9H,64H,70H,59H,52H,42H。

倒装LED段码表

0CH为设置标志,0DH为全显示标志,0EH为显示设置小时标志,0FH为显示设置分标志

10H为显示设置闹时标志,11H为显示设置闹分标志

增加闹时静音功能

mute-10h,timer-0eh,left-46h,right-47h,up-19h,down-1dh

DO:

MOVA,1CH

CJNEA,#TIMERT,REDO。

代码不是设置/退出键

JNB0CH,SET1。

是,则进入

CLR0CH。

是,已经进入,则退出

SETB0DH。

恢复正常显示

CLR0EH

CLR0FH

CLR10H

CLR11H

RET

SET1:

SETB0CH

SETB0EH

CLR0DH

CLR0FH

CLR10H

CLR11H

RET

REDO:

CJNEA,#MUTEM,REDO1。

不是设置键的处理REDO1,2,3,4...

LJMPMUTE。

MUTE?

REDO1:

CJNEA,#D_OFF,DO_SET2

LJMPDIS_OFF。

关闭显示

DO_SET2:

JB0CH,SET2。

时间设置的处理

RET

SET2:

CJNEA,#UPU,SET2A

LJMPINC1。

+加(^>

SET2A:

CJNEA,#DOWND,SET2B

LJMPDEC2。

-减

SET2B:

CJNEA,#RIGHTR,SET2C

LJMPRIGHT。

RIGHT右移(>>

SET2C:

CJNEA,#LEFTL,SET2D

LJMPLEFT。

LEFT左移(<>

SET2D:

CJNEA,#RECALL,SET2EXT。

DS1302初始化

LJMPSET1302

SET2EXT:

RET

--------------------------------INC------------------------

INC1:

JB0EH,INCH

JB0FH,INCM

JB10H,INC_H

JB11H,INC_M

RET

INC_H:

INC6BH。

闹钟小时增加

MOVA,6BH

CJNEA,#24D,INCH3

MOV6BH,#0

INCH3:

MOVR1,#0C2H

MOVR0,6BH

ACALLSETONE。

写入DS1302

RET

INC_M:

INC6AH。

闹钟分增加

MOVA,6AH

CJNEA,#60D,INCH4

MOV6AH,#0

INCH4:

MOVR1,#0C0H

MOVR0,6AH

ACALLSETONE。

RET

INCH:

INC62H。

MOV6FH,62H

ACALLBCD_HEX

INCA

CJNEA,#24D,INCH1

MOVA,#0

INCH1:

MOV6FH,A

ACALLHEX_BCD

MOV62H,A

MOVR1,#84H

MOVR0,62H

ACALLSETONE。

RET

INCM:

INC61H。

MOV6FH,61H

ACALLBCD_HEX

INCA

CJNEA,#60D,INCH2

MOVA,#0

INCH2:

MOV6FH,A

ACALLHEX_BCD

MOV61H,A

MOVR1,#82H

MOVR0,61H

ACALLSETONE。

RET

----------------------------------DEC----------------------

DEC2:

JB0EH,DECH

JB0FH,DECM

JB10H,DEC_H

JB11H,DEC_M

RET

DECH:

MOV6FH,62H

ACALLBCD_HEX

DECA

CJNEA,#0FFH,DECH1

MOVA,#23

DECH1:

MOV6FH,A

ACALLHEX_BCD

MOV62H,A

MOVR1,#84H

MOVR0,62H

ACALLSETONE

RET

DECM:

MOV6FH,61H

ACALLBCD_HEX

DECA

CJNEA,#0FFH,DECM1

MOVA,#59

DECM1:

MOV6FH,A

ACALLHEX_BCD

MOV61H,A

MOVR1,#82H

MOVR0,61H

ACALLSETONE

RET

DEC_H:

DEC6BH

MOVA,6BH

CJNEA,#0FFH,DECH3

MOV6BH,#23D

DECH3:

MOVR1,#0C2H

MOVR0,6BH

ACALLSETONE

RET

DEC_M:

DEC6AH

MOVA,6AH

CJNEA,#0FFH,DECH4

MOV6AH,#59D

DECH4:

MOVR1,#0C0H

MOVR0,6AH

ACALLSETONE

RET

--------------------------------RIGHT----------------------

RIGHT:

JB0EH,RIGHT1

JB0FH,RIGHT2

JB10H,RIGHT3

JB11H,RIGHT4

RET。

右移

RIGHT1:

CLR0EH

SETB0FH

RET

RIGHT2:

CLR0FH

SETB10H

RET

RIGHT3:

CLR10H

SETB11H

RET

RIGHT4:

CLR11H

SETB0EH

RET

--------------------------------LEFT-----------------------

LEFT:

JB0EH,LEFT1

JB0FH,LEFT2

JB10H,LEFT3

JB11H,LEFT4

RET。

左移

LEFT1:

SETB11H

CLR0EH

RET

LEFT2:

SETB0EH

CLR0FH

RET

LEFT3:

SETB0FH

CLR10H

RET

LEFT4:

SETB10H

CLR11H

RET

------------------------------MUTE--------------

MUTE:

setbk_ON

CPL06H。

静音

CLR08H

RET

-----------------------------DISPLAYOFF--------

DIS_OFF:

CLRET1

CPL05H

JNB05H,REDORE

SETBET1

REDORE:

RET

------------------------------------初始化1302-------------------------

SET1302:

CLRRST。

2002年1月1日12:

00:

00

CLRLED3CLK

MOVSECOND,#0

MOV61H,#

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2