电子时钟设计最终版讲解.docx

上传人:b****1 文档编号:1690555 上传时间:2023-05-01 格式:DOCX 页数:20 大小:82.89KB
下载 相关 举报
电子时钟设计最终版讲解.docx_第1页
第1页 / 共20页
电子时钟设计最终版讲解.docx_第2页
第2页 / 共20页
电子时钟设计最终版讲解.docx_第3页
第3页 / 共20页
电子时钟设计最终版讲解.docx_第4页
第4页 / 共20页
电子时钟设计最终版讲解.docx_第5页
第5页 / 共20页
电子时钟设计最终版讲解.docx_第6页
第6页 / 共20页
电子时钟设计最终版讲解.docx_第7页
第7页 / 共20页
电子时钟设计最终版讲解.docx_第8页
第8页 / 共20页
电子时钟设计最终版讲解.docx_第9页
第9页 / 共20页
电子时钟设计最终版讲解.docx_第10页
第10页 / 共20页
电子时钟设计最终版讲解.docx_第11页
第11页 / 共20页
电子时钟设计最终版讲解.docx_第12页
第12页 / 共20页
电子时钟设计最终版讲解.docx_第13页
第13页 / 共20页
电子时钟设计最终版讲解.docx_第14页
第14页 / 共20页
电子时钟设计最终版讲解.docx_第15页
第15页 / 共20页
电子时钟设计最终版讲解.docx_第16页
第16页 / 共20页
电子时钟设计最终版讲解.docx_第17页
第17页 / 共20页
电子时钟设计最终版讲解.docx_第18页
第18页 / 共20页
电子时钟设计最终版讲解.docx_第19页
第19页 / 共20页
电子时钟设计最终版讲解.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

电子时钟设计最终版讲解.docx

《电子时钟设计最终版讲解.docx》由会员分享,可在线阅读,更多相关《电子时钟设计最终版讲解.docx(20页珍藏版)》请在冰点文库上搜索。

电子时钟设计最终版讲解.docx

电子时钟设计最终版讲解

前言

计算机的产生加快了人类改造世界的步伐,但是它毕竟体积大。

微型计算机原理控制在这种情况下诞生了。

截止今日,微型计算机原理控制应用技术飞速发展,纵观我们现在生活的各个领域,从导弹的导航装置,到飞机上各种仪表的控制,从计算机的网络通讯与数据传输,到工业自动化过程的实时控制和数据处理,以及我们生活中广泛使用的各种智能IC卡、电子宠物等,这些都离不开微型计算机原理控制。

微机控制即微型计算机原理控制。

是集CPU,RAM,ROM,定时,计数和多种接口于一体的微控制器。

它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。

这次毕业设计通过对它的学习,应用,从而达到学习、设计、开发软、硬的能力。

本文通过对一个基于微型计算机的能实现电子时钟的设计学习,详细介绍了微型计算机原理控制的应用中的数据转换显示,LED显示原理,微型计算机控制的定时中断原理。

从而达到学习、了解微机原理控制的相关指令在各方面的应用。

系统由8253、8255、8259等构成,能实现时钟显示的功能,能进行分、秒的显示。

文章后附有电路原理图,电路接线图和程序清单,以供读者参考。

因水平有限,难免有疏落不足之处,敬请老师和同学能给与批评指正。

第一章设计任务描述

1.1设计题目

1.2设计目的

1.3设计任务

1.4设计要求

第二章系统分析与设计

2.1设计环境及设备

2.2设计思路

第三章设计所用芯片及其结构

3.18259A芯片的内部结构及引脚

3.28255芯片的内部结构及引脚

3.38253芯片的内部结构及引脚第四章电路实现

4.1分析论证

4.2设计电路图

4.3原理说明

4.4元件功能说明

4.5程序框图第五章源程序编写

第一章设计任务描述

1.1设计题目电子时钟程序设计

1.2设计目的

1.3设计任务

1.4设计要求

第二章系统分析与设计

2.1设计环境及设备

1、设计环境

PC机一台、xp系统、protel软件。

2、设计所用设备

8253定时器:

用于产生秒脉冲,其输出信号可作为中断请示信号送IRQ2。

8255并口:

用做接口芯片,和小键盘相连。

8259中断控制器:

用于产生中断。

数码管:

用于显示时:

分:

秒。

2.2设计思路电子时钟主要由显示模块、对时模块和时钟运算模块三大部分组成。

其中对时模块和时钟运算模块要对时、分、秒的数值进行操作,并且秒计算到60时,要自己清零并向分进1;分计算到60时,要自己清零并向时进1;时计算到24时,要清零。

这样,才能循环记时。

本系统设计的电子时钟以8088微处理器作为CPU,用8253做定时计数器产生时钟频率,8255做可编程并行接口显示时钟和键盘电路,8259做中断控制器产生中断。

在此系统中,8253的功能是定时,接入8253的CLK信号为周期性时钟信号。

8253采用计数器0,工作于方式2,使8253的OUT0端输出周期性的负脉冲信号。

即每隔20ms,8253的OUT0端就会输出一个负脉冲的信号,此信号接8259的IR2,当中断到50次数后,CPU即处理,使液晶显示器上的时间发生变化。

其中8259只需初始化ICW1,其功能是向8259表明IRx输入是电瓶触发方式还是上升沿触发方式,是单片8259还是多片8259。

8259接收到信号后,产生中断信号送CPU处理。

第三章设计所用芯片及其结构

3.18259A芯片的内部结构及引脚

1、中断控制器8259A是Intel公司专为控制优先级中断而设计开发的芯片。

它将中断源优先排队、辨别中断源以及提供中断矢量的电路集中于一片中。

因此无需附加任何电路,只需对8259A编程,就可以管理

8级中断,并选择优先模式和中断请求方式,即中断

图3.18259A引脚图

结构可以由用户编程来设定。

在MD微机系统中,8259

芯片工作于单片方式。

2、8259引脚图如图3.3,各引脚功能如下D7~D0——八条双向数据线;WR(低电平有效)——写输入信号;RD(低电平有效)——读输入信号;CS(低电平有效)——片选输入信号;A0——地址信号;INT——中断请求信号;INTA(低电平有效)——中断响应信号;

CAS0~CAS—2—级联信号,形成一条专用

8259A总线,以便多片8259A的级联;

SP/EN——从编程/允许级联。

在缓冲方式中,可用做输出信号以控制总线缓冲器的接收和发送。

在非缓冲方式中,作为输入信号用于表示主片还是从片;

IR0~IR7——外部中断请求输入线。

要求输入的中断请求信号是由低电平到高电平的上升沿(并保持高电平到CPU响应时为止)或者是高电平。

3、8259中断矢量地址与中断信号之间的关系如表3.1所示:

表3.18259A中断矢量表

中断序

0

1

2

3

4

5

6

7

功能调

08H

09H

0AH

0BH

0CH

0DH

0EH

0FH

矢量地

20H

24H

28H

2CH

30H

34H

38H

3CH

23H

27H

2BH

2FH

33H

37H

3BH

3FH

说明

时钟

键盘

可用

可用

串行

可用

可用

可用

3.28255芯片的内部结构及引脚

1、8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,用+5V单电源供电,能在以下三种工作方式下工作:

方式0—基本输入/输出方式

方式1—选通输入/输出方式方式2—双向选通输入/输出方式8255引脚图如图3.2示,各引脚功能如下。

D7~D0——与CPU侧连接的八条双向数据线;WR(低电平有效)——写输入信号;RD(低电平有效)——读输入信号;CS(低电平有效)——片选输入信号;A0、A1——片内寄存器选择输入信号;PA7~PA0——A口外设双向数据线;PB7~PB0——B口外设双向数据线;PC7~PC0——C口外设双向数据线;RESET——复位输入信号

2、8255端口地址

表3.28255端口地址表

信号线

寄存器

编址

IOY3

A口

60H

B口

61H

62H

C口

控制寄存器63H

3.38253芯片的内部结构及引脚

1、8253可编程定时/计数器是Intel公司生产的通用外围芯片之一,有3个独立的十六位计数器,技术频率范围为0~2MHZ,它所有的技术方式和操作方式都通过编程控制。

8253的功能用途是:

(1)

延时中断

(2)

可编程频率发生器

(3)

事件计数器

(4)

二进倍频器

(5)

实时时钟

(6)

数字单稳

(7)

复杂的电机控制器

