电子钟专周报告.docx

上传人:b****4 文档编号:4914082 上传时间:2022-12-11 格式:DOCX 页数:26 大小:426.23KB
下载 相关 举报
电子钟专周报告.docx_第1页
第1页 / 共26页
电子钟专周报告.docx_第2页
第2页 / 共26页
电子钟专周报告.docx_第3页
第3页 / 共26页
电子钟专周报告.docx_第4页
第4页 / 共26页
电子钟专周报告.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

电子钟专周报告.docx

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

电子钟专周报告.docx

电子钟专周报告

单片微型计算机与接口技术

专周报告

 

题目

电子钟设计

班级

10261

学号

04号

姓名

尹荣超

指导老师

傅林

完成时间

2012-5-31

 

成都电子机械高等专科学校电气与电子工程系

电子钟专周报告

一.实验目的

1.学习8051定时器时间计时处理、按键扫描及LED数码管显示的设计方法。

2.设计任务及要求:

通过LCD液晶模块,进行时间显示,格式为“时:

分:

秒”;整点报时。

二.实验要求

A.基本要求:

1.通过LCD液晶模块,进行时间显示,格式为“时:

分:

2.整点报时

3.清零

4.能对时,分,秒任意可调

B.扩展部分:

1.利用按键可对时间及闹玲进行设置,并可显示闹玲时间。

当闹玲时间到蜂鸣器发出声响,按停止键使可使闹玲声停止。

2.实现秒表功能

3.定时功能

三.实验设计分析

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

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

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

这是前期准备工作。

第二部分是硬件部分:

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

第三部分是软件部分:

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

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

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

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

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

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

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

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

四.实验要求实现

A.电路设计

1.整体设计

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

显示电路用8个共阴数码管分别显示,小时、分钟和秒,通过动态扫描进行显示,从而避免了译码器的使用,同时节约了I/0端口,使电路更加简单。

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

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

2.分块设计

模块电路主要分为:

输入部分、输出部分,复位。

2.1输入部分

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

以下为输入部分样:

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

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

2.2输出部分

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

本实验的数码管是共阴的,为了防止段选信号不能驱动数码管,故在P1口连接上拉电阻后,再送段选信号,以提高驱动,位选信号直接从P2口接入,如下图:

闹铃由P1.0端输出,模块如下:

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

B.程序设计

B.1程序总体设计

本实验用汇编程序完成.

 

 

NO

 

YES

 

结合电路图,程序设计的整体思路为:

接通电源,数码管显示时,分,秒。

并且走时显示LED灯每隔1秒改变一次明暗,此为正常工作模式。

以下为在该工作方式下模式选择的按键方式:

1.按4开始计时,秒表开始,停止

2.按1调整秒,按4继续计时

3.按2调整分,按4继续计时

4.按3调整时,按4继续计时

5.按5设置闹钟时间,再按5回复原有时间,闹铃声停止

6.按6所有设置清零

B.2程序主要模块

B.2.1不加扩展功能

主程序开始

显示时间

按1

2

按3

按4

5

6

调秒

调分

调时

开始

暂停、继续

清零

按4

按5

按4

是否有调

主程序

 

NO

 

YES

 

程序清单:

;12M晶振20100114调试完成0315修改20110303注释

STRTEQUP2.6

STPEQUP2.7

CLRREQUP3.0

SECEQUP3.5

MINEQUP3.6

HOUREQUP3.7

ORG00H

SJMPMAIN

ORG0BH

AJMPT0INT0

ORG30H

MAIN:

MOVSP,#60H

MOVR4,#20

MOVTMOD,#01H

MOVTH0,#03CH;#9EH12M晶振时定时初值取#3CB0H,还可细调,如TL=#0B7H,可以更准

MOVTL0,#0B0H;#58H

SETBET0

SETBEA

;MOV28H,#12

kS:

LCALLDISP;秒调整按键

JBSEC,KM

LCALLDISP

JNBSEC,$-3

AJMPSINC

kM:

JBMIN,KH;分调整按键

LCALLDISP

JNBMIN,$-3

AJMPMINC

KH:

JBHOUR,K1;时调整按键

LCALLDISP

JNBHOUR,$-3

AJMPHINC

SINC:

INC26H;秒调整

MOVA,26H

CJNEA,#60,SINC0

