基于单片机的时钟设计吴怀志.docx
- 文档编号:6861448
- 上传时间:2023-01-11
- 格式:DOCX
- 页数:33
- 大小:212.08KB
基于单片机的时钟设计吴怀志.docx
《基于单片机的时钟设计吴怀志.docx》由会员分享,可在线阅读,更多相关《基于单片机的时钟设计吴怀志.docx(33页珍藏版)》请在冰豆网上搜索。
基于单片机的时钟设计吴怀志
YanChengInstituteofTechnology
课程设计说明书
Forpersonaluseonlyinstudyandresearch;notforcommercialuse
课程名称
单片机应用设计
设计题目
基于单片机的时钟设计
专业
M自动化101
学生姓名
吴怀志
班级
101
学号
08
完成日期
201312/1/——2013/12/12
盐城工学院电气学院
盐城工学院电气学院课程设计任务书
姓名:
吴怀志院(系):
电气工程学院
专业:
M自动化101班号:
101
任务起至日期2013年12月01日至201312年月12日
课程设计题目:
《基于单片机的时钟设计》
已知技术参数和设计要求:
(1)AT89C51单片机
(2)DS1302定时器
(3)DS1232看门狗
(4)LCD1602液晶显示
(5)电池供电
(6)Altium软件
预期设计效果:
设计一个基于单片机的电子时钟,要求能够实现时、分、秒。
工作计划安排:
2013年12月1日-2日:
收集和课程设计有关的资料,熟悉课题任务何要求
2013年12月3日-4日:
总体方案设计
2013年12月5日-8日:
硬件电路设计
2013年12月9日—11日:
软件设计
2013年12月12日:
整理书写设计说明书
2013年12月13日:
答辩
同组设计者及分工:
独立完成!
!
!
!
!
!
成绩评定:
_____________指导教师签字:
______
年月日
摘要
本文介绍了基于AT89C51单片机的多功能电子万年历的硬件结构和软硬件设计方法。
系统以AT89C51单片机为控制器,以串行时钟日历芯片DS1302记录日历和时间,它可以对年、月、日、时、分、秒进行计时,还具有闰年补偿等多种功能。
万年历采用直观的数字显示,可以在LED上同时显示年、月、日、周日、时、分、秒,还具有时间校准等功能。
此万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,具有广阔的市场前景。
关键字AT89C51;电子万年历; DS1302
1电子钟的工作原里....................................................................................................................1
2系统硬件设计及电路元件........................................................................................................
1AT89C51芯片................................................................................................................
2DS1302芯片.................................................................................................................
3LCD1602液晶显示..........................................................................................................
3系统软件电路设计....................................................................................................................
1系统流程图及源代码设计................................................................................................
1主程序流程图设计.....................................................................................
3子程序源代码设计....................................................................................
3设计原理图................................................................................................
4心得体会...............................................................................................................................
5参考文件.............................................................................................................................
6附件....................................................................................................................................
1程序代码..........................................................................................................................
2程序原理图......................................................................................................................
第1章电子时钟的工作原理
本次设计时钟电路,使用了AT89C51单片机芯片控制电路,单片机控制电路简单且省去了很多复杂的线路,使得电路简明易懂,用C语言程序来控制整个时钟的显示,使得编程变得更容易,这样通过五个模块:
芯片、显示屏、看门狗、电源、时钟即可满足设计要求第1章电子时钟的工作原理
本次设计时钟电路,使用了AT89C51单片机芯片控制电路,单片机控制电路简单且省去了很多复杂的线路,使得电路简明易懂,用C语言程序来控制整个时钟的显示,使得编程变得更容易,这样通过五个模块:
芯片、显示屏、看门狗、电源、时钟即可满足设计要求。
此设计原理图框图如图1-1所示,此电路包括以下五个部分:
单片机、时钟电路、看门狗、液晶屏、电源模块、时钟振荡电路。
图1-1主电路设计框图
本设计采用C语言程序设计,使单片机控制数码管显示年、月、日、时、分、秒,当秒计数满60时就向分进位,分计数器计满60后向时计数器进位,小时计数器按“23翻0”规律计数。
时、分、秒的计数结果经过数据处理可直接送显示器显示。
当计时发生误差的时候可以用校时电路进行校正。
设计采用的是时、分、秒显示,单片机对数据进行处理同时在LCD上显示。
第2章系统硬件电路设计及元件
2.1AT89C51芯片
AT89C51是美国ATMEL公司生产的8位FlashROM单片机。
其最突出的优点是片内ROM为FlashROM,可擦写1000次以上,应用并不复杂的通用ROM写入器就能方便的擦写,读取也很方便,价格低廉,具有片程序ROM二级保密系统。
因此可灵活应用于各种控制领域。
AT89C51包含以下一些功能部件:
(1)一个8位CPU;
(2)一个片内振荡器和时钟电路;
(3)4KBFlashROM;
(4)128B内RAM;
(5)可寻址64KB的外ROM和外RAM控制电路;
(6)两个16位定时/计数器;
(7)21个特殊功能寄存器;
(8)4个8位并行I/O口;
(9)一个可编程全双工串行口;
(10)5个中断源,可设置成2个优先级。
AT89C51单片机一般采用双列直插DIP封装,共40个引脚,图2-1为其引脚排列图。
40个引脚大致可分为4类:
电源、时钟、控制各I/O引脚。
图2-1AT89C51引脚图
2.1.1电源
电池供电
2.1.2时钟
XTAL1、XTAL2——晶体振荡电路反相输入端和输出端。
2.1.3控制线
控制线共有4根,其中3根是复用线。
所谓复用线是指具有两种功能,正常使用时是一种功能,在某种条件下是另一种功能。
源。
2.2DS1302芯片
DS1302是美国DALLAS公司推出的一种高性能、低功耗的实时时钟日历芯片,附加31字节静态RAM,采用SPI三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。
实时时钟可提供秒、分、时、日、星期、月和年,一个月小于31天时可以自动调整,且具有闰年补偿功能。
工作电压宽达2.5~5.5V。
采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后备电源进行涓细电流充电的能力。
有主电源和备份电源双引脚,而且备份电源可由大容量电容(>1F)来替代。
需要强调的是,DS1302需要使用32.768KHz的晶振。
DS1302包含以下一些功能部件:
(1)实时时钟,可对秒、分、时、日、周、月以及带闰年补偿的年进行计数;
(2)用于高速数据暂存的31×8位RAM;
(3)最少引脚的串行I/O;
(4)2.5~5.5V电压工作范围;
(5)2.5V时耗电小于300nA;
(6)用于时钟或RAM数据读/写的单字节或多字节(脉冲方式)数据传送方式;
(7)简单的3线接口;
(8)可选的慢速充电(至VCC1)的能力。
2.2.1DS1302数据操作原理
DS1302在任何数据传送时必须先初始化,把RST脚置为高电平,然后把8位地址和命令字装入移位寄存器,数据在SCLK的上升沿被输入。
无论是读周期还是写周期,开始8位指定40个寄存器中哪个被访问到。
在开始8个时钟周期,把命令字节装入移位寄存器之后,另外的时钟周期在读操作时输出数据,在写操作时写入数据。
时钟脉冲的个数在单字节方式下为8加8,在多字节方式下为8加字节数,最大可达248字节数。
DS1302的内部结构图如图2-2所示。
图2-2DS1302内部结构图
2.2.2DS1302的引脚图及功能
DS1302的引脚图如图2-3所示。
图2-3DS1302引脚图
DS1302各引脚功能:
SCLK:
串行时钟,输入,控制数据的输入与输出;
I/O:
三线接口时的双向数据线;
CE:
输入信号,在读、写数据期间,必须为高。
该引脚有两个功能:
第一,CE开始控制字访问移位寄存器的控制逻辑;其次CE提供结束单字节或多字节数据传输的方法。
引脚功能如表2-2所示:
表2-2DS1302引脚功能说明
引脚号
名称
功能
1
VCC1
备份电源输入
2
X1
32.768KHz晶振输入
3
X2
32.768KHz晶振输出
4
GND
地
5
RST
控制移位寄存器/复位
6
I/O
数据输入/输出
7
SCLK
串行时钟
8
VCC2
主电源输入
2.2.3DS1302的寄存器
1、DS1302有关日历、时间的寄存器共有12个,其中有7个寄存器(读时81h~8Dh,写时80h~8Ch),存放的数据格式为BCD码形式,如表2-3所示:
表2-3DS1302的日历、时钟寄存器及其控制字
寄存器名
命令字
取值范围
各位内容
写操作
读操作
7
6
5
4
3
2
1
0
秒寄存器
80H
81H
00--59
CH
10SEC
SEC
分寄存器
82H
83H
00--59
0
10MIN
MIN
时寄存器
84H
85H
01-12或00-23
12/24
0
10
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
控制
8EH
8FH
-
WP
0
0
0
0
0
0
0
秒寄存器(81h、80h)的位7定义为时钟暂停标志(CH)。
当该位置为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位置为0时,时钟开始运行。
小时寄存器(85h、84h)的位7用于定义DS1302是运行于12小时模式还是24小时模式。
当为高时,选择12小时模式。
在12小时模式时,位5是,当为1时,表示PM。
在24小时模式时,位5是第二个10小时位。
控制寄存器(8Fh、8Eh)的位7是写保护位(WP),其它7位均置为0。
在任何的对时钟和RAM的写操作之前,WP位必须为0。
当WP位为1时,写保护位防止对任一寄存器的写操作。
2、DS1302的工作模式寄存器
所谓突发模式是指一次传送多个字节的时钟信号和RAM数据。
突发模式寄存器如表2-4所示:
表2-4突发模式寄存器
工作模式寄存器
读寄存器
写寄存器
时钟突发模式
CLOCKBURST
BFH
BEH
RAM突发模式
RAMBURST
FFH
FEH
3、DS1302还有涓流充电寄存器等。
2.2.4DS1302的控制字
DS1302的控制字如下表所示:
表2-5控制字(即地址及命令字节)
7
6
5
4
3
2
1
0
1
RAM
A4
A3
A2
A1
A0
RD
控制字的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入到DS1302中。
位6:
如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;
位5至位1(A4~A0):
指示操作单元的地址;
位0(最低有效位):
如为0,表示要进行写操作,为1表示进行读操作。
控制字总是从最低位开始输出。
在控制字指令输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从最低位(0位)开始。
同样,在紧跟8位的控制字指令后的下一个SCLK脉冲的下降沿,读出DS1302的数据,读出的数据也是从最低位到最高位。
2.2.5DS1302时序
CE输入驱动高启动所有的数据传输。
CE输入有两个功能。
首先,CE打开控制逻辑,允许访问的移位寄存器的地址/命令序列。
其次,CE提供了一个终止单字节或多字节数据传输方法。
一个时钟周期是由一个下降沿之后的上升沿序列。
对于数据传输而言,数据必须在有效的时钟的上升沿输入,在时钟的下降沿输出。
如果CE为低,所有的I/O引脚变为高阻抗状态,数据传输终止。
对于数据输入:
开始的8个SCLK周期,输入写命令字节,数据字节在后8个SCLK周期的上升沿输入。
数据输入位0开始。
对于数据输出:
开始的8个SCLK周期,输入一个读命令字节,数据字节在后8个SCLK周期的下降沿输出。
注意,第一个数据字节的第一个下降沿发生后,命令字的最后一位被写入,命令字节的最后一位被写入。
当CE仍为高时。
如果还有额外的SCLK周期,DS1302将重新发送数据字节,这使DS1302具有连续突发读取的能力。
2.3LCD1602液晶显示
LCD1602是一种用5x7点阵图形来显示字符的液晶显示器模块,它显示的容量为2行16个字共32个字符。
它由若干个5×7或者5×11点阵字符位组成,每个点阵字符位都可以显示一个字符。
模块采用数字式接口,能够方便地与单片机等控制类芯片进行通信。
由于其具有体积小、重量轻、显示质量高、功耗低等诸多优点而被广泛用于智能化仪器仪表的显示器件。
2.3.1LCD1602引脚及功能
LCD1602的引脚如图2-7所示
:
图2-7LCD1602引脚图
LCD1602引脚功能表如下表2-7所示:
表2-7LCD1602引脚功能表
编号
符号
引脚说明
编号
符号
引脚说明
1
VSS
电源地
9
D2
数据
2
VDD
电源正极
10
D3
数据
3
VL
液晶显示偏压
11
D4
数据
4
RS
数据/命令选择
12
D5
数据
5
R/W
读/写选择
13
D6
数据
6
E
使能信号
14
D7
数据
7
D0
数据
15
BLA
背光源正极
8
D1
数据
16
BLK
背光源负极
LCD1602液晶模块内部的字符发生存储器已经存储了160个不同的点阵字符图形,这些字符图有:
阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。
LCD1602液晶模块内部的控制器共有11条控制指令,如表2-8所示:
表2-8LCD1602控制命令表
指令
RS
R/W
D8
D7
D6
D5
D4
D3
D2
D1
清显示
0
0
0
0
0
0
0
0
0
1
光标返回
0
0
0
0
0
0
0
0
1
*
置输入模式
0
0
0
0
0
0
0
1
I/D
S
显示开/关控制
0
0
0
0
0
0
1
D
C
B
光标或字符移位
0
0
0
0
0
1
S/C
R/L
*
*
置功能
0
0
0
0
1
DL
N
F
*
*
置字符发生存贮器地址
0
0
0
1
字符发生存贮器地址
置数据存贮器地址
0
0
1
显示数据存贮器地址(ADD)
读忙标志或地址
0
1
BF
计数器地址(AC)
写数到CGRAMD或DRAM
1
0
要写的数
从CGRAMD或DRAM读数
1
1
读出的数据
它的读写操作、屏幕和光标的操作都是通过指令编程来实现的(说明:
1为高电平,0为低电平)。
指令1:
清显示,指令码01H,光标复位到地址00H位置。
指令2:
光标复位,光标返回到地址00H。
指令3:
光标和显示模式设置I/D:
光标移动方向,高电平右移,低电平左移。
S:
屏幕上所有文字是否左移或者右移。
高电平表示有效,低电平则无效。
指令4:
显示开关控制。
D:
控制整体显示的开与关,高电平表示开显示,低电平表示关显示。
C:
控制光标的开与关,高电平表示有光标,低电平表示无光标。
B:
控制光标是否闪烁,高电平闪烁,低电平不闪烁。
指令5:
光标或显示移位S/C:
高电平时移动显示的文字,低电平时移动光标。
指令6:
功能设置命令DL:
高电平时为4位总线,低电平时为8位总线。
N:
低电平时为单行显示,高电平时双行显示。
F:
低电平时显示5X7的点阵字符,高电平时显示5x10的点阵字符(有些模块是DL:
高电平时为8位总线,低电平时为4位总线)。
指令7:
字符发生器RAM地址设置。
指令8:
DDRAM地址设置。
指令9:
读出忙信号和光标地址。
BF为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙,模块就能接收相应的命令或者数据。
指令10:
写数据。
指令11:
读数据。
液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志位是不是为低电平,是低电平则表示不忙,否则此指令失效。
要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符。
表2-9为LCD1602的内部显示地址。
表2-9LCD1602的内部显示地址
1
2
3
·····
14
15
16
第一行
80H
81H
82H
·····
8DH
8EH
8FH
第二行
0C0H
0C1H
0C2H
·····
0CDH
0CEH
0CFH
第3章系统软件电路设计
3.1系统流程图及源代码设计
3.1.1主程序流程图设计
图3-1主程序流程图
图3-1主程序流程图
Y
Y
Y
Y
Y
Y
Y
N
N
N
N
N
N
N
N
Y
3.1.2子程序流程图设计
1、DS1302定时器中断子程序流程图
图3-2DS1302中断流程图
程序主要实现对DS1302写保护、充电,对年、月、日、时、分、秒等寄存器的读写操作。
在读写操作子程序中都执行了关中断指令,因为在串行通信时对时序要求比较高,而且在此是用I/O口软件模拟串行时钟脉冲,所以在通信过程中最好保证传输的连续性,不要允许中断,如图3-2所示。
2、LCD1602流程图
程序主要实现对信息的显示,包括年、月、日、时、分、秒等信息,在这里要注意它的读写控制指令。
其流程图如图3-3所示。
图3-3LCD1602初始化流程图
3.1.3子程序源代码设计
详见附录一
3.1.3设计原理图
详见附录二
四心得体会
通过这次对《基于单片机的电子时钟设计》的设计与制作过程,加强了我们动手、思考和解决问题的能力。
在设计过程中我们利用Altium软件进行原理图及PCB图的绘制,最后再利仿真软件进行检查,看程序是否能显示其功能。
在设计过程中让我进一步深刻的学习各种软件的利用以及各种软件给我们带来的便利。
该数字钟通过单片机AT89C51做CPU进行总的控制,基于时钟芯片DS1302产生时间,利用LCD1602进行液晶显示的一个简易的数字钟。
LCD1602能够对年、月、日、周、日、时、分、秒进行计时及显示。
通过设计后能够熟练的掌握时钟芯片DS1302、LCD1602、AT89C51的的各个引脚及功能,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 时钟 设计 吴怀志