基于51单片机的数字时钟设计报告课程设计.docx
- 文档编号:8395253
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:49
- 大小:366.55KB
基于51单片机的数字时钟设计报告课程设计.docx
《基于51单片机的数字时钟设计报告课程设计.docx》由会员分享,可在线阅读,更多相关《基于51单片机的数字时钟设计报告课程设计.docx(49页珍藏版)》请在冰豆网上搜索。
基于51单片机的数字时钟设计报告课程设计
单
片
机
课
程
设
计
题目:
基于DS1302与单片机组成的数字时钟
附录一系统总体原理图20
附录三元件清单22
基于DS1302与单片机组成的数字时钟
摘要本文叙述了数字时钟的整个设计过程,包括硬件设计和软件设计,并重点讨论了模块软件设计和编程思想,并在本文末尾进行了讨论和总结,提出了改进的方面和改进的方法。
主要介绍了以AT89C52单片机为核心,控制实时时钟芯片DS1302,数字温度芯片DS18B20和液晶显示模块LCD1602,实现时间和星期的显示与调整,温度显示。
整个系统的软件设计在Keil环境下以C语言实现.完成的电子钟具有走时准确;掉电长时间后时间不需重新设置;功耗低,操作界面友好,操作简便;最大的特点是具有人性化的设计。
关键字数字时钟硬件设计软件设计AT89C52单片机人性化
AbstractThisarticlenarratedelectronclock'sentiredesignprocess,includingthehardwaredesignandthesoftwaredesign,anddiscussedthemodulesoftwaredesignandtheprogrammingthoughtwithemphasis,andhascarriedonthediscussionandthesummaryendofthisarticle,proposedtheimprovementaspectandtheimprovementmethod.ThispapermainlyintroducesthehardwareandsoftwaredesignofdigitalelectronicclockwhichismadeupoftheAT89S52MCU,DS1302clockchip,DS18B20TempraturechipandLCD1602module.Itcanaccuratelypresentandadjusttheinformationofthetimeandtemprature.Completestheelectronclockhasisinluckaccurately;Afterpowerfailurethelongtime,thetimecannotthereset;Thepowerlossislow,theoperationcontactsurfaceisfriendly,theoperationissimple;Themostmajorcharacteristichastheuser-friendlydesign.
KeywordDigitalclockHardwaredesignSoftwaredesignAT89C52MCUUser-friendly
1.系统方案设计
1.1系统总体方案设计
本课设题目要求为:
1.具有年、月、日、时、分、秒、星期、温度显示功能;
2.具备年、月、日、时、分、秒、星期较准功能;
3.具备测量环境温度功能。
本方案采用单片机AT89C52作为控制单元,与数字温度芯片DS18B20接口获取温度数据,与实时时钟芯片DS1302接口获取时间/日历数据,通过与液晶模块LCD1602接口显示温度、时间和日历,调整时间按键采用简单的单个I/O口键盘,蜂鸣器发声。
系统整体方案图如下:
1.2主要模块方案选择和论证
1.2.1单片机的选择
单片机有多种方案的选择,如Philips、Winbond、Intel、Siemens、或者STC等,但51单片机价格便宜,使用方便,操作简单。
针对题目的要求,89C52八位单片机已足够胜任,采用AT89S52,片内ROM全都采用FlashROM;能以3V的超底压工作;同时也与MCS-51系列单片机完全该芯片内部存储器为8KBROM存储空间,同样具有89C51的功能,且具有在线编程可擦除技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片多次拔插,所以不会对芯片造成损坏。
所以选择采用AT89S52作为主控制系统.故本设计采用89C52做处理器控制模块。
1.2.2时间生成模块的选择
时间生成可采用52单片的定时中断实现,它的优点:
软硬件简单,操作简便,缺点:
精确度低,掉电不保存。
于是选择常用的时钟芯片DS1302来实现时间的生成。
DS1302是低功耗实时时钟芯片,附加31字节静态RAM,采用SPI三线接口与MCU进行同步通信,可提供秒,分,时,日,星期,月,年,采用双电源供电(主电源和备用电源),工作电压宽(2.5V~5.5V),不仅时间精确,还可以掉电保存时间日期,静态RAM可用来保存重要数据、标记。
1.2.3显示模块的选择
显示模块是显示时间等信息和人机交流的设备,好的人机操作界面应该是友好的,显示的信息足够丰富。
显示模块可用8位数码管显示,但是数码管显示信息量少,显示不友好,硬件相对复杂,在软件设计中不断扫描显示,占用CPU时间,效率低。
液晶显示屏(LCD)具有轻薄短小、低耗电量、无辐射危险,平面直角显示以及影象稳定不闪烁等优势,可视面积大,画面效果好,分辨率高,抗干扰能力强等特点。
因此本方案选用LCD1602液晶显示模块。
LCD1602液晶显示模块可显示16x2个字符,显示信息丰富,界面友好,硬件接口简单,驱动程序简单,是理想的显示器件。
1.2.4温度模块的选择
作为一个完整的数字时钟,温度的显示是必要的。
早期的模拟温度传感器外形复杂,如热敏电阻是开发早、种类多、发展较成熟的敏感元器件.热敏电阻由半导体陶瓷材料组成,利用的原理是温度引起电阻变化.通过一定的电路可以将周围环境的温度变化转化成电压的变化,通过AD转化器件将信号传输给单片机进行分析,从而测出当前环境温度,但误差大,不稳定,对环境要求较高。
而由美国DALLAS半导体公司推出的数字化温度传感器DS18B20采用单总线协议,即与单片机接口仅需占用一个I/O端口,无需任何外部元件直接将环境温度转化成数字信号,以数字码方式串行输出,大大地简化了传感器与单片机的接口。
1.2.5按键的设计
由于电子钟功能的设置简单,只需4个按钮,故不采用矩阵键盘,而是采用简单的单个I/O口键盘,每个按钮占用一个I/O口,程序简单,并用蜂鸣器发声,硬件连接也很简单。
1.3电路设计最终方案决定
综上各方案所述,对此次作品的方案选定:
采用AT89C52单片机作为主控制系统;采用DS1302作为时钟芯片;采用1602LCD液晶作为显示器件,温度数据由单片机从数字温度芯片DS18B20获取,用四个独立按键来实现时间和日期的调整。
2.硬件电路的设计
硬件电路设计是该系统设计的第一步。
主控芯片采用美国ATMEL公司的AT89C52系列单片机,时钟芯片为DS1302,温度数据由单片机从数字温度芯片DS18B20获取,显示器件采用1602液晶显示模块。
在1602液晶模块的第一行显示年、月、日,星期。
第二行显示时、分、秒,温度。
通过对液晶模块的地址设置使数字显示在屏幕的正中央已达到美观的效果。
四个按键S1、S2、S3、S4分别与单片机的P1.4、P1.5、P1.6、P1.7四个I/O口线相连,S1为加1键,S2为减1键,S3为系统设置键,S4为确定键。
当第一次上电时,系统日期初始化为“2000-01-01”,时间初始化为“00:
00:
00”。
通过S1、S2、S3、S4可以设置成当前时间,当时间设置完成后,系统可进入正常走时状态。
在正常走时状态下,随时可以通过S1、S2、S3、S4四个按键调整时间和日期。
2.1单片机系统电路的设计
2.1.1AT89C52的介绍
AT89C52是51系列单片机的一个型号,它是ATMEL公司生产的。
AT89C52是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。
AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,但不可以在线编程(S系列的才支持在线编程)。
其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。
AT89C52有PDIP、PQFP/TQFP及PLCC等三种封装形式,以适应不同产品的需求。
(1)兼容MCS51指令系统,8k可反复擦写(>1000次)FlashROM;
(2)32个双向I/O口,256*8bit内部RAM;
(3)3个16位可编程定时/计数器中断,时钟频率0-24MHz;
(4)2个串行中断,可编程UART串行通道;
(5)2个外部中断源,共8个中断源;
(6)2个读写中断口线,3级加密位;
(7)低功耗空闲和掉电模式,软件设置睡眠和唤醒功能。
2.1.2功能概述
AT89C52为40脚双列直插封装的8位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52相同,其主要用于会聚调整时的功能控制。
功能包括对会聚主IC内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。
如图,系统主控电路设计如下:
图2主控电路模块
2.2时钟芯片和按键电路的设计
2.2.1DS1302的简介
DS1302芯片是美国DALLAS公司推出的低功耗实时时钟芯片,它工作电压为2.5V~5.5V,采用串行通信方式,只需3条线便可以和单片机进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。
DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。
可增加系统的RAM。
DS1302的时钟校准比较容易,若采用专用的晶体振荡器,几乎无须调整即可以达到国家要求的时钟误差标准。
DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力,这样避免了由于突然停电而造成时钟停止,因此它非常适合于长时间无人职守的监测控制系统或需经常记录某些具有特殊意义的数据及对应时间的场合。
DS1302提供秒、分、时、日、星期、月、年的信息,每月的天数和闰年的天数可自动调整,并可通过AM/PM指示决定采用24或12小时格式。
(1)内部结构及引脚功能
DS1302内部主要包括实时时钟(realtimeclock)、输入移位寄存器(inputshiftregisters)、31字节静态RAM、电源控制部分(powercontrol)、命令控制逻辑(commandandcontrollogic)、振荡器和分频器(oscillatoranddivider)等部分。
DS1302具有8脚DIP引脚排列如图3所示:
图3DS1302引脚排列
Vcc1:
后备电源,在主电源关闭的情况下,也能保持时钟的连续运行;当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。
Vcc2:
主电源,当Vcc2小于Vcc1时,DS1302由Vcc1供电。
X1、X2:
振荡源,外接32.768kHz晶振。
GND:
接地端
SCLK:
串行时钟输入端
I/O:
串行数据输入输出端(双向)。
RST:
复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。
RST输入有两种功能:
首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。
(2)工作原理
DS1302工作时为了对任何数据传送进行初始化,需要将复位脚(RST)置为高电平且将8位地址和命令信息装入移位寄存器。
数据在时钟(SCLK)的上升沿串行输入,前8位指定访问地址。
命令字装入移位寄存器后,在之后的时钟周期,读操作时输出数据,写操作时输入数据。
时钟脉冲的个数在单字节方式下为8+8(8位地址+8位数据),在多字节方式下最多可达8+248。
(3)控制字节及寄存器
DS1302的一次数据传送是从发送控制字节开始的。
控制字节的最高有效位(位7)必须是逻辑1,如果该位为0,则无法把数据写入到DS1302中;位6表示要读写的数据类型,为0表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示要操作单元的地址;最低有效位(位0)表示命令类型,为0表示要进行写操作,为1表示要进行读操作。
控制字节总是从最低位开始输出。
对DS1302的操作就是对其内部寄存器的操作,DS1302内部共有12个寄存器,其中有7个寄存器与日历、时钟有关,存放的数据位为BCD码形式。
表1DS1302的日历时钟寄存器及控制字
此外,还有控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。
时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。
DS1302与RAM相关的寄存器分为两类,一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H~FDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、(读)。
(4)数据的传送
向DS1302写入数据时,数据在控制字节输入后的下一个SCLK周期的上升沿被写入,多余的SCLK将被忽略。
数据写入时从低位(位0)开始;同样,从DS1302读取数据时,数据在紧跟控制字节后的下一个SCLK的下降沿读出,读出数据时也是从低位(0位)到高位(7位),只要RST保持高电平,额外的SCLK将导致数据字节的持续读出,这个特性用于实现该芯片的突发读模式。
对DS1302的每一次读写需16个时钟脉冲,前8个脉冲输入操作地址和读写命令,后8个脉冲写入或读出数据。
2.2.2功能概述
(1)按键与单片机的接线图
四个按键S1、S2、S3、S4分别与单片机的P1.4、P1.5、P1.6、P1.7四个I/O口线相连,S1为加1键,S2为减1键,S3为系统设置键,S4为确定键。
当第一次上电时,系统日期初始化为“2000-01-01”,时间初始化为“00:
00:
00”。
通过S1、S2、S3、S4可以设置成当前时间,当时间设置完成后,系统可进入正常走时状态。
在正常走时状态下,随时可以通过S1、S2、S3、S4四个按键调整时间和日期。
图4按键模块
(2)DS1302与单片机接线图
DS1302是低功耗实时时钟芯片,附加31字节静态RAM,采用SPI三线接口与MCU进行同步通信,可提供秒,分,时,日,星期,月,年,采用双电源供电(主电源和备用电源),工作电压宽(2.5V~5.5V),不仅时间精确,还可以掉电保存时间日期,静态RAM可用来保存重要数据、标记。
图5DS1302时钟芯片模块
2.3LCD1602模块和蜂鸣器电路的设计
2.3.1LCD1602字符液晶介绍
工业字符型液晶,1602是指显示的内容为16*2,即能够同时显示两行,每行16个字符。
常见的1602字符液晶有两种,一种显示的是绿色背光黑色字体,另一种显示蓝色背光白色字体,目前市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的。
本课题所用1602液晶模块,显示屏是绿色背光黑色字体。
(1)1602引脚介绍
编号
符号
引脚说明
编号
符号
引脚说明
1
GND
电源地
2
VCC
电源正极
3
VO
液晶显示对比度调节端
4
RS
数据/命令选择端
5
R/W
读写选择
6
E
使能信号
7
D0
数据口
8
D1
数据口
9
D2
数据口
10
D3
数据口
11
D4
数据口
12
D5
数据口
13
D6
数据口
14
D7
数据口
15
BLA
背光电源正
16
BLK
背光电源负
表21602字符液晶引脚说明
各个引脚具体功能说明:
第1脚:
GND为地电源。
第2脚:
VCC接5V正电源。
第3脚:
VO为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生重影,使用一个1K的电位器调整对比度。
第4脚:
RS为寄存器选择,高电平时选择数据寄存器,低电平时选择指令寄存器。
第5脚:
R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。
第6脚:
E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:
DB0~DB7为8位双向数据线。
第15~16脚:
背光灯电源。
(2)1602字符液晶使用方法
操作
输入
输出
读状态
RS=L,RW=H,E=H
D0~D7=状态字
写指令
RS=L,RW=L,D0~D7=指令码,E=高脉冲
无
读数据
RS=H,RW=H,E=H
D0~D7=数据
写数据
RS=H,RW=L,D0~D7=数据,E=高脉冲
无
表3基本操作时序
RAM
1602液晶控制器芯片内部带有80个8位的RAM缓冲区,其地址和屏幕的对应关系如图7示
1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如下表所示,这些字符有:
阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”.
高位
低位
0000
0010
0011
0100
0101
0110
0111
1010
1011
1100
1101
1110
1111
XXXX0000
⑴
0
@
P
\
p
-
タ
ミ
α
P
XXXX0001
⑵
!
1
A
Q
a
q
□
ア
チ
ム
ä
q
XXXX0010
⑶
“
2
B
R
b
r
┌
イ
ツ
メ
β
θ
XXXX0011
⑷
#
3
C
S
c
s
┘
ゥ
テ
モ
ε
∞
XXXX0100
⑸
$
4
D
T
d
t
\
ェ
ト
ャ
μ
Ω
XXXX0101
⑹
%
5
E
U
e
u
ロ
ォ
ナ
ュ
σ
o
XXXX0110
⑺
&
6
F
V
f
v
テ
カ
ニ
ョ
ρ
∑
XXXX0111
⑻
’
7
G
W
g
w
ア
キ
ヌ
ラ
ζ
ⅹ
XXXX1000
⑴
(
8
H
X
h
x
ィ
ク
ネ
リ
f
X
XXXX1001
⑵
)
9
I
Y
i
y
ウ
ケ
ノ
ル
-1
y
XXXX1010
⑶
*
:
J
Z
j
z
エ
コ
ハ
レ
ј
千
XXXX1011
⑷
+
;
K
[
k
{
オ
サ
ヒ
ロ
ҳ
万
XXXX1100
⑸
<
L
¥
l
|
セ
シ
フ
ヮ
ℓ
Π
XXXX1101
⑹
--
=
M
]
m
}
ユ
ス
ヘ
ソ
ŧ
÷
XXXX1110
⑺
。
>
N
^
n
→
ヨ
セ
ホ
ハ
ñ
XXXX1111
(8)
/
?
O
-
o
←
ツ
ソ
マ
ロ
ö
表41602字符液晶字库
2.3.2功能概述
(1)LCD1602与单片机接线图
图6LCD1602显示模块
(2)蜂鸣器与单片机接线图
图7蜂鸣器模块
2.4温度芯片DS18B20简介
温度数据由单片机从数字温度芯片DS18B20获取。
DS18B20的通信方式为单线总线方式(详见美国DSLLAS公司关于该芯片的数据手册),本系统中以单片机模拟单线总线方式实现与其接口。
单片机以字节为单位对其进行读写操作,读写一个字节分成8个连续的位读写时隙实现。
单片机对DS18B20的操作需遵循以下步骤:
2.4.1DS18B20简介
(1)复位,即单片机发出复位脉冲(将总线从高电平拉到低电平并保持480微秒到960微秒,然后释放),等待接收DS18B20的存在脉冲(DS18B20将总线从高电平拉低,保持60微秒到240微秒)。
(2)发送ROM操作指令,即读ROM(33H)、匹配ROM(55H)、忽略ROM(CCH)和搜素ROM(F0H)其中之一。
(3)发送存储器操作指令,即读便笺存储器(BEH)、写便笺存储器(4EH)、复制便笺存储器(18H)、温度转换(44H)、回写E2PROM的值到便笺存储器(B8H)和读电源供给(B4H)其中之一。
(4)处理或数据操作。
要注意,DS18B20进行一次12位的温度转换需要750毫秒,如果温度转换没有结束就去读温度数据,将不能得到正确的温度值,且会终止正在进行的温度转换。
所以,必须等待足够的时间,让温度转换完成。
本系统中,重复ShowTimes次读取时间数据,显示时间和温度等操作来实现这个等待时间,即图2中连接点②处的循环。
2.4.2功能概述
数字化温度传感器DS18B20采用单总线协议,即与单片机接口仅需占用一个I/O端口,无需任何外部元件直接将环境温度转化成数字信号,以数字码方式串行输出。
如图:
图8DS18B20温度芯片模块
3.软件设计
整个软件系统采用模块化思想,把1602,DS1302的驱动程序做成头文件,在功能程序中调用。
采用这种方法不仅使程序模块化,使程序结构层次分明,便于管理和维护,同时可方便以后开发的调用,只要包含头文件,功能程序模块中再调用接口函数就可以了,而不必关心底层驱动是如何实现的,这样缩短了开发周期,开发效率大大提高。
在主程序中采用事件顺序驱动机制的编程方法,按键处理中采用采用网状多级状态结构的编程方法,而秒表功能采用定时中断实现,精确到1ms.
3.1主程序设计
包含主程序设计、实时时钟程序设计、温度芯片程序设计、液晶显示程序设计四部分。
在此,仅将流程图中的重点做以解释说明。
图9系统软件主程序流程图
3.2网状多级状态结构的按键处理
按键处理中采用了基于状态机的程序调度机制,当某个按键按下时,改变其状态,再根据状态散转去执行相应的程序,达到了一键多义的效果。
主程序采用事件驱动机制,事件为某个按键按下,则主程序响应这个按键,并进入相应的功能程序,其编程思想如下;
其中改变设置标记的状态为“设置”键:
当第一次按下“设置”键时,改变设置标记为1,表示主程序应该响应设置事件,进入设置状态。
当退出设置状态时,置设
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 51 单片机 数字 时钟 设计 报告 课程设计