2、8253有六种工作方式:

图3.38253引脚图

1)方式0:

计数结束中断

2)方式1:

可编程频率发生器

3)方式2:

频率发生器

4)方式3:

方波频率发生器

5)方式4:

软件触发的选通信号

6)方式5:

硬件触发的选通信号

3、8253引脚图如图3.3示,各引脚功能如下。

D7~D0——八条双向数据线;

WR(低电平有效)——写输入信号;

RD(低电平有效)——读输入信号;

CS(低电平有效)——片选输入信号;

A0、A1——片内寄存器地址输入信号;

CLK——计数输入,用于输入定时基准脉冲或计数脉冲;

OUT——输出信号,以相应的电平指示计数的完成,或输出脉冲波形;

GATE——选通输入(门控输入),用于启动或禁止计数器的操作,以使计数器和计测对象同步。

4、8253端口地址

表3.38253端口地址表

信号线

寄存器

编址

IOY2

0#计数器

40H

1#计数器

41H

2#计数器

42H

控制寄存器

43H

第四章电路实现

4.1分析论证

1、显示模块利用数码管的显示功能来设计。

数码管是由八个条形发光二极管组成的,这些发光二极管的阴极是互相连接在一起的,所以称为共阴极数码管。

通过在这八个发光二极管的阳极加+5V或0V的电压使不同的二极管发光,形成不同的字符和数字。

电子时钟用到的是0到9十个数字,他们所对应的字符表依次是3FH、06H、5BH、4FH、66H、6DH、7DH、07H、7FH、6FH。

该模块主要是将时钟运算模块和对时模块运算出来并存放在内存单元里的十六进制表示的时位和分位数据转化十进制,并通过四个数码管显示出来。

该模块实现的硬件是TND86/88的LED-KEYBOARDUNIT。

2、时钟运算模块

该模块的主要功能是对时、分、秒的运算,并把运算出的最终结果存到事先已经开辟的内存单元里,以便显示模块即时地显示出来。

该模块可以细分为秒定时模块和运算模块。

秒定时模块负责提供中断信号,由于CPU运算模块中的指令消耗一定的时间,所以中断信号最好通过硬件来实现,可以选择TND86/88实验箱中的8253定时/计数器来提供,但又因为8253所能提供的信号的周期时毫秒级的,因此必须通过软件的方法在运算模块中设置一个统计中断次数的变量,并且这一变量必须事先在内存里开辟存储单元。

中断信号是8253的通道2工作方式为方式3时,产生一个40ms的脉冲信号。

运算模块负责时、分、秒的计算,该模块主要通过8259的IRQ7号中断来实现,首先将秒定时模块提供的中断信号为8259的IRQ7中断请求信号。

但由于每40ms一次中断请求。

所以在中断服务程序必须利用已申请内存单元count来统计中断请求的次数,只有当count的值为25时,才能让秒单元内的数值加1。

另外,在中断服务程序里,必须对秒、分和时的单元内的数值进行判断,当秒加到60时,分必须加1、秒清零;当分加到60时,时加1、分清零。

当时加到24啊,直接清零。

3、对时模块该模块主要功能是修改时、分内存单元的数值。

在对时的时候,秒应停止不变,并且在对分进行调整的时,时单元内的数值不变。

由以上分析可见,对时、分的调整用两个优先级高于IRQ7

的中断来完成。

因此,可以用8259的IRQ2中断来实现,两个中断源的中断请求信号只需直接接在两个按键即可起到对时作用。

4.2设计电路图

电子时钟的完整电路图如下:

 

 

4.3原理说明

电子时钟主要由8259A中断控制器、8253定时/计数器、8255A

接口芯片、LED数码显示管和两个按键组成。

主要用8259A的IRQ7的中断服务程序完成秒、分、时的运算即计时功能,IRQ6的中断服务程序完成调时、调分功能。

8253用来产生50ms的脉冲信号作为IRQ7的中断请求信号。

按键KK1+和KK2+分别作为IRQ2和IRQ6的中断请求信号。

按键KK1+启动/关闭对时功能。

它决定是否屏蔽IRQ7和IRQ6中断源。

8255A负责将内存里的时位和分位值输出到数码管

4.4元件功能说明

1、8259A的主要功能:

(1)每片8259A可管理8级优先级中断源,通过开关,最多可管理64级优先权的中断源。

(2)对任何一个级别的中断源都可单独进行屏蔽,使该级中断请求暂时被挂起,直到取消屏蔽时为止。

(3)能向CPU提供可编程的标识码。

(4)具有多种中断优先权管理方式。

有完全嵌套方式、自动循环方式、特殊循环方式、特殊屏蔽方式和查询方式五种。

这些管理方式均可通过程序动态地进行变化。

在本设计中用到了这四种功能,电子时钟的灵活调时功能就是通过对级别的屏蔽或开启来实现的。

2、8255A的主要功能:

可编程外设接口芯片可由程序改变其功能,通用性强、使用灵活。

通过8255A,CPU可直接同外设相连接,其负责CPU和外设之间的数据传送。

3、8253的主要功能:

可编程定时器/计数器,其定时与计数功能可由程序灵活地设

定,设定后与CPU并行工作,不占用CPU的时间。

通道2工作在3方式下,提供计算一秒的中断请求信号

4.5程序框图

1、显示模块流程图

2、中断服务程序IRQ7流程图

 

IRQ6流程图

IRQ2流程图

OFF=OFF+1

Yes

OFF=3?

No

Yes

IRQ6

中断服务

IRQ2中断

程序IRQ2

OFF=1?

3、中断服务程序

4、中断服务程序

No

Yes

OFF=2?

No

No

Yes

M=M+1

IRET

Yes

No

M=60

H=H+1

Yes

No

H=24?

M=0

Yes

服务

IRQ6中断

开IRQ2和IRQ6中

OFF=1?

OFF=0屏蔽IRQ7

中断

程序

H=0

IRET

OFF=0屏蔽IRQ6中断,开IRQ2和IRQ7中断

 

第五章原程序编写

STACKSEGMENTSTACK

