基于单片机控制的电子万年历的设计.docx
- 文档编号:3571827
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:35
- 大小:271.09KB
基于单片机控制的电子万年历的设计.docx
《基于单片机控制的电子万年历的设计.docx》由会员分享,可在线阅读,更多相关《基于单片机控制的电子万年历的设计.docx(35页珍藏版)》请在冰点文库上搜索。
基于单片机控制的电子万年历的设计
基于单片机控制的电子万年历的设计
摘要
单片机应用技术飞速发展,纵观我们现在生活的各个领域,从导弹的导航装置,到飞机上各种仪表的控制,从计算机的网络通讯与数据传输,到工业自动化过程的实时控制和数据处理,以及我们生活中广泛使用的各种智能IC卡等,这些都离不开单片机。
在本设计中采用单片机AT89C52作为控制器来控制电路。
本设计分别对硬、软件进行设计说明。
硬件包括制器AT89C52、时钟电路DS1302、显示电路及键盘扫描电路组成,比如DS1302时钟芯片包括实时时钟/日历和31字节的静态RAM。
它经过一个简单的串行接口与微处理器通信。
实时时钟/日历提供秒、分、时、日、周、月和年等信息。
软件部分给出了部分程序流程图的设计,包括阳历程序、时间调整程序和阴历程序。
阳历程序是从DS1302各个寄存器中读出年、周、月、日、时、分、秒等数据。
时间调整程序时用来正确的执行调整时间的功能。
阴历程序的是要靠阳历日期来推算的。
推算方法是,根据阳历当前日期在一年中的天数来计算阴历日期。
软件编程采用汇编语言编写,因为其简洁、使用方便灵活、容易实现程序的模块化和结构化。
关键词:
AT89C52芯片;DS1302芯片;汇编语言;阳历程序;阴历程序
Designofelectroniccalendarbasedonsinglechipmicrocomputercontrol
Abstract
Microcomputerapplicationtechnologyrapiddevelopment,throughoutwenowallspheresoflife,frommissilenavigationdevices,totheaircraftvariouskindsofinstrumentcontrol,fromthecomputernetworkcommunicationanddatatransmission,toindustrialautomationprocessreal-timecontrolanddataprocessing,aswellasourlifeiswidelyusedinallkindsofintelligentICcard,theseareinseparablefrommicrocontroller.InthisdesignUSESthemonolithicAT89C52ascontrollertocontrolcircuit.Thedesignofhardwareandsoftwarerespectivelydesignexplains.HardwareincludingmakingmachinesAT89C52single,clockingcircuitDS1302,displaycircuitandkeypadscanningcircuitcomponent,suchasDS1302clockchipincludingreal-timeclock/calendarand31bytesofstaticRAM.Itpassesthroughasimpleserialinterfaceandmicroprocessorcommunications.Real-timeclock/calendarprovidesseconds,points,when,day,week,monthandyearandotherinformation.Softwarepartgivespartoftheprogramflowchartdesign,includingtheGregoriancalendarprocedure,timeadjustmentproceduresandlunarprogram.TheGregoriancalendarprogramDS1302registerreadfromeachyear,week,month,day,whendatasuchas,minutesandseconds.Timetoadjusttothecorrectimplementationprogramadjustingtimefunctions.LunarprogramistorelyontheGregoriancalendardateofextrapolate.Computativemethodis,accordingtothesolarcalendardaysoftheyearthecurrentdatetocalculatethelunarcalendardate.Softwareprogrammingusingassemblylanguage,becauseitissimpleandeasytouseagileandeasytoimplementproceduresofmodularandstructured.
KeyWords:
AT89C52singlechip;DS1302chip;Assemblylanguage;Gregoriancalendarprogram;Lunarprogram
1绪论
1.1单片机的介绍
单片机的全称是单片微型计算机(SingleChipMicro-computer)。
为了使用方便,它把组成计算机的主要功能部件:
中央处理器(CPU)、数据存储器(RAM)、程序存储器(ROM、EPTOM、E2PROM或FLASH)、定时/计数器和各种输入/输出接口电路等都集成在一块半导体芯片上,构成了一个完整的计算机系统。
与通用的计算机不同,单片机的指令功能是按照工业控制的要求设计,因此它又被称为微控制器(Microcontroller)。
单片机具有体积小、重量轻、耗能省、价格低、可靠性高和通用灵活等优点。
近几年来,单片机的发展更为迅速,它已渗透到诸多学科的领域,以及人们生活的各个方面,如今单片机已广泛地应用在智能仪器仪表、机电设备过程控制、自动检测、家用电器和数据处理等各个方面。
单片机出现的历史并不长,它的产生于发展与微处理器的产生于发展大体上同步,也经历了3个阶段:
第一个阶段:
20世纪70年代为单片机的初级阶段。
这个阶段以Intel公司的MCS-48系列单片机为典型代表。
因受工艺和集成度限制,单片机中的CPU功能低、存贮器容量小、IO接口的种类和数量少,只能用在简单场合。
第二个阶段:
20世纪80年代为单片机的成熟阶段。
这个阶段以Intel的MCS-51、MCS-96系列单片机为典型代表。
出现了性能较高的8位和16位单片机。
提高了CPU的功能、扩大了存贮器的容量、增加了IO接口种类和数量,单片机内包括了异步串行口、A/D、多功能定时器等特殊IO电路。
单片机应用也得到了推广。
第三个阶段:
20世纪90年代至今为单片机高速发展阶段。
世界上著名半导体厂商不断推出各种新型的8位、16位和32位单片机,单片机的性能不断完善,品种大量增加,在功能、功耗、体积、价格等方面能满足各种复杂的或简单的应用场合需求,单片机应用深入到各行业和消费类的电子产品中[1]。
单片机是为了实现控制功能而设计的一种微型计算机,它的应用首先是控制功能,即实现计算机控制。
目前单片机渗透到我们生活的各个领域。
单片机控制技术制药研究如何控制计算机技术和自动控制理论应用于工业生产过程中。
随着科学技术的不断发展,单片机报时控制技术的应用领域已经日益广泛,如在冶金、化工、电力、自动化机床、工业机器人控制、柔韧制造系统和计算机集成制造系统等工业测控方面,已经取得了令人瞩目的研究与应用成果,并在国民经济中发挥着越来越大的作用。
报时系统在现代社会中应用很广泛,大到大型的企业集团,小到一个学校的定时系统以及家用的具有智能性的闹钟等。
报时系统最重要的一个特性就是体现出其控制时间的准确性、精确性。
本设计任务正是以时间为控制对象,设计一个由单片机控制的报时系统。
我所设计的基于单片机的自动报时系统,它不仅能实现数字电子时钟的各种功能,如具有较时、调时、定时、闹钟等功能,而且还能实现定点报时的功能。
实时时钟可提供秒、分、时、日、星期、月和年,一个月小于31天时可以自动调整,本设计具有简单,实用性强,成本低,使用维护方便,软件功能强,运行稳定可靠等优点[2]。
1.2本设计的要求
1.2.1功能要求
电子万年历能显示阳历年、月、日、星期、<小>时、分<钟>、秒和阴历月、日,在显示农历时间时,能表明是否为闰年。
1.2.2方案论证
按照系统审计功能的要求,初步确定系统由主控模块、时钟模块、显示模块和键盘接口模块共4个模块组成,电路系统构成框图如图1.1所示。
主控芯片使用51系列AT89C52单片机,时钟芯片使用美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟DS1302。
采用DS1302作为计时芯片,可以做到计时准确。
更重要的是,DS1302可以在很小电流的后备电源(2.5~5.5V电源,在2.5V时耗点小于300nA)下继续计时,而且DS1302可以编程选择多种充电电流来对后备电源进行慢速充电,可以保证后备电源基本不耗电。
显示模块采用普通模块采用普通的共阳LED数码管,键输出采用查询法实现功能调整[3]。
图1.1电子万年历电路系统构成框图
1.3本设计的内容
1.3.1硬件
根据设计要求,系统的组成框图如图1.1所示,主要由主控制器AT89C52、时钟电路DS1302、显示电路及键扫描电路组成。
对于电子万年历来说,硬件系统是它的最基本的框架,是系统的所有功能的基础。
硬件的选择和所选硬件的性能对系统的功能实现以及系统的精度都有直接的影响,系统的设计成功与否很大程度上取决于硬件系统的设计。
1.3.2软件
本设计主要采用汇编语言进行编程,同时利用Protel99SE进行电路图的绘制。
本设计主要分为3部分,分别是阳历程序、时间调整程序和阴历程序。
阳历程序是从DS1302各个寄存器中读出年、周、月、日、时、分、秒等数据。
时间调整程序时用来正确的执行调整时间的功能。
阴历程序的是要靠阳历日期来推算的。
推算方法是,根据阳历当前日期在一年中的天数来计算阴历日期。
2系统硬件电路的设计
附录B所示为电子万年历电路设计原理图,系统由主控制器AT89C52、时钟电路DS1302、显示电路及键扫描电路组成。
2.1主控制器的设计
本设计采用了芯片AT89C52作为核心控制器。
AT89C52是ATMEL公司产生的一款性能稳定的8位单片机。
AT89C52具有1KB的Flash程序存储器,1个512字节的RAM,4个8位的双向可位寻址I/O端口,3个16位的定时/计数器及1个串行口和6个向量二级中断结构。
2.1.1AT89C52主要性能特点
AT89C52的性能特性如下[4]:
1.8KBFlashROM,可以擦除1000次以上,数据保存10年。
2.256字节内部RAM。
3.电源控制模式:
1)时钟可停止和恢复;
2)空闲模式;
3)掉电模式。
4.6个中断源。
5.4个中断优先级。
6.4个8位I/O口。
7.全双工增强型UART。
8.3个16位定时/计数器:
T0、T1(标准80C51)和增加的T2(捕获和比较)。
9.全静态工作方式:
0~24MHz。
2.1.2AT89C52引脚图与引脚功能
AT89C52的引脚排列如图2.1所示。
图2.1AT89C52的引脚
AT89C52的引脚功能介绍如下[5]:
1.RST:
复位输入。
晶振工作时,RST脚持续2个机器周期高电平将使单片机复位。
特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。
DISRTO默认状态下,复位高电平有效。
2.ALE/
:
地址锁存控制信号(ALE)是访问外部程序存储器时,锁存底8位地址的输出脉冲。
在flash编程时,此引脚(
)也用作编程输入脉冲。
在一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。
然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。
如果需要,通过将地址为8EH的SFR的第0位置“1”,ALE操作将无效。
这一位置“1”,ALE仅在执行MOVX或MOVC指令时有效。
否则,ALE将被微弱拉高。
这个ALE使能标志位(地址为8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。
3.
:
外部程序存储器选通信号(
)是外部程序存储器选通信号。
当AT89C52从外部程序存储器执行外部代码时,
在每个机器周期被激活两次,而在访问外部数据存储器时,
将不被激活。
4.
/VPP:
访问外部程序存储器控制信号。
为使能从0000H到FFFFH的外部程序存储器读取指令,
必须接GND。
为了执行内部程序指令,
应该接VCC。
在flash编程期间,
也接收12伏VPP电压。
5.XTAL1:
振荡器反相放大器和内部时钟发生电路的输入端。
6.XTAL2:
振荡器反相放大器的输出端。
7.VCC:
电源。
8.GND:
地。
9.P0口:
P0口是一个8位漏极开路的双向I/O口。
作为输出口,每位能驱动8个TTL逻辑电平。
对P0端口写“1”时,引脚用作高电阻抗输入。
当访问外部程序和数据存储器时,P0口也被作为低8为地址/数据复用。
在这种模式下,P0具有内部上拉电阻。
10.P1口:
P1口是一个具有内部上拉电阻的8位双向I/O口,P1输出缓冲器驱动4个TTL逻辑电平。
对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚有一内部电阻的原因,将输出电流(IIL)。
此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和定时器/计数器2的触发输入(P1.1/T2EX),在flash编程和校验时,P1口接收低8位地址字节。
P1.0的第二功能是代替T2(定时器/计数器T2的外部计数输入),时钟输出;P1.1的第二功能是代替T2EX(定时器/计数器T2的捕捉/冲在触发信号和方向控制);P1.5的第二功能是代替MOSI(在系统编程用);P1.6的第二功能是代替MISO(在系统编程用);P1.7的第二功能是代替SCK(在系统编程)。
11.P2口:
P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。
对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入口使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX@DPTR)时,P2口送出高八位地址。
在这种应用中,P2口使用很强的内部上拉发送1。
在使用8位地址(如MOVX@RI)访问外部数据存储器时,P2口输出P2锁存器的内容。
在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。
12.P3口:
P3口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。
对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
P3口亦作为AT89C52特殊功能(第二功能)使用,在flash编程和校验时,P3口也接收一些控制信号。
P3.0可代替RXD(串行输入);P3.1可代替TXD(串行输出);P3.2可替代
(外部中断0);P3.3可代替
(外部中断0);P3.4可代替T0(定时器0外部输入);P3.5可代替T1(定时器1外部输入);P3.6可代替
(外部数据存储器写选通);P3.7可代替
(外部数据存储器写选通)。
2.1.3主控制器的连线图
主控制器模块电路图如图2.2所示,RST接复位电路,P1.0/T、P1.1/T和P1.2接按键电路,INT1和INT0接时钟电路,P2.0~P2.6、RXD和TXD接显示电路。
图2.2主控制模块电路图
2.2时钟电路的设计
2.2.1芯片介绍
1.DS1302的性能特性:
1)实时时钟,可对秒、分、时、日、周、月以及带闰年补偿的年进行计数;
2)用于高速数据暂存的31×8位RAM;
3)最少引脚的串行I/O;
4)2.5~5.5V电压工作范围;
5)2.5V时耗电小于300nA;
6)用于时钟或RAM数据读/写的单字节或多字节(脉冲方式)数据传送方式;
7)简单的三线接口;
8)可选的慢速充电(至Vcc1)的能力。
DS1302时钟芯片包括实时时钟/日历和31字节的静态RAM。
它经过一个简单的串行接口与微处理器通信。
实时时钟/日历提供秒、分、时、日、周、月和年等信息。
对于小于31天的月和月末的日期自动进行调整,还包括闰年校正的功能。
时钟的运行可以采用24<小时>时或带AM(上午)/PM(下午)的12<小>时的格式。
采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多字节的时钟信号或RAM数据。
DS1302有主电源.后备电源双电源引脚:
Vcc1在单电源与电池供电的系统中提供低电源,并提供低功率的电池备份;Vcc2在双电源系统中提供主电源。
在这种运用方式中,Vcc1连接到后背电源,以便在没有主电源的情况下能保存时间信息以及数据。
DS1302由Vcc1或Vcc2中较大者供电。
当Vcc2>(Vcc1+0.2V)时,Vcc2给DS1302供电;当Vcc2 2.2.2DS1302数据操作原理 DS1302在任何数据传送时必须先初始化,把RST脚置为高电平,然后把8位地址和命令字装入移位寄存器,数据在SCLK的上升沿被输入。 无论是读周期还是写周期,开始8位指定40个寄存器中哪个将被访问到。 在开始8个时钟周期,把命令字节装入移位寄存器后,另外的时钟周期在读操作时输出数据,在写操作时候写入数据。 时钟脉冲的个数在单字节方式下为8+8,在多字节方式下为8+字节数,最大可达248字节数。 如果在传送过程中置RST脚为低电平,则会终止本次数据传送,并且I/O引脚变为高阻态。 上电运行时,在Vcc≥2.5V之前,RST脚必须保持低电平。 只有在SCLK为低电平时,才能将RST置为高电平。 DS1302的引脚及内部结构图如图2.3所示。 表2.1所列为各引脚的功能[7]。 图2.3DS1032引脚及内部结构 DS1302的控制字如图2.4所示。 控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入到DS1302中。 位6如果为0,则表示存取日历时钟数据;为1则表示存取RAM数据。 位5~1(A4~A0)指示操作单位的地址。 最低有效位(位0)如果为0,则表示要进行写操作;为1表示进行读操作。 控制字节总是从最低位开始输入/输出。 表2.1DS1302引脚功能 引脚号 引脚名称 功能 1 Vcc2 主电源 2,3 X1,X2 振荡源,外接32768Hz晶振 4 GND 地线 5 复位/片选线 6 I/O 串行数据输入/输出端(双向) 7 SCLK 串行数据输入端 8 Vcc1 后备电源 76543210 1 RAM A4 A3 A2 A1 A0 RAM 图2.4DS1302的控制字 为了提高对32个地址寻址能力(地址/命令位1~5=逻辑1),可以把时钟/日历或RAM寄存器规定为多字节(burst)方式。 位6规定时钟或RAM,而位0规定读或写。 在时钟/日历寄存器中的地址9~31或RAM寄存器中的地址31不能存储数据。 在多字节方式中,读或写从地址0的位0开始。 必须按数据传送的次序写最先的8个寄存器。 但是,当以多字节方式写RAM时,为了传送数据不必写所有的31字节。 不管是否写了全部31字节,所写的每一字节都将传送至RAM。 DS1302共有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式。 其日历、时间寄存器及其控制字日表2.2所列,其中奇数为读操作,偶数为写操作。 表2.2内部寄存器地址和内容 寄存器名 命令字节 取值范围 寄存器内容 写 读 7 6 5 4 3 2 1 0 秒寄存器 80H 81H 00~59 CH 10SEC SEC 分<钟>寄存器 82H 83H 00~59 0 10MIN MIN <小>时寄存器 84H 85H 00~23或01~12 12/24 0 10A/P 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 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)。 DS1302的晶振选用32768Hz,电容推荐值为6pF。 因为振荡频率较低,也可以不接电容,对计时精度影响不大。 2.2.3时钟电路的连线图 时钟电路连接如图2.5所示。 图2.5时钟电路 2.3显示电路的设计 显示部分采用普通的共阳数码管显示,采用动态扫描,以减少硬件电路。 考虑到一次扫描19位数码管显示时会出现闪烁情况,设计时19个数码管分3排同时扫描,第一排6个数码管分别为千年、百年、十年、年、十月、月,第二排6位数码管分别为十时、时、十分、分、十秒、秒,第三排7位数码管分别为星期、阴历十月、阴历月、阴历十日、阴历日、十日、日。 显示时采用串行口输出段码,用3片74LS164来驱动3排数码管,这样扫描一次只需7ms。 显示电路连接图如图2.6所示。 图2.6显示电路 74LS164内部为8个D触发器,用以实现数据的串行移位。 74LS164的特性如表2.3所列。 表2.374LS164特性表 操作模式 输入 输出 复位 MR A B Q0 Q1~Q7 移位 L × × 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 单片机以串行口方式0(移位寄存器方式)输出数据,3片74LS16
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 控制 电子 万年历 设计
![提示](https://static.bingdoc.com/images/bang_tan.gif)