电子万年历设计报告.docx

上传人:b****1 文档编号:1981663 上传时间:2023-05-02 格式:DOCX 页数:55 大小:301.42KB
下载 相关 举报
电子万年历设计报告.docx_第1页
第1页 / 共55页
电子万年历设计报告.docx_第2页
第2页 / 共55页
电子万年历设计报告.docx_第3页
第3页 / 共55页
电子万年历设计报告.docx_第4页
第4页 / 共55页
电子万年历设计报告.docx_第5页
第5页 / 共55页
电子万年历设计报告.docx_第6页
第6页 / 共55页
电子万年历设计报告.docx_第7页
第7页 / 共55页
电子万年历设计报告.docx_第8页
第8页 / 共55页
电子万年历设计报告.docx_第9页
第9页 / 共55页
电子万年历设计报告.docx_第10页
第10页 / 共55页
电子万年历设计报告.docx_第11页
第11页 / 共55页
电子万年历设计报告.docx_第12页
第12页 / 共55页
电子万年历设计报告.docx_第13页
第13页 / 共55页
电子万年历设计报告.docx_第14页
第14页 / 共55页
电子万年历设计报告.docx_第15页
第15页 / 共55页
电子万年历设计报告.docx_第16页
第16页 / 共55页
电子万年历设计报告.docx_第17页
第17页 / 共55页
电子万年历设计报告.docx_第18页
第18页 / 共55页
电子万年历设计报告.docx_第19页
第19页 / 共55页
电子万年历设计报告.docx_第20页
第20页 / 共55页
亲,该文档总共55页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

电子万年历设计报告.docx

《电子万年历设计报告.docx》由会员分享,可在线阅读,更多相关《电子万年历设计报告.docx(55页珍藏版)》请在冰点文库上搜索。

电子万年历设计报告.docx

电子万年历设计报告

____工____学院___2007___级_电气工程及其自动化_专业姓名_辜强____学号__2007210122_____

………………………………(密)………………………………(封)………………………………(线)………………………………

本科课程设计专用封面

设计题目:

电子万年历设计

所修课程名称:

单片机课程设计

修课程时间:

2010年06月28日至07月02日

完成设计日期:

2010年07月02日

评阅成绩:

评阅意见:

 

评阅教师签名:

年月日

 

电子万年历的设计

 

学院

自动化学院

专业班级

测控0802班

学号

0608206206082052

姓名

董艳侠王林博

班内序号

1718

电子万年历

一、设计要求与方案论证

1.1 设计要求:

(1)基本要求

1具有年、月、日、星期、时、分、秒等功能;

2时间与阳历能够自动关联;

3具有温度计功能;

4具备年、月、日、星期、时、分、秒校准功能;

1.2系统基本方案选择

1.2.1单片机芯片的选择方案:

方案:

采用AT89S52,片内ROM全都采用FlashROM;能以3V的超底压工作;同时也与MCS-51系列单片机完全该芯片内部存储器为8KBROM存储空间,同样具有89C51的功能,且具有在线编程可擦除技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片多次拔插,所以不会对芯片造成损坏。

所以选择采用AT89S52作为主控制系统.

1.2.2显示模块选择方案:

方案:

采用LED数码管动态扫描,LED数码管价格适中,对于显示数字最合适,而且采用动态扫描法与单片机连接时,占用的单片机口线少。

所以采用了LED数码管作为显示。

1.2.3时钟芯片的选择方案:

方案:

采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高,位的RAM做为数据暂存区,工作电压2.5V~5.5V范围内,2.5V时耗电小于300nA.

1.2.4温度传感器的选择方案:

方案:

采用数字式温度传感器DS18B20,此类传感器为数字式传感器而且仅需要一条数据线进行数据传输,易于与单片机连接,可以去除A/D模块,降低硬件成本,简化系统电路。

另外,数字式温度传感器还具有测量精度高、测量范围广等优点。

1.3电路设计最终方案决定

综上各方案所述,对此次作品的方案选定:

采用AT89S52作为主控制系统;DS1302提供时钟;数字式温度传感器;LED数码管动态扫描作为显示。

二.系统的硬件设计与实现

2.1电路设计框图

AT89S52

主控制模块

2.2系统硬件概述

本电路是由AT89S52单片机为控制核心,具有在线编程功能,低功耗,能在3V超低压工作;时钟电路由DS1302提供,它是一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。

采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。

DS1302内部有一个31*8的用于临时性存放数据的RAM寄存器。

可产生年、月、日、周日、时、分、秒,具有使用寿命长,精度高和低功耗等特点,同时具有掉电自动保存功能;温度的采集由DS18B20构成;显示部份由21个数码管,74ls138、74ls47译码器构成。

使用动态扫描显示方式对数字的显示。

2.3主要单元电路的设计

