电子万年历的设计.docx

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

电子万年历的设计.docx

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

电子万年历的设计.docx

电子万年历的设计

学院

单片机原理及应用课程设计

 

题目电子万年历的设计

系(部)信息工程系

班级

姓名

学号

指导教师

2013年7月1日至7月5日共1周

2013年7月5日

《单片微机原理及应用》课程设计任务书

一、设计题目、内容及要求

设计题目:

电子万年历的设计

设计内容:

要求使用51系列的89C51单片机设计实现电子万年历,可以显示阳历年、月、日、星期、时、分、秒和阴历月、日,在显示农历时间时,能标明是否是闰年。

能够利用键盘调整及切换显示。

可以使用集成时钟芯片。

设计要求:

1.进行系统总体设计。

2.完成系统硬件电路设计。

3.完成系统软件设计及仿真。

4.撰写设计说明书。

二、设计原始资料

Proteus及KEIL仿真软件,实验箱。

三、要求的设计成果(课程设计说明书、设计实物、图纸等)

设计结果能正确运行

设计说明书一份(要求有硬件设计原理图,仿真结果图,源程序代码)

四、进程安排

周一:

查找资料,进行方案论证和系统硬件设计;

周二:

系统软件设计和编程实现;

周三:

利用程序调试;

周四:

仿真实现,检查设计结果;

周五:

撰写设计说明书、答辩。

五、主要参考资料

[1]彭为等.单片机典型系统设计实例精讲[M].北京:

电子工业出版社,2006

[2]李群芳.单片机原理、接口及应用[M].北京:

清华大学出版社,2005

指导教师(签名):

张国旭

教研室主任(签名):

课程设计成绩评定表

出勤

情况

出勤天数

缺勤天数

出勤情况及设计过程表现(20分)

课设答辩(20分)

设计成果(60分)

总成绩(100分)

提问

(答辩)

问题

情况

 

 

指导教师签名:

年月日

 

1引言

随着微电子技术的高速发展,单片机在国民经济的个人领域得到了广泛的运用。

单片机以体积小、功能全、性价比高等诸多优点,在工业控制、家用电器、通信设备、信息处理、尖端武器等各种测控领域的应用中独占鳌头,单片机开发技术已成为电子信息、电气、通信、自动化、机电一体化等专业技术人员必须掌握的技术。

而电子万年历作为电子类小设计不仅是市场上的宠儿,也是是单片机实验中一个很常用的题目。

因为它的有很好的开放性和可发挥性,因此对作者的要求比较高,不仅考察了对单片机的掌握能力更加强调了对单片机扩展的应用。

而且在操作的设计上要力求简洁,功能上尽量齐全,显示界面也要出色。

数字显示的日历钟已经越来越流行,特别是适合在家庭居室、办公室、大厅、会议室、车站和广场等使用,壁挂式LED数码管显示的日历钟逐渐受到人们的欢迎。

LED数字显示的日历钟显示清晰直观、走时准确、可以进行夜视,并且还可以扩展出多种功能。

所以,电子万年历无论作为比赛题目还是练习题目都是很有价值。

本文通过对一个基于单片机的能实现万年历功能电子时钟的设计,从而达到学习、了解单片机相关指令在各方面的应用。

系统由主控制器AT89C51、时钟电路DS1302、显示电路、按键电路等部分构成,能实现时钟日历显示的功能。

 

2设计方案选择

2.1控制部分的方案选择

采用51系列的89C51单片机,89C51单片机有丰富的中断源和时基,方便本实验的设计。

它的准确度相当高,并且C语言和汇编兼容的编程环境也很方便来实现一些递归调用。

I/O口功能也比较强大,方便使用。

用89C51单片机做控制器最有特色的就是它的可编程音频处理,可完成语音的录制播放和识别。

这些都方便对设计进行扩展,使设计更加完善。

成本也相对低一些。

2.2显示模块选择方案和论证

方案一:

采用LED液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字、图形、显示多样,清晰可见,但是价格昂贵,所用口线多,所以在此设计中不采用LED液晶显示屏。

方案二:

采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合,采用在显示数字显得太浪费,且价格也相对较高,所以也不用此种作为显示。

方案三:

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

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

2.3时钟芯片的选择方案和论证

方案一:

直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。

采用此种方案虽然减少芯片的使用,节约成本,但是,实现的时间误差较大。

所以不采用此方案。

方案二:

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

2.4电路设计最终方案决定

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

采用AT89C51作为主控制系统;DS1302提供时钟;LED数码管动态扫描作为显示。

 

3系统的硬件设计与实现

3.1电路设计框图

按照系统设计功能的要求,初步确定设计系统由主控模块、时钟模块、显示模块、键盘接口模块共4个模块组成,电路系统构成框图如图3-1所示。