MOV26H,#0

SINC0:

AJMPKS

MINC:

INC27H;分调整

MOVA,27H

CJNEA,#60,MINC0

MOV27H,#0

MINC0:

AJMPKM

HINC:

INC28H;时调整

MOVA,28H

CJNEA,#24,HINC0

MOV28H,#0

HINC0:

AJMPKH

k1:

LCALLDISP;开始键

JBSTRT,K2

LCALLDISP

JNBSTRT,$-3

AJMPSTART

k2:

JBSTP,K3;暂停键

LCALLDISP

JNBSTP,STOP

K3:

JBCLRR,KS

LCALLDISP

JNBCLRR,CLEAR;清零键

AJMPKS

START:

SETBTR0;开始

AJMPK1

STOP:

CLRTR0;暂停

AJMPK2

CLEAR:

CLRTR0;清零

MOVA,#0

MOV26H,A

MOV27H,A

MOV28H,A

AJMPKS

DISP:

MOVA,26H

MOVB,#10

DIVAB

MOV20H,B;余数(秒个位数)

MOV21H,A;商(秒十位数)

MOVA,27H

MOVB,#10

DIVAB

MOV22H,B;余数(分个位数)

MOV23H,A;商(分十位数)

MOVA,28H

MOVB,#10

DIVAB

MOV24H,B;余数(时个位数)

MOV25H,A;商(时十位数)

MOVA,20H;秒个位

ACALLSEG7

MOVP0,A

CLRP2.0

ACALLDLY

SETBP2.0

MOVA,21H;秒十位

ACALLSEG7

MOVP0,A

CLRP2.1

ACALLDLY

SETBP2.1

MOVA,22H;分个位

ACALLSEG7

MOVP0,A

SETBP0.7

CLRP2.2

ACALLDLY

SETBP2.2

MOVA,23H;分十位

ACALLSEG7

MOVP0,A

CLRP2.3

ACALLDLY

SETBP2.3

MOVA,24H;时个位

ACALLSEG7

MOVP0,A

SETBP0.7

CLRP2.4

ACALLDLY

SETBP2.4

MOVA,25H;时十位

ACALLSEG7

MOVP0,A

CLRP2.5

ACALLDLY

SETBP2.5

RET

 

T0INT0:

MOVTH0,#03CH;#9EH;定时中断子程序。

重装定时常数

MOVTL0,#0B0H;#58H

DJNZR4,T0INTR;50msX20=1S,未满20次,跳出中断子程序

MOVR4,#20

INC26H;1S,秒存储单元内数+1

MOVA,26H

CJNEA,#60,T0INTR;未满60S,跳出中断。

MOV26H,#0;满60S,秒单元清零

INC27H;分+1

MOVA,27H

CJNEA,#60,T0INTR

MOV27H,#0

INC28H

MOVA,28H

CJNEA,#24,T0INTR

MOV28H,#0

T0INTR:

RETI

DLY10:

MOVR3,#30

D0:

ACALLDLY

DJNZR3,D0

RET

DLY:

MOVR7,#2

D1:

MOVR6,#40

DJNZR6,$

DJNZR7,D1

RET

SEG7:

INCA

MOVCA,@A+PC

RET

DB03FH;0共阴

DB006H;1

DB05BH;2

DB04FH;3

DB066H;4

DB06DH;5

DB07DH;6

DB007H;7

DB07FH;8

DB06FH;9

END

 

总体电路图:

 

加上整点提醒,响1S,闹铃响3S,定时整点总程序如下:

STRTEQUP2.6

STPEQUP2.7

CLRREQUP3.0

SECEQUP3.5

MINEQUP3.6

HOUREQUP3.7

ORG00H

AJMPMAIN

ORG0BH

AJMPT0INT

ORG1BH

AJMPT1INT

ORG30H

MAIN:

MOVSP,#60H

MOVR4,#20

MOVTMOD,#11H

MOVTH0,#03CH;#9EH定时初值取#3CB0H,还可细调如TL=#0B7H,可以更准

MOVTL0,#0B0H;#58H

MOVTH1,#0FEH

MOVTL1,#0CH

SETBEA

SETBET0

SETBET1

kS:

ACALLDISP

ACALLALARM

JBSEC,KM;秒调整按键

ACALLDISP

JNBSEC,$-2