2.3.1单片机主控制模块的设计

AT89S52单片机为40引脚双列直插芯片,有四个I/O口P0,P1,P2,P3,MCS-51单片机共有4个8位的I/O口(P0、P1、P2、P3),每一条I/O线都能独立地作输出或输入。

单片机的最小系统如下图所示,18引脚和19引脚接时钟电路,XTAL1接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,XTAL2接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出.第9引脚为复位输入端,接上电容,电阻及开关后够上电复位电路,20引脚为接地端,40引脚为电源端.如图-1所示

图-1主控制系统

2.3.2时钟电路模块的设计

图-2示出DS1302的引脚排列,其中Vcc1为后备电源,Vcc2为主电源。

在主电源关闭的情况下,也能保持时钟的连续运行。

DS1302由Vcc1或Vcc2两者中的较大者供电。

当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。

当Vcc2小于Vcc1时,DS1302由Vcc1供电。

X1和X2是振荡源,外接32.768KHz晶振。

RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。

RST输入有两种功能:

首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。

当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。

如果在传送过程中RSTS置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。

上电动行时,在Vcc大于等于2.5V之前,RST必须保持低电平。

中有在SCLK为低电平时,才能将RST置为高电平,I/O为串行数据输入端(双向)。

SCLK始终是输入端。

图-2DS1302的引脚图

2.3.3温度采集模块设计

采用数字式温度传感器DS18B20,它是数字式温度传感器,具有测量精度高,电路连接简单特点,此类传感器仅需要一条数据线进行数据传输,使用P0.7与DS18B20的I/O口连接加一个上拉电阻,Vcc接电源,Vss接地。

2.3.4电路原理及说明

(1)时钟芯片DS1302的工作原理:

DS1302在每次进行读、写程序前都必须初始化,先把SCLK端置“0”,接着把RST端置“1”,最后才给予SCLK脉冲;读/写时序如下图4所示。

图5为DS1302的控制字,此控制字的位7必须置1,若为0则不能把对DS1302进行读写数据。

对于位6,若对程序进行读/写时RAM=1,对时间进行读/写时,CK=0。

位1至位5指操作单元的地址。

位0是读/写操作位,进行读操作时,该位为1;该位为0则表示进行的是写操作。

控制字节总是从最低位开始输入/输出的。

表6为DS1302的日历、时间寄存器内容:

“CH”是时钟暂停标志位,当该位为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位为0时,时钟开始运行。

“WP”

是写保护位,在任何的对时钟和RAM的写操作之前,WP必须为0。

当“WP”为1时,写保护位防止对任一寄存器的写操作。

(2)DS1302的控制字节

DS1302的控制字如表-1所示。

控制字节的高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出

RAMRD

1A4A3A2A1A0

/CK/WR

表-1DS1302的控制字格式

(3)数据输入输出(I/O)

在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。

同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。

(4)DS1302的寄存器

DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字见表-2。

表-2DS1302的日历、时间寄存器

此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。

时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。

DS1302与RAM相关的寄存器分为两类:

一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H~FDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。

图-5LED动态扫描显示

三、系统的软件设计

3.1程序流程框图

 

图-A主程序流程图

图-B计算阳历程序流程图

图-C时间调整程序流程图

3.2子程序的设计

3.2.1DS18B20温度子程序

CONFIG12EQU7FH

TEMPHEQU21H

TEMPLEQU20H

REG2EQU22H

REG3EQU23H

REG4EQU24H

DATEQUP0.7

TOUTOU:

LCALLCHUSHI

LCALLRDTEMP

MOVA,TEMPL

ANLA,#11110000B

MOVTEMPL,A

MOVA,TEMPH

ANLA,#00000111B

ORLA,TEMPL

SWAPA

MOV25H,A

MOVA,25H

MOVB,#64H

DIVAB

MOVA,B

MOVB,#0AH

DIVAB

SWAPA

ORLA,B

MOV10H,A

RET

CHUSHI:

LCALLRESET

MOVA,#0CCH

LCALLWRITE111

MOVA,#4EH

LCALLWRITE111

MOVA,#CONFIG12

LCALLWRITE111

RET

RDTEMP:

LCALLRESET

MOVA,#0CCH

LCALLWRITE111

MOVA,#44H

LCALLWRITE111

LCALLDL1MS

LCALLRESET

MOVA,#0CCH

LCALLWRITE111

MOVA,#0BEH

LCALLWRITE111

LCALLERAD111

MOVTEMPL,A

LCALLERAD111

MOVTEMPH,A

RET

RESET:

LA:

SETBDAT

MOV52H,#200

LB:

CLRDAT

DJNZ52H,LB

SETBDAT

MOV52H,#30

LC:

DJNZ52H,LC

CLRC

ORLC,DAT

JCLB

MOV58H,#80

LD:

