电子钟设计报告.docx

上传人:b****1 文档编号:23250008 上传时间:2023-05-15 格式:DOCX 页数:36 大小:2.27MB
下载 相关 举报
电子钟设计报告.docx_第1页
第1页 / 共36页
电子钟设计报告.docx_第2页
第2页 / 共36页
电子钟设计报告.docx_第3页
第3页 / 共36页
电子钟设计报告.docx_第4页
第4页 / 共36页
电子钟设计报告.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

电子钟设计报告.docx

《电子钟设计报告.docx》由会员分享,可在线阅读,更多相关《电子钟设计报告.docx(36页珍藏版)》请在冰豆网上搜索。

电子钟设计报告.docx

电子钟设计报告

机电工程系

课程设计报告

题目:

电子日历

 

专业:

______应用电子技术_____

班级:

_____10应电

(1)班____

学号:

____**********____

******************

****************

答辩日期:

___2012-11-27____

一、绪论

单片机是指一个集成在一块芯片上的完整计算机系统,它具有一个完整的计算机所需要的大部分部件:

CPU,内存,内部和外部总线系统,目前大部分还会具有外存,定时,计数和多种接口于一体的为控制器。

它体积小,成本低,功能强,广泛应用于于智能产业和工业自动化上。

而51系列单片机是各单片机中最为典型和最有代表的一种。

这次课程设计通过对它的学习,应用,从而达到学习、设计、开发软、硬的能力。

本次课程设计主要是基于STC89C52单片机的电子时钟。

通过时钟芯片DS1302产生时间计时和脉冲,在液晶显示LCD1602显示相应的时间和日期。

并通过多个控制按钮来实现时间和日期的调节。

应用keil软件实现单片机电子时钟系统的程序设计,用Proteus的ISIS软件实现仿真。

二、对本课程设计的分析

2.1系统实现的功能

1、准确计时,时钟具有年、月日、星期、时、分、秒的显示功能。

2、时间具有年、月、日、时、分的时间功能。

3、具有闹钟功能。

2.2实现系统功能的电路模块

1、时钟的显示模块:

在单片机系统中,时间的显示可以通过四位显示数码管显示时间,通过单片机对数码管段选和位选的软件扫描来显示系统所达到的时间的显示。

也可以通过液晶显示板1602LCD来显示系统的时间。

2、电子钟的时钟模块:

在单片机系统中,时间的计时可以通过单片机内部的时钟,通过单片机定时器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数来达到时间的计时。

也可以通过专门的时钟芯片DS1302,自动对秒、分、时、日、周、月、年、以及闰年补偿的年进行计数。

3、电子钟的调时模块:

电子钟的调时通过按键对系统进行设置,按键通过独立按键的方式,通过中断函数的编写来控制各个按键的不同功能,包括调整对象的选择,调节的加和减,调节后时间的写入,设定等。

2.3相关参数设定

最小系统为单片机基本的内部环境:

STC89C52RC最小系统组成I/O口内部基本条件是晶振为12MHz;显示部分,日历显示为:

DATE××-××-××;时间显示为:

××:

××:

××;调节时间是:

当调节对象为年时,显示板在右下角显示出Y,调节对象为月时,显示板右下角显示出M,调节对象为日时,显示板右下角显示出D,调节对象为时时,显示板右下角显示出H,调节对象为分时,显示板右下角显示出M。

加1,减1的按键实现所对应的调节对象的加1与减1。

确定按键为对所调的时间进行写入,当时间写入时,显示板在调节状态所显示的Y、M、D、H、M消失,在调节后的时间基础下继续计时。

三、主要电路模块的实现方案比较及选择

3.1主要电路的方案的比较和选择

方案一:

单片机的系统芯片采用STC89C52芯片作为硬件的核心,电子钟的显示部分通过采用LED数码管的动态扫描方法,时钟模块直接采用单片机内部的定时器提供的秒信号,使用程序实现年、月、日、星期、时、分、秒计数。

方案二:

单片机的系统芯片采用STC89C52芯片作为硬件的核心,电子钟的显示部分通过采用液晶显示LCD1602显示屏显示时间,时钟模块采用DS1302时钟芯片实现时钟,自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数。

方案三:

单片机的系统芯片采用STC89C52芯片作为硬件的核心,电子钟的显示部分通过采用采用点阵式数码管显示时间,时钟模块采用DS1302时钟芯片实现时钟,自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数。

