电子时钟.docx

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

电子时钟.docx

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

电子时钟.docx

电子时钟

南京工程学院

 

课程设计任务书

  

  

 

 课程名称:

单片机原理及应用A

 院(系、部、中心):

自动化学院

 专业:

自动化(数控技术应用)

 班级:

数控061

 姓名:

付东兴

 起止日期:

2008.12.17~2008.12.21

 指导教师:

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

 

一、设计目的…………………………………………1

二、设计要求…………………………………………1

三、设计设备…………………………………………1

四、设计总体方案…………………………………………1

五、原理框图…………………………………………2

 

六、系统模块详细设计与调试

…………………………………………5

七、设计总结…………………………………………8

八、参考文献…………………………………………8

九.附件材料…………………………………………8

 

电子钟设计

一、设计目的:

1.进一步掌握定时器的使用和编程方法。

2.进一步掌握中断处理程序的编程方法。

3.进一步掌握数码显示电路的驱动方法。

二、设计要求:

利用CPU的定时器和实验仪上提供的键盘和数码显示电路,设计一个电子时钟。

1.该电子钟具有如下功能:

1)自动计时,由6位LED显示器显示时、分、秒,采用24小时计时格式如下:

XXXXXX由左向右分别为:

时、分、秒

2)具备校准功能,可以直接由0~9数字键设置当前时间,以及C/R键,即时间设定/启动计时键

2.其工作流程如下:

1)时间显示:

上电后,系统自动进入时钟显示,从00:

00:

00开始计时此时可以设定当前时间。

2)时间调整:

按下C/R键,系统停止计时,进入时间设定状态,系统保持原有显示,等待键入当前时间。

按下0~9数字键,可以顺序设置时、分、秒、并在相应的LED上显示设置值,直至六位设置完毕。

系统将自动由设定后的时间开始计时显示。

三、设备

1.LAB6000微控制器实验系统

2.PC机一台

3.实验导线

四、设计总体方案

1.设计说明

对内部定时器的说明:

1)关于内部计数器的编程主要是定时常数的设置和有关控制寄存器

的设置。

内部计数器在单片机中主要有定时器和计数器两个功能。

本设计

使用的是定时器。

2)定时器有关的寄存器有工作方式寄存器TMOD和控制寄存器TCON。

TMOD用于设置定时器/计数器的工作方式0-3,并确定用于定时还是用于计数。

TCON主要功能是为定时器的溢出时设定标志位,并控制定时器的运行或停止。

3)内部计数器用作定时器时,是对机器周期计数。

每个机器周期长度是12个振荡器周期。

因为本设计实验系统的晶振是6MHZ,所以定时常数的设置可按以下方法计算:

机器周期=12/6MHZ=2US

(65536-定时常数)*2US=20MS

定时常数=55536=0D8F0H

然后对20MS中断次数计数50次,就是1秒钟。

对八段数码管:

本设计用了6位8段数码管,8位段码6位位码是由两片74LS374输出。

位码经MC1413或ULN2003倒相驱动后,选择相应显示位。

做键盘和LED实验时,需将KEY/LEDCS接到CS0上,则段码地址为08004H,位码地址为08002H。

2.设计方案

本设计选用定时器0,选择方式1,定时常数设为0D8F0H,也就是每次中断用时20MS,中断次数计50次就是1秒钟。

数码管显示是从00000001B开始,然后依次左移。

五、原理框图

1.程序流程图

N

N

 

Y

 

Y

 

上图为中断子程序结构框图

参考电路及连线:

 

实验箱连线

CS0…………KEY/LED-CS

六.系统模块详细设计与调试

1.定时器0的初始化程序:

MOVTMOD,#01H

MOVTL0,#0F0H

MOVTH0,#0D8H

SETBEA

SETBIT0

SETBET0

SETBTR0

选定定时器0,工作方式为1,定时常数为0D8F0H,CPU开中断,允许

定时器0中断,启动定时器。

2.定时器中断子程序:

INTER:

MOVTL0,#0F0H

MOVTH0,#0D8H

INC32H

MOVR3,32H

CJNER3,#50,L1

MOV32h,#0

MOVR0,50H

INC@R0

CJNE@R0,#60,L1

MOV@R0,#0

INCR0

INC@R0

CJNE@R0,#60,L1

MOV@R0,#0

INCR0

INC@R0

CJNE@R0,#24,L1

MOV@R0,#0

L1:

RETI

重置定时常数,把秒放到50H中暂存,秒不为60中断返回,为60,秒清零,分加一;把分放到51H中暂存,不为60,中断返回,为60,分清零,时加一;把时放到52H中暂存,不为24,中断返回,为24,时清零,中断返回。

3.显示子程序