AJMPSINC

kM:

JBMIN,KH;分调整按键

ACALLDISP

JNBMIN,$-2

AJMPMINC

KH:

JBHOUR,K1;时调整按键

ACALLDISP

JNBHOUR,$-2

AJMPHINC

SINC:

JB7FH,SINC_A

INC26H;秒调整

MOVA,26H

CJNEA,#60,SINC0

MOV26H,#0

AJMPSINC0

SINC_A:

INC36H;闹秒调整

MOVA,36H

CJNEA,#60,SINC0

MOV36H,#0

SINC0:

AJMPKS

MINC:

JB7FH,MINC_A

INC27H;分调整

MOVA,27H

CJNEA,#60,MINC0

MOV27H,#0

MINC_A:

INC37H;闹分调整

MOVA,37H

CJNEA,#60,MINC0

MOV37H,#0

MINC0:

AJMPKM

HINC:

JB7FH,HINC_A

INC28H;时调整

MOVA,28H

CJNEA,#24,HINC0

MOV28H,#0

HINC_A:

INC38H;闹时调整

MOVA,38H

CJNEA,#24,HINC0

MOV38H,#0

HINC0:

AJMPKH

k1:

ACALLDISP;开始键

JBSTRT,K2

ACALLDISP

JNBSTRT,$-2

AJMPSTART

k2:

JBSTP,K3;暂停键

ACALLDISP

JNBSTP,$-2

AJMPCL_AL

K3:

JBCLRR,KS0

ACALLDISP

JNBCLRR,CLEAR;清零键

KS0:

AJMPKS

START:

CPLTR0;开始/暂停

SETB7DH;7DH为开始键按下标志,此作为允许闹铃标志

AJMPK1

CL_AL:

CPL7FH;7FH作时钟和闹铃标志位

AJMPK2

CLEAR:

CLRTR0;清零

MOVA,#0

MOV26H,A

MOV27H,A

MOV28H,A

MOV36H,A

MOV37H,A

MOV38H,A

AJMPKS

DISP:

JB7FH,DISP_A

MOV29H,26H;秒送秒显示缓存

MOV2AH,27H

MOV2BH,28H

AJMPDISP1

DISP_A:

MOV29H,36H

MOV2AH,37H

MOV2BH,38H

DISP1:

MOVA,29H

MOVB,#10

DIVAB

MOV20H,B;余数(秒个位数)

MOV21H,A;商(秒十位数)

MOVA,2AH

MOVB,#10

DIVAB

MOV22H,B;余数(分个位数)

MOV23H,A;商(分十位数)

MOVA,2BH

MOVB,#10

DIVAB

MOV24H,B;余数(时个位数)

MOV25H,A;商(时十位数)

MOVA,20H;秒个位

ACALLSEG7

MOVP0,A

CLRP2.0

ACALLDLY

SETBP2.0

MOVA,21H;秒十位

ACALLSEG7

MOVP0,A

CLRP2.1

ACALLDLY

SETBP2.1

MOVA,22H;分个位

ACALLSEG7

MOVP0,A

SETBP0.7

CLRP2.2

ACALLDLY

SETBP2.2

MOVA,23H;分十位

ACALLSEG7

MOVP0,A

CLRP2.3

ACALLDLY

SETBP2.3

MOVA,24H;时个位

ACALLSEG7

MOVP0,A

SETBP0.7

CLRP2.4

ACALLDLY

SETBP2.4

MOVA,25H;时十位

ACALLSEG7

MOVP0,A

CLRP2.5

ACALLDLY

SETBP2.5

RET

ALARM:

JNB7DH,RT;开始键未按下跳出

MOVA,28H;开机时,时分秒都为0,跳出

JZAL0M

AJMPALARM1

AL0M:

MOVA,27H

JZAL0S

AJMPALARM1

AL0S:

MOVA,26H

JZRT

ALARM1:

MOVA,28H;比较小时

CJNEA,38H,AL;不等返回,相等,转分钟比较

MOVA,27H;比较分钟?

CJNEA,37H,AL

MOVA,26H;比较秒

CJNEA,36H,AL

AJMPALARM2;转闹铃

AL:

;整点提醒

MOVA,28H

JZRT;小时不是00,判分是不是00

MOVA,27H

JNZRT;分不是00,跳出