方案比较:

方案一中的显示部分通过LED数码管显示,虽然数码管价格便宜,比较适合显示数字,但是LED数码管功耗大,且显示内容不够。

而方案三中采用点阵数码管显示,对于显示文字比较合适,但只是显示数字显得太浪费,价格也先对较高。

在时钟模块,如果采用单片机内部的定时器功能的话,虽然减少了芯片的使用,节约成本,但是,现实的时间误差较大。

通过上述的三个方案综合比较,采用方案二比较合适。

3.2主要电路模块的工作原理

3.2.1时钟模块DS1302时钟芯片以及时钟集成模块介绍

1、DS1302概述

DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟芯片,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。

采用双电源供电(主电源和备用电源),同时提供了对后背电源进行涓细电流充电的能力。

采用三线接口与CPU进行同步通信。

图1DS1302封装图

2、DS1302引脚介绍

各引脚功能为

Vcc:

主电源;Vcc2:

备用电源。

当Vcc2>Vcc1+0.2V时,由Vcc2向DS1302供电;当Vcc2

SCLK:

串行时钟输入端,控制数据的输入与输出

I/O:

三线接口时的双向数据线

CE:

输入信号,在读、写数据期间必须为高

3、DS1302使用方法

(1)时钟芯片DS1302工作原理

DS1302在每次进行读、写程序前都必须初始化,先把SCLK端置“0”,接着把RST端置“1”,最后才给予SCLK脉冲;读/写时序如图5所示。

表2为DS1302的控制字,此控制字的位7必须置1,若为0则不能把对DS1302进行读写数据。

对于位6,若对程序进行读/写时RAM=1,对时间进行读/写时,CK=0。

位1至位5指操作单元的地址。

位0是读/写操作位,进行读操作时,该位为1;该位为0则表示进行的是写操作。

控制字节总是从最低位开始输入/输出的。

表6为DS1302的日历、时间寄存器内容:

“CH”是时钟暂停标志位,当该位为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位为0时,时钟开始运行。

“WP”是写保护位,在任何的对时钟和RAM的写操作之前,WP必须为0。

当“WP”为1时,写保护位防止对任一寄存器的写操作。

(2)DS1302的控制字节

DS1302的控制字如表所示。

控制字节最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始传输

1

RAM

A4

A3

A2

A1

A0

RD

CK

WR

表1DS1302控制字

(3)数据输入输出(I/O)

在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。

同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。

其读写时序如图示

图2DS1302读写时序

(4)DS1302寄存器

DS1302中与时间、日期有关的寄存器共有12个,其中7个存放数据的格式为BCD码格式,其读写地址如下表所示

读寄存器

写寄存器

Bit7

Bit7

Bit7

Bit7

Bit7

Bit7

Bit7

Bit7

范围

81H

80H

CH

10秒

00--59

83H

82H

10分

00--59

85H

84H

12

0

10

0--23

24

AM/PM

1--12

87H

86H

10日

1--31

89H

88H

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

――

表2DS1302时钟寄存器

第一行秒寄存器,CH为时钟暂停标志位,该位为1时时钟停止,该位为0时时钟运行。

第二行分寄存器,bit0~bit6表示分钟数,因采用BCD编码,所以低四位最大能表示的数字为9,计数满向高三位进1。

第三行时寄存器,12/24用来定义DS1302小时的运行模式,12小时模式下bit5为1表示PM下午,bit5为0表示AM上午。

第八行控制寄存器,bit7是写保护位WP,当WP为1时,写保护位可防止对任一寄存器的写操作,在任何的对时钟和RAM的写操作之前,WP位必须为0

此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。

时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。

DS1302与RAM相关的寄存器分为两类:

一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H~FDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。

4、时钟集成模块内部原理图以及实物图

图3DS1302硬件图

3.2.2显示模块1602字符液晶以及显示模块介绍

1、1602液晶概述

工业字符型液晶,1602是指显示的内容为16*2,即能够同时显示两行,每行16个字符。

常见的1602字符液晶有两种,一种显示的是绿色背光黑色字体,另一种显示蓝色背光白色字体,目前市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的。

本课题所用1602液晶模块,显示屏是蓝色背光白色字体。

如图4所示

图4LCD封装图

2、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

背光电源负

表31602字符液晶引脚说明

各个引脚具体功能说明

第1脚:

GND为地电源。

第2脚:

VCC接5V正电源。