DISPLAYLED:

MOVR1,#LEDBUF

MOVR5,#6

MOVR2,#20H

LOOP:

MOVDPTR,#OUTBIT

MOVA,#0

MOVX@DPTR,A

MOVA,@R1

MOVDPTR,#OUTSEG

MOVX@DPTR,A

MOVDPTR,#OUTBIT

MOVA,R2

MOVX@DPTR,A

MOVR6,#01

CALLDELAY

MOVA,R2

RRA

MOVR2,A

INCR1

DJNZR5,LOOP

RET

从显示缓存区地址给R1,显示6个数码管,要从左边开始,依次显示输入的时间,所以给R2,20H

4.调时子程序

INTER1:

CLRTR0

MOVR3,#6

MOVR0,#3FH

MOVR1,#60H

MOV39H,R1

MOV38H,R0

LOP:

CALLDISPLAYLED

CALLTESTKEY;检查是否有按键

JZLOP

MOVR4,#10

CALLDELAY

CALLTESTKEY

JZLOP

L5:

CALLINLOOP;调用键盘扫描

CALLDISPLAYLED

MOVA,40H

L4:

CLRC

SUBBA,#00H

JCLOP

MOVA,40H

CLRC

SUBBA,#0AH

JNCLOP

MOVA,40H

MOVR0,38H

MOV@R0,A

DECR0

MOV38H,R0

MOVR1,39H

MOVDPTR,#LEDMAP

MOVCA,@A+DPTR

MOV@R1,A

INCR1

MOV39H,R1

DJNZR3,LOP

MOVA,3FH

MOVB,#10

MULAB

ADDA,3EH

MOV50H,3EH

MOVA,3DH

MOVB,#10

MULAB

ADDA,3CH

MOV51H,3CH

MOVA,3BH

MOVB,#10

MULAB

ADDA,3AH

MOV52H,3AH

CLRC

MOVA,50H

SUBBA,#25

JNCINTER1

CLRC

MOVA,51H

SUBBA,#61

JNCINTER1

CLRC

MOVA,52H

SUBBA,#61H

JNCINTER1

SETBTR0

RET

检查有没有键盘输入,如果有,时钟停止,第一个按下的键盘如果是0或1或2,那么此键不仅起到暂停作用而且直接输入到时的十位,如果此键不是那三个数,那么只起暂停作用。

下面按照真确的时间形式输入即可,6位输入完毕,时钟从新启动,而且是从设定时间开始。

调试过程:

1.把各子程序组合起来,输入PC机,以NONAME。

ASM格式保存,编译,出现的语法错误:

1)MOV@DPTR,A

改为:

MOVX@DPTR,A

2)DIVA,B

改为:

DIVAB

3)JB跳转出范围,

改正:

JB到一个小的子程序,在这个子程序中用LJMP跳转.

直到没有语法错误.

2.接线,进行防真器设置,完成后打开实验箱电源,进行防真器初始化。

全速执行。

3.观察实验结果,通过按键设置时间。

 

七.设计总结

短短的一个星期的课程设计,非常明显的感觉到自己有了很大的进步,有很多上课不是很明白的东西都明朗起来了。

这次的课程设计,把一个学期学的很多零碎的知识点都串在了一起,让我对书本的知识又熟悉了一遍,我认为在考试前,进行这个课程设计意义很大,让我很系统的复习了一遍,对我帮助很大。

 

八.参考文献

1.《单片机原理及应用实验指导书》,屈波等编,2008年

2.《单片机原理及应用》,赵德安等编,机械工业出版社,2004

3.《单片机原理及应用》,雷晓平等编著,机械工业出版社,2007

 

九、附件材料

1.程序清单

 

1

OUTBITEQU08002H

OUTSEGEQU08004H

INEQU08001H

LEDBUFEQU60H

NUMEQU70H

DELAYTEQU75H

ORG0000H

LJMPSTART

ORG000BH

LJMPINTER

LEDMAP:

DB3FH,06H,5BH,4FH,66H

DB6DH,7DH,07H,7FH,6FH

KEYTABLE:

DB17H,16H,15H,14H

DB13H,12H,11H,10H

DB0DH,0CH,0BH,0AH

DB0EH,03H,06H,09H

DB0FH,02H,05H,08H

DB00H,01H,04H,07H

DELAY:

MOVR7,#0

DELAYLOOP:

DJNZR7,DELAYLOOP

DJNZR6,DELAYLOOP

RET

 

2

START:

MOVSP,#40H

MOVTMOD,#01H

MOVTL0,#0F0H

MOVTH0,#0D8H

SETBEA

SETBIT0

setbet0

SETBTR0

MLOOP:

MOVR1,#LEDBUF

