基于单片机的电子日历钟设计.docx
- 文档编号:7860467
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:20
- 大小:341.14KB
基于单片机的电子日历钟设计.docx
《基于单片机的电子日历钟设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的电子日历钟设计.docx(20页珍藏版)》请在冰豆网上搜索。
基于单片机的电子日历钟设计
研究生
课程学习报告
课程名称:
单片机
题目:
电子日历钟
学生姓名:
学号:
年级/专业:
机械电子工程
学院(直属系):
机械工程与自动化学院
指导教师:
黄维公
电子日历钟设计
摘要
用单片机控制时间的读取并显示在液晶屏幕上面,并可通过按键实现对时间的修改。
文中详细论述了电子日历钟设计原理、使用的各芯片的介绍,阐明了本实例所使用的设计方案、详细的电路图以及电子程序。
关键词:
电子日历钟单片机DS1302LCD1602
目录
摘要................................................2
1前言.................................................5
1.1设计任务.............................................5
1.2 本设计的应用意义.....................................5
2总体设计方案.............................................5
2.1 设计原理及相关说明................................5
2.2 总体设计框图...............................................5
2.3 电子日历钟电路图......................................5
2.4 电子日历钟程序......................................5
3芯片设计及对其的调用..........................................6
3.1 DS1302实时时钟电路....................................6
3.1.1引言...................................6
3.1.2DS1302的结构及工作原理............................6
3.1.3引脚功能及结构...................................6
3.1.4DS1302的控制字节...................................6
3.1.5数据输入输出(I/O)...................................6
3.1.6DS1302的寄存器...................................7
3.2 LCD1602字符型液晶模块....................................7
3.2.1LCD1602模块介绍...................................7
3.2.2LCD1602的一些参数及操作指令..........................9
3.3 AT89C51芯片.................................10
3.3.1芯片介绍...................................10
3.3.2主要特性...................................11
3.3.3管脚说明...................................11
3.3.4振荡器特性...................................12
4系统调试...........................................12
4.1 硬件电路调试.........................................12
4.2 软件程序调试.........................................12
4.2.1 调试的主要方法.................................12
4.2.2 调试中遇到的问题.................................12
4.3 综合调试.............................................12
致谢...........................................................13
参考文献.......................................................14
附录A:
电子日历钟电路图....................................15
附录B:
程序清单...................................................16
1前言
1.1设计任务
本设计实现一个小巧的电子日历钟,可以利用DS1302读取日期及时间并传至89C51,使之显示于LCD1602液晶显示屏上。
设有四个按键,可以进入设置菜单对电子日历钟进行时间设置。
开机时可以显示制作单位以及制作者名称。
1.2本设计的应用意义
此电子日历钟小巧便捷利于携带,界面清爽,一目了然,方便的使您知晓当前时间,并可对时间做出修改,实在是居家旅行日常生活之必备用品!
2总体设计方案
2.1 设计原理及相关说明
设计原理:
利用DS1302实时时钟电路芯片来读取系统中的日期以及时间信息,并利用P1.6端口将相关信息传送至AT89C51主芯片之中,利用P2端口使之显示于LCD1602液晶显示屏上,四个按键分别置于P1口的0、1、2、3端口可以对时间进行控制修改。
详细请参阅第三节的芯片介绍。
相关说明:
点击确定按键可以进入LCD屏上方显示的主菜单,点击返回按键可以退出菜单,在时间修改菜单中点击修改“小时”按键可以修改时间中的小时数,点击修改“分钟”按键可以修改时间中的分钟数。
2.2总体设计框图
电子日历钟设计框图如图2.1所示:
图2.1电子日历钟设计框图
2.3电子日历钟电路图
电子日历钟电路图请见附件A
2.3电子日历钟程序
电子日历钟程序清单请见附件B
3各芯片设计及对其的调用
3.1DS1302实时时钟电路
3.1.1引言
现在流行的串行时钟电路很多,如DS1302、DS1307、PCF8485等。
这些电路的接口简单、价格低廉、使用方便,被广泛地采用。
本文介绍的实时时钟电路DS1302是DALLAS公司的一种具有涓细电流充电能力的电路,主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。
采用普通32.768kHz晶振。
3.1.2DS1302的结构及工作原理
DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。
采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。
DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。
DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。
3.1.3引脚功能及结构
图3.1示出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始终是输入端。
3.1.4DS1302的控制字节
DS1302的控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。
3.1.5数据输入输出(I/O)
在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。
同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。
3.1.6DS1302的寄存器
DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字见下表。
寄存器名称
命令字
取值范围
各位内容
写操作
读操作
76543210
秒寄存器
80H
81H
00-59
CH10SECSEC
分寄存器
82H
83H
00-59
010MINMIN
时寄存器
84H
85H
01-12
12/24010HRHR
日寄存器
86H
87H
00-23
0010DATEDATE
月寄存器
88H
89H
01-28.29
00010MMONTH
周寄存器
8AH
8BH
30.31
00000DAY
年寄存器
8CH
8DH
01-12
10YEARYEAR
表3.1日历、时间寄存器及其控制字
此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。
时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。
DS1302与RAM相关的寄存器分为两类:
一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H~FDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。
3.2LCD1602字符型液晶模块
3.2.11602液晶模块介绍
字符型型液晶是一种用5×7点阵图形来显示字符的液晶显示器,根据显示的容量可以分为1行16个字、2行16个字、2行20个字等,最常用的为2行16个字,即我们马上要学习的1602液晶模块,下面(图3.2)就是TC1602液晶模块的正面和反面照片。
图3.2:
1602液晶模块实物照片
带背光的液晶模块TC1602EL,TC1602EL采用标准的16脚接口,其引脚功能如下:
第1脚:
VSS为电源地,接GND。
第2脚:
VDD接5V正电源。
第3脚:
VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。
第4脚:
RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:
RW为读写信号线,高电平时进行读操作,低电平时进行写操作。
当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。
第6脚:
E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:
D0~D7为8位双向数据线。
第15脚:
BLA背光电源正极(+5V)输入引脚。
第16脚:
BLK背光电源负极,接GND。
TC1602液晶模块内带标准字库,内部的字符发生存储器(CGROM)已经存储了192个5×7点阵字符,32个5×10点阵字符。
另外还有字符生成RAM(CGRAM)512字节,供用户自定义字符。
如表3.2所示,这些字符有:
阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。
表3.2:
CGROM和CGRAM中字符代码与字符图形对应关系
1602液晶模块内部的控制器共有11条控制指令,如表3.3所示。
它的读写操作、屏幕和光标的操作都是通过指令编程来实现的。
(说明:
1为高电平、0为低电平)
表3.3:
1602液晶模块内部的控制器共有11条控制指令
指令1:
清显示,指令码01H,光标复位到地址00H位置
指令2:
光标复位,光标返回到地址00H
指令3:
光标和显示模式设置I/D:
光标移动方向,高电平右移,低电平左移S:
屏幕上所有文字是否左移或者右移。
高电平表示有效,低电平则无效
指令4:
显示开关控制。
D:
控制整体显示的开与关,高电平表示开显示,低电平表示关显示C:
控制光标的开与关,高电平表示有光标,低电平表示无光标B:
控制光标是否闪烁,高电平闪烁,低电平不闪烁
指令5:
光标或显示移位S/C:
高电平时移动显示的文字,低电平时移动光标
指令6:
功能设置命令DL:
高电平时4位总线,低电平为8位总线N:
低电平为单行显示,高电平时双行显示F:
低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。
指令7:
字符发生器RAM地址设置
指令8:
DDRAM地址设置
指令9:
读忙信号和光标地址BF:
为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。
指令10:
写数据
指令11:
读数据
下面是TC1602液晶模块的一些主要技术参数:
1、逻辑工作电压(VDD):
+4.5~+5.5V
2、LCD驱动电压(VDD-VL):
+4.5~+13.0V
3、工作温度(Ta):
0~60°C(常温)/-20~75°C(宽温)
4、工作电流:
<2.0mA
5、屏幕视域尺寸:
62.5×16.1mm
3.2.2LCD1602的一些参数及操作指令
1)基本参数
其主要技术参数及引脚功能如表3.4和3.5所述。
显示容量
16×2个字符
模块最佳工作电压
5.0V
工作电压
4.8V~5.2V
字符尺寸
4.95×7.95mm
工作电流
2.0mA(5.0V)
工作温度
0~50℃
背光源
黄绿、蓝色等
背光源电流
<150mA
表3.41602主要技术参数
编号
符号
引脚说明
编号
符号
引脚说明
1
VSS
电源地
9
D2
DataI/O
2
VDD
电源正极(+5V)
10
D3
DataI/O
3
VO
LCD偏压输入
11
D4
DataI/O
4
RS
数据命令选择端
12
D5
DataI/O
5
R/W
读写控制信号
13
D6
DataI/O
6
E
使能信号
14
D7
DataI/O
7
D0
DataI/O
15
BLA
背光源正极
8
D1
DataI/O
16
BLK
背光源负极
表3.5接口信号说明
2)基本操作及时序
1602字符LCD基本操作有以下四种:
1. 读状态:
输入信号:
RS=0,RW=1,E=1 输出信号:
D0~D7=状态字
2. 读数据:
输入信号:
RS=1,RW=1,E=1 输出信号:
D0~D7=数据
3. 写指令:
输入信号:
RS=0,RW=0,E=1->0输出信号:
D0~D7=指令
4. 写数据:
输入信号:
RS=1,RW=0,E=1->0输出信号:
D0~D7=数据
3)指令说明
指令码
功能
0x07
自定义字符位
0x0f
清高四位
0x01
清屏:
数据指针清0,所有显示清0
0x0b
光标置日调整位置
0x0c
显示开
0x0d
光标所在字符闪烁
0x0e
光标开
0x80+地址
设置1602第一行的数据指针初始地址
0xc0+地址
设置1602第二行的数据指针初始地址
(表3.6)
3.3AT89C51芯片
3.3.1芯片介绍
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM--FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
如图3.3所示。
图3.3
3.3.2主要特性:
·与MCS-51兼容
·4K字节可编程闪烁存储器
·寿命:
1000写/擦循环
·数据保留时间:
10年
·全静态工作:
0Hz-24Hz
·三级程序存储器锁定
·128*8位内部RAM
·32可编程I/O线
·两个16位定时器/计数器
·5个中断源
·可编程串行通道
·低功耗的闲置和掉电模式
·片内振荡器和时钟电路
3.3.3管脚说明:
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,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.3.4振荡器特性:
XTAL1和XTAL2分别为反向放大器的输入和输出。
该反向放大器可以配置为片内振荡器。
石晶振荡和陶瓷振荡均可采用。
如采用外部时钟源驱动器件,XTAL2应不接。
有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
4 系统仿真调试
4.1 硬件电路调试
(略)
4.2 软件程序调试
4.2.1 调试的主要方法
利用KEILuVision3软件进行程序编写及调试,利用Protues仿真软件进行仿真实验。
4.2.2 调试中遇到的问题
1)程序运行后字符全部显示于一行,致使后面的字符无法显示出来,经调试,在源代码中添加“write_order(0x80+0x40);”换行语句后,字体全部正常显示了出来!
2)运行仿真程序,无法显示出正常日期,经检查调试发现,DS1302的I/O输出DATA的端口被连接至89C51的P1.7端口,而程序设定的入口却是P1.6端口,重新连线后一切正常!
致谢
感谢黄维公老师在我进行程序编写、仿真调试以及最后的书写报告中给予我的指导和帮助!
感谢一直以来支持我的同学们!
参考文献
[1]谭浩强,《C程序设计》,北京:
清华大学出版社,1999年12月第2版
[2]徐爱钧,《单片机高级语言C51应用程序设计》,电子工业出版社,2000年5月
[3]周坚,《单片机轻松入门》,北京航空航天大学出版社,2004年2月第1版
[4]周立功单片机网站,
[5]电子驿站,
[6]XX百科,http:
//www.b
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 电子 日历 设计