ORLC,DAT

JCLP

DJNZ58H,LD

SJMPLA

LP:

MOV52H,#250

LF:

DJNZ52H,LF

RET

WRITE111:

MOV53H,#8

W51HA:

SETBDAT

MOV54H,#8

RRCA

CLRDAT

W52HA:

DJNZ54H,W52HA

MOVDAT,C

MOV54H,#30

W53HA:

DJNZ54H,W53HA

DJNZ53H,W51HA

SETBDAT

RET

ERAD111:

CLREA

MOV58H,#8

RD1A:

CLRDAT

MOV54H,#6

NOP

SETBDAT

RD2A:

DJNZ54H,RD2A

MOVC,DAT

RRCA

MOV55H,#30

RD3A:

DJNZ55H,RD3A

DJNZ58H,RD1A

SETBDAT

RET

 

3.2.2读、写DS1302子程序

;写1302程序WRITE:

CLRSCLK

NOP

SETBRST

NOP

MOVA,32H

MOVR4,#8

WRITE1:

RRCA;送地址给1302

NOP

NOP

CLRSCLK

NOP

NOP

NOP

MOVIO,C

NOP

NOP

NOP

SETBSCLK

NOP

NOP

DJNZR4,WRITE1

CLRSCLK

NOP

MOVA,31H

MOVR4,#8

WRITE2:

RRCA

NOP;送数据给1302

CLRSCLK

NOP

NOP

MOVIO,C

NOP

NOP

NOP

SETBSCLK

NOP

NOP

DJNZR4,WRITE2

CLRRST

RET

;读1302程序

READ:

CLRSCLK

NOP

NOP

SETBRST

NOP

MOVA,32H

MOVR4,#8

READ1:

RRCA;送地址给1302

NOP

MOVIO,C

NOP

NOP

NOP

SETBSCLK

NOP

NOP

NOP

CLRSCLK

NOP

NOP

DJNZR4,READ1

MOVR4,#8

READ2:

CLRSCLK

NOP;从1302中读出数据

NOP

NOP

MOVC,IO

NOP

NOP

NOP

NOP

NOP

RRCA

NOP

NOP

NOP

NOP

SETBSCLK

NOP

DJNZR4,READ2

MOV31H,A

CLRRST

RET

 

附录一:

系统电路图

附录二:

系统程序清单

CONFIG12EQU7FH

TEMPHEQU21H

TEMPLEQU20H

REG2EQU22H

REG3EQU23H

REG4EQU24H

DATEQUP0.7

SCLKEQUP3.2

IOEQUP3.3

RSTEQUP3.4

yearDATA66H

monthDATA65H

weekDATA64H

dayDATA63H

hourDATA62H

mintueDATA61H

secondDATA60H

ORG0000H

LJMPSTART

ORG001BH

LJMPINTT1

START:

;初值

LCALLZJ

SETBEA

MOVSCON,#00H;串行输出,方式0

MOVTMOD,#10H;计数器1,方式1

MOVTL1,#00H

MOVTH1,#00H

MOV32H,#8EH

MOV31H,#00H;允许写1302

LCALLWRITE

MOV32H,#90H

MOV31H,#0A6H;1302充电,充电电流1.1MA

LCALLWRITE

;主程序~~~~~~~~~~~~~~~~~~~~~

MAIN1:

MOV32H,#8DH;读出年

LCALLREAD

MOVyear,31H

MOV32H,#8BH;读出星期

LCALLREAD

MOVweek,31H

MOV32H,#89H;读出月

LCALLREAD

MOVmonth,31H

MOV32H,#87H;读出日

LCALLREAD

MOVday,31H

MOV32H,#85H;读出小时

LCALLREAD

MOVhour,31H

MOV32H,#83H;读出分钟

LCALLREAD

MOVmintue,31H

MOV32H,#81H;读出秒

LCALLREAD

MOVsecond,31H

;~~~~~~~~~~~~分离缓存~~~~~~~~

MOVR0,year;年分离,送显示缓存

LCALLDIVIDE

MOV7BH,R1

MOV4BH,R1

MOV7CH,R2

MOV4CH,R2

MOV78H,week

MOV48H,week

MOVR0,month;月分离,送显示缓存

LCALLDIVIDE

MOV79H,R1

MOV49H,R1

MOV7AH,R2

MOV4AH,R2

MOVR0,day;日分离,送显示缓存

LCALLDIVIDE

MOV76H,R1

MOV46H,R1

MOV77H,R2

MOV47H,R2

MOVR0,hour;小时分离,送显示缓存

LCALLDIVIDE

MOV74H,R1

MOV44H,R1

MOV75H,R2

MOV45H,R2

MOVR0,mintue;分钟分离,送显示缓存

LCALLDIVIDE

MOV72H,R1

MOV42H,R1