DW64DUP(?

STACKENDS

DATASEGMENT

HDW000CH

MDW0000H

SDW0000H

COUNTDW0000H

OFFDW0000H

TABLEDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H

7FH,6FH

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

PUSHDS;把DS压入堆栈

MOVAL,81H;8255初始化A口方式0,输

出,B口方式0,输出,

OUT63H,AL

MOVAX,0000H

MOVDS,AX;设置中断向量表,将内存段设置在最

低端

MOVAX,OFFSETIRQ2;取中断处理子程序IRQ2首

地址之段内偏移地址

ADDAX,2000H

MOVSI,0028H;4*n地址

MOV[SI],AX;将段内偏移地址写入中断向量表

MOVAX,0000H;使中断处理子程序IRQ2首地址

之段地址为0

MOVSI,002AH;4*n+2地址

MOV[SI],AX;将段地址写入中断向量表48*n+2处

MOVAX,OFFSETIRQ6;取中断处理子程序IRQ2

首地址之段内偏移地址

ADDAX,2000H

MOVSI,0038H

MOV[SI],AX

MOVAX,0000H;使中断处理子程序IRQ2首地址之段地址为0

MOVSI,003AH

MOV[SI],AX

MOVAX,OFFSETIRQ7;取中断处理子程序IRQ6首地址之段内偏移地址

ADDAX,2000H

MOVSI,003CH

MOV[SI],AX

MOVAX,0000H;使中断处理子程序IRQ7首地址之段地址为0

MOVSI,003EH

MOV[SI],AX

MOVAL,0B6H;8253初始化,计数器2,先低后高两字节,方式3,二进制计数

OUT43H,AL;写入控制字

MOVAL,68H

OUT42H,AL;写入低字节

MOVAL,0BAH

OUT42H,AL;写入高字节

POPDS;把DS弹出堆栈

MOVAL,1B;8259初始化,写ICW1

OUT20H,AL

MOVAL,70H;写ICW2,写中断向量码

OUT21H,AL

MOVAL,7BH;写OCW1,屏蔽IRQ6中断,开IRQ2和IRQ7

OUT21H,AL

BEGIN:

CALLDIS;调用显示程序

STI;使IF置1,开中断

JMPBEGIN

IRQ7:

INCCOUNT

CMPCOUNT,25;判断是否到1秒

JNZRETURN

MOVAX,0

MOVCOUNT,AX;够1秒时将COUNT清零

MOVAX,S;取秒

INCAX;秒加1

MOVS,AX

CMPAX,003CH;判断是否到60秒

JNZRETURN

MOVAX,0

MOVS,AX;秒清零

MOVBX,M;取分

INCBX;分加1

MOVM,BX

CMPBX,003CH;判断是否到60分

JNZRETURN

MOVBX,0

MOVM,BX;分清零

MOVDX,H;取时

INCDX;时加1

MOVH,DX

CMPDX,0018H;判断是否到24小时

JNZRETURN

MOVDX,0

MOVH,DX;时清零

RETURN:

MOVAL,7BH

OUT21H,AL;写OCW1,屏蔽IRQ6中断,开IRQ2和IRQ7

MOVAL,20H

OUT20H,AL;写OCW2,一般EOI

IRET;中断返回

IRQ6:

MOVAX,OFF;取,OFF值

CMPAX,0001H;判断OFF是否为1

JNZHR否,转到HR

MOVBX,M;取分

HR:

R0:

和IRQ6

IRQ2:

R1:

和IRQ7

INCBX;分加1

MOVM,BX

CMPBX,003CH;判断是否到60分

JNZR0

MOVBX,0

MOVM,BX;到60分则清零

JMPR0

CMPAX,0002H;判断OFF是否为2

JNZR0

MOVBX,H;取时

INCBX;时加1

MOVH,BX

CMPBX,0018H;判断是否到24小时

JNZR0

MOVBX,0

MOVH,BX;时清零

MOVAL,0BBH;初始化8259

OUT21H,AL;写OCW1,屏蔽IRQ7中断,开IRQ2

MOVAL,20H

OUT20H,AL;写OCW2,一般EOI

INCOFF;加1

MOVBX,OFF;取OFF值

CMPBX,0003H;判断OFF是否为3

JZR1;是则转到R1

CMPBX,0001H;判断OFF是否为1

JZR2;是则转到R2

CMPBX,0002H;判断OFF是否为2

JZR2;是则转到R2

MOVBX,0000H

MOVOFF,BX;OFF清零

MOVAL,7BH;8259初始化

OUT21H,AL;写OCW1,屏蔽IRQ6中断,开IRQ2

MOVAL,20H

OUT20H,AL;写OCW2,一般EOI

IRET

R2:

MOVAL,0BBH;初始化8259

OUT21H,AL;写OCW1,屏蔽IRQ7中断,开IRQ2和IRQ6

MOVAL,20H

OUT20H,AL;写OCW2,一般EOI

IRET

DIS:

PUSHAX

MOVSI,3000H

MOVAX,M;取分

MOVBL,10

DIVBL;将分的十六进制转为十进制

MOV[SI],AH;存分个位

MOV[SI+1],AL;存分十位

MOVAX,H;取时

MOVBL,10

DIVBL;将时的十六进制转为十进制

MOV[SI+2],AH;存分个位

MOV[SI+3],AL;存分十位

MOVDL,0F7H;使分个位的数改变

MOVAL,DLAGAIN:

OUT60H,AL

MOVAL,[SI]

MOVBX,OFFSETTABLE;取TABLE中的偏移地址放到BX中

ANDAX,00FFH;取低八位

ADDBX,AX

MOVAL,[BX];找到对应的数码管字符

OUT61H,AL;输出相应数字

CALLDALLY

INCSI;取下一个数MOVAL,DL

TESTAL,01H判断DL最低位是否为1JZOUT;是则跳出

RORAL,1;使AL向右循环移位,将最低位移到最

高位

MOVDL,AL

JMPAGAIN

OUT:

POPAX

RET

DALLY:

PUSHCX

MOVCX,000FH

T1:

MOVAX,0020H

T2:

DECAX

JNZT2

LOOPT1

POPCX

RET

CODEENDS

ENDSTART

本电子时钟可以24小时循环计时,并且具有调时功能,操作方法如下:

开机运行后,即显示初始时间12:

00整。

按动一下KK1+按键即可启动调分,此时每按动一下KK2+按键分位数字加1,完成对分的调整;再按动一下KK1+按键启动调分,此时每按动一下KK2+按键时位加1,完成对时的调整。

再按一下KK1+按键即关闭功能正常计时。

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

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2