微机原理课设.docx

上传人:b****7 文档编号:11519892 上传时间:2023-03-02 格式:DOCX 页数:37 大小:179.27KB
下载 相关 举报
微机原理课设.docx_第1页
第1页 / 共37页
微机原理课设.docx_第2页
第2页 / 共37页
微机原理课设.docx_第3页
第3页 / 共37页
微机原理课设.docx_第4页
第4页 / 共37页
微机原理课设.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

微机原理课设.docx

《微机原理课设.docx》由会员分享,可在线阅读,更多相关《微机原理课设.docx(37页珍藏版)》请在冰豆网上搜索。

微机原理课设.docx

微机原理课设

1数字频率计设计原理

1频率测量方法

频率测量方法有M法,T法,M/T法,测量的基本要求是快速准确。

(1)M法:

测量计数在一定时间Tc内的信号脉冲数M。

譬如,Tc=1秒,计数值M=1200,则信号频率为1200Hz;Tc=0.1秒,计数值M=1200,则信号频率为12000Hz。

显然,M法适用于高频信号的测量。

(2)T法:

测量一个完整脉冲的周期T,则此周期T的倒数就是待测频率。

譬如,测得T=0.1ms,则信号频率为10000Hz。

显然,T法适用于低频信号测量。

(3)M/T法:

测量在一定时间Tc左右M个整数脉冲的完整周期T,则待测信号频率为M/T。

首先给定一个基本时间Tc,利用计数器测得Tc内的脉冲个数,设为M。

但是,一般情况下,在Tc结束时刻并不严格的与第M个脉冲结束时刻(即第M+1个脉冲上升沿时刻)相对应,因此,利用定时器测量出Tc结束时刻到第M个脉冲结束时刻的时间ΔT,则T=Tc+ΔT,于是可求频率。

2频率测量参考方案

本系统采用M法测量频率,即测量计数在一定时间Tc内的信号脉冲数M。

譬如,Tc=1秒,计数值M=1200,则信号频率为1200Hz;Tc=0.1秒,计数值M=1200,则信号频率为12000Hz。

TD-PITE试验箱上芯片8254的CLK0接系统频率1MHz,因此,我使用8254通道0作分频器,对输入的信号进行分频,OUT0接通道1的CLK1,利用通道1进行计数。

利用延时程序每秒产生一次中断,没中断一次读一次通道1的计数值,用初值与当前计数值相减得到1秒钟计数脉冲个数,将这个差值直接送往数码管显示。

即为测量频率。

本设计能测量65535Hz以下的频率,误差小于1Hz,达到设计要求。

注:

本系统只是简单的方波频率测量,没有进一步考虑测量正弦波、三角波、锯齿波等波形的频率,如果要测量这些波形,还须添加放大整形电路。

 

2程序流程图

 

 

 

 

3器件的功能简介

3、18086简介

由于此系统最终要在西安唐都科教仪器出品的32位微机机教学实验系统TD-PITE/PITC上进行实验,故设计硬件配置时采用Intel8086,整个实验的硬件配置都以此为原则进行设计选用。

Intel8086是16位的微处理器(理论学习中为8088,其内部总线为16位,外部总线为8位,故称为准16位微处理器),它采用HMOS工艺40条引脚封装。

8086工作时使用5V电源,时钟频率5MHz(8086-1为10MHz,8086-2为8MHz)它有20根地址线,故可寻址的内存空间为1MB。

3.1.18086主要特性

Intel8086/8088CPU是Intel公司推出的高性能的微处理器,具体如下主要特性:

(1)8086CPU数据总线为16位,8088CUP数据总线为8位。

(2)地址总线都是20位,低16位用于数据总线复用,可直接寻址为1MB的存储空间。

(3)有16位的端口地址,可以寻址64KB的I/O端口。

(4)有99条基本指令,指令功能强大

(5)有9种基本寻址方式。

(6)可以处理内部和外部中断,外部中断源多达256个。

(7)兼容性好,与80*86,8085在源程序一级兼容。

(8)8086/8088标准主频为5MHz,8086/8088-2主频为8MH。

(9)支持单处理器或多处理器系统工作。

3.1.28086CPU寄存器结构

8086CPU中有14个16位的寄存器,其中有4个16位的通用寄存器,2个16位指针寄存器,2个16位变址寄存器,1个16位指令指针及1个16位标志寄存器。

通用寄存器包括累加器AX,基址寄存器BX,计数寄存器CX,数据寄存器DX四个寄存器,位于CPU的EU中,每个数据寄存器可存放16位操作数,也可拆成两个8位寄存器,用来存放8位操作数。

指针和变址寄存器包括:

堆栈指针SP、基址指针BP、源变址寄存器SI、和目的变址寄存器DI四个16位寄存器,可以来存放数据和地址。

段寄存器包括:

代码段寄存器CS,用于存放当前代码段的段地址;数据段寄存器DS,用于存放当前数据段的段地址;附加段寄存器ES,用于存放当前附加段的地址;堆栈段寄存器SS,用于存放当前堆栈段的段地址。

这些段寄存器彼此不能互换,每个段寄存器在8086存储寻址空间中规定了64KB的存储快。

该64KB存储快叫做段寄存器的当前段。

专用寄存器包括指令指针寄存器(IP)和标志寄存器(FR)。

 

3、28255简介

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

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

方式1—选通输入/输出方式;

方式2—双向选通输入/输出方式。

3.2.18255工作方式

工作方式分别为工作方式0,工作方式1和工作方式2。

1、工作方式0,又称为基本工作方式。

在此方式下,可分别将A口的8条线,B口的8条线,C口高4位对应的4条线和C口的低四位对应的四条线定义为输入或输出。

故它们的输入输出共有16种不同的组合。

A组

B组

A口(PA0---PA7)

C口(PC4---PC7)

B口(PB0---PB7)

C口(PC0---PC3)

表3.18255输入输出组合

2:

工作方式1,既选通输入输出方式。

在这种方式下,A口和B口仍作为数据的输出口和输入口,同时还要利用C口的某些位作为控制和状态信号。

3:

工作方式2,又称双向输入输出方式。

这种方式只有8255的口A才有。

在A口工作于双向输入输出方式时,要利用C口的5条线才能实现。

因此,B口只能工作在工作方式0或工作方式1,而C口剩下的3条线可以作为输入输出线使用或B口方式1下的控制线。

3.2.28255的控制字

7

6

5

4

3

2

1

0

控制C口抵4位

1:

输入

0:

输出

控制B口8位

1:

输入

0:

输出

方式选择

0:

方式0

1:

方式1

控制C口高4位

0:

输出

1:

输入

控制A口8位

0:

输出

1:

输入

方式选择

00:

方式0

01:

方式1

1X:

方式2

 

功能控制

0:

位操作

1:

方式选择

 

图3.18255的控制字格式

说明:

当控制字BIT7=1时,控制字的BIT6~BIT3这4位用来控制A组,即A口的8位和C口的高4位,而控制字的低3位BIT2~BIT0用来控制B组,包括B口的8位和C口的低4位。

8255的C口具有位控功能,即端口C的8位中的任一位都可通过CPU向8255的控制寄存器写入一个按位置位/复位控制字来置1或清0,而C口中其他位的状态不变。

其格式注意8255的C口按位置位/复位控制字的最高位D7(特征位)应为0。

 

‘图3.2C口按位置位/复位控制字格式

 

3、38254简介

8254是Intel公司生产的可编程计时器,具有以下功能:

(1)有3格独立的16位计数器;

(2)每个计数器可按二进制或十进制计数;

(3)每个计数器可编程工作于6种不同工作方式;

(4)8254每个计数器允许的最高计数频率为10MHZ;

(5)8254有读回命令,除了可以读出当前计数单元的内容外,还可以读出状态寄存器的内容;

(6)计数脉冲可以是有规律的时钟信号,也可以是随机信号。

3.3.18254的内部结构

  

 

图3.38254的内部结构图

A0、A1为8254的内部计数器和一个控制寄存器的编码选择信号,其功能如下:

A1

A0

选择

0

0

计数器0

0

1

计数器1

1

0

计数器2

1

1

控制寄存器

表3.28254内部编码

CLK0是计数器的时钟输入端。

本次设计的时钟为1MHZ,计数器对此时钟信号进行分频。

GATE0门控信号,即计数器的控制输入信号,用来控制计数器的工作,这里使其为高电平,直接接系统5V。

OUT计数器输出信号,用来产生不同方式工作时的输出波形,本次设计的1ms方波由此输出。

3.3.28254的工作方式

(1)方式0:

计数到0结束输出正跃变信号方式。

(2)方式1:

硬件可重触发单稳方式。

(3)方式2:

频率发生器方式。

(4)方式3:

方波发生器。

(5)方式4:

软件触发选通方式。

(6)方式5:

硬件触发选通方式。

 

3、48259简介

8259是一种可编程的中断控制器。

每块芯片可管理8级向量中断,同时,可通过多片级连实现多达64级的中断管理。

中断控制器8259有四种主要工作方式,即全嵌套、循环优先级、特定屏蔽和程序查询方式。

同时,它还有一4种从属工作方式,即结束中断、读状态、中断请求触发和数据缓冲方式。

3.4.18259的工作方式

(1)特殊屏蔽方式

在正常情况下,当一个中断请求被响应时,8259将被禁止所有同级及更低优先级中断请求这就称为一般屏蔽方式。

但是,在一特殊情况下,希望也允许较低优先级的中断请求产生中断。

