基于AT89S52单片机的万年历设计文档格式.docx
《基于AT89S52单片机的万年历设计文档格式.docx》由会员分享,可在线阅读,更多相关《基于AT89S52单片机的万年历设计文档格式.docx(46页珍藏版)》请在冰豆网上搜索。
在生活中,我们经常能看到各种各样的制作精美的万年历,万年历大有取代常规钟表的趋势.随着人们生活水平的提高,智能产品越来越受到人们的欢迎.而单片机,传感器各种集成电路起到关键作用.希望通过本设计能够对未来的趋势有所把握,从而适应社会需要.
1.2电子万年历的目的和意义
电子万年历是一种应用非常广泛的日常计时工具,液晶显示的万年历已经越来越普及,特别是适合在家庭居室、办公室、大厅、会议室和广场使用。
LED显示的日历钟显示清晰直观、走时准确,并且还可以扩展出多种功能,本设计利用数量较少的芯片研制了一种多功能电子万年历,主要功能包括:
电子万年历要求能显示阳历/阴历、年、月、日、星期、小时、分、秒,除此之外还有显示润年,记忆时间。
随着历史的发展,从古代观太阳到滴水计时,从摆钟到现代电子钟表,人类不断的研究,不断的进步。
美国DALLAS公司推出的具有涓细电流充电能的低功耗实时时钟电路DS1320。
它可以对年、月、日、周日、时、分、秒进行计时,还具有润年补偿的多种功能,而且DS1320的使用寿命长,误差小。
对于数字电子万年历采用它具有较准的计时功能。
第二章系统硬件电路设计
2.1硬件设计框图
图2.1
2.2AT89S52
AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
AT89S52具有以下标准功能:
8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
图2.2AT89S52引脚图
2.374LS164电路原理
74LS164显示模块是由74LS164移位寄存器和数码管构成它为串行输入并行输出的移位寄存器,可以作为静态显示器接口,接在89C51的串行口上用于数码的显示.如图所示:
clear(9脚)高电平有效,低电平时使所有输出(Qa~Qh)为低电平Clock(8脚)上升延输出移位,其余状态保持A(1脚)B(2脚)输入:
逻辑与关系,即全高为高,见低为低。
图2.3 74LS164引脚图
2.4DS1302工作原理
首先介绍DS1302的结构及工作原理:
DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。
采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。
DS1302内部有一个31×
8的用于临时性存放数据的RAM寄存器。
DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。
其次介绍引脚功能及结构:
图3.22示出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进行操作。
如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。
上电运行时,在Vcc≥2.5V之前,RST必须保持低电平。
只有在SCLK为低电平时,才能将RST置为高电平。
I/O为串行数据输入输出端(双向),后面有详细说明。
SCLK始终是输入端。
图2.4DS1302引脚图
慢速充电时钟芯片包括实时时钟/日历和31字节的静态RAM。
它经过一个简单的串行接口与微处理器通信。
实时时钟/日历提供秒、分、时、日、周、月和年等信息。
对于小于31天的月,月末的日期自动进行调整,还包括了闰年校正的功能。
时钟的运行可以采用24小时或带AM(上午)/PM(下午)的12小时格式。
使用同步串行通信,简化了DS1302与微处理器的通信。
与时钟/RAM通信仅需三根线:
(1)RST(复位)、
(2)I/O(数据线)、和(3)SCLK(串行时钟)。
数据可以以每次一个字节或多达31字节的多字节形式传送至时钟/RAM或从其中送出。
DS1302设计成能在非常低的功耗下工作,消耗小于1微瓦的功率便能保存数据和时钟信息。
DS1302是DS1202的升级产品,除了DS1202基本的慢速充电功能外,DS1302具有的其它特点包括:
用于主电源和备份电源的双电源引脚,可编程的VCC1慢速充电器以及7个附加字节的高速暂存存储器(scratchpadmemory)。
2.5电源原理
稳压电源由电源变压器、整流电路、滤波电路和稳压电路组成,如图
图2.51交直流转换图
图2.52电源原理图
VCC1在单电源与电池供电的系统中提供低电源并提供低功率的电池备份。
VCC2在双电源系统中提供主电源,在这种运用方式中VCC1连接到备份电源,以便在没有主电源的情况下能保存时间信息以及数据。
DS1302由VCC1或VCC2两者中较大者供电。
当VCC2大于VCC1+0.2V时,VCC2给DS1302供电。
当VCC2小于VCC1时,DS1302由VCC1供电。
2.6数码管原理
LED数码管分共阳极与共阴极两种,其工作特点是,当笔段电极接低电平,公共阳极接高电平时,相应笔段可以发光。
共阴极LED数码管则与之相反,它是将发光二极管的阴极(负极)短接后作为公共阴极。
当驱动信号为高电平、Ө端接低电平时,才能发光。
LED的输出光谱决定其发光颜色以及光辐射纯度,也反映出半导体材料的特性。
常见管芯材料有磷化镓(GaP)、砷化镓(GaAs)、磷砷化镓(GaAsP)、氮化镓(GaN)等,其中氮化镓可发蓝光。
发光颜色不仅与管芯材料有关,还与所掺杂质有关,因此用同一种管芯材料可以制成发出红、橙、黄、绿等不同颜色的数码管。
其它颜色LED数码管的光谱曲线形状与之相似,仅入,值不同。
LED数码管的产品中,以发红光、绿光的居多、这两种颜色也比较醒目。
LED数码管等效于多只具有发光性能的PN结。
当PN结导通时,依靠少数载流子的注人及随后的复合而辐射发光,其伏安特性与普通二极管相似。
在正向导通之前,正向电流近似于零,笔段不发光。
当电压超过开启电压时,电流就急剧上升,笔段发光。
因此,LED数码管属于电流控制型器件,其发光亮度L(单位是cd/m2)与正向电流IF有关,用公式表示:
L=KIF即亮度与正向电流成正比。
LED的正向电压U,则与正向电流以及管芯材料有关。
使用LED数码管时,工作电流一般选10mA左右/段,既保证亮度适中,又不会损坏器件。
图2.61
图2.62
第三章系统软件实现
3.1显示时间子程序流程
图3.1
3.2调整时间子程序流程
图3.2
3.3显示闰年子程序流程
编程中公历闰年的简单计算方法:
设年份year
if(year能被4整除and不能被100整除)oryear能被400整除
then该年为闰年
else该年为平年
图3.3
3.4显示星期的子程序流程
图3.4
①求某年某月某日是星期几的子功能。
(要求编成子程序)
算法:
s=(y-1)+(y-1)/4-(y-1)/100+(y-1)/400+c
(其中:
y为年份;
c为某月某日是这一年的第几天,由②求出;
s为总天数。
“/”为整除。
)
n=s%7(其中:
n为星期数;
“%”为求余数)
②求某月某日是这一年的第几天的子功能。
二月份是否为平年(28天)或闰年(29天)的算法:
y/400=0∨y/4=0∧y/100≠0(y为年份;
“/”整除)
,则y为以闰年;
否则,y为平年。
根据①②可求出一年中的日历。
3.5阳历日期推算阴历日期的方法
图3.5
总 结
通过这次毕业设计――制作单片机AT89S52的万年历,我学到了许多知识,还学到了许多思考问题的方法,受益非浅。
提高了分析问题、解决问题的能力。
在设计过程中,我遇到了很多问题,这是不可避免的,但我并没有急于寻求问题的答案,而是认真分析问题存在的原因,从而着手解决问题,以免以后出现类似的问题。
通过本文的学习,你可以很清楚的了解万年历开发与应用,使读者一目了然。
文中只是对系统硬件电路设计、软件设计简单阐述。
但本文对具体的电路具体设计等没做说明。
本文还简单介绍了这个万年历元件清单、电路原理图、为读者竟进行实物焊接提供了很好的帮助以及为以后的电路设计做好了铺垫。
致谢
本文的研究工作是在王老师的精心指导和悉心关怀下完成的,在我的学业和论文的研究工作中无不倾注着老师辛勤的汗水和心血。
王老师在科研和工作中严谨治学勇于创新无私奉献的精神使我受益菲浅。
在此论文完成之际,我向导师致以深深的敬意及最真诚的谢意。
在学习和科研期间我还得到了许多老师同学和同学的热情关心和大力帮助,在此也深表感谢,并向所有关心和帮助过我的领导老师同学和朋友表示由衷的谢意。
最后衷心感谢在百忙之中评阅论文和参加答辩的各位老师。
参考文献
[1]胡汉才.《单片机原理及其接口技术》.清华大学出版社.2004
[2]丁元杰.《单片机原理与应用》.机械工业出版社.2005
[3]孙育才.《MCS-51系列单片微型计算机及其应用》.东南大学出版社.2004
[4]蔡美勤,张为民,沈新群,张荣娟.《MCS-51系列单片机系统及其应用》.高等教育出版社.2004
[5]王幸之,钟爱琴,王雷,王闪.《STC89系列单片机原理与接口技术》.北京航空航天大学出版社.2004
附录1.元件清单
PartTypeDesignatorFootprint
74LS164U3DIP-14
74LS164U2DIP-14
74LS164U4DIP-14
89S52U1DIP-40
CAPC6RAD0.4
CAPC5RAD0.4
CAPC4RAD0.4
CAPC3RAD0.4
CAPACITORC2RB.2/.4
CON2J1SIP2
CON10J2SIP10
CRYSTALY2DIP2
CRYSTALY1DIP2
Component_1C1DIP8
DPY_7-SEG_DPDS9DIP10
DPY_7-SEG_DPDS11DIP10
DPY_7-SEG_DPDS13DIP10
DPY_7-SEG_DPDS8DIP10
DPY_7-SEG_DPDS3DIP10
DPY_7-SEG_DPDS5DIP10
DPY_7-SEG_DPDS4DIP10
DPY_7-SEG_DPDS1DIP10
DPY_7-SEG_DPDS6DIP10
DPY_7-SEG_DPDS2DIP10
DPY_7-SEG_DPDS15DIP10
DPY_7-SEG_DPDS18DIP10
DPY_7-SEG_DPDS12DIP10
DPY_7-SEG_DPDS14DIP10
DPY_7-SEG_DPDS16DIP10
DPY_7-SEG_DPDS7DIP10
DPY_7-SEG_DPDS17DIP10
DPY_7-SEG_DPDS10DIP10
DPY_7-SEG_DPDS19DIP10
LEDD1DIODE0.4
PNPQ7TO-92A
PNPQ8TO-92A
PNPQ3TO-92A
PNPQ2TO-92A
PNPQ1TO-92A
PNPQ6TO-92A
PNPQ5TO-92A
PNPQ4TO-92A
RES2R1AXIAL0.4
RES2R2AXIAL0.4
RES2R7AXIAL0.4
RES2R6AXIAL0.4
RES2R5AXIAL0.4
RES2R3AXIAL0.4
RES2R4AXIAL0.4
RES2R12AXIAL0.4
RES2R13AXIAL0.4
RES2R14AXIAL0.4
RES2R11AXIAL0.4
RES2R8AXIAL0.4
RES2R9AXIAL0.4
RES2R10AXIAL0.4
SW-PBS2AXIAL0.4
SW-PBS1AXIAL0.4
附录2.电路原理图
附录3程序
3.1主程序
sec11equ10h
sec12equ11h
min11equ12h
min12equ13h
hour11equ14h
hour12equ15h
day11equ16h
day12equ17h
month11equ18h
month12equ19h
year11equ1ah
year12equ1bh
year13equ1ch
year14equ1dh
TEMPEQU1EH
N_DAYEQU1FH
shu2equ20h
adress2equ21h
ADRESS1EQU23H
SHU1EQU24H
SHU3EQU25H
TEMP11EQU26H
TEMP12EQU27H
N_DAY11EQU28H
N_DAY12EQU29H
N_MONTH11EQU2AH
N_MONTH12EQU2BH
N_MONTHEQU2CH
huanequ2dh
SCLKbit90h
iobit91h
RSTbit92h
secdata60h
mindata61h
hourdata62h
datedata63h
monthdata64h
daydata65h
year1DATA66H
year2data67h
int_minequ68h
int_hourequ69h
int_dateequ6ah
int_monthequ6bh
int_year1equ6ch
int_dayequ6dh
start_yearEQU01;
定义查询表起始年份,
01--199表示1901-2099年
;
以下三单元为需转换的公历日期是子程序的入口数据
time_yearDATA66h
time_monthDATA64h;
BIT7表示世纪,
为1表示19世纪,为0表示20世纪
time_dateDATA63h
以下三单元存转换后农历日期与入口单元重叠,
如要保留入口信息,请重定义出口地址
CONvert_yeArDATA33h
CONvert_mONthDATA34h;
BIT7为1表示闰月
CONvert_dAteDATA35h
temp_Byte1DATA37h
temp_Byte2DATA38h
temp_Byte3DATA39h
temp_Byte4DATA3Ah
temp_Byte5DATA3Bh
time_weekDATA65h;
星期天出口
3.2公历转农历子程序
org0000h
movp0,#0ffh
mov6eh,#00hmov
int_min,#59h
movint_hour,#23h
movint_date,#12h
movint_month,#11h
movint_year1,#04h
movint_day,#07h
movtemp,#00h
movyear2,#20h
MOVSP,#74H
3.3DS1302读写程序
lcallinit
start:
mov70h,hour
mov71h,min
movday,time_week
movr0,#sec
movr7,#7
setbpsw.5
lcallrwrtc
lcallkEY
LCALLCONvert
lcallGetWeek
LCALLTRUN
;
LCALLDINGSHI
LCALLDISP1
LCALLDISP3
ljmpstart
rwrtc:
movb,#10000001b
jbpsw.5,rwrtc1
movb,#10000000b
rwrtc1:
clrsclk
nop
setbrst
movr6,#8
mova,b
rwrtc2:
rrca
movio,c
setbsclk
djnzr6,rwrtc2
jnbpsw.5,rwrtc4
rwrtc3:
movc,io
djnzr6,rwrtc3
mov@r0,a
sjmprwrtc6
rwrtc4:
mova,@r0
rwrtc5:
djnzr6,rwrtc5
rwrtc6:
incr0
adda,#02h
movb,a
clrrst
clrsclk
djnzr7,rwrtc1
RET
WRRTC:
CLRSCLK
NOP
SETBRST