主控芯片使用51系列AT89C51单片机,时钟芯片使用美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟DSl302。

采用DSl302作为主要计时芯片,可以做到计时准确。

更重要的是,DSl302可以在很小电流的后备电源(2.5—5.5V电源,在2.5V时耗电小于300nA)下继续计时,并可编程选择多种充电电流来对后备电源进行慢速充电,可以保证后备电源基本不耗电。

显示模块采用普通的共阳LED数码管,键输入采用查询法实现调整功能。

键盘模块

图3-1电路设计框图

3.2系统硬件概述

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

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

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

可产生年、月、日、周日、时、分、秒,具有使用寿命长,精度高和低功耗等特点,同时具有掉电自动保存功能;显示部份由19个数码管。

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

3.3主要单元电路的器件

3.3.1单片机主控制模块

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

1.内部结构

按功能分为8部分:

CUP,程序存储器,数据存储器,时钟电路,串行口,并行I/O口,中断系统,定时/计数器。

2.控制引脚

XTAL1和XTAL2:

时钟引脚,外接晶体引线端。

当使用芯片内部时钟时,此两引脚端用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。

RST/

RST是复位信号输入端,

是备用电源输入端。

当RST输入端保持2个机器周期以上高电平时,单片机完成复位初始化操作。

当主电源

发生故障而突然下降到一定低电压或断电时,第2功能

将为片内RAM提供电源以保护片内RAM中的信息不丢失。

ALE/PROG:

地址锁存允许信号输入端。

在存取外存储器时,用于锁存低8位地址信号。

当单片机正常工作后,ALE端就周期性地以时钟振荡频率的1/6固定频率向外输出正脉冲信号。

此引脚的第2功能PROG是对片内带有4K字节EPROM的8751固外程序时,作为编程脉冲输入端。

:

程序存储器允许输出端。

当片外程序存储器的读选通信号,低电平有效。

CPU从外部程序存储器取指令时,

信号会自动产生负脉冲,作为外部程序存储器的选通信号。

/

:

程序存储器地址允许输入端。

为高电平时,CPU执行片内程序存储器指令,但当PC中的值超过0FFFH时,将自动转向执行片

外程序存储器指令;当

/

为低电平时,CPU只执行片外程序存储器指令。

3.I/O口引脚

P0.0~P0.7:

P0口8位双向I/O口;

P1.0~P1.7:

P1口8位准双向I/O口;

P2.0~P2.7:

P2口8位准双向I/O口;

P3.0~P3.7:

P3口8位准双向I/O口。

4.片外总线结构

分为三部分:

数据总线DataBus(DB),地址总线AddressBus(AB),控制总线ControlBus(CB)。

3.3.2时钟电路模块的设计

(1)时钟芯片DS1302引脚及功能特点

图3-2示出DS1302的引脚排列,其中

为后备电源,

为主电源。

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

DS1302由

两者中的较大者供电。

大于

+0.2V时,

给DS1302供电。

小于

时,DS1302由

供电。

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

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

RST输入有两种功能:

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

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

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

上电动行时,在

大于等于2.5V之前,RST必须保持低电平。

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

SCLK始终是输入端。

 

5

图3-2DS1302引脚排列

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

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

表3-1为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时,写保护位防止对任一寄存器的写操作。

表3-1DS1302的控制字格式

RAMRD

1A4A3A2A1A0

/CK/WR

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

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

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

(4)DS1302的寄存器

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

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

寄存器名

命令字节

取值范围

寄存器内容

秒寄存器

80H

81H

00~59

7

6

5

4

3

2

1

0

CH

10s

SEC

分寄存器

82H

83H

00~59

0

10min

MIN

小时寄存器

84H

85H

00~23或01~12

1224

0

10P

HR

HR

日期寄存器

86H

87H

01~28,29,30,31

0

0

10DATE

DATE

月份寄存器

88H

89H

01~12

0

0

0

10M

MONTH

周寄存器

8AH

8BH

01~07

0

0

0

0

0

DAY

年寄存器

8CH

8DH

01~99

10YEAR

YEAR

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

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

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

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

3.3.3显示模块的设计

基本显示原理:

时钟开始显示为0时0分0秒,也就是数码管显示000000,然后每秒秒位加1,到9后,10秒位加1,秒位回0。

10秒位到5后,即59秒,分钟加1,10秒位回0。

依次类推,时钟最大的显示值为23小时59分59秒。

这里只要确定了1秒的定时时间,其他位均以此为基准往上累加。

同时时钟达到最大值的时候天数也增加一位,知道显示了7后再变为1,同时阴历和阳历的天数也加1,根据不同的月份显示的天数阳历有28,29,30,31天,阴历就要经过计算得到,到了12个月后,年数自动增加1,以此类推,显示万年历的现实。

