时钟设计报告Word文件下载.docx

上传人:b****6 文档编号:20175583 上传时间:2023-01-17 格式:DOCX 页数:41 大小:1.08MB
下载 相关 举报
时钟设计报告Word文件下载.docx_第1页
第1页 / 共41页
时钟设计报告Word文件下载.docx_第2页
第2页 / 共41页
时钟设计报告Word文件下载.docx_第3页
第3页 / 共41页
时钟设计报告Word文件下载.docx_第4页
第4页 / 共41页
时钟设计报告Word文件下载.docx_第5页
第5页 / 共41页
点击查看更多>>
下载资源
资源描述

时钟设计报告Word文件下载.docx

《时钟设计报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《时钟设计报告Word文件下载.docx(41页珍藏版)》请在冰豆网上搜索。

时钟设计报告Word文件下载.docx

(3)对时、分、秒作加1处理时,应注意它们的个位、十位的进位问题,选取一个合适的算法。

(4)在主程序中对时间进行调校前应关闭中断,以防在调校过程中定时中断服务程序也对时间进行修改而造成混乱。

(5)选择计数单元时应注意不得与子程序的使用单元发生冲突。

(6)参考流程图(见后所附)。

1.6工作环境简介

(1)硬件:

计算机一台、ZY15MCU12BD型综合单片机实验箱一台、通讯电缆一根。

(2)软件:

Windows操作系统、KeilC51软件。

1.7调试指南

首先调通子程序,对显示和键盘扫描子程序,可以仿照实验3、实验4进行调试;

对于其它新编子程序,可以用键盘输入入口参数,再用单步、设断点运行的方法看各中间环节的结果是否为预期值。

最后再用同样的方法调试主程序。

可以在Proteus仿真软件中进行预调试,待各种错误排除后,再到实际硬件中调试。

在仿真软件环境下运行,有可能因计算机的处理能力不够而走时缓慢,而在实际硬件中运行正常。

1.8推荐参考文献

(1)胡汉才单片机原理及其接口技术(第二版).北京:

清华大学出版社,2004.2

(2)徐安等单片机原理及应用.北京:

北京希望电子出版社,2003.2

(3)丁元杰单片微机原理及应用(第二版).北京:

机械工业出版社,1999.10

(4)李建忠单片机原理及应用.西安:

西安电子科技大学出版社,2002.2

(5)徐惠民单片微型计算机原理、接口及应用(第二版).北京:

北京邮电大学出版社,2000.10

(6)闫玉德MCS-51单片机原理及应用(C语言版).北京:

机械工业出版社

(7)何桥等单片机原理及应用.北京:

中国铁道出版社,2004.3

(8)李群芳单片机原理、接口及应用—嵌入式系统技术基础.北京:

清华大学出版社,2005.3

1.9主程序流程图

开始

初始化(定时器、显示区、

中断系统、计数单元等)

开中断

调用显示子程序

调用键盘扫描子程序

N

有键按下?

Y

关中断

秒加1处理

秒键?

分加1处理

小时加1处理

分键?

小时键?

图1主程序流程图

1.10定时器中断服务程序流程图

定时器中断处理

重送初值

保护现场

计数单元加1

到1秒?

秒加1

秒清0、分加1

秒到60?

分清0、小时加1

分到60?

小时到24?

小时清0

恢复现场

中断返回

图2定时器中断程序流程图

基于MCS-51单片机的时钟设计

2硬件结构概述

2.18051硬件结构与原理

8051内部由算数逻辑部件ALU、定时控制部件和寄存器组等组成

2.2电源电路

使用开发板或者实验箱上的5V电源进行供电。

2.38段LED显示器

1、MCS-51CPU通过一片8255对8段LED显示器进行段驱动和位驱动,8255的A口、B口、C口、控制口的地址分别为片外RAM的4000H、4001H、4002H、4003H。

2、.LED显示器的各段由8255的B口驱动,低电平对应段发光,高电平对应段熄灭。

各段的驱动位如图5-1,各显示字的字形代码如下所示:

显示字字形代码显示字字形代码显示字字形代码0C0H0.40H-BFH

1F9H1.79H灭FFH

2A4H2.24H

D7

3B0H3.30H

499H4.19H

592H5.12H

682H6.02H

7F8H7.78H

880H8.00H

990H9.10H

A88HA.08H

B83HB.03H

图5-18段LED各段控制位

CC6HC.46H

DA1HD.21H

E86HE.06H

F8EHF.0EH

3.LED显示器的各位由8255的A口驱动,低电平对应位发光,高电平对应位熄灭。

LED显示器对应位口位

左起第一位D0

左起第二位D1

左起第三位D2

左起第四位D3

左起第五位D4

左起第六位D5

2.44*4矩阵键盘

实验箱上有一个16键的矩阵键盘,分为4行×

4列。

4行分别连接到一片8255(与8段LED显示器的段驱动和位驱动共用)的PC0~PC3,4列分别连接到8255的PC4~PC7。

8255的A口、B口、C口、控制口的地址分别为片外RAM的4000H、4001H、4002H、4003H。

第4列

第3列

第2列

第1列

PC3

