六位数码管时钟设计.docx

上传人:b****8 文档编号:10620316 上传时间:2023-02-21 格式:DOCX 页数:11 大小:342.82KB
下载 相关 举报
六位数码管时钟设计.docx_第1页
第1页 / 共11页
六位数码管时钟设计.docx_第2页
第2页 / 共11页
六位数码管时钟设计.docx_第3页
第3页 / 共11页
六位数码管时钟设计.docx_第4页
第4页 / 共11页
六位数码管时钟设计.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

六位数码管时钟设计.docx

《六位数码管时钟设计.docx》由会员分享,可在线阅读,更多相关《六位数码管时钟设计.docx(11页珍藏版)》请在冰豆网上搜索。

六位数码管时钟设计.docx

六位数码管时钟设计

xxxx职业技术学院

 

《计算机控制技术》实训报告

 

题目:

六位数码管时钟设计

专业:

________机电一体化

班级:

机电1006班

学生姓名:

学号:

指导教师:

 

实训时间:

2012年12月29—2013年1月6日

一.系统设计要求

(一)设计1分钟定时程序

•选择定时器(T0/T1)

•选择适当的工作方式(方式1/方式2)

•计算并设定定时器的计数初值

•要求用中断方式

•每隔1秒钟信号取反一次,输出到P1.0引脚所连接的LED灯去。

(二)设计6位数码管显示程序

设计6位数码管显示程序,用动态扫描方式显示6位数字(如日期:

)。

段码显示由P0口负责,位码由P2口显示

(三)实际完成的功能

起始值时、分、秒全是零,系统执行初始化程序后,随即开始走时,无须特为启动。

当时钟显示为23:

59:

59时,再加1,时钟从00:

00:

00开始运行,从而达到24小时循环。

二.系统的硬件设计

•CPU--AT89C51

•段码驱动芯片--74LS245

•6位数码管--7SEG-MPX6-CC

•电阻--3WATT10K

•电容--AVX0402……、GENELECT……

•晶振--CRYSTAL

•按钮--BUTTON

6LED日期显示

三.系统的软件设计

程序流程图

主程序

子程序定时中断子程序

调节分钟中断子程序调节小时中断子程序

 

 

源程序

(一)定时程序

1秒定时(模式1)

ORG0000H

SJMPSTART

ORG000BH

SJMPINTI

ORG0030H

START:

MOVTMOD,#01H

SETBTR0

SETBEA

SETBET0

MOVR6,#10

MOVTH0,#15H

MOVTL0,#0A0H

MOVR6,#0E8H

MOVR7,#03H

SJMP$

INTI:

MOVTH0,#15H

MOVTL0,#0A0H

DJNZR6,EXIT

DJNZR7,EXIT

MOVR6,#0E8H

MOVR7,#03H

CPLP1.0

EXIT:

RETI

END

(二)6位LED显示程序

ORG0000H

LJMPLOOP4

ORG0030H

LOOP4:

MOVSP,#60H

MOVR5,#6

MOVR1,#30H

MOVR4,#1

LOOP2:

MOVA,R4

MOV@R1,A

INCR1

INCR4

DJNZR5,LOOP2

LOOP1:

MOVDPTR,#TAB

MOVR0,#30H

MOVR2,#6H

MOVR3,#0FEH

LOOP:

MOVP2,R3

MOVA,@R0

MOVCA,@A+DPTR

MOVP0,A

ACALLDE

INCR0

MOVA,R3

RLA

MOVR3,A

DJNZR2,LOOP

SJMPLOOP1

DE:

MOVR7,#0FFH

DE12:

MOVR6,#0

DJNZR6,DE12

DE1:

DJNZR7,DE1

RET

TAB:

DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H,00H

END

(三)时钟程序

ORG0000H

LJMPSTART

ORG000BH

LJMPNETI

ORG0030H

START:

MOVSP,#60H

MOVTMOD,#01H

MOVTH0,#3CH

MOVTL0,#0B0H

SETBEA

SETBET0

SETBTR0

MOVR6,#20

MOVDPTR,#TAB

LOOP2:

MOVR0,#30H

MOVR2,#6H

MOVR3,#0FEH

LOOP1:

MOVP2,R3

MOVA,@R0

MOVCA,@A+DPTR

MOVP0,A

ACALLDELAY

INCR0

MOVA,R3