MOVR4,#50H

L2:

MOVA,@R1

MOVB,#10

DIVAB

MOVDPTR,#LEDMAP

MOV20H,A

MOVA,B

MOVCA,@A+DPTR

MOV@R1,A

INCR1

MOVA,20H

MOVCA,@A+DPTR

MOV@R1,A

INCR4

CJNER1,#LEDBUF+5,L2

MOVDELAYT,#1

DISPAGAIN:

CALLDISPLAYLED

DJNZDELAYT,DISPAGAIN

CALLTESTKEY

JZMLOOP

MOVR6,#10

CALLDELAY

CALLTESTKEY

JZMLOOP

CLRTR0

LCALLINTER1

LJMPMLOOP

3

INTER1:

CLRTR0

MOVR3,#6

MOVR0,#3FH

MOVR1,#60H

MOV39H,R1

MOV38H,R0

LOP:

CALLDISPLAYLED

CALLTESTKEY;检查是否有按键

JZLOP

MOVR4,#10

CALLDELAY

CALLTESTKEY

JZLOP

L5:

CALLINLOOP;调用键盘扫描

CALLDISPLAYLED

MOVA,40H

L4:

CLRC

SUBBA,#00H

JCLOP

MOVA,40H

CLRC

SUBBA,#0AH

JNCLOP

MOVA,40H

MOVR0,38H

MOV@R0,A

DECR0

MOV38H,R0

MOVR1,39H

MOVDPTR,#LEDMAP

MOVCA,@A+DPTR

MOV@R1,A

INCR1

MOV39H,R1

DJNZR3,LOP

MOVA,3FH

MOVB,#10

MULAB

ADDA,3EH

MOV50H,3EH

MOVA,3DH

MOVB,#10

MULAB

ADDA,3CH

MOV51H,3CH

MOVA,3BH

MOVB,#10

MULAB

ADDA,3AH

MOV52H,3AH

CLRC

MOVA,50H

SUBBA,#25

JNCINTER1

CLRC

MOVA,51H

SUBBA,#61

JNCINTER1

CLRC

MOVA,52H

SUBBA,#61H

JNCINTER1

SETBTR0

RET

 

4

INLOOP:

MOVDPTR,#OUTBIT

MOVP2,DPH

MOVR0,#LOW(IN)

MOVR1,#20H

MOVR2,#6

KLOOP:

MOVA,R1

CPLA

MOVX@DPTR,A

CPLA

RRA

MOVR1,A

MOVXA,@R0

CPLA

ANLA,#0FH

JNZGOON1

DJNZR2,KLOOP

MOVR2,#0FFH

SJMPEXIT

GOON1:

MOVR1,A

MOVA,R2

DECA

RLA

RLA

MOVR2,A

MOVA,R1

MOVR1,#4

LOOPC:

RRCA

JCEXIT

INCR2

DJNZR1,LOOPC

EXIT:

MOVA,R2

MOVDPTR,#KEYTABLE

MOVCA,@A+DPTR

MOVR2,A

WAITRELEASE:

MOV25H,R2

CALLDISPLAYLED

MOVR2,25H

MOVDPTR,#OUTBIT

CLRA

MOVX@DPTR,A

MOVR4,#10

CALLDELAY

CALLTESTKEY

JNZWAITRELEASE

MOVA,R2

MOV40H,A

L3:

RET

TESTKEY:

MOVDPTR,#OUTBIT

MOVA,#0

MOVX@DPTR,A

MOVDPTR,#IN

MOVXA,@DPTR

CPLA

ANLA,#0FH

RET

 

5

DISPLAYLED:

MOVR1,#LEDBUF

MOVR5,#6

MOVR2,#20H

LOOP:

MOVDPTR,#OUTBIT

MOVA,#0

MOVX@DPTR,A

MOVA,@R1

MOVDPTR,#OUTSEG

MOVX@DPTR,A

MOVDPTR,#OUTBIT

MOVA,R2

MOVX@DPTR,A

MOVR6,#01

CALLDELAY

MOVA,R2

RRA

MOVR2,A

INCR1

DJNZR5,LOOP

RET

 

6

INTER:

MOVTL0,#0F0H

MOVTH0,#0D8H

inc32h

movr3,32h

CJNER3,#50,L1

MOV32h,#0

MOVR0,50H

INC@R0

CJNE@R0,#60,L1

mov@r0,#0

INCR0

INC@R0

CJNE@R0,#60,L1

mov@r0,#0

INCR0

INC@R0

CJNE@R0,#24,L1

MOV@R0,#0

L1:

RETI

END

截图和所拍现场照片:

 

定时器初始化

 

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

当前位置:首页 > 解决方案 > 学习计划

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

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