MOV73H,R2

MOV43H,R2

MOVR0,second;秒分离,送显示缓存

LCALLDIVIDE

MOV70H,R1

MOV40H,R1

MOV71H,R2

MOV41H,R2

CLREA

LCALLTOUTOU

SETBEA

LCALLDISPLAY

LCALLGENGXIAN;更新日历程序

JNBP0.1,SETG111

JNBF0,SSS

;~~~~~~~~~~~~~~温度

TOUTOU:

LCALLCHUSHI

LCALLRDTEMP

MOVA,TEMPL

ANLA,#11110000B

MOVTEMPL,A

MOVA,TEMPH

ANLA,#00000111B

ORLA,TEMPL

SWAPA

MOV25H,A

MOVA,25H

MOVB,#64H

DIVAB

MOVA,B

MOVB,#0AH

DIVAB

SWAPA

ORLA,B

MOV10H,A

RET

CHUSHI:

LCALLRESET

MOVA,#0CCH

LCALLWRITE111

MOVA,#4EH

LCALLWRITE111

MOVA,#CONFIG12

LCALLWRITE111

RET

RDTEMP:

LCALLRESET

MOVA,#0CCH

LCALLWRITE111

MOVA,#44H

LCALLWRITE111

LCALLDL1MS

LCALLRESET

MOVA,#0CCH

LCALLWRITE111

MOVA,#0BEH

LCALLWRITE111

LCALLERAD111

MOVTEMPL,A

LCALLERAD111

MOVTEMPH,A

RET

RESET:

LA:

SETBDAT

MOV52H,#200

LB:

CLRDAT

DJNZ52H,LB

SETBDAT

MOV52H,#30

LC:

DJNZ52H,LC

CLRC

ORLC,DAT

JCLB

MOV58H,#80

LD:

ORLC,DAT

JCLP

DJNZ58H,LD

SJMPLA

LP:

MOV52H,#250

LF:

DJNZ52H,LF

RET

WRITE111:

MOV53H,#8

W51HA:

SETBDAT

MOV54H,#8

RRCA

CLRDAT

W52HA:

DJNZ54H,W52HA

MOVDAT,C

MOV54H,#30

W53HA:

DJNZ54H,W53HA

DJNZ53H,W51HA

SETBDAT

RET

ERAD111:

CLREA

MOV58H,#8

RD1A:

CLRDAT

MOV54H,#6

NOP

SETBDAT

RD2A:

DJNZ54H,RD2A

MOVC,DAT

RRCA

MOV55H,#30

RD3A:

DJNZ55H,RD3A

DJNZ58H,RD1A

SETBDAT

RET

;公历设置程序~~~~~~~~~~~~~~~~~~~~~

SETG:

SETBTR1

SETBET1

MOV32H,#8EH

MOV31H,#00H;允许写1302

LCALLWRITE

MOV32H,#80H

MOV31H,#80H;1302停止振荡

LCALLWRITE

GWAIT:

;~~~~~~~~~~~~~~~~~~

LCALLDISPLAY

JNBP0.1,GWAIT

SETG1:

LCALLDISPLAY

JNBP0.1,SETG2

JNBP0.2,GADDYEAR

JNBP0.3,JIANYEAR

AJMPSETG1

GADDYEAR:

MOVR7,66H;年加一

LCALLADD1

MOV66H,A

CJNEA,#51H,GADDYEAR1

MOV66H,#00H

AJMPGADDYEAR1

JIANYEAR:

MOVR7,66H;年减一

LCALLJIAN1

MOV66H,A

CJNEA,#00H,GADDYEAR1

MOV66H,#51H

GADDYEAR1:

MOV32H,#8CH;年值送人1302

MOV31H,66H

LCALLWRITE

MOVR0,66H

LCALLDIVIDE;年分离送显示缓存

MOV4BH,R1

MOV7BH,R1

MOV4CH,R2

MOV7CH,R2

WAITT1:

;~~~~~~~~~~~~~~~~

LCALLDISPLAY

JNBP0.2,WAITT1

JNBP0.3,WAITT1

AJMPSETG1

SETG2:

SETB0AH;调月时闪标志

GWAIT2:

LCALLDISPLAY

JNBP0.1,GWAIT2;P0.1为1继续显示

SETG3:

LCALLDISPLAY

JNBP0.1,SETG4;P0.1为1调日闪标志

JNBP0.2,GADDMONTH;按P0.2月数加1

JNBP0.3,JIANMONTH;按P0.2月数减1

AJMPSETG3;继续调日数

GADDMONTH:

;加键有效

MOVR7,65H;月加一

LCALLADD1

MOV65H,A

CJNEA,#13H,GADDMONTH1

MOV65H,#01H

AJMPGADDMONTH1

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

当前位置:首页 > 总结汇报 > 学习总结

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

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