电子万年历课程设计报告..doc
- 文档编号:567946
- 上传时间:2023-04-29
- 格式:DOC
- 页数:32
- 大小:1.38MB
电子万年历课程设计报告..doc
《电子万年历课程设计报告..doc》由会员分享,可在线阅读,更多相关《电子万年历课程设计报告..doc(32页珍藏版)》请在冰点文库上搜索。
赣南师院
物理与电子信息学院
课程设计报告书
姓名:
张华宾
班级:
13电气工程及其自动化
学号:
130806058
时间:
2015.10.30
目录
1设计任务和要求 2
2方案论证 2
2.1方案比较 2
2.1.1方案一 2
2.1.2方案二 3
2.2方案选择 3
3系统硬件设计 3
3.1主控电路的设计 3
3.1.1关于AT89C51单片机 3
3.1.2振荡器电路的设计 6
3.1.3复位电路的设计 7
3.2DS1302时钟电路 9
3.3LCD1602液晶显示的设计 11
4软件设计 12
4.1主控程序的设计 12
4.2DS1302时钟电路流程设计 13
4.3LCD显示电路和按键流程设计 14
5系统测试结果及分析 15
5.1测试方法 15
5.2测试结果及分析 15
6结束语与心得体会 15
参考文献 16
附录1 16
附录2 30
设计题目
电子万年历的设计
设计要求
基本要求:
(1)具有显示年、月、日、星期、时、分、秒等功能;
(2)万年历具有闰月识别显示功能;
(3)具备年、月、日、星期、时、分、秒校准功能;
设计过程
摘要:
本次课程设计以实现电子万年历,即在利用LCD电路进行显示年、月、日、星期、时、分、秒等功能。
本设计要求利用AT89C51作为主控芯片完成主控电路的设计,辅助电路要求包括显示电路、时钟电路、按键电路等。
本系统使用了专门的时钟芯片DS1302,读出其时间在LCD1602上显示,并能通过按键对其进行调时和校准。
关键字:
AT89C51单片机、DS1302,LCD1602,电子万年历
1.设计任务和要求
(1)应用AT89S52单片机设计单片机实现对DS1302的控制
(2).选用LCD1602显示,实时显示年、月、日、星期、时、分、秒,采用按键式实现时钟对表和快慢调整;
(3)硬件设计部分,根据设计的任务选定合适的单片机,根据控制对象设计接口电路。
设计的单元电路必须有工作原理,器件的作用,分析和计算过程;
(4)软件设计部分,根据电路工作过程,画出软件流程图,根据流程图编写相应的程序,进行调试并打印程序清单;
(5)原理图设计部分,根据所确定的设计电路,利用Protel99se和Protues工具软件绘制电路原理图。
2.方案论证
2.1方案比较
2.1.1方案一
电子万年历的设计,硬件控制电路主要用了AT89C51芯片处理器、数码管显示器。
根据各自芯片的功能互相连接成电子万年历的控制电路。
软件控制程序主要有主控程序、电子万年历的时间控制程序等组成。
原理框图如图2.1所示。
AT89C51单片机最小系统模块
按键模块
数码管显示模块
图2.1方案1原理框图
(1)控制按键:
用于手动控制、手动调整、预置值的输入等
(2)输出显示:
数码管显示。
2.1.2方案二
硬件控制电路主要用了AT89C51芯片处理器、LCD1602显示器、DS1302实时时钟。
根据各自芯片的功能互相连接成电子万年历的控制电路。
软件控制程序主要有主控程序、电子万年历的时间控制程序等组成。
原理图框图如图2.2所示。
AT89C51单片机最小系统模块
按键模块
1602液晶显示模块
DS1302模块
图2.2方案二原理框图
本系统使用8052作为CPU,由CPU来控制时钟芯片DS1302,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高,工作电压2.5V~5.5V范围内。
液晶显示方式显示功能强,效果直观。
2.2方案选择
将方案一与方案二进行比较:
LED数码管动态扫描。
相对于液晶显示比较经济实惠,但液晶显示比数码管显示美观,LED数码管在操作上比较繁琐。
液晶显示方式显示功能强,效果直观。
方案一:
直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。
采用此种方案虽然减少芯片的使用,节约成本,但是,实现的时间误差较大。
所以不采用此方案。
方案二:
采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高,工作电压2.5V~5.5V范围内。
综上所述,在价格、功能、操作的难易程度方面选择方案二。
3.系统硬件设计
公交车报站系统主要由四个部分组成,即主控电路、时钟电路、LCD液晶显示电路。
各部分电路的设计在本章中做了详细的说明。
3.1主控电路的设计
3.1.1关于AT89C51单片机
AT89C51单片机的结构框图如图3.1所示。
它主要由下面几个部分组成:
1个8位中央处理单元(CPU)、片内Flash存储器、片内RAM、4个8位的双向可寻址I/O口、1个全双工UART(通用异步接收发送器)的串行接口、2个16位的定时器/计数器、多个优先级的嵌套中断结构,以及一个片内振荡器和时钟电路。
在AT89C单片机结构中,最显著的特点是内部含有Flash存储器,而在其他方面的结构,则和Inter公司的8051的结构没有太大的区别。
CPU
中断控制
振荡器
片内
Flash
存储器
总线控制
片内
RAM
4I/O端口
ETC
定时器1
定时器0
串行端口
外部
中断
P0P2P1P3
地址/数据
TXDRXD
计数器
输入
图3.1AT89C51单片机的结构框图
(1)主要性能
与MCS-51兼容;4K字节可编程闪烁存储器;1000次写/擦循环;数据保留时间10年;全静态工作:
0Hz-24Hz;三级程序存储器锁定;128*8位内部RAM;32可编程I/O线;;两个16位定时器/计数器;6个中断源;可编程串行通道;片内振荡器和时钟电路
另外,AT89C51是用静态逻辑来设计的,其工作频率可下降到0Hz,并提供两种可用软件来选择的省电方式——空闲方式(IdleMode)和掉电方式(PowerDownMode)。
在空闲方式中,CPU停止工作,而RAM、定时器/计数器、串行口和中断系统都继续工作。
在掉电方式中,片内振荡器停止工作,由于时钟被“冻结”,使一切功能都暂停,故只保存片内RAM中的内容,直到下一个硬件复位为止。
(2)引脚功能说明
AT89C51引脚图如图3.2所示。
图3.2AT89C51引脚图
VCC:
供电电压。
VSS:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8个TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,口管脚备选功能:
P3.0RXD(串行输入口);P3.1TXD(串行输出口);P3.2/INT0(外部中断0);P3.3/INT1(外部中断1);P3.4T0(记时器0外部输入);P3.5T1(记时器1外部输入);P3.6/WR(外部数据存储器写选通);P3.7/RD(外部数据存储器读选通);P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
.
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
3.1.2振荡器电路的设计
89系列单片机的内部振荡器电路如图3.3所示,由一个单级反相器组成。
XTAL1为反相器的输入,XTAL2为反相器的输出。
可以利用它内部的振荡器产生时钟,只要在XTAL1和XTAL2引脚上外接一个晶体及电容组成的并联谐振电路,便构成一个完整的振荡信号发生器,如图3.5示,此方法称为内部方式。
XTAL2
XTAL1
内部定时
/PD
400
D1
D2
Q1
Rf
Q2
VCC
Q3
Q4
图3.3AT89C51单片机内部振荡器电路
另一种使用方法如图3.4示,由外部时钟源提供一个时钟信号到XTAL1端输入,而XTAL2端浮空。
在组成一个单片机应用系统时,多数采用图3.5所示的方法,这种方式的结构紧凑,成本低廉,可靠性高。
振荡器的等效电路如图3.5上部所示。
在图中给出了外接元件,即外接晶体及电容C1,C2,并组成并联谐振电路。
在电路中,对电容C1和C2的值要求不是很严格,如果用高质的晶振,则不管频率为多少,C1,C2通常都选择30pF。
有时,在某些应用场合,为了降低成本,晶体振荡器可用陶瓷振荡器代替。
如果使用陶瓷振荡器,则电容C1,C2的值取47pF。
XTAL2
XTAL1
GND
NC
CMOS门
外部振荡信号
图3.4外部时钟接法
XTAL1
XTAL2
89系列单片机
GND
内部定时
VCC
/PD
Rf
石英晶体或
陶瓷振荡器
C1
C2
图3.5片内振荡器等效电路
通常,在单片机中对所使用的振荡晶体的参数要求:
ESR(等效串联电阻):
根据所需频率按图366选取。
C0(并联电容):
最大7.0pF。
CL(负载电容):
30pF+3pF。
其误差及温度变化的范围要按系统的要求来确定。
600
500
400
300
200
100
0481216
图3-6ESR与频率的关系曲线
在本设计中,采用的是内部方式,即如图3.5所示,在XTAL1和XTAL2引脚上外接一个12MHZ的晶振及两个30pF的电容组成。
3.1.3复位电路的设计
89系列单片机与其他微处理器一样,在启动的时候都需要复位,使CPU及系统各部件处于确定的初始状态,并从初始状态开始工作。
89系列单片机的复位信号是从RST引脚输入到芯片内的施密特触发器中的。
当系统处于正常工作状态时,且振荡器稳定后,如RST引脚上有一个高电平并维持2个机器周期(24个振荡周期),则CPU就可以响应并将系统复位。
复位时序如图3.7所示,因外部的复位信号是与内部时钟异步的,所以在每个机器周期的S5P2都对RST引脚上的状态采样。
当在RST端采样到“1”信号且该信号维持19个振荡周期以后,将ALE和/PSEN接成高电平,使器件复位。
在RST端电压变低后,经过1-2个机器周期后退出复位状态,重新启动时钟,并恢复ALE和/PSEN的状态。
如果在系统复位期间将ALE和/PSEN引脚拉成低电平,则会引起芯片进入不定状态。
|S5|S6|S1|S2|S3|S4|S5|S6|S1|S2|S3|S4|S5|S6|S1|S2|S3|
RST:
INSTADDRINSTADDRINSTADDRINSTADDRINSTADDRINST
ALE:
/PSEN:
P0:
11振荡周期
19振荡周期
图3.7内部复位定时时序
(1)手动复位
手动复位需要人为在复位输入端RST上加入高电平。
一般采用的办法是在RST端和正电源VCC之间接一个按钮。
当人为按下按钮时,则VCC的+5V电平就会直接加到RST端。
由于人的动作很快也会使按钮保持接通达数十毫秒,所以,保证能满足复位的时间要求。
手动复位的电路如图3.8所示。
Vcc
AT89C51
RST
GND
8.2k
10uF
+
Vcc
图3.8手动复位电路
(2)上电复位
AT89C51的上电复位电路如图3.9所示,只要在RST复位输入引脚上接一电容至VCC端,下接一个电阻到地即可。
对于CMOS型单片机,由于在RST端内部有一个下拉电阻,故可将外部电阻去掉,而将外接电容减至1uF。
上电复位的过程是在加电时,复位电路通过电容加给RST端一个短暂的高电平信号,此高电平信号随着Vcc对电容的充电过程而逐渐回落,即RST端的高电平信号必须维持足够长的时间。
上电时,Vcc的上升时间约为10ms,而振荡器的起振时间取决于振荡频率,如晶振频率为10MHz,起振时间为1ms;晶振频率为1MHz,起振时间则为10ms。
在图3.8的复位电路中,当Vcc掉电时,必然会使RST端电压迅速下降到0V以下,但是,由于内部电路的限制作用,这个负电压将不会对器件产生损害。
另外,在复位期间,端口引脚处于随机状态,复位后,系统将端口置为全“1”态。
如果系统在上电时得不到有效的复位,则在程序计数器PC中将得不到一个合适的初值,因此,CPU可能会从一个未被定义的位置开始执行程序。
Vcc
AT89C51
RST
8.2k
10uF
+
Vcc
GND
图3.9上电复位电路
3.2DS1302时钟电路
DS1302是美国DALLAS公司推出的一种高性能、低功耗的实时时钟芯片,附加31字节静态RAM,采用SPI三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。
实时时钟可提供秒、分、时、日、星期、月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。
工作电压宽达2.5~5.5V。
采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后背电源进行小电流充电的能力。
DS1302的外部引脚分配如图3.3所示。
DS1302用于数据记录,特别是对某些具有特殊意义的数据点的记录上,能实现数据与出现该数据的时间同时记录,因此广泛应用于测量系统中。
图3.10DS1302的外部引脚分配
各引脚的功能为:
Vcc1:
主电源;Vcc2:
备份电源。
当Vcc2>Vcc1+0.2V时,由Vcc2向DS1302供电,当Vcc2 SCLK: 串行时钟,输入,控制数据的输入与输出; I/O: 三线接口时的双向数据线; : 输入信号,在读、写数据期间,必须为高。 该引脚有两个功能: 一、开始控制字访问移位寄存器的控制逻辑;二、提供结束单字节或多字节数据传输的方法。 (1)DS1302的工作原理 DS1302工作时为了对任何数据传送进行初始化,需要将复位脚(RST)置为高电平且将8位地址和命令信息装入移位寄存器。 数据在时钟(SCLK)的上升沿串行输入,前8位指定访问地址,命令字装入移位寄存器后,在之后的时钟周期,读操作时输出数据,写操作时输出数据。 时钟脉冲的个数在单字节方式下为8+8(8位地址+8位数据),在多字节方式下最多可达248的数据。 (2)DS1302的寄存器和控制命令 DS1302有关日历、时间的寄存器共有12个,其中有7个寄存器(读时81h~8Dh,写时80h~8Ch),存放的数据格式为BCD码形式,如表3.3所示。 表3.3DS1302有关日历、时间的寄存器 读寄存器 写寄存器 BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 范围 81h 80h CH 10秒 秒 00-59 83h 82h 10秒 分 00-59 85h 84h 12/24 0 10 时 时 1-12/0-23 AM/PM 87h 86h 0 0 10日 日 1-31 89h 88h 0 0 0 10月 月 1-12 8Bh 8Ah 0 0 0 0 0 周日 1-7 8Dh 8Ch 10年 年 00-99 8Fh 8Eh WP 0 0 0 0 0 0 0 — DS1302内部的RAM分为两类,一类是单个RAM单元,共31个,每个单元为一个8位的字节,其命令控制字为COH~FDH,其中奇数为读操作,偶数为写操作;再一类为突发方式下的RAM,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。 (3)与单片机接口电路原理图 电路原理图如图3.4所示,DS1302与单片机的连接也仅需要3条线: CE引脚、SCLK串行时钟引脚、I/O串行数据引脚,Vcc2为备用电源,外接32.768kHz晶振,为芯片提供计时脉冲。 图3.11DS1302与单片机的连接电路原理图 3.3LCD1602液晶显示的设计 1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。 它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形。 602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。 管脚功能: 第1脚: GND为电源地;第2脚: VCC接5V电源正极;第3脚: V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。 第4脚: RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。 第5脚: RW为读写信号线,高电平 (1)时进行读操作,低电平(0)时进行写操作。 第6脚: E(或EN)端为使能(enable)端,高电平 (1)时读取信息,负跳变时执行指令。 第7~14脚: D0~D7为8位双向数据端。 第15~16脚: 空脚或背灯电源。 15脚背光正极,16脚背光负极。 特性 3.3V或5V工作电压,对比度可调内含复位电路提供各种控制命令,如: 清屏、字符闪烁、光标闪烁、显示移位等多种功能有80字节显示数据存储器DDRAM内建有192个5X7点阵的字型的字符发生器CGROM8个可由用户自定义的5X7的字符发生器CGRAM 特征应用 微功耗、体积小、显示内容丰富、超薄轻巧,常用在袖珍式仪表和低功耗应用系统中。 电路原理图如图3.5所示, 图3.12LCD1602与单片机的连接电路原理图 4软件设计 4.1主控程序的设计 系统总体流程图如图4.1所示,系统流程图设计分析如下: 首先,设备上电以后,程序开始运行。 进入主函数后,开始对系统的一些初始化。 当有设置键按下时进入时间修改模式,无按键按下时读取时间等数据送入显示器显示。 在时间修改模式下设置时间完成后再将时间送入时钟芯片之后再送如显示器显示。 图4.1整体流程图 4.2DS1302时钟电路流程设计 时钟流程图如图4.2所示,流程图分析: DS1302开始计时时,首先进行初始化,当有中断信号时,读取时钟芯片的时间数据送入液晶显示。 这时若有设置键按下,进行时间修改,完成后将时间数据送入1302芯片,若没有按键按下,直接送入EPROM中,送入液晶显示。 4.2DS1302时钟电路程序流程图图4.3LCD显示程序流程图 4.3LCD显示电路和按键流程设计 显示流程图如图4.3,4.4所示,流程图分析如下: 首先对1602显示屏进行初始化(初始化大约持续10ms),然后检查忙信号,若BF=0,则获得显示RAM地址,写入相应的数据显示。 若BF=1,则代表模块正在进行内部操作,不接受任何外部指令和数据,直到BF=0为止。 从图4.4可知,调整年月日星期的流程,主要是要注意年月日星期的范围大小。 如果我们按下了调整键,当我们按下时间加一键时,相应的位置上时间将会加一,同样的当我们按下减一键时,相应位置上的时间也会减一。 比如我们时间调整正好在星期的位置上,当我们按下S1键时,我们可以看到星期加一,当我们按下S2键的时候,我们可以看到星期减一。 同样的,对于年月日也是同样的调整,当我们按下复位键时,所以的时间将复位。 整个系统的主要程序的流程如上述程序流程图所示,而程序的清单见附录1。 图4.4时间调整流程二 5系统测试结果及分析 5.1测试方法 首先准备好一个5v的直流电源,为本系统加上电源。 一上电,可以看到LCD1602液晶上会显示年,月,日,星期,时,分,秒。 同时也可以看到时钟在走。 这个时候我们按下时钟调整键,进行时钟的调整。 5.2测试结果及分析 系统加上电源,我们可以看到了LCD602液晶上会显示年,月,日,星期,时,分,秒以。 同时也可以看到时钟在走。 这个时候我们按下时钟调整键,进行时钟的调整。 测试后可以正确的调整时钟。 6结束语与心得体会 本次设计中在最初的设计中,对于51单片机进行了充分的了解。 程序编写中,由于思路不清晰,开始时遇到了很多的问题,通过和老师及同学的讨论,以及对大量书籍资料和论坛中成功的品进行借鉴,明白了编程中的的主要算法和实现,从而解决问题。 对于液晶屏幕,开始并不是
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子 万年历 课程设计 报告