第3脚:

VO为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生重影,使用一个1K的电位器调整对比度。

第4脚:

RS为寄存器选择,高电平时选择数据寄存器,低电平时选择指令寄存器。

第5脚:

R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。

第6脚:

E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。

第7~14脚:

DB0~DB7为8位双向数据线。

第15~16脚:

背光灯电源。

3、1602液晶使用方法

(1)基本操作时序

操作

输入

输出

读状态

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=高脉冲

图51602液晶读时序图

图61602液晶写时序图

(2)RAM

1602液晶控制器芯片内部带有80个8位的RAM缓冲区,其地址和屏幕的对应关系如图7示

图7

(3)1602字符液晶字库

 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

/

?

O

-

o

ö

图8

4、时钟集成模块内部原理图以及实物图

图9LCD1602硬件图

3.2.3按键模块电子钟的调时模块

1、调时按键概述

电路通过按键对电路进行时间设置,电路的可调对象分别时年、月、日、时、分。

通过四个按键对电路进行调节。

一个按键K1控制电路调节对象的选择,当调节对象为年、月、日、时、分时液晶显示板上分别显示Y、M、D、H、M。

一个按键K2调节数字的加。

一个按键K3调节数字的减。

通过一个按键对所调节的时间进行写入确定。

按键程序的实现通过编写时间的读取函数voidDateTime(),调节时间对象的函数voidDateTime_Adjust();和中断函数,实现按键的功能。

2、调时模块原理图以及实物图

图10按键硬件图

四、系统电路图

图11电路硬件图

系统原理图如图,电路以STC89C52为最小系统控制核心,以时钟芯片DS1302提供时间计数,采用三线接口与CPU进行同步通信,实现单片机对DS1302时钟芯片的时间的读取和写入。

显示部分用1602LCD显示,1602通过控制RS、RW、E的管脚的高低电平对单片机进行状态的读取,指令的写入和数据的读取。

数据通过D0-D7口与单片机相连,进行数据的传输。

电路的输入调时部分通过四个独立的按键K1、K2、K3、K4,通过中断函数来控制按键通过单片机对DS1302时间的调节,包括调节对象的选择,数字的加1,数字的减1和时间的写入确定。

五、系统的软件设计

1、主程序部分

电子钟的时间计时有时钟芯片DS1302提供,通过液晶板显示,首先对DS1302及LCD进行初始化设置,调时功能用按键通过中断函数判断。

在住函数中Init_LCD();GetTime();inital_1302();为对DS1302和LCD的初始化和初值的写入,IE=0X83;允许INT0,T0的中断。

2、按键部分程序

电路通过4个按键来调时,按键只有在按下调节对象按钮后,其余按键才能实现其各自的共能。

首先判断控制调节对象的案件是否按下,选择其要调节的对象,在通过其他案件来对时间进行调节。

调时的中断函数用if-----else-----函数对按键按下先后控制以实现各个按键的功能。

if(K1==0),elseif(K2==0),elseif(K3==0),elseif(K4==0),来判断按键的动作。

3、DS1302时钟数据的读/写部分程序

Ds1302的读写时,要设置RST=0;CLK=0;RST=1,才可以对ds1302进行读写。

//从DS1302指定位置读数据

ucharRead_Data(ucharaddr)

{

uchardat;

RST=0;CLK=0;RST=1;

Write_A_Byte_TO_DS1302(addr);

dat=Get_A_Byte_FROM_DS1302();

CLK=1;RST=0;

returndat;

}

//向DS1302某地址写入数据

voidWrite_DS1302(ucharaddr,uchardat)

{

RST=0;CLK=0;RST=1;

Write_A_Byte_TO_DS1302(addr);

Write_A_Byte_TO_DS1302(dat);

CLK=1;RST=0;

}

4、LCD的控制程序

要进行读取LCD状态时,设置RS=L,RW=H,E=H。

ucharRead_LCD_State()

{

ucharstate;

RS=0;RW=1;EN=1;

DelayMS

(1);

state=P0;EN=0;

DelayMS

(1);

returnstate;

}

要向LCD写数据时,RS=H,RW=L,D0~D7=数据,E=高脉冲。

voidWrite_LCD_Data(uchardat)

{

LCD_Busy_Wait();

RS=1;RW=0;EN=0;P0=dat;EN=1;DelayMS

(1);EN=0;

}

