电子万年历的设计.docx
《电子万年历的设计.docx》由会员分享,可在线阅读,更多相关《电子万年历的设计.docx(22页珍藏版)》请在冰豆网上搜索。
电子万年历的设计
信息工程学院
课程设计报告书
题目:
电子万年历的设计与实现
专业:
电子信息科学与技术
班级:
0307407
学号:
030740751
学生姓名:
高智文
指导教师:
杨庆
年月日
信息工程学院课程设计任务书
学号
030740751
学生姓名
高智文
专业(班级)
电子信息科学与技术
设计题目
设
计
技
术
参
数
设
计
要
求
(1)基本要求
1具有年、月、日、星期、时、分、秒等功能;
2可以进行阴历和阳历转换;
3具备年、月、日、星期、时、分、秒校准功能;
4具备防御报警功能;
5具备温度显示功能;
工
作
量
1.画出系统总体框图;
2.画出各个模块的电路结构框图;
3.画出软件实现的流程图;
4.编写程序并仿真实现;
5.完成论文;
工
作
计
划
第一周确定设计的题目
第二周熟悉芯片提出设计方案
第三周完成硬件电路
第四周完成软件部分并仿真
第五周完成论文
参
考
资
料
【1】李泓,单片机入门与实践,北京航空航天大学出版社,2008
【2】张萌,单片机应用系统开发实例,清华大学出版社,2007
【3】沈文,单片机C语言开发入门指导,清华大学出版社,2003
【4】王金凤,房小翠,单片机应用系统设计技术,国防工业出版社,1999
【5】康光华,电子技术基础,华中科技大学,2005
【6】杨勇,通信电子线路,西安交通大学,2006
指导教师签字
教研室主任签字
年月日
学生姓名:
高智文学号:
030740751专业(班级):
电子信息
课程设计题目:
电子万年历的设计与实现
指导教师评语:
成绩:
指导教师:
年月日
信息工程学院课程设计成绩评定表
电子万年历设计与实现
摘要:
电子万年历的应用十分广泛,在硬件设计一节给出了详细的硬件电路图,并对各个模块功能与AT89S52单片机的链接进行详细的说明。
在软件设计一节给出了系统的程序控制流程,并对各个部分进行分析说明。
最后,简要地介绍系统集成与测试的方法。
本设计以AT89S52单片机为核心,构成单片机控制电路,结合DS1302时钟芯片和24C02FLASH存储器,显示阳历年、月、日、星期、时、分、秒和阴历年、月、日,在显示阴历时间时,能标明是否闰月,同时完成对它们的自动调整和掉电保护,全部信息用液晶显示。
人机接口由三个按键来实现,用这三个按键对时间、日期可调,并可对闹铃开关进行设置。
软件控制程序实现所有的功能。
整机电路使用+5V稳压电源,可稳定工作。
系统框图如图所示,其软硬件设计简单,时间记录准确,可广泛应用于长时间连续显示的系统中。
系统框图
关键字:
DS1302,,AT89S52单片机,LCD12864,万年历;
1任务提出与方案论证
1.1设计要求:
1.具有年、月、日、星期、时、分、秒等功能;
2.具备年、月、日、星期、时、分、秒校准功能;
3.具有定时闹钟功能;
4.阴历与阳历的转换;
1.2系统基本方案选择与论证
方案1——基于AT89S52单片机定时器产生时钟脉冲
不使用时钟芯片,而直接用AT89S52单片机来实现电子万年历设计。
AT89S52是一种带8K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,俗称单片机。
单片机的可擦除只读存储器可以反复擦写1000余次。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89S52是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
若采用单片机计时,利用它的一个16位定时器/计数器每50ms产生一个中断信号,中断20次后产生一个秒信号,然后根据时间进制关系依次向分、时、日、星期、月、年进位。
这样就实现了直接用单片机来实现电子万年历设计。
用单片机来实现电子万年历设计,无须外接其他芯片,充分利用了单片机的资源。
但是精度不够高,误差较大,掉电后丢失所有数据,软件编程较复杂。
3.2方案2——基于DS1302产生时钟脉冲
在以单片机为核心构成的装置中,经常需要一个实时的时钟和日历,以便对一些实时发生事件记录时给予时标,实时时钟芯片便可起到这一作用。
过去多用并行接口的时钟芯片,如MC146818,DS12887等。
它们已能完全满足单片机系统对实时时钟的要求,但是这些芯片与单片机接口复杂、占用地址,数据总线接线多、芯片体积大占用空间多、近年来串行接口的各种芯片在单片机系统中应用愈来愈多,串行接口的实时时钟芯片也出现了不少,DS1302是一个综合性能较好且价格便宜的串行接口实时时钟芯片。
利用单片机进行控制,采用DS1302作为实时时钟芯片,其三线接口SCLK、I/O、/RST与单片机进行同步通信,外加掉电存储电路、显示电路、键盘电路,即构成一个基本的电子万年历系统,若还要添加其他功能,在这基础上外扩电路即可。
由于在系统设计时,需要考虑以下几点因素:
功耗低、精确度高、软件编程较简单,芯片的体积小、芯片成本低等,而DS1302芯片有上面所述的诸多优点,所以本设计采用方案2。
2总体设计
2.1硬件系统设计与实现总体框图:
2.2程序框图
主程序框图:
3详细设计
3.1硬件电路设计
(1).核心控制部件AT89S52
AT89S52具有下列主要性能:
·8KB可改编程序Flash存储器(可经受1000次的写入/擦除周期)
·全静态工作:
0Hz~24MHz
·三级程序存储器保密
·128×8字节内部RAM
·32条可编程I/O线
·2个16位定时器/计数器
·6个中断源
·可编程串行通道
·片内时钟振荡器
AT89S52的引脚及功能:
AT89S52单片机的管脚说明如图所示:
AT89S52的管脚
(1)主要电源引脚
VCC电源端
②GND接地端
(2)外接晶体引脚XTAL1和XTAL2
XTAL1接外部晶体的一个引脚。
在单片机内部,它是构成片内振荡器的反相放大器的输入端。
当采用外部振荡器时,该引脚接收振荡器的信号,既把此信号直接接到内部时钟发生器的输入端。
②XTAL2接外部晶体的另一个引脚。
在单片机内部,它是上述振荡器的反相放大器的输出端。
采用外部振荡器时,此引脚应悬浮不连接。
(3)控制或与其它电源复用引脚RST、ALE//PROG、/PSEN和/EA/VPP
RST复位输入端。
当振荡器运行时,在该引脚上出现两个机器周期的高电平将使单片机复位。
②ALE//PROG当访问外部存储器时,ALE(地址锁存允许)的输出用于锁存地址的低位字节。
即使不访问外部存储器,ALE端仍以不变的频率(此频率为振荡器频率的1/6)周期性地出现正脉冲信号。
因此,它可用作对外输出的时钟,或用于定时目的。
然而要注意的是:
每当访问外部数据存储器时,将跳过一个ALE脉冲。
在对Flash存储器编程期间,该引脚还用于输入编程脉冲(/PROG)[6]。
③/PSEN程序存储允许(/PSEN)输出是外部程序存储器的读选通信号。
当AT89S52/LV52由外部程序存储器取指令(或常数)时,每个机器周期两次/PSEN有效(既输出2个脉冲)。
但在此期间内,每当访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
④/EA/VPP外部访问允许端。
要使CPU只访问外部程序存储器(地址为0000H~FFFFH),则/EA端必须保持低电平(接到GND端)。
当/EA端保持高电平(接VSS端)时,CPU则执行内部程序存储器中的程序。
(4)输入/输出引脚P0.0~P0.7、P1.0~P1.7、P2.0~P2.7和P3.0~P3.7
P0端口(P0.0~P0.7)P0是一个8位漏极开路型双向I/O端口。
作为输出口用时,每位能以吸收电流的方式驱动8个TTL输入,对端口写1时,又可作高阻抗输入端用。
②P1端口(P1.0~P1.7)P1是一个带有内部上拉电阻的8位双向I/O端口。
P1的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。
对端口写1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。
作输入口时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。
③P2端口(P2.0~P2.7)P2是一个带有内部上拉电阻的8位双向I/O端口。
P2的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。
对端口写1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。
P2作输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。
④P3端口(P3.0~P3.7)P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流,这是由于上拉的缘故。
P3口也可作为AT89S52的一些特殊功能,这些特殊功能见表4-1[7]。
表4-1P3端口的特殊功能
端口引脚
兼用功能
P3.0
RXD(串行输入口)
P3.1
TXD(串行输出口)
P3.2
/INT0(外部中断0)
P3.3
/INT1(外部中断1)
P3.4
T0(定时器0的外部输入)
P3.5
T1(定时器1的外部输入)
P3.6
/WR(外部数据存储器写选通)
P3.7
/RD(外部数据存储器读选通)
(2).DS1302时钟电路
芯片介绍:
低功耗时钟芯片DS1302可以对年、月、日、时、分、秒进行计时,且具有闰年补偿等多种功能。
DS1302用于数据记录,特别是对某些具有特殊意义的数据点的记录上,能实现数据与出现该数据的时间同时记录。
这种记录对长时间的连续测控系统结果的分析以及对异常数据出现的原因的查找有重要意义。
(1)DS1302的性能特性
·实时时钟,可对秒、分、时、日、周、月以及带闰年补偿的年进行计数;
·用于高速数据暂存的31×8位RAM;
·最少引脚的串行I/O;
·2.5~5.5V电压工作范围;
·2.5V时耗电小于300nA;
·用于时钟或RAM数据读/写的单字节或多字节(脉冲方式)数据传送方式;
·简单的3线接口;
·可选的慢速充电(至VCC1)的能力。
DS1302时钟芯片包括实时时钟/日历和31字节的静态RAM。
它经过一个简单的串行接口与微处理器通信。
实时时钟/日历提供秒、分、时、日、周、月和年等信息。
对于小于31天的月和月末的日期自动进行调整,还包括闰年校正的功能。
时钟的运行可以采用24h或带AM(上午)/PM(下午)的12h格式。
采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。
DS1302有主电源/后备电源双电源引脚:
VCC1在单电源与电池供电的系统中提供低电源,并提供低功率的电池备份;VCC2在双电源系统中提供主电源,在这种运用方式中,VCC1连接到备份电源,以便在没有主电源的情况下能保存时间信息以及数据。
DS1302由VCC1或VCC2中较大者供电。
当VCC2大于VCC1+0.2V时,VCC2给DS1302供电;当VCC2小于VCC1时,DS1302由VCC1供电。
(2)DS1302数据操作原理
DS1302在任何数据传送时必须先初始化,把RST脚置为高电平,然后把8位地址和命令字装入移位寄存器,数据在SCLK的上升沿被输入。
无论是读周期还是写周期,开始8位指定40个寄存器中哪个被访问到。
在开始8个时钟周期,把命令字节装入移位寄存器之后,另外的时钟周期在读操作时输出数据,在写操作时写入数据。
时钟脉冲的个数在单字节方式下为8加8,在多字节方式下为8加字节数,最大可达248字节数。
图4-3DS1302管脚图
如果在传送过程中置RST为低电平,则会终止本次数据传送,并且I/O引脚变为高阻态。
上电运行时,在VCC>=2.5V之前,RST脚必须保持低电平。
只有在SCLK为低电平时,才能将RST置为高电平。
DS1302的管脚图如图4-3所示,内部结构图如图4-4所示,表4-2为各引脚的功能。
图4-4DS1302内部结构图
表4-2DS1302引脚功能表
引脚号
引脚名称
功能
1
VCC2
主电源
2,3
X1,X2
振荡源,外接32768HZ晶振
4
GND
地线
5
RST
复位/片选线
6
I/O
串行数据输入/输出端(双向)
7
SCLK
串行数据输入端
8
VCC1
后备电源
DS1302的控制字如图4-5所示。
控制字节的最高有效位(位7)必须是逻辑1;如果它为逻辑0,则不能把数据写入到DS1302中。
位6如果为0,则表示存取日历时钟数据;为1表示存取RAM数据。
位5~1(A4~A0)指示操作单元的地址。
最低有效位(位0)如为0,表示要进行写操作;为1表示进行读操作。
控制字节总是从最低位开始输入/输出。
图4-5控制字节的含义
为了提高对32个地址的寻址能力(地址/命令位1~5=逻辑1),可以把时钟/日历或RAM寄存器规定为多字节(burst)方式。
位6规定时钟或RAM,而位0规定读或写。
在时钟/日历寄存器中的地址9~31或RAM寄存器中的地址31不能存储数据。
在多字节方式中,读或写从地址0的位0开始。
必须按数据传送的次序写最先的8个寄存器。
但是,当以多字节方式写RAM时,为了传送数据不必写所有31字节。
不管是否写了全部31字节,所写的每一字节都将传送至RAM。
数据读写程序如图4-6所示。
图4-6数据读写程序
DS1302共有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字见表4-3,其中奇数为读操作,偶数为写操作
表4-3DS1302的日历、时钟寄存器及其控制字
寄存器
名
命令字
取值
范围
各位内容
写操作
读操作
7
6
5
4
3
2
1
0
秒寄存器
80H
81H
00-59
CH
10SEC
SEC
分钟寄存器
82H
83H
00-59
0
10MIN
MIN
小时
寄存器
84H
85H
01-12或
00-23
12/
24
0
10
AP
HR
HR
日期
寄存器
86H
87H
01-28,29,
30,31
0
0
10DATE
DATE
月份寄存器
88H
89H
01-12
0
0
0
IOM
MONTH
周日寄存器
8AH
8BH
01-07
0
0
0
0
0
DAY
年份寄存器
8CH
8DH
00-99
10YEAR
YEAR
时钟暂停:
秒寄存器的位7定义位时钟暂停位。
当它为1时,DS1302停止振荡,进入低功耗的备份方式。
通常在对DS1302进行写操作时(如进入时钟调整程序),停止振荡。
当它为0时,时钟将开始启动。
AM-PM/12-24[小]时方式:
[小]时寄存器的位7定义为12或24[小]时方式选择位。
它为高电平时,选择12[小]时方式。
在此方式下,位5是AM/PM位,此位是高电平时表示PM,低电平表示AM,在24[小]时方式下,位5为第二个10[小]时位(20~23h)。
(3)DS18B20温度传感电路
1、DS18B20的主要特性
1.1、适应电压范围更宽,电压范围:
3.0~5.5V,在寄生电源方式下可由数据线供电
1.2、独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯
1.3、DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温
1.4、DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内
1.5、温范围-55℃~+125℃,在-10~+85℃时精度为±0.5℃
1.6、可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃,可实现高精度测温
1.7、在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快
1.8、测量结果直接输出数字温度信号,以"一线总线"串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力
1.9、负压特性:
电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。
2、DS18B20的外形和内部结构
DS18B20内部结构主要由四部分组成:
64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。
温度数据表如下:
(4)键盘电路
本设计共采用按键3个,分别与单片机的P1.1、P1.2、P1.3,P1.4口相连,分别对应光标移动,时间、日期调整,退出、闹铃开关键的功能。
(5)液晶显示模块(LCD12864)
带中文字库的128X64是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64,内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。
可以显示8×4行16×16点阵的汉字.也可完成图形显示.低电压低功耗是其又一显著特点。
由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。
引脚功能:
电路连接原理图:
3.2系统软件设计
(1).阳历程序设计:
因为使用了时钟芯片DS1302,阳历程序只需从DS1302各寄存器中读出年、周、月、日、[小]时、分、秒等数据,再处理即可。
在首次对DS1302进行操作之前,必须对它进行初始化,然后从DS1302中读出数据,再经过处理后,送给显示缓冲单元。
阳历程序流程图见图所示。
(2)时间调整程序:
调整时间用三个调整按钮,一个作为移位、控制用,一个作为加用,一个作为退出调整和闹铃开关用。
分别定义为控制按钮、加按钮、退出按钮。
在调整时间过程中,要调整的位与别的位应该有区别,所以增加了闪烁功能,即调整的位一直在闪烁,直到调整下一位。
闪烁原理就是,让要调整的一位每隔一定的时间熄灭一次,例如间隔时间为50ms。
利用定时器计时,当达到50ms溢出时,就送给该位熄灭符,在下一次溢出时,再送正常显示的值,不断交替,直到调整该位结束。
此时送正常显示值给该位,再进入下一位调整闪烁程序。
时间调整程序流程图如图所示。
(3)阴历日期程序:
计算出阳历总天数后,就可以根据它来推算阴历日期。
推算方法是,先用总天数减去春节和元旦的日差,如果结果为1,则该天正好是春节(因为春节在元旦之后,在计算春节和元旦的日差时,假设元旦为0天,春节为n天,则日差为n。
而前面计算的阳历总天数是该天在该年中的第几天,是以元旦为1而得到的,与计算春节和元旦日差的这样方法相比,其数值少了1,所以要在原来本应该以0作为该天就是春节的依据的基础上加1,所以以1作为该天是春节的标志);如果结果小于1,则阴历应该是阳历的前一年;如果结果大于1,说明阳历和阴历为同一年。
再根据查表所得的该年的阴历的闰年和大小月的信息,就可以推算出该天的阴历日期了。
图为由总天数推算出阴历日期的程序流程图。
推算阴历日期的流程图
(4)仿真结果:
仿真结果一致,仿真通过。
4总结
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□。
【要求】写设计体会及今后的改进意见
……
参考文献
[1]吴金戌,沈庆阳.8051单片机实践与应用,北京:
清华大学出版社,2003.12,26-38.
[2]何立民.单片机应用文集,北京:
北京航空航天大学出版社,1991,53-72.
[3]公茂法.单片机人机接口实例集,北京:
北京航空航天大学出版社,1998.2,32-59.
[4]何立明.单片机高级教程——应用与设计,北京:
北京航天航空大学出版社,2000.4,149-173.
[5]李广弟,朱月秀.单片机基础,北京:
北京航空航天大学出版社,2001.8,36-85.
[6]楼然苗,李光飞.MCS-51系列单片机设计实例,北京:
北京航天航空大学出版社,2001.3,75-83.
[7]李华.单片机原理与接口技术,北京:
清华大学出版社,33-80.
[8]王伟.高性能、低功耗带RAM实时时钟芯片DS1302(上),电子世界:
第一期,
1995,26-35.
[9]王伟.高性能、低功耗带RAM实时时钟芯片DS1302(下),电子世界:
第四期,1995,32-41.
[10]康华光,陈大钦.电子技术基础—-模拟部分(第五版)[M].北京:
高等教育出版社