MOVA,26H

JNZRT

AJMPALARM3;秒不为00,跳出。

为00,整点提醒

ALARM2:

;闹铃3S

SETBTR1

MOVR0,#0

AJMPRT

ALARM3:

;整点提醒1S

SETBTR1

MOVR0,#2

RT:

RET

T0INT:

MOVTH0,#03CH;定时中断子程序。

重装定时常数

MOVTL0,#0B0H

DJNZR4,T0INTR;50msX20=1S,未满20次,跳出中断子程序

MOVR4,#20

INC26H;1S,秒存储单元内数+1

INCR0;响铃时间

MOVA,26H

CJNEA,#60,T0INTR;未满60S,跳出中断。

MOV26H,#0;满60S,秒单元清零

INC27H;分+1

MOVA,27H

CJNEA,#60,T0INTR

MOV27H,#0

INC28H

MOVA,28H

CJNEA,#24,T0INTR

MOV28H,#0

T0INTR:

RETI

T1INT:

MOVTH1,#0FEH

MOVTL1,#0CH

CPLP1.0

CJNER0,#3,T1RTI;闹铃时间设为5秒

CLRTR1;关闹铃

T1RTI:

RETI

DLY:

MOVR7,#20

MOVR6,#25

DJNZR6,$

DJNZR7,$-4

RET

 

SEG7:

INCA

MOVCA,@A+PC

RET

DB03FH;0共阴

DB006H;1

DB05BH;2

DB04FH;3

DB066H;4

DB06DH;5

DB07DH;6

DB007H;7

DB07FH;8

DB06FH;9

END

C.程序调试及仿真

2利用Proteus仿真实验过程截图:

普通时间显示模式仿真图,表示:

2点过2分11

 

普通时间显示模式仿真图,表示:

设置闹钟2分钟

普通时间显示模式仿真图,表示:

整点报时

五.实验总结及感想

一分耕耘,一分收获。

只有亲自用实践来验证这句话,在能得其要领。

经过这次单片机课程设计,我从一个单片机实践的门外汉,已经越升为略知一二的新手。

虽然还有很多有关单片机的应用有待学习,但万变不离其宗,只要深入了解单片的原理,全部知识点,各个细节,一切设计皆有可能。

刚开始的时候完全不知道怎么做,毕竟我们学单片机的时间不长,这学期开的课我在整体思路模糊的情况下,在网上大量收集资料,各种与电子时钟相关的文章,我阅读了不少。

从中找到了不少对我有帮助,以及在老师的帮助下慢慢的思路开始清晰。

通过和同组同学细心的推敲下,慢慢的对设计有了信心。

对资料有了一定的积累后我们开始了我们的设计,一点点的写程序修改再修改,慢慢的错误减少直到正确。

然后开始画图,慢慢的修改,直到仿真成功。

成功的那时候真的很开心。

实验中遇到了不少问题,接下来总结一下,共同探讨。

1.开始写程序时由于对汇编语言有的指令不熟悉导致很多错误,经过老师指导及翻书查询把错误找出来,对症下药。

感觉到自己知识学得不牢靠,再以后的学习中严格要求自己。

2.按键问题。

我们的设计中,功能选择是通过按键开关实现的。

在仿真中发现,调整数值时,有时按键反应太快,按一次,跳了几下,使设置时间,。

但是仿真多了之后,找到了按键(实际上是按鼠标)的节奏,对按键的掌控力提高了不少。

3.P0口开关问题。

P0口比较特殊,它存在高阻态,要使其输入不是高电平就是低电平,就要接上拉电阻,给其高电平输入。

4.对画电路图有一定的难度。

主要是对元件不熟,不知道该选什么。

还有就是对元件的英文不知道,有的只有慢慢一个个找。

比如在选择的过程中,第一次没注意显示屏是共阴还是共阳,选了个共阳的没仿真出来,经过查找原因换了个共阴的就可以了。

以上就是实验中遇到的主要问题,基本上都找到了相应的解决之道。

整个实验的过程就是一个解决问题的过程,每天都解决一些问题,我的实验也就解决了,当然结果不重要,功利化的追求结果,会使人浮躁,还是享受那份疑难迎刃而解的快感吧!

附件:

A.Proteus电路图

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

当前位置:首页 > 考试认证 > 从业资格考试

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

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