基于单片机电子时钟方案.docx

上传人:b****3 文档编号:5353664 上传时间:2022-12-15 格式:DOCX 页数:14 大小:46.60KB
下载 相关 举报
基于单片机电子时钟方案.docx_第1页
第1页 / 共14页
基于单片机电子时钟方案.docx_第2页
第2页 / 共14页
基于单片机电子时钟方案.docx_第3页
第3页 / 共14页
基于单片机电子时钟方案.docx_第4页
第4页 / 共14页
基于单片机电子时钟方案.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

基于单片机电子时钟方案.docx

《基于单片机电子时钟方案.docx》由会员分享,可在线阅读,更多相关《基于单片机电子时钟方案.docx(14页珍藏版)》请在冰豆网上搜索。

基于单片机电子时钟方案.docx

基于单片机电子时钟方案

时钟的基本原理分析

利用单片机定时器完成计时功能,定时器0计时中断程序每隔0.01s中断一次并当作一个计数,设定定时1秒的中断计数初值为100,每中断一次中断计数初值减1,当减到0时,则表示1s到了,秒变量加1,同理再判断是否1min钟到了,再判断是否1h到了。

为了将时间在LED数码管上显示,可采用静态显示法和动态显示法,由于

静态显示法需要译码器,数据锁存器等较多硬件,可采用动态显示法实现LED

显示,通过对每位数码管的依次扫描,使对应数码管亮,同时向该数码管送对应的字码,使其显示数字。

由于数码管扫描周期很短,由于人眼的视觉暂留效应,使数码管看起来总是亮的,从而实现了各种显示。

三,时钟设计分析

针对要实现的功能,采用AT89S5单片机进行设计,AT89S51单片机是一款低功耗,高性能CMOS位单片机,片内含4KB在线可编程vISP)的可反复擦写1000次的Flash只读程序存储器,器件采用高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构。

这样,既能做到经济合理又能实现预期的功能。

在程序方面,采用分块设计的方法,这样既减小了编程难度、使程序易于理解,又能便于添加各项功能。

程序可分为闹钟的声音程序、时间显示程序、日期显示程序,秒表显示程序,时间调整程序、闹钟调整程序、定时调整程序,延时程序等。

运用这种方法,关键在于各模块的兼容和配合,若各模块不匹配会出现意想不到的错误。

首先,在编程之前必须了解硬件结构尤其是各引脚的用法,以及内部寄存器、存储单元的用法,否则,编程无从下手,电路也无法设计。

这是前期准备工作。

第二部分是硬件部分:

依据想要的功能分块设计设计,比如输入需要开关电路,输出需要显示驱动电路和数码管电路等。

第三部分是软件部分:

先学习理解汇编语言的编程方法再根据设计的硬件电路进行分块的编程调试,最终完成程序设计。

第四部分是软件画图部分:

设计好电路后进行画图,包括电路图和仿真图的绘制。

第五部分是软件仿真部分:

软硬件设计好后将软件载入芯片中进行仿真,仿真无法完成时检查软件程序和硬件电路并进行修改直到仿真

成功。

第六部分是硬件实现部分:

连接电路并导入程序检查电路,若与设计的完全一样一般能实现想要的功能。

最后进行功能扩展,在已经正确的设计基础上,添加额外的功能!

四,时钟的实现

A.电路设计

1.整体设计

此次设计主要是应用单片机来设计电子时钟,硬件部分主要分以下电路模

块:

显示电路用8个共阴数码管分别显示,星期<年份),小时、分钟<月份)和秒<日),通过动态扫描进行显示,从而避免了译码器的使用,同时节约了I/O

端口,使电路更加简单。

单片机采用AT89S5係列,这种单片机应用简单,适合电子钟设计。

电路的总体设计框架如下:

单片

输入部分

晶振和复位

2.分块设计

模块电路主要分为:

输入部分、输出部分、复位和晶振电路

2.1输入部分

输入信号主要是各种模式选择和调整信号,由按键开关提供

 

1J

44J

44J-

4J

4i

L..-4I

4LJ

在本实验中主要用用P3口输入按键信号,还用到了特殊的

P0口。

对于P0

口,由于其存在高阻状态,为了实现开关功能,给其添加上拉电阻,具体如下图所示:

'■■''■LI*'r

-^—^XTALI

-■■山XTA15

■■■8!

PSE

st

n-57

眄咏紳P3.1/TCBP32/iNTaP3.3/1NTT

P3.

pnnftDOP0.W.D1PD^DZpaiAD3

PD.4^.DiPDSftDS

PD.SftD6PDT^DT

P2IW

P2.1胆P22W1Q

P2.MI3

P2J5^13

P2J6mii

P2.TJW15

2.2输出部分

本电路的输出信号为7段数码管的位选和段选信号,闹铃脉冲信号,提示灯信号。

本实验的数码管是共阴的,为了防止段选信号不能驱动数码管,故在P1口连接

上拉电阻后,再送段选信号,以提高驱动,位选信号直接从P2口接入,如下

图:

 

 

pecDEFG