RLA

MOVR3,A

DJNZR2,LOOP1

SJMPLOOP2

NETI:

MOVTH0,#3CH

MOVTL0,#0B0H

DJNZR6,EXTI1

MOVR6,#20

INC30H

D0:

MOVA,30H

CJNEA,#10,EXTI1

MOV30H,#0

MOVA,31H

INCA

MOV31H,A

CJNEA,#6,EXTI1

D2:

MOV31H,#0

MOVA,32H

INCA

MOV32H,A

CJNEA,#10,EXTI1

D3:

MOV32H,#0

MOVA,33H

INCA

MOV33H,A

CJNEA,#6,EXTI1

MOV33H,#0

MOVA,34H

INCA

MOV34H,A

EXTI1:

RETI

DELAY:

MOVR7,#0

DE1:

DJNZR7,DE1

RET

TAB:

DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H,00H

END

四、实训总结

这次单片机的实训有三任务:

第一个是一分钟定时器,由P1口的一个二极管的闪烁作标示。

第二个是显示六个七段数码管,用动态扫描的方式实现。

第三个是设定一计数器。

这三个任务的前二个是第三个任务的基础。

在实训时用WAVE6000软件来编程,用ISIS7Professional来进行彷真。

第一个任务我之前是用软件的多个环多实现,但老师说这样是不精准的,因为它们在计算时会有误差,计算出来的时间会比实际要长。

为了精确,最后用了中断进行定时。

中断的定时思路是首先将定时器各种前奏工作如开中断,开定时器,设定计器的初始值等,做好这些后就用一个原地踏步指令,等待中断的到来。

如一分钟到,那么就去处理中断子程,处理中断子程序时要判断是否到一分钟,每到一分钟就将P1口的二极管取一次反,来实现标示。

第二任务是六个七段码的显示,这个程序的设计思路是位码与段码的同步循环控制。

我是用一小循环程序实现将六个数分别送到数据寄存器的30H至35H单元内,作为要显示的数。

然后就是第一位的段码与位码设设定,每一循环一次就显示一位,当循环一次结束后就用循环程序调整下一次要显示的位码与段码,一定要注意位码与段码是严格一一对应的。

这六个七段数码管是循环显示的,当它们循环的频率足够大时人的眼睛就会看到同时显示的效果。

第三个任务是记时器的设计,要求是每一秒钟计数一次,满进位就进位,并且用六个七段码来显示记时的时间,从右到左看到去就要看到秒,分,时,每个单位都占二个七段数码管。

这个程序我总的思路是用定时中断来实现,分三个大的模块来设计。

第一个模块是定时一秒中断,第二个模块是六个七段的循环显示,第三个模块是数据的处理。

总的功能是结合前二个任务来设计的。

我的最终确定下来的程序顺序是可分为五个部分,第一个是部分是定位与设定推栈区,第二个部分是开启定时器与定时器中断,并且设定定时器的初始值,第三个部分是六个七段数码管的循环显示,这部分很相似于第二个任务的那原地踏步指令,第四个部分是中断子程序的设计,是这个任务最重要的也是最复杂的部分。

它首先是把定时器复位到所设定的初始值,然后再判断是否到了一秒的,没到则继续等待,到了则进行数据的处理,数据处理包括秒位上加一,然后再用判断是否需要进位。

第五部分则是简单的延时小程序,是在每次显示每位数码管是要调用的小程序,目的是让数管显示稳定后才到下一个数码管显示。

如果将这五个部分紧密的组织起来,就可完成第三个任务了。

在组织这五个部分的时候需要很注意几个事项:

首先必须明确每个标号的用途,要尽可能的减少标号的使用。

第二是要是明确R0至R7每个寄存器的用途,并且谨慎R0和R1是可寄存器间接寻址,需要使用间接寻址时才好使用。

第三是每个小功能不能有冲突,一但有冲突则容易整个程序的功能都无法实现。

第四是输入时一定要细心,不能输错任何一个数字与字母,还有就是在使用十进制与十六进制数时不能搞混。

第五一定要有开辟推栈区的习惯。

刚开始,程序的设计与调试都是艰难的,一定要相对树立信心,不断的检查不断的调试不断的思考不断的修改,就有很大可能完成任务。

 

教师签名:

年月日

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

当前位置:首页 > 高等教育 > 军事

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

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