要向LCD写指令时,RS=L,RW=L,D0~D7=指令码,E=高脉冲。

voidWrite_LCD_Command(ucharcmd)

{

LCD_Busy_Wait();

RS=0;RW=0;EN=0;P0=cmd;EN=1;DelayMS

(1);EN=0;

}

//LCD初始化

voidInit_LCD()

{

Write_LCD_Command(0x38);DelayMS

(1);

Write_LCD_Command(0x01);DelayMS

(1);

Write_LCD_Command(0x06);DelayMS

(1);

Write_LCD_Command(0x0c);DelayMS

(1);

}

六、结论

通过上述程序和硬件的制作,电子钟的显示如图(12),

图12电子钟

调整时间:

在调节对象为年时,液晶板右下角显示Y。

如图(13)

图13调整对象为年

调整时间:

在调节对象为月时,液晶板右下角显示M。

如图(14)

图14调整对象为月

调整时间:

在调节对象为日时,液晶板右下角显示D。

如图(15)

图15调整对象为天

调整时间:

在调节对象为小时时,液晶板右下角显示H。

如图(16)

图16调整对象为小时

调整时间:

在调节对象为分时,液晶板右下角显示M。

如图(17)

图17调整对象为分钟

时间调整完成,写入DS1302,液晶读取显示。

如图(18)

图18调时后时间确定

结论:

通过此次的电子钟的课程设计,基本实现当初设想的80%的功能,为电子日历,电子钟的显示,时间的调整功能。

由于自己后面的时间把握不好,没有实现当初设想的闹铃的功能。

在程序下载到板是出现了液晶板第二行的头尾出现乱码显示,出现了显示不足,但并不影响电子钟的功能。

七、课程设计过程中遇到的主要问题以及解决办法

1、在程序的学习、编写过程中,会因为对程序的功能的不熟悉和对函数的各个模块的整合的不了解给程序的编译和仿真不能正常工作。

2、在硬件的制作的过程中,在protel的原理图绘制中,由于对LCD的管脚不是很了解,在画板是管脚画错了,给调试带来了麻烦。

3、PCB制板中,由于对protel的不是很熟练,和电路原件的封装的绘制的误差等给电路的焊接造成了麻烦。

4、电路焊接后,通过对软件的载入,发现并不能实现电子钟的所有功能,时间不走等情况。

然而通过自己的学习和同学们的帮助,特别是在老师的指导下,不管是软件的学习还是硬件的调试,问题都在最后很好的得到了解决,让自己更深入的认识了自己的不足和团队的力量。

八、心得体会

在本次的课程设计中,是在上学期基础上的进一步对单片机的学习和进行产品的设计,通过这学期对所做的课题的程序及硬件电路的分析下,让自己更加的深入的了解了单片机的作用。

虽然是在有基础的情况下进行的课题题设计,但也不是一帆风顺的,由于自己当初对程序的学习不是很到位,加上一段时间的没去学习单片机,使自己在许多的知识都开始陌生了,软件的使用,程序的分析都不能遂心应手。

所以在这次的课程设计中也让自己对资料和课本上的知识的再次学习,最后也完成了程序的编写,也让自己更加深入的理解了以前没学到的知识,自己对单片机有了更深一层的认识。

在这个过程中让自己再次熟悉了keil,proteus,protel等软件的运用,及在编译调试程序过程中对程序的作用的进一步理解。

当然此次课程设计不仅让自己学习到了书本上的知识,也让我们知道了知识在实际生活中的应用。

更让自己看到了自己在课程设计过程中所表现出来的各种不良的心态,和有时的过分的相信自己。

让自己找到了自身的问题所在,给以后的学习和生活找到了方向。

附录

1、Keil源程序:

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

sbitSAD=P1^0;

sbitCLK=P1^1;

sbitRST=P1^2;

sbitRS=P2^0;

sbitRW=P2^1;

sbitEN=P2^2;

sbitK1=P3^4;

sbitK2=P3^5;

sbitK3=P3^6;

sbitK4=P3^7;

uchartCount=0;

ucharMonthsDays[]={0,31,0,31,30,31,30,31,31,30,31,30,31};

uchar*WEEK[]={"SUN","MON","TUS","WEN","THU","FRI","SAT"};

ucharLCD_DSY_BUFFER1[]={"DATE00-00-00"};

ucharLCD_DSY_BUFFER2[]={"TIME00:

00:

00

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 艺术

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1