万年历 电子钟 毕业设计正文文档格式.docx
《万年历 电子钟 毕业设计正文文档格式.docx》由会员分享,可在线阅读,更多相关《万年历 电子钟 毕业设计正文文档格式.docx(28页珍藏版)》请在冰豆网上搜索。
![万年历 电子钟 毕业设计正文文档格式.docx](https://file1.bdocx.com/fileroot1/2023-2/5/d282dc0f-3538-4754-8ffe-41236b2e7d7c/d282dc0f-3538-4754-8ffe-41236b2e7d7c1.gif)
1.2课题提出
正是因为万年历有着如此的发展前途,另外本人在以前的课程设计时大多做的是硬件工作和数字电路的设计,所以选择以51单片机为核心加少量外围电路就可以实现此课题的设计。
1.3开发工具
采用面包板焊接电路,在简陋的实验条件下尽量提高万年历的精度。
应用PROTEL绘图软件绘制原理图。
利用KEIL进行程序的编译。
调试工具:
万用表,变压器,电烙铁,镊子等其他常用工具。
2.电路设计
2.1系统总体设计
按照系统设计功能的要求,初步确定设计系统由主控模块、时钟模块、显示模块、键盘接口模块共4个模块组成,电路系统构成框图如图2-1所示。
主控芯片使用51系列AT89C52单片机,时钟芯片使用美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟芯片DSl302。
采用DSl302作为主要计时芯片,可以做到计时准确。
更重要的是,DSl302可以在很小电流的后备电源(2.5-5.5V电源,在2.5V时电流小于300nA)下继续计时,并可编程选择多种充电电流来对后备电源进行慢速充电,可以保证后备电源基本不耗电。
显示模块采用普通的共阳LED数码管,键输入采用查询法实现调整功能。
图2-1电子万年历电路系统构成框图
图2-2为电子万年历电路设计原理图,系统由主控制器AT89C52、时钟芯片DSl302、串口显示电路及键盘扫描电路组成。
图2-2电子万年历电路设计原理图
2.2主控制器AT89C52
ATMEL公司生产的AT89C52单片机采用高性能的静态80C51设计,由先进工艺制造,并带有非易失性F1ash程序存储器。
它是一种高性能、低功耗的8位CMOS微处理芯片,市场应用最多。
主要性能特点有:
●8KBF1ashROM,可以擦除1000次以上,数据保存10年;
●256字节内部RAM;
●电源控制模式
——时钟可停止和恢复;
——空闲模式;
——掉电模式;
●6个中断源;
●4个中断优先级;
●4个8位I/O口;
●全双工增强型UART;
●3个16位定时/计数器,T0、T1(标准80C51)和增加的T2(捕获和比较);
●全静态工作方式:
0-24MHz。
2.3时钟电路DSl302
1.DS1302的性能特点
●实时时钟,可对秒、分、时、日、星期、月以及带闰年补偿的年进行计数;
●用于高速数据暂存的31×
8位RAM;
●最少引脚的串行I/O;
●2.5-5.5V电压工作范围;
●2.5V时电流小于300nA;
●用于时钟或RAM数据读/写的单字节或多字节(脉冲方式)数据传送方式;
●简单的3线接口;
●可选的慢速充电(至Vcc1)的能力。
DS1302时钟芯片包括实时时钟/日历和3l字节的静态RAM。
它经过一个简单的串行接口与微处理器通信。
实时时钟/日历提供秒、分、时、日、星期、月和年等信息。
对于小于31天的月利月末的日期自动进行调整,还包括闰年校正的功能。
时钟的运行可以采用24H或带AM(上午)/PM(下午)的12H格式。
采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。
DSl302有主电源/后备电源双电源引脚。
Vcc1在单电源与电池供电的系统中提供低电源,并提供低功率的电池备份。
Vcc2在双电源系统中提供主电源,在这种运行方式中,Vcc1连接到备份电,以便在没有主电源的情况下能保存时间信息以及数据。
DS1302由Vcc1或Vcc2中较大者供电。
当Vcc2大于Vcc1+0.2v时,Vcc2给DSl302供电;
当Vcc2小于Vcc1时,DSl302由Vcc1供电。
2.DSl302数据操作原理
DSl302在任何数据传送时必须先初始化,把RST脚置为高电平,然后把8位地址和命令字装入移位寄存器,数据在SCLK的上升沿被输入。
无论是读周期还是写周期,开始8位指定40个寄存器中哪个将被访问到。
在开始8个时钟周期,把命令字节装入移位寄存器之后,另外的时钟周期在读操作时输出数据,在写操作时写人数据。
时钟脉冲的个数在单字节方式下为8加8,在多字节方式下为8加字节数,最大可达248字节数。
如果在传送过程中置RST脚为低电平,则会终止本次数据传送,并且I/O引脚变为高阻态。
上电运行时,在Vcc≥2.5V之前,RST脚必须保持低电平。
只有在SCLK为低电平时,才能将RST置为高电平。
DS1302的引脚及内部结构图如图2-3所示。
图2-3DS1302引脚及内部结构
DSl302的控制字如图2-4所示。
控制字节的最高有效位(位7)必须是逻辑1;
如果它为0,则不能把数据写入到DSl302中。
位6如果为0,则表示存取日历时钟数据;
为1表示存取RAM数据。
位5-1(A4-A0)指示操作单元的地址。
最低有效位(位0)如为0,表示要进行写操作;
为1表示进行读操作。
控制字节总是从最低位开始输入/输出。
为了提高对32个地址的寻址能力(地址/命令位1~5为逻辑1),可以把时钟/日历或RAM寄存器规定为多字节(burst)方式。
位6规定时钟或RAM,而位0规定读或写。
在时钟/日历寄存器中的地址9-31或RAM寄存器中的地址31不能存储数据。
在多字节方式中,读或写从地址0开始。
必须按数据传送的次序写最先的8个寄存器。
但是,当以多字节方式写RAM时,为了传送数据不必写所有31字节。
所写的每一字节都将传送至RAM。
图2-4DS1302的控制字
DSl302共有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式。
其日历、时间寄存器及其控制字见表2-2,其中奇数为读操作,偶数为写操作。
时钟暂停:
秒寄存器的位7定义位时钟暂停位。
当它为1时,DS1302停止振荡,进入低功耗的备份方式。
通常在对DSl302进行写操作时(如进入时钟调整程序),停止振荡。
当它为0时,时钟将开始启动。
AM-PM/12-24时方式:
时寄存器的位7定义为12或24时方式选择位。
它为高电平时,选择12时方式。
在此方式下,位5是AM/PM位,此位是高电平时表示PM,低电平表示AM。
在24时方式下,位5为第二个时位(20-23h)。
表2-2内部寄存器地址和内容
DSl302的晶振选用32.768kHz,电容值为6PF,因为振荡频率较低,也可以不接电容,对计时精度影响不大。
2.4显示电路的设计
显示部分采用普通的共阳数码管显示,采用动态扫描,以减少硬件电路。
考虑到一次扫描19位数码管显示时会出现闪烁情况,设计时19个数码管分3排同时扫描。
第一排6个数码管分别为千年、百年、十年、年、十月、月,第二排7位数码管分别为星期、阴历十月、阴历月、阴历十日、阴历日、阳历十日、阳历日,第三排6位数码管分别为十时、时、十分、分、十秒、秒。
显示时采用串行口输出段码,用3片74LS164来驱动3排数码管,这样扫描一次只需7ms。
74LS164内部为8个D触发器,用以实现数据的串行移位,74LS164特性见表2-3。
单片机以串行口方式0(移位寄存器方式)输出数据,3片74LSl64作为3排共阳数码管的串/并转换显示接口。
74LS164为TTL单向8位移位寄存器,可实现串行输入,并行输出。
其中A、B(第1、2脚)为串行数据输入端,2个引脚按逻辑“与”运算规律输入信号,共一个输入信号时可并接,共同作为输入脚。
CP(第8脚)为时钟输入端,可连接到串行口的TXD端。
每一个时钟信号的上升沿加到CP端时,移位寄存器移一位。
8个时钟脉冲过后,8位二进制数全部移入74LSl64中。
MR脚(第9脚)为复位端,当该脚为低电平时,移位寄存器各位复0;
只有当它为高电平时,时钟脉冲才起作用。
Q1-Q8(第3-6和10-13引脚)并行输出端分别接数码管的h-a(因为串行口从低位开始传送)各段对应的引脚上。
在给出了8个脉冲后,最先进入74LS164的第1个数据到达最高位。
再来1个脉冲,第1个数据就会从最高位移出,进入下个74LS164的第1位。
3片74LS164首尾相串,而时钟端则接在一起。
这样,当输入8个脉冲时,从单片机RXD端输出的第1字节数据就进入了第1片74LSl64中,而当第2个8个脉冲到来后,第l字节数据就进入了第2片74LSl64,而随后的第2字节的数据则进入了第1片74LS164。
这样,当第3个8个脉冲完成后,首次送出的数据被送到了最下面的74LS164(第3片)中,其它数据依次出现在第二和第一片74LS164中,实现了数据在74LS164中的串行输入、并行输出。
表2-374LS164特性表
在方式0状态下,串行口为同步移位寄存器方式,其波特率是固定的,为fosc/12。
数据由RXD(P3.0)端输入或输出,同步移位脉冲由TXD(P3.1)端输出。
发送、接收数据时低位在先。
所以,根据本设计提供的硬件电路图,在编写程序时,查共阳数码管的段码数据时应该将正常的共阳数码管0-9的二进制值按位反序排序,如原来的二进制为11000000(C0H),要改为00000011(03H),就能使数码管正常显示。
2.5键盘接口的设计
由于按键只有2个,用普通按钮接10k上拉电阻,用查询法完成读键功能。
2.6AT89C52单片机性能及特点
(1)与MCS-51微控制器产品系列兼容。
(2)片内有8KB可在线重复编程的快闪擦写存储器(FlashMemory)。
(3)存储器可循环写入/擦除1000次。
(4)存储数据保存时间为10年。
(5)工作电压范围:
Vcc可为2.7V~6V。
(6)全静态工作:
可从0Hz到16MHz。
(7)程序存储器具有3级加密保护。
(8)128﹡8位内部RAM。
(9)32条可编程I/O线。
(10)两个16位定时器/计数器。
(11)中断结构具有5个中断源和2个优先级。
(12)可编程全双工串行通道。
(13)空闲状态维持低功耗和掉电状态保存存储内容。
2.6.1振荡器特性
XTAL1和XTAL2分别为反向放大器的输入和输出,该反向放大器可以配置为片内振荡器。
石英振荡和陶瓷振荡均可采用,如采用外部时钟源驱动器件,XTAL2应不接。
由于输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
2.6.2芯片擦除
整个EPROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms来完成。
在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。
此外,AT89C52单片机设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。
在闲置模式下,CPU停止工作,但RAM,定时器,计数器,串口和中断系统仍在工作。
在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。
为了满足一些应用系统的特殊要求,有时要进行一些系统的扩展设计以弥补单片机内部资源的不足。
单片机的扩展系统通过并行I/O接口或串行I/O接口做总线,在外部扩展程序存储器、数据存储器或输入/输出接口及其他功能部件以满足一些控制系统的特殊要求,AT89C52单片机的扩展系统结构如图2-5所示。
图2-5AT89C52单片机扩展系统结构
2.6.3AT89C52单片机的引脚
AT89C52单片机采用40条引脚双列直插式器件,引脚除5V(
40脚)和电源地(
20脚)外,其功能分为时钟电路、控制信号、输入/输出三大部分,引脚图如图2-6所示。
图2-6AT89C52单片机引脚图
AT89C52单片机的内部硬件结构中除了程序存储器由EEPROM取代了87C52单片机的EPROM外,其余部分完全相同,其管脚说明如下:
(1)VCC:
供电电压。
(2)GND:
接地。
(3)时钟电路。
XTAL1(19脚)——芯片内部振荡电路(单级反相放大器)输入端。
XTAL2(18脚)——芯片内部振荡电路(单级反相放大器)输出端。
(4)控制信号。
RST(9脚)复位信号:
时钟电路工作后,在此引脚上将出现两个机器周期的高电平,芯片内部进行初始复位,P0口~P3口输出高电平,将初值07H写入堆栈指针。
ALE(30脚)地址锁存信号:
当访问外部存储器时,P0口输出的低8位地址由ALE输出的控制信号锁存到片外地址锁存器,P0口输出地址低8位后,又能与片外存储器之间传送信息。
另外,ALE可驱动4个TTL门。
(29脚)片外程序存储器读选通:
低电平有效,
作为程序存储器的读信号,输出负脉冲,将相应的存储单元的指令读出并送到P0口,
可驱动8个TTL门。
/Vpp(30脚):
当
为高电平且PC值小于0FFFH时,CPU执行内部程序存储器程序;
为低电平时,CPU仅执行外部程序存储器程序。
(5)I/O接口
P0口(P0.0~P0.7,39~32脚)三态双向口:
P0口结构包括一个输出锁存器、两个三态缓冲器、一个输出驱动电路和一个输出控制端。
P0口做地址/数据复用总线使用。
若从P0口输出地址数据信息,此时控制端为高电平,若从P0口输入数据指令信息时,引脚信号应从输入三态缓冲器进入地址总线,它可驱动8个TTL门。
P0~P3口上的“读-修改-写”功能,其操作是先将字节的全部8位数读入,再通过指令修改某些位,然后将新的数据写回到口锁存器中。
P1口(P1.0~P1.7,1~8脚)准双向口:
P1口做通用I/O接口使用,P1口的每一位口线能独立地作用于输入线,P1口可驱动4个TTL门。
P2口(P2.0~P2.7,21~28脚)通用I/O接口:
它做通用I/O接口使用时,是一个准双向口,此时转换开关MUX倒向左边,输出极与锁存器相连,引脚可作为用户I/O口线使用,输入/输出操作与P1口完全相同,P2口做地址总线使用。
当系统接有外部存储器时,P2口用于输出高8位地址A8~A15,这时在CPU控制下,转换开关MUX倒向右边,接通内部地址总线。
P2口的口线状态取决于片内输出的地址信息,这些信息来源于PC、DPTR等。
在外接程序存储器中,由于访问外部存储器操作连续不断,P2口不断送出地址高8位。
AT89C52单片机的P2口一般只做地址总线使用,不做I/O接口直接连外部设备使用。
P3口(P3.0~P3.7,10~17脚)双功能口:
P3口做通用I/O接口使用,输出功能控制线为高电平,与非门的输出取决于锁存器的状态,此时锁存器Q端的状态与其引脚状态是一致的。
在这种情况下,P3口的结构和操作与P1口相同。
P3口第二功能是可作为系统具有控制功能的控制线,另外P3口可驱动4个LSTTL门电路。
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流,这是由于上拉的缘故。
P3口也可作为AT89C52的一些特殊功能口使用如:
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.6.4单片机存储器
单片机在存储器的设计上,其共同特点是将程序存储器与数据存储器分开,它们有各自的寻址方式。
AT89C52单片机片内具有数据存储器,同时还具有强大的外部存储器扩展能力,存储器是单片机系统中的重要组成部分。
在一片芯片内除了许多基本的记忆单元构成的存储矩阵外,还包括译码驱动电路,读写电路等。
图2-7为半导体存储器芯片的基本结构框图。
图2-7半导体存储器芯片的基本结构框图
(1)单片机存储器分类
MCS-51系列单片机的存储器可分五类:
程序存储器、内部数据存储器、特殊功能寄存器、位寻址区、外部数据存储器I/O接口。
程序存储器:
存放程序的存储器称为程序存储器。
程序存储器是以程序计数器PC做地址指针的,MCS-51单片机的程序计数器为16位,因此可寻址的空间为64KB。
AT89C52系统中没有片内程序存储器,0000H~0FFFH都是外部程序存储器空间。
内部数据存储器:
MCS-51单片机内部有128B的数据存储器RAM,内部数据存储器的编址为00H~7FH。
不同的地址区域内,功能不完全相同。
单片机结构的特点之一是工作寄存器与数据存储器统一编址。
MCS-51内部RAM的00H~1FH为工作寄存器区,共分4个区,每区有8个寄存器。
当前程序使用的工作寄存器区,是由状态字PSW的第3、4位指示的,PSW的状态和工作寄存器区的关系如表2-4所示。
表2-4PSW的状态和工作寄存器区的关系
PSW.4(RS1)
PSW.3(RS0)
当前使用的工作寄存器区(R0~R7)
0区(00H~07H)
1
1区(08H~0FH)
2区(10H~17H)
3区(18H~1FH)
(2)特殊功能寄存器区
AT89C52内的I/O锁存器、定时器、串行接口数据缓冲器以及各种控制状态寄存器和状态寄存器都是以特殊功能寄存器的形式出现的,它们零散地分布于80H~FFH的地址空间范围内,特殊功能寄存器具有各自的地址空间映像。
(3)位寻址空间
MCS-51的位寻址空间为00H~7FH,为内部RAM中20H~2FH的16个单元的128位,凡是字节地址能被8整除的特殊功能寄存器都具有位地址,它们零散地分布在80H~FFH的空间内。
(4)外部数据存储器I/O接口
AT89C52提供了扩展64KB的外部数据存储器和输入/输出口的能力,具有十分广泛的应用。
2.7LED选型
LED数码管根据LED的接法不同分为共阴和共阳两类,了解LED的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。
图2-8(a)是共阴和共阳极数码管的内部电路图,它们的发光原理是一样的,只是它们的电源极性不同而已。
将多只LED的阴极连在一起即为共阴式,而将多只LED的阳极连在一起即为共阳式。
以共阴式为例,如把阴极接地,在相应段的阳极接上正电源,该段即会发光。
当然,LED的电流通常较小,一般均需在回路中接上限流电阻。
假如我们将"
b"
和"
c"
段接上正电源,其它端接地或悬空,那么"
段发光,此时,数码管显示将显示数字“1”。
而将"
a"
、"
d"
e"
g"
段都接上正电源,其它引脚悬空,此时数码管将显示“2”。
其它数字的显示原理与此类同。
LED的7段数码管利用单只LED组合排列成“8”字型的数码管,分别引出它们的电极,点亮相应的点划来显示出0-9的数字。
在这次的设计中采用的均是共阳极的LED显示,当I/O口输出为低电平的时候,对应段就被点亮。
LED数码管的结构图如图2-8(b)所示。
(a)
(b)
图2-8LED分类结构图和结构图
这次设计的显示部分采用AT89C52单片机动态扫描完成,
在多数的应用场合中,我们并不希望使用多I/O端口的单片机,原则上是使用尽量少引脚的器件。
在没有富余端口的情况下,应通过优化设计程序和扩展电路达到预期的目的。
动态扫描的频率有一定的要求,频率太低,LED将出现闪烁现象。
如频率太高,由于每个LED点亮的时间太短,LED的亮度太低,肉眼无法看清,所以一般均取几个ms左右为宜,这就要求在编写程序时,选通某一位LED使其点亮并保持一定的时间,程序上常采用的是调用延时子程序。
(1)
静态显示电路
LED显示器工作在静态显示时,其公共阳极(或阴极)接VCC(或GND),一直处于显示有效状态,所以每一位的显示内容必须由锁存器加以锁存,显示各位相互独立。
(2)动态显示电路
将所有位的段选线的同名端连在一起,由一个8位I/O口控制,形成段选线的多位复用。
而各位的公共阳极或公共阴极则分别由相应的I/O口线控制,实现各位的分时选通,即同一时刻只有被选通位是能显示相应的字符,而其他所有位都是熄灭的。
由于人眼有视觉暂留现象,只要每位显示间隔足够短,则会造成多位同时点亮的假象。
这就需要单片机不断地对显示进行控制,CPU需要不断地进行显示刷新,动态显示电路见图2-9所示。
图2-9五位LED数码管的动态显示
2.874LS164应用
在单片机系统中,
如果并行口的I/O资源不够,而串行口又没有其他的作用,
那么我们可以用74LS164来扩展并行I/O口,节约单片机资源。
74LS164是一个串行输入并行输出的移位寄存器。
并带有清除端。
其中,Q0-Q7
并行输出端
。
A,B串行输入端。
MR
清除端,
为0时,输出清零。
CP
时钟输入端。
74LS