如图3-3所示,采用动态扫描显示,由19个数码管,P2口接1K限流电阻,再接NPN型三极管接到共阳数码管的COM端作为选通位码,每位选择相应的列。

74lS164接240Ω限流电阻,再接共行的LED数码管的断码。

3.3.474LS164驱动模块

74LS164内部为8个D触发器,用以实现数据的串行移位。

74LS164的特性如表3-3所列。

单片机以串行口方式0输出数据,3片74LS74作为3排共阳数码管的串/并转换显示接口。

74LS164为TTL单向8为移位寄存器,可实现串行输入,并行输出。

其中A、B(第1、2脚)为串行数据输入端,两个引脚按逻辑“与”运算规律输入信号,只有一个信号输入时可并接,共同作为输入脚。

CP(第8脚)为时钟输入端,可连接到串行口的TXD端。

每一个时钟信号的上升沿加到CP端时,移位寄存器移一位。

8个时钟脉冲过后,8为二进制数全部移入74LS164中。

3片74LS74首尾相连,而时钟端接在一起。

这样当输入8个脉冲时,从单片机RXD端输出的第一字节数据就进入到了第一片74LS164中,而当第二个8个脉冲到来后,第一字节数据就进入了第二片74LS164中,而随后的第二字节的数据则进入了第一片74LS164。

这样当第三次8个脉冲完成后,首次送出的数据被送到了最上面的74LS164中,其他数据依次出现在第二、第一片74LS164中,实现了数据在74LS164中的串行输入、并行输出。

图3-3显示部分

表3-374LS74特性表

操作模式

输入

输出

复位

MR

A

B

Q0

Q1~Q7

移位

L

X

X

L

Q0~Q6

H

L

L

L

Q0~Q6

H

L

H

L

Q0~Q6

H

H

L

L

Q0~Q6

H

H

H

H

Q0~Q6

4系统的软件设计

4.1主程序流程图

定时闹铃子程序

图4-1主程序流程图

4.2阳历算法

阳历的算法比较简单,每十月的总的天数相对来说是固定的。

只有2月份,在闰年是29天,在非闰年是28天。

每个月的日历排法.主要是确定每个月第一天是星期几。

我们知道1901年1月1日是星期二,星期的变化是7天一个周期,比如说要计算1901年2月1日是星期几,可以这样推算:

从1901年1月1日到1901年2月1日总共经过了31天(从表4-1可看出),31对7取模是3,1901年1月1日是星期二,加三后,是星期五。

因此1901年2月1日是星期五。

同理,可以推算出从1901—2100年任何一天是星期几。

阳历流程图见图4-2。

4.3阴历算法

阴历的算法比较复杂,它包含两个部分。

一部分是阳历日和阴历日的对应关系;另一部分则是阳历日和农历节气的对应关系。

下面只介绍与设计有关的阴历和阳历的关系。

计算阳历天数结束,总天数中的数

据为当前日期在阳历中的第几天

图4-2计算机阳历程序流程图

表4-1

比特数

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

数据

!

!

!

!

!

1

!

!

!

1

!

1

x

x

x

x

我们先要做一个数据表,这个数据表里面每2个字节,表示T一个阴所年彝个月份的天教2个字节(共16bit)的具体意义如表4-1。

其中“!

(0/1)中“0”表示30天,“1”表示29天。

“xxxx(4个比特可表示数值范围0~15)”表示该年中是否有闰月,数值“0”表示无闰月,“1~12”表示某一个闰月。

闰月一般是29天;在200年中(1901~2100年),闰月是30天的,可用一个特殊语句来解决。

这里2OO年需要200x2=400个字节,构成阴历压缩数据表。

有了阴历的数据表后,主要是要确定阳历日和胡历日的对应关系。

我们知道阳历年1901年1月1日,对应的阴历年是对应的阴历日,可用以下算法:

(1)从阳历年1901年1月1日到1901年2月1日,计算出经过了31天;

(2)根据阴历数据表知道阴历年1900年11月有29天,因此31—29=2天。

原来阳历年1901年1月1日对应的阴历日是11日,则有11+1=13;

(3)因为阴历1901年12月份有30天,而13<=30,所以阳历年1901年2月1日对应的阴历年是1900年12月13日。

如果上一步相加得出的散大于当前阴历月的总的天敢,别应该继续减去当前阴历月的总的天数,直到符合条件。

对于月份增加时,还要通过数据表查看是否要经过闰月。

对于其他任何一个阳历日和阴历日的对应关系,都可以通过以上算法求得结果。

流程图见图4-3。

R2=0?

图4-3阴历流程图

4.4时间调整程序流程图

调整时间用3个调整按钮,1个作为移位、控制用,另外2个作为加和减用,分别定义为控制按钮、加按钮、减按扭。