(2)中断结束

中断结束分自动结束和利用命令结束

(3)优先级循环

它有两种优先级规定:

循环优先级和固定优先级。

固定优先级规定8个中断源以IR0的优先级最高依次降低。

循环优先级有3个结构:

自动优先级循环用于中断源具有相等优先级的情况。

指定优先级循环可以利用命令一次性改变优先级。

自动结束方式下的优先级循环,其优先权控制方式与自动优先级循环的相同。

(4)查询状态

通过将操作命令字OCW3中的P位置1,可以查询8259的状态。

3.4.28259的内部控制字

8259工作之前必须通过CPU来命令它。

CPU命令分为两大类:

一类是初始化命令字(ICW),主要是为了让8259处于初始化状态;另一类是操作命令字(OCW),使初始化的8259去执行具体的某种操作方式。

⑴初始化命令字

1初始化命令字ICW1(写入偶地址)

1

LTIM

A

S

IC4

1:

需要ICW4

0:

不需要ICW4

1:

单片8259

0:

多片8259级联

1:

间隔为4

0:

间隔为8

1:

电平触发

0:

边沿触发

8080/85模式下,中断

低口低8编程位

图3.48259初始化命令字ICW1

②初始化命令字ICW2(写入奇地址)

8086/88模式下,仅用ICW2提供不同中断源的中断向量码。

当中断响应时,根据中断向量表获得入口地址。

③初始化命令字ICW3(写入奇地址)

该命令字用于多片8259的级联。

1:

相应IR接从属8259

0:

不接8259

主控ICW3

0

0

0

0

0

3位编码对应从属

8259接主控的IR编号

从属ICW3

图3.58259初始化命令字ICW3

④初始化命令字ICW4(写入奇地址)

0

0

0

SFNM

BUF

M/S

AEOI

PM

1:

8086/88模式

0:

8080/85模式

1:

自动EOI

0:

非自动结束

0X:

非缓冲方法

10:

缓冲方式/从属片

11:

缓冲方式/主控片

1:

特殊全嵌套方式

0:

一般嵌套方式

图3.68259初始化命令字ICW4

 

[2]操作命令字OCW(可单独使用)

对8259初始化之后,该芯片就进入工作状态,准备好接收IR端进入的中断请求。

1操作命令字OCW1(写入奇地址)

它用于设置对8259中断的屏蔽操作。

该八位的操作字的某一位为1时,它就屏蔽相对应的IR输入。

2操作命令字OCW2(写入偶地址)

该命令字用来设置优先级是否循环、循环的方式及中断结束的方式。

R

SL

EOI

0

0

L2

L1

L0

编码对应IR的

最低优先级

001一般EOI

011特殊EOI中断结束命令

101循环优先级的一般EOI命令

100在自动EOI下置循环优先级自动循环

000在自动EOI下清循环优先级

111循环优先级的特殊EOI命令

110设置优先级特殊循环

01无效

图3.78259初始化命令字OCW2

 

4频率计设计原程序及注解

SSTACKSEGMENTSTACK

