微机原理课设数字频率计的设计.docx

上传人:b****8 文档编号:10534534 上传时间:2023-02-21 格式:DOCX 页数:19 大小:144.02KB
下载 相关 举报
微机原理课设数字频率计的设计.docx_第1页
第1页 / 共19页
微机原理课设数字频率计的设计.docx_第2页
第2页 / 共19页
微机原理课设数字频率计的设计.docx_第3页
第3页 / 共19页
微机原理课设数字频率计的设计.docx_第4页
第4页 / 共19页
微机原理课设数字频率计的设计.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

微机原理课设数字频率计的设计.docx

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

微机原理课设数字频率计的设计.docx

微机原理课设数字频率计的设计

微机原理课设-数字频率计的设计

实验题目:

数字频率计的设计

1.设计目的

通过数字频率计的设计,使同学们进一步掌握:

(1)8086/8088汇编语言程序的设计和调试;

(2)信号频率的数字测量方法;

(3)定时计数器8253的基本工作原理和应用;

(4)微机基本应用系统的设计方法;

2•设计内容

利用微机原理实验装置,设计并实现一个信号频率测试系统,要求频率测量范围不小于5HZ~50HZ,测量误差不大于1HZ,并将测得的频率显示在LED数码显

3•设计要求

(1)针对实验装置已有条件,设计频率测量原理线路;

(2)编制相应的测试软件,实现频率测量;

(3)实际上机调试,完成综合实验;

(4)编写设计说明书(含原理图,程序及说明,实验方法,过程及结果)

4.方案设计及其说明

4.1硬件电路设计

在硬件电路部分我们主要采用的芯片有8088,8253,8259,74LS138等。

基本

工作原理如下:

首先由8253芯片的定时/计数器CT1的OUT1端产生10ms的方波再将OUT1与定时/计数器CT0的CLK0端级联使OUT(端产生1s(测高频)或10s(测低频)方波计时,定时/计数器CT2的CLK2端接收待测信号进行计数,OUTO^口将计时信号输出到8259芯片的IR7口使8259芯片产生中断。

中断产生后,CPU将从CT2中读出计数值并转化为频率值并在数码管显示该频率值。

具体测量方法如下:

当CLK2接收到的待测信号为高频率的脉冲信号时,令计时为1s,即每秒产生

一次中断,即OUT生成10ms的方波,OUTC出来的便是1s的方波。

利用M法可以知道,在下一个1s到来的时候可以测出1s经过的CLK2的基本脉冲数为M则被测频率f=M,此时将M转换为十进制显示在数码管上即可。

当CLK2接收到的待测信号为低频率的脉冲信号时,此时设定中断定时时间为10s,即OUT1生成的依旧是10ms的方波,OUT0生成10s方波脉冲。

在下一个中断来临时,记下CLK2经过的脉冲数M个,利用T法可以知道所测的频率f=M/10,转换为十进制显示在数码管上。

4.1.1计时部分

8253的CTO和CT1级联产生出1秒的方波。

基准时钟信号是CT1的CLK1自带的内部晶振1.8432MHZ当CT1写入初值18432时,OUT1即可输出10ms的方波信号再输入给CLKOCT0写初值100(1000)从OUT0俞出1s(10s)的脉冲时钟信号。

控制字如下:

CTO:

0

0

1

1

0

1

1

0

定时/计数器0先低8位再高8位读写工作方式3二进制

CT1:

0

1

1

1

0

1

1

0

定时/计数器1先低8位再高8位读写工作方式3二进制

4.1.2计数部分

用8253的CT2产生计数。

CLK2是待测信号脉冲的输入端。

OUT2悬空不接线初值定为65535,即从65535开始,每一个脉冲周期自减一。

控制字如下:

CT2:

1

0

1

1

0

0

0

0

定时/计数器2先低8位再高8位读写工作方式0二进制

4.1.3片选寻址部分

实验中用了8253和8259两片芯片。

故需要进行地址的片选。

8259的地址是FFE0H~FFE3H对应的各地址线如下:

A19~A

9

A8

A7

A6

A5

A4

A3

A2

A1

A0

地址

1

••1

1

1

1

1

0

0

0

0

0

FFE0

H

••1

1

1

1

1

0

0

0

0

1

FFE1

H

1

•1

1

1

1

1

0

0

0

1

0

FFE2

H

1-1

1

1

1

1

0

0

0

1

1

FFE3H

对应的片选接74LS138的丫0口

8253的地址是FFF8H~FFFBH对应的各地址线如下:

A19~A

9

A8

A7

A6

A5

A4

A3

A2

A1

A0

地址

1

••1

1

1

1

1

1

1

0

0

0

FFF8

H

••1

1

1

1

1

1

1

0

0

1

FFF9

H

•1

1

1

1

1

1

1

0

1

0

FFFA

H

1

•1

1

1

1

1

1

1

0

1

1

FFFB

H

对应的片选接74LS138的丫6口

4.1.4中断部分

将8253的OUT0的计时信号给8259的IR7口产生中断。

写入控制字令接收到上升沿产生中断。

通过实验箱的内部已接好的输出电路给数码管显示。

4.1.5硬件线路图

(1)电路原理图

825

 

 

(2)完整电路图(见附页)

4.1.6操作时序图

CL^0

K1:

T

OUT

1:

T1=18

T2=1

 

OUT

0:

OUT0

INT

R1:

INT

R2:

CL

K2:

2软件电路设计

软件部分共划分为如下几个模块:

1.8253芯片定时模块

2.8253芯片计数模块

3.8259芯片中断模块

4.显示模块

4.2.1软件流程图

主程序:

8259初始化子程序

开始

 

关中断

循环显示

断点恢复

开中断

 

二进制-十进制转化子程序(高频)

(开始]

r

初始化清零

3F

SI7+5

J

AX/10余数存入SI

SI*SI-1

RET

进制一十进制转化子程序(低频)

N

Y

422源程序代码(见附页)

5.试验中出现问题及解决方法

在实验硬件接线成功将完整程序装载后进行测试时候发现测试不出来数据,经

过小组成员讨论认为可能是咼低频计算转换算法有冋题,于是我们决定不论咼低频

都用M法测量定时一秒发现测量结果是正确的,但误差过大,于是将定时时间设为十秒,采用有小数点显示算法测量结果发现测量结果都是乱码,经过小组成员讨

论认为是实验箱有问题于是换了一台试验箱测试,结果发现当送给CT2的待测信

号是由74LS393的T6、T7给出的时,测量结果是正确的,但当由函数发生器给出待测信号时测量结果是乱码,经过老师知道我们知道了函数发生器产生的方波信号是由负值的需要调整才可产生正确的信号,经调整函数发生器产生正确方波信号后测得正确的结果。

6.实验结果及分析

用函数发生器给频率计输入方波信号,可较精确的测得信号频率。

测量范围为

0.1Hz~65534Hz,经与函数发生器比较,测量误差为高频1Hz,低频0.1Hz

部分测量结果如下表:

咼频

待测(Hz)

44505

31165

25922

2036

实测(Hz)

44506

31166

25923

2035

低频

待测(Hz)

7.8

32.8

121.9

1034.9

实测(Hz)

7.7

32.7

121.8

1035.0

7.课程设计心得体会

为期两周的微机原理课程设计结束了,在这两周的时间里使我学到了许多东西,首先通过此次课设,加强了我们的动手、思索和解决问题的能力,也加深了对在课本上所学理论知识的理解,特别是更加熟悉了对常用芯片比如8253,8259,74LS

138等的应用,同时在这次课设中也加深了我对汇编语言的理解更掌握了8086的

调试环境,使我能更好地将在课本上学到的的理论知识与实践相结合,同时在课设过程中查阅了许多资料从而更加拓宽了我的知识面,在这次课设中也使我更加熟练

地掌握了示波器的运用,同时也学会了函数发生器的使用。

在这次课设中也使我更加明白了团队合作的重要性,在课设过程中我们遇到了许多问题但经过与组员们探讨都一一解决了,课设的成功离不开组员们的配合与指导老师的悉心指导,在此感谢各位组员的配合与老师的悉心指导。

附页:

源程序代码

CODESEGMENT

ASSUMECS:

CODE,DS:

CODE,ES:

CODE

ORG3400H

H8:

JMPP8259

ZXKEQU0FFDCH

ZWKEQU0FFDDH

LEDDB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H;0~9

DB040H,079H,24H,30H,19H,12H,02H,78H,00H,10H,0FFH;0.~9.

BUF1DB?

;定义缓冲区用于存放高低频的选择值

;8259初始化

J

FOR8259:

MOVAL,13H;

上升沿产生中断(ICW1)

MOVDX,Port0

OUTDX,AL

MOVAL,08H;ICW2

的设置

MOVDX,Port1

OUTDX,AL

MOVAL,09H;ICW4

的设置

OUTDX,AL

MOVAL,07FH;

设置IR7为中断源,并且屏蔽其它的中断源

OUTDX,AL

RET

J

;8253初始化(一秒信号)

FOR8253:

MOVDX,0FFFBH

MOVAL,36H;00110110CT0,方式3

OUTDX,AL

MOVAL,76H;01110110CT1,方式3,

OUTDX,AL

MOVDX,0FFF9H

MOVAX,18432;CT1置初值产生10ms方波

OUTDX,AL

MOVAL,AH

OUTDX,AL

MOVDX,0FFF8H

MOVAX,100;CT0置初值100产生1s定时信号

OUTDX,Al

MOVAL,AH

OUTDX,AL

RET

;8253初始化(十秒信号)

;控制CT2计数,设置频率范围

FOR8253X:

MOVDX,0FFFBH控制口地址

MOVAL,0B0H;CT2,方式0

OUTDX,AL

MOVDX,0FFFAH;CT2地址

MOVAX,65535;T2计数的最大值

OUTDX,AL

MOVAL,AH

OUTDX,AL

MOVCX,10;延时

GOOD:

LOOPGOOD

RET

卜进制转化(高频无小数点,利用了M法测量)

BTRO:

MOVCL,6

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

卜进制转化(低频有小数点,利用了T法测量)

BTROb:

MOVCL,3

XORCH,CH

XORDX,DX

MOVBX,10

MOVSI,OFFSETBUF

ADDSI,5;使其从数码管的低位开始显示

DIVBX

MOV[SI],DL

DECSI

MOVDL,0;将存放余数的清0

DIVBX

ADDDL,10;查表将该位的小数点显示出来

MOV[SI],DL

DECSI

ANDAX,AX;检测商是否为0,若为0程序跳出,否则继续

JZSTOP1

MOVDL,0

NEXT1:

DIVBX

MOV[SI],DL

DECSI

ANDAX,AX

JZSTOP1

MOVDL,0

LOOPNEXT1;由于数码管只能显示5位,贝UCL=3

STOP1:

RET;8259的中断子程序

INT8259:

PUSHAX

PUSHDX

PUSHBX;断点保护

CLI

MOVDX,0FFFBH

MOVAL,80H

OUTDX,AL;锁存CT2的值,方便下面读取CT2接口的值

MOVDX,0FFFAH

INAL,DX

MOVBI,AL

INAL,DX

MOVBH,AL;读取CT2的值,此时值为剩余的计数值

MOVAX,BX

MOVDX,65535

SUBDX,AX;将读取CT2的值转化为频率值

MOVAX,DX

PUSHAX;保护频率值

MOVSI,OFFSETBUF1

MOVBL,[SI]

CMPBL,1;判断新频率进来之前的显示模式

JNZDIPIN;低频跳转,高频继续向下执行

CMPAX,2000

JBOTHER;若小于2000,测的频率为低频,跳转,否则继续向下

GOM:

CALLFOR8253X

CALLWP

POPAX

CALLBTRO;将频率值转化为十进制,无小数

JMPX59

DIPIN:

CMPAX,20000;低频时,判断是否为高频

JNBOTHER2;大于20000贝U为高频,跳转

GOM2:

CALLFOR8253X

CALLWP

POPAX;

CALLBTROb

JMPX59

OTHER:

CALLANTHER;调用高频转低频程序,设定标志位和中断时间(10s)

JMPGOM

OTHER2:

CALLANTHER2调用低频转高频程序,设定标志位和中断时间(1s)JMPGOM2

X59:

MOVAL,20H

MOVDX,Port0

OUTDX,AL;

MOVCX,0050H;

XX59:

PUSHCX

CALLDIS;

POPCX

LOOPXX59;

POPBX

POPDX

POPAX;

LAST:

STI

IRET

出栈

将频率值转化为十进制,此时带有小数

中断响应后,将ISR相应位清0置循环显示的次数

调用显示程序,将频率值显示在数码管上

循环显示,直至下一次中断

断点回复

;DIS是显示子程序

DIS:

MOVCL,20H;

MOVBX,OFFSETBUFDIS1:

MOVAL,[BX]

PUSHBX

MOVBX,OFFSETLEDXLAT;

POPBX

MOVDX,ZXK;

OUTDX,AL

MOVAL,CL;

MOVDX,ZWK

OUTDX,AL

PUSHCX

MOVCX,0100H

DELAY:

LOOP$

准备好数码管位

换码,在LED表里面换取数据

输出字型位

输出字位位

 

POPex

CMPCL,01H

JZEXIT

INCBX

SHRCL,1;右移,显示下一个数码管

JMPDIS1

EXIT:

MOVAL,00H

MOVDX,ZWK

OUTDX,AL

RET;初始化显示‘000000'

WP:

MOVBUF,0

MOVBUF+1,0

MOVBUF+2,0

MOVBUF+3,0

MOVBUF+4,0

MOVBUF+5,0

RET

;频率转化程序

ANTHER:

MOVSI,OFFSETBUF1

MOVAL,00H

MOV[SI],AL;让高频转为低频

callFOR8253b;将中断时间设定位10秒

RET

ANTHER2:

MOVSI,OFFSETBUF1

MOVAL,01H

MOV[SI],AL;让低频转为高频

callFOR8253;将中断时间设定位1秒

RET

CODEENDS

ENDH8

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

当前位置:首页 > 农林牧渔 > 畜牧兽医

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

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