匚沪

.«T~_~

-:

J*-

JCFAL2

PDs^D"

POTOD^P口朋口百戸UHKi-吃fnJunrm

HU1.4.1—

piumi:

P2-2XA-iO

H—IWlIl«F5ThP2吟仃

hjii^KTi

JZ3'

土.

girl?

.+.«£r

MA^;.A>.X.W*:

l*®^iFWWrtH*H;呻:

*MTXD

*3jifiTn

■K.MNTII

P^+^HJ

P?

-5fTj

111

 

闹铃由P2.6端输出,模块如下:

2.3晶振与复位电路

本实验单片机时钟用内部时钟,模块如下:

 

复位电路为手动复位构成,模块如下:

VCC5V

RST

CE1

]0iiF

RI

1■憾

各模块拼接组合,电路总体设计图如下

 

:

个人资料整理•:

习使用

135--

lee-sai

~L

■-IK

□□

R1

Ftl1

II

Rootsheet1

+J10D.C+15(

R1Q

-•

-:

TE^-

R12

■XTAL1

XTAL2

ISEN

R13-

耳血・«

-

PDDADDPD.WD1

FD2HD2

PD3^D3PD.WDi

PD^D6PDWDT

PZ1W

P22ft1DP23SA11

P2.W12

P2SW13P2收刚*P2Jjft15

网MXD

P3/D:

D

piWraPS^nTT

PJ.4/TT1FJ5T1

P3J/RF

PROGRAM-Wrs讪iteW畑网ifbIJiE:

■:

:

r1<"PEXl5-

」Yf曰店L

F

J-L

■■:

fyTE■-巧

r■■■

■.-■

--■

-..

....

*■■a-

*■・■**■

'■1-

■ID;-

R7■1L>.

FfiariRie…

■1k-■■

LED-RS-=TEO=

:

z

SOUND-ff-

B.程序设计

B.1程序总体设计

本实验用汇编程序完成

程序总的流程图如下:

 

B.2程序主要模块

B.2.1延时模块

数码管显示动态扫描时,用到延时程序,这里使用延迟1ms的程序,此程序需反复调,除数码管动态扫描外,数码管的闪烁提示,以及音乐模块也用到了延时,只是延时的长短不同罢了,在此不再赘述。

B.2.2中断服务程序

本实验中,计数器T0,T1中断都有运用,其中TO中断为时钟定时所用,T忡断用于音乐播放。

TO的定时长度为0.01s,工作于方式1,计数1次,时长1us,故计数器计数10000次,进入中断,计数初值为65536-10000=55536=#0D8F0装满定时器需要0.01s的时间,从而100次中断为一秒,一秒之后,判断是否到60秒,若不到则秒加一,然后返回,若到,则秒赋值为0,分加一,依次类推。

括日期显示的功能也是如此。

另外,由于要实现倒计时功能,因此在中断程序中还要加入减一的寄存器,需要时将其进行显示。

基于以上考虑,以R3为倒计

时中的秒,R4为倒计时的分,当秒加1时R3减一,减到0之后,秒赋值为59,分减一,直到分为0。

计数器T1工作于方式1,当调用响铃程序时,其计数功能开启,为音乐音调不同频率的方波的形成,提供延时。

其中断服务程序就是根据音调改变音乐方波输出口电平的高低,用语句CPL实现。

中断服务程序中日历的实现较为复杂,要考虑平年,闰年,特殊的2月,

每月的天数的不尽相同。

具体的逻辑判断方法为:

首先,要考虑年份是不是闰年,闰年的判断方法是:

将年份除以100,若能整除,贝U将年份除以400,若还能整除,贝U为闰年,若不能,贝以平年;若不能被100整除,贝U判断是否能被4整除,若能,则为闰年,若不能则为平年。

只有2月与平、闰年相关,因此在闰

年和平年的子程序中,要判断是不是2月,若是则在相应的年中进行日期的增加,若不是则转入平时的月份。

其中1、3、5、7、&10、12月是每月31天,4、6、9、11月为每月30天。

日历进位判断流程图如下:

 

本实验用8个数码管,刚好能显示年,月,日,扫描显示与时间的扫描显示类似。

年比较特殊,由两个寄存器存储,个位,十位为0时,表明年数能被100整除,若此时千位,百位

组成两位数能被4整除,则年数被400整除,为闰年。

若十位,个位组成两位数能被4整除,则年数能被4整除,为闰年。

B.2.3主程序

主程序主要对按键进行扫描,以及判断定时和闹铃时间是否已到,若到则调用相关程序。

B.2.4显示子程序

8个数码管轮流进行显示,分别显示1ms依赖人的视觉暂留效应,给人以数码管持续高亮的错觉。

日期的显示,秒表的显示,倒计时的显示,调闹铃,调定时的显示,闪烁的显示程序与以上的的扫描相似,有的以子程序的方式出现,通过子程序调用语句ACAL调用;有点直接嵌套在相应的程序里面,顺序执行,或者用调转语句AJM調用。

D_1MS:

延时程序:

MOVR7,#2D_5:

MOVR2,#250

DJNZR2,$

JZMIAO。

判断分是否到闹铃所定

DJNZR7,D_5

RET

间,若到,则对秒进行判断;若不

主程序:

MAIN:

JNBP3.0QATETZ。

按下0键,显

示日期并可对日期进行调整

对定时进行判断

JNBP3.1,ZSTZ1。

按下1键,显

AJMPDSPDKQ

示时间,并可调时

MIAO:

JNBP3.2,NLTZZ。

按下2键,进

MOVA,SECOND

行闹铃设置

SUBBA,#0

JNBP3.3QSTZ。

按下3键,进

JZSHENGYIN1。

判断秒是否到闹

行定时设置

JNBP3.4,CESHI。

闹铃测试

JNBP3.6,STOPWATCHTZ按下6

定时间,若到,则时,分,秒都到

键,进入秒表方式

ACALLDISP。

调用时钟显示子程

闹铃

时刻,进入响铃子程序;若不到则

JNBP0.6,RERING。

判断是否开

启闹铃重响功能

断定时

RE:

JNBP2.7QSPDKQ。

判断是

AJMPDSPDKQ

否开启闹铃功能,没开则去判断定时

RERING:

闹铃重响判断程序

FMQPD:

判断定时值R4,R3是否

JNBF0,RE。

标志位F0为0,不

到零、闹铃时刻是否已到

进行闹铃重响设定

CPLF0

MOV3CH,#1定时判断标志位赋

1,定时判断功能开启

MOVA,HOUR

JNBP0.7,M1。

闹铃重响间隔时间

SUBBA,38H

选取

JZFEN。

判断小时数是否到闹铃

MOVR4,#0。

闹铃重响间隔30秒

MOVR3,#30

定时间,若到

AJMPMAIN

,则对分进行判断;若不到,

M1:

闹铃重响间隔60秒

则对定时进行判断

MOVR4,#1

AJMPDSPDKQ

MOVR3,#0

FEN:

AJMPMAIN

MOVA,MINUTE

DSPDKQ:

判断是否应该进行定

SUBBA,37H

时判断

MOVA,3CH。

3CH是引入的判断因

当其为0时,不对定时时间是否到0

进行判断

JNZDSPD2。

当3CH不是0时,跳转

到定时判断程序

AJMPMAIN

DSPD2:

MOVA,R4

JZS_PD。

R4所存定时分数为0,则

而判断R3所存定时秒数

AJMPMAIN

S_PD:

MOVA,R3

JNZMAIN。

R4,R3所存参数减为

0,定时长度已到

JNBP0.6,SHENGYIN2。

闹铃重响

功能开启时,跳入响铃程序

AJMPTISHI。

不是闹铃重响定

则定时时间到时,跳入提示程序

AJMPMAIN

CESHI:

ACALLRING

AJMPMAIN

SHENGYIN1。

调用响铃子程序

LCALLRING

AJMPMAIN

SHENGYIN2:

SETBF0。

闹铃重响标志位设定

LCALLRING。

响铃

CLRF0。

标志位复位

AJMPMAIN

NLTZZ:

AJMPNLTZ1。

跳入闹铃调整程序

DSTZ:

AJMPDSTZ1。

跳入定时调整程序

DATETZ:

AJMPDATETZ1跳入日期调整程序

STOPWATCHTZ:

AJMPSTOPWATCHTZ跳入秒表程

显示子程序:

DISP:

时间显示子程序

JNBP3.7,OUT1。

判断节能开关7

转是

否按下,按下则数码管不显示,延长

其/、寿命

MOVDPTR,#LEDTAB

MOVA,SECOND显示当前时间秒

MOVB,#10

DIVAB。

A存十位,B存个位

MOVCA,@A+DPTR

MOVP1,A

CLRSEC_S

ACALLD_1MS。

显示当前时间秒

十位

SETBSEC_S

MOVA,B

MOVCA,@A+DPTR

MOVP1,A

CLRSEC_G

ACALLD_1MS。

显示当前时间秒

个位

SETBSEC_G

MOVA,MINUTE显示当前时间分

MOVB,#10

DIVAB

MOVCA,@A+DPTR

MOVP1,A

CLRMIN_S

ACALLD_1MS

SETBMIN_S

MOVA,B

MOVCA,@A+DPTR

MOVP1,A

CLRMIN_G

ACALLD_1MS

SETBMIN_G

MOVA,HOUR显示当前时间时位

MOVB,#10

DIVAB

MOVDPTR,#LEDTAB

MOVCA,@A+DPTR

MOVP1,A

CLRHOU_S

ACALLD_1MS

SETBHOU_S

MOVA,B

MOVCA,@A+DPTR

MOVP1,A

CLRHOU_G

ACALLD_1MS

SETBHOU_G

MOVA,WEEK显示当前星期数

MOVCA,@A+DPTR

MOVP1,A

CLRY_S

ACALLD_1MS

SETBY_S

OUT1:

RET

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

当前位置:首页 > 自然科学 > 物理

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

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