DW64DUP(?

SSTACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

CODE,ES:

CODE,SS:

SSTACK

ORG3400H

H8:

JMPP8259

LEDDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH;0~9

BUFDB?

?

?

?

?

?

;六位数码管

P8259:

CLI

CALLWP;初始化显示“000000”

MOVAX,OFFSETMIR7;中断IR7入口地址

MOVBX,003CH;IR7偏移地址

MOV[BX],AX

MOVBX,003EH

MOVAX,SEGMIR7;IR7段地址

MOV[BX],AX

CALLFOR8259;对8259初始化设置

CALLFOR8254;对8254初始化设置

CALLFOR8255;对8255初始化设置

MOVDX,0604H;给中断一个低电平

MOVAL,00H

OUTDX,AL

CALLFOR8254X;对频率范围进行设置

CALLDIS;调用显示子程序

STI

CALLDELAY1;延时1s

MOVDX,0604H;启动中断

MOVAL,01H

OUTDX,AL

PPP:

CALLDIS

JMPPPP

;==============================================

;对8259进行初始化

;--------------------------------

FOR8259:

MOVAL,13H;写入ICW1,边沿触发,间隔8,单片,需要ICW4

OUT20H,AL

MOVAL,0FH;ICW2,中断向量码

OUT21H,AL

MOVAL,09H;ICW4,一般全嵌套,缓冲,非自动结束

OUT21H,AL

MOVAL,07FH;IR7为中断入口,屏蔽其他

OUT21H,AL

RET

;==============================================

;对8254进行初始化

;---------------------------------------------------------

FOR8254:

MOVDX,06C6H

MOVAL,36H;T0,高->低,方式3,二进制

OUTDX,AL

MOVDX,06C0H;T0对输入频率分频

MOVAX,10000

OUTDX,AL

MOVAL,AH

OUTDX,AL

RET

;==============================================

;对8255进行初始化

;-------------------------

FOR8255:

MOVAL,80H;A,B,C口作为输出

MOVDX,0606H

OUTDX,AL

RET

;==============================================

;对频率范围设置

;-------------------------

FOR8254X:

MOVDX,06C6H;设置T1,高->底,方式0,二进制

MOVAL,70H

OUTDX,AL

MOVDX,06C2H;T1计数的最大值

MOVAX,65535

OUTDX,AL

MOVAL,AH

OUTDX,AL

MOVCX,10;延时

WAIT1:

LOOPWAIT1

RET

;==============================================

;二——十进制转化

;---------------------------------------

BTRO:

MOVCL,5

XORCH,CH

XORDX,DX

MOVBX,10

MOVSI,OFFSETBUF

ADDSI,5;由低位到高位存储

NEXT:

DIVBX

MOV[SI],DL;除以10的余数存放低位

DECSI

ANDAX,AX

JZSTOP;判断是否除尽

MOVDL,0

LOOPNEXT

STOP:

RET

;==============================================

;8259中断子程序

;------------------------------------

MIR7:

PUSHAX;断点保护

PUSHDX

PUSHBX

STI;开中断

MOVDX,06C6H;将计数器锁存

MOVAL,40H

OUTDX,AL

MOVDX,06C2H;读T1锁存器值

INAL,DX

MOVBL,AL

INAL,DX

MOVBH,AL

MOVAX,BX;计数值放在AX

MOVDX,65535;将计数值转化为频率值

SUBDX,AX;65535-计数值=通过脉冲个数

MOVAX,DX

PUSHAX;压栈保存等待显示

CALLFOR8254X

CALLBTRO

POPBX;出栈,恢复中断前数据

POPDX

POPAX

LAST:

STI

IRET

;==============================================

;显示子程序DIS

;-------------------------------

DIS:

PUSHAX

PUSHBX

PUSHSI

MOVDX,0600H

MOVAX,SEGLED

MOVDX,AX

MOVBX,OFFSETLED

MOVAX,0

MOVAL,BUF+5

MOVSI,AX

MOVAL,[BX+SI]

OUTDX,AL

MOVDX,0602H

MOVAL,0FEH

OUTDX,AL

MOVDX,0600H

MOVAX,SEGLED

MOVDX,AX

MOVBX,OFFSETLED

MOVAX.0

MOVAL,BUF+4

MOVSI,AX

MOVAL,[BX+SI]

OUTDX,AL

MOVDX,0602H

MOVAL,0FDH

OUTDX,AL

MOVDX,0600H

MOVAX,SEGLED

MOVDX,AX

MOVBX,OFFSETLED

MOVAX,0

MOVAL,BUF+3

MOVSI,AX

MOVAL,[BX+SI]

OUTDX,AL

MOVDX,0602H

MOVAL,OFBH

OUTDX,AL

MOVDX,0600H

MOVAX,SEGLED

MOVDX,AX

MOVBX,OFFSETLED

MOVAX,0

MOVAL,BUF+2

MOVSI,AX

MOVAL,[BX+SI]

OUTDX,AL

MOVDX,0602H

MOVAL,0F7H

OUTDX,AL

MOVDX,0600H

MOVAX,SEGLED

MOVDX,AX

MOVBX,OFFSETLED

MOVAX,0

MOVAL,BUF+1

MOVSI,AX

MOVAL,[BX+SI]

OUTDX,AL

MOVDX,0602H

MOVAL,0EFH

OUTDX,AL

MOVDX,0600H

MOVAX,SEGLED

MOVDX,AX

MOVBX,OFFSETLED

MOVAX,0

MOVAL,BUF

MOVSI,AX

MOVAL,[BX+SI]

OUTDX,AL

MOVDX,0602H

MOVAL,0DFH

OUTDX,AL

POPSI

POPBX

POPAX

RET

;==============================================

;初始化显示“000000”

;--------------------------------

WP:

MOVBUF,0;初始化显示“000000”

MOVBUF+1,0

MOVBUF+2,0

MOVBUF+3,0

MOVBUF+4,0

MOVBUF+5,0

RET

;==============================================

;延时1s子程序

;==============================================

DELAY1:

PUSHCX

PUSHAX

MOVCX,0006H

T1:

MOVAX,009FH

T2:

DECAX

JNZT2

LOOPT1

POPAX

POPCX

RET

CODEENDS

ENDH8

 

5频率计程序接线图

芯片8254系统总线芯片8255LED数码管

D0PB0

D1PB1

D2PB2

D3PB3

D4PB4

D5PB5

D6PB6

D7

WRPA0

RDPA1

CSPA2

A0PA3

A1

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

当前位置:首页 > 法律文书 > 调解书

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

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