00H

01H

02H

03H

第4行

PC2

04H

05H

06H

07H

第3行

PC1

08H

09H

0AH

0BH

第2行

PC0

0CH

0DH

0EH

0FH

第1行

PC7

PC6

PC5

PC4

列驱动

图6-1键盘布置及键值

选择列驱动码使某一列为低电平而其它列为高电平,再读取行输入,若该列有键按下则相应的位便是低电平。

每个键均安排一个键值。

2.5可编程并行接口8255A

2.5.18255A的基本性能

可编程通用并行输入/输出接口电路

通用性强,使用灵活,通过它CPU可直接与外设相连

具有三个相互独立的输入/输出端口

A端口、B端口、C端口

三个端口可联合使用,构成具有握手联络信号的并行接口

端口有多种工作方式可供选择

A口有三种工作方式:

方式0、1、2

B口有二种工作方式:

方式0、方式1

2.5.28255A的内部结构

三个数据端口:

A口、B口、C口

每个端口都是8位的,可以选择为输入/输出口

A口:

8位输出锁存/缓冲、输入锁存/缓冲

B口:

C口:

8位输出锁存/缓冲、输入缓冲

可分为两个4位端口分别使用

A组、B组控制电路

A组:

控制A口和C口上半部分(PC4~PC7)

B组:

控制B口和C口下半部分(PC0~PC3)

2.5.38255A的引脚图

2.5.48255A的控制字

工作方式控制字的格式

3软件结构概述

3.1显示子程序

3.1.1程序流程图

返回

显示子程序的详细流程图

3.1.2显示子程序代码

DIS:

MOVR0,#20H

MOVR2,#0FEH

MOV27H,#21H

LOOP6:

MOVA,R0

MOV28H,#00H

CJNEA,27H,CHANGE

MOV28H,#10H

INC27H

MOVA,27H

CJNEA,#27H,JAMPP

JAMPP:

CLRA

CHANGE:

MOVA,@R0

ADDA,28H

MOVDPTR,#SUBTAB

MOVCA,@A+DPTR

MOVDPTR,#4001H

MOVX@DPTR,A

MOVA,R2

MOVDPTR,#4000H

MOVR3,#5

LOOP4:

MOVR4,#25

LOOP5:

MOVR1,#10

DJNZR1,$

DJNZR4,LOOP5

DJNZR3,LOOP4

MOVA,#0FFH

RLA

MOVR2,A

INCR0

CJNER0,#26H,LOOP6

RET

SUBTAB:

DB0C0H,0F9H,0A4H,0B0H,99H

DB92H,82H,0F8H,80H,90H

DB88H,83H,0C6H,0A1H,86H

DB8EH,40H,79H,24H,30H

DB19H,12H,02H,78H,00H

DB10H,08H,03H,46H,21H

DB06H,0EH,0BFH,0FFH

3.2键盘扫描子程序

3.2.1程序流程图

读取列值

返回键值0FFH

列值加上行首值

并查键值表

返回键值

键盘扫描流程图

3.2.2键盘扫描程序代码

KEY:

MOVDPTR,#4002H

MOVA,#00H

MOVXA,@DPTR

ANLA,#0FH

CJNEA,#0FH,KEYSCAN

SJMPEXIT

KEYSCAN:

ACALLDY20MS

MOVR2,#0EFH

MOVR3,#04H

MOVR0,#00H

KEYSM1:

MOVA,R2

CJNEA,#0FH,JSADD

DJNZR3,KEYSM1

EXIT:

SJMPDONE

JSADD:

JBACC.0,JSADD1

AJMPJSADD4

JSADD1:

JBACC.1,JSADD2

MOVA,#04H

JSADD2:

JBACC.2,JSADD3

MOVA,#08H

JSADD3:

JBACC.3,JSADD4

MOVA,#0CH

JSADD4:

ADDA,R0

MOVDPTR,#KEYTAB

DONE:

KEYTAB:

DB0FH,0EH,0DH,0CH

DB0BH,0AH,09H,08H

DB07H,06H,05H,04H

DB03H,02H,01H,00H

DY20MS:

MOVR7,#0A0H

DY20MS1:

MOVR6,#0FFH

DY20MS2:

DJNZR6,DY20MS2

DJNZR7,DY20MS1

3.3主程序设计

3.3.1主程序流程图

关定时器

CLR2AH.0

31H=0?

开定时器

SETB2AH.0

2AH.0=1?

已按奇数次31H=1,否则31H=0

是启动停止按键?

是清零按键?

时钟清零

秒加1按键?

分加1按键?

分加1

时加1

时加1按键?

秒减1按键?

秒减1

分减1按键?

分减1

时减1按键?

时减1

主程序流程图

3.3.2主程序代码

ORG0100H

MOVSP,#6FH

MOVDPTR,#4003H;

控制口地址送DPTR

MOVA,#81H;

A口、B口方式0输出,C口高4位出,低4位输入

MOVX@DPTR,A;

控制字送控制口

MOVTMOD,#10H

MOVTH1,#3CH;

送定时器初值

MOVTL1,#0B0H

MOV30H,#14H

SETBEA

RETURN:

LCALLDIS

LCALLKEY

CJNEA,#0FFH,YES1

MOVA,31H

CJNEA,#00H,START

CLRET1

CLRTR1

CLR2AH.0

SJMPRETURN

START:

JB2AH.0,RETURN

SETBET1

SETBTR1

SETB2AH.0

YES1:

CJNEA,#0FH,NO_START

INC31H

MOVA,31H

MOVB,#02H

DIVAB

MOVA,B

MOV31H,A

NO_START:

CJNEA,#0BH,NO_CLEAR

MOV20H,#00H

MOV21H,#00H

MOV22H,#00H

MOV23H,#00H

MOV24H,#00H

MOV25H,#00H

LJMPRETURN

NO_CLEAR:

CJNEA,#0AH,NOS

INC25H

MOVA,25H

CJNEA,#0AH,JMPSS

INC24H

MOV25H,#00H

MOVA,24H

CJNEA,#06H,JMPSS

MOV24H,#00H

JMPSS:

LJMPNOH

NOS:

CJNEA,#09H,NOM

INC23H

MOVA,23H

INC22H

MOV23H,#00H

MOVA,22H

CJNEA,#06H,NOH

MOV22H,#00H

SJMPNOH

NOM:

CJNEA,#08H,DEC_S

INC21H

MOVA,21H

CJNEA,#0AH,CHECK

INC20H

MOV21H,#00H

CHECK:

MOVA,20H

CJNEA,#02H,NOH

MOVA,21H

CJNEA,#04H,NOH

DEC_S:

CJNEA,#0EH,NO_DECS

DEC25H

MOVA,25H

CJNEA,#0FFH,NO_Z1

MOVA,24H

CJNEA,#00H,NO_J1

MOV25H,#00H

LJMPRETURN

NO_J1:

MOV25H,#09H

DEC24H

NO_Z1:

LJMPRETURN

NO_DECS:

CJNEA,#0DH,NO_DECM

DEC23H

MOVA,23H

CJNEA,#0FFH,NO_Z2

MOVA,22H

CJNEA,#00H,NO_J2

NO_J2:

MOV23H,#09H

DEC22H

NO_Z2:

NO_DECM:

CJNEA,#07H,NOH

DEC21H

CJNEA,#0FFH,NOH

MOVA,20H

CJNEA,#00H,NO_J3

NO_J3:

MOV21H,#09H

DEC20H

NOH:

3.4中断服务程序

3.4.1中断服务程序流程图

计数单元减1

定时器中断程序流程图

3.4.2中断服务程序代码

ORG001BH

AJMPsheji_EI

ORG0050H

sheji_EI:

PUSHPSW

PUSHACC

DJNZ30H,JAMP

MOV30H,#14H

CJNEA,#0AH,JAMP1

JAMP1:

JCJAMP

INC24H

CJNEA,#06H,JAMP2

JAMP2:

CJNEA,#0AH,JAMP3

JAMP3:

CJNEA,#06H,JAMP4

JAMP4:

CJNEA,#0AH,JAMP5

JAMP5:

MOVA,20H

CJNEA,#02H,JAMP6

JAMP6:

MOVA,21H

CJNEA,#04H,JAMP7

JAMP7:

MOV20H,#00H

MOV21H,#00H

JAMP:

MOVTH1,#3CH;

重送定时器初值

MOVTL1,#0B0H

POPACC

POPPSW

RETI

END

3.5调试过程

照着程序流程图慢慢的在keil软件中写出课设所要求的程序代码,并进行编译,看看是否有指令错误,如果指令正确会生成.hex的文件,然后在proteus7软件添加仿真电路图并加载.hex文件于8031或89C51芯片中,点击仿真运行按钮进行仿真,会看到下图所示的效果:

但是第一代代码毕竟不是那么完美,在进行按键对分钟进行加1调整时会出现如下的结果:

上图出现了字母A的显示,这是因为软件代码中没有对加1之后的单元里面的值进行范围的限制,此时的按键加1代码如下:

CLRET1

CJNEA,#0FH,NO_S;

F键秒钟加1

SJMPNO_H

NO_S:

CJNEA,#0BH,NO_M;

B键分钟加1

INC23H

SJMPNO_H

NO_M:

CJNEA,#07H,NO_H;

7键时钟加1

INC21H

在进行了代码的优化之后显示不再出现字母:

优化代码如下:

YES1:

MOVA,#0AH,NO_S

CJNEA,#0AH,NO_S

INC23H

MOVA,#0AH,NO_M

CJNEA,#0AH,NO_M

SJMPNO_H

经过上述代码优化后效果是好了不少,但是对时钟显示以及显示范围没有处理好,时钟要求23显示后下一位是00而不是24,所以时钟代码优化如下:

NO_M:

CJNEA,#07H,NO_H

CHECK:

CJNEA,#02H,NO_H

CJNEA,#04H,NO_H

在上述所有优化后数码管显示23.59.59之后会显示00.00.00,这就是我们日常生活中说需要的效果。

在中断服务程序中也要对加1操作进行上述代码的类似优

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

当前位置:首页 > 小学教育 > 语文

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

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