在调整时间过程中,要调整的那位与别的位应该有区别,所以增加了闪烁功能,即调整的那位一直在闪烁直到调整下一位,当达到50ms溢出时,就送给该位熄灭符,在下一次溢出时,再送正常显示的值,不断交替,直到调整到该位结束,此时送正常显示值给该位,再进入下一位调整闪烁程序,时间调整程序流程图如图4-4。

分钟减1

分钟加1

减键有效

加键有效

等待按键程序

控制键有效,进入分钟调整程序

星期减1

星期加1

减键有效

加键有效

等待按键程序

控制键有效,进入星期调整程序

月减1

月加1

减键有效

加键有效

等待按键程序

控制键有效,进入月调整程序

小时减1

小时加1

减键有效

加键有效

等待按键程序

控制键有效,进入小时调整程序

日减1

日加1

减键有效

加键有效

等待按键程序

控制键有效,进入日调整程序

年减1

年加1

减键有效

加键有效

等待按键程序

控制键有效,进入年调整程序

开始

按键有效,跳出时间调整程序,进入主循环程序

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

5体会

在整个设计过程中,充分发挥人的主观能动性,自主学习,学到了许多没学到的知识,完成了对万年历的设计,达到了预期的目的。

在最初的设计中,发挥“三个臭皮匠,顶个诸葛亮”的作用,相互学习、相互讨论、研究,完成了最初的设想。

对电路的设计、布局要先有一个好的构思,才显得电路板美观、大方。

程序编写中,由于思路不清晰,开始时遇到了很多的问题,经过静下心来思考,理清了思路,终于能够完成它。

在此次设计中,知道了做凡事要有一颗平常的心,不要想着走捷径,一步一个脚印。

也练就了我们的耐心,做什么事都在有耐心。

此次设计中学到了很多很多东西,这是最重要的。

做课程设计同时也是对课本知识的巩固和加强,由于课本上的知识太多,平时课间的学习并不能很好的理解和运用各个元件的功能,而且考试内容有限,所以在这次课程设计中,我们了解了很多元件的功能,并且对于其在电路中的使用有了更多的认识。

认识来源于实践,实践是认识的动力和最终目的,实践是检验真理的唯一标准。

所以这个课程设计对我们的作用是非常大的,同时通过这次课程设计使我懂得了理论与实际结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考能力。

此次课程设计学到了许多可能学不到的东西,比如多利思考解决问题的能力,出现差错的随机应变,和与人合作共同提高,我们都受益匪浅,今后的制作应该更加轻松,自己都能扛得起并高质量的完成项目。

这次课设终于顺利完成了,在课设中遇到了很多专业知识问,最后在老师的辛勤指导下,终于迎刃而解。

同时,在老师的身上我们也学到了很多实用的知识,在此我们表示感谢!

同时,对给过我帮助的所有同学和各位指导老师再次表示衷心的感谢!

 

参考文献

[1]毕满清.电子技术实验与课程设计.北京:

机械工业出版社,2001.

[2]阎石主编.数字电子技术基础(第五版).北京:

高等教育出版社,2009.

[2]楼然苗,李光飞.单片机课程设计.北京航空航天大学出版社,2007.

[3]杨子文.单片机原理及应用西安电子科技大学出版社,2006.

[4]王法能.单片机原理及应用科学出版社,2004.

[5]曹琳琳.单片机原理及接口技术[M].北京:

国防科技大学出版社,2000年.

[6]许惠民.单片微型计算机原理、接口及应用[M].北京:

北京邮电大学出版社,2000年.

[7]肖看,李群芳.单片机原理、接口及应用——嵌入式系统技术基础(第2版).北京:

清华大学出版社,2001年.

 

附录一:

整体设计图

 

附录二:

系统程序清单

万年历程序

67H(高两位年)66H(低两位年)65H(月)64H(星期);63H(日)62H(小时)61H(分)60H(秒)57H(农历月)56H(农历日);显示缓冲单元7CH~7BH(4CH~4BH)年低位,7AH~79H(4AH~49H)月;78H(48H)星期,77H~76H(47H~46H)日,75H~74H(45H~44H)时;73H72H(43H~42H)分,71H~70H(41H~40H)秒,5EH~5DH(55H~54H)农历年;5CH~5BH(53H~52H)农历月,5AH~59H(51H~50H)农历日

;闰年标志为F0,定时器T1为调整时候闪烁用。

CONFIG12EQU7FH

TEMPHEQU21H

TEMPLEQU20H

REG2EQU22H

REG3EQU23H

REG4EQU24H

DATEQUP0.7

SCLKEQUP3.2

IOEQUP3.3

RSTEQUP3.4

yearDATA66H

monthDATA65H

weekDATA64H

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

当前位置:首页 > 医药卫生 > 基础医学

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

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