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

更新时间:2023-11-11 00:27:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

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端级联使OUT0端产生1s(测高频)或10s(测低频)方波计时,定时/计数器CT2的CLK2端接收待测信号进行计数,OUTO端口将计时信号输出到8259芯片的IR7口使8259芯片产生中断。中断产生后,CPU将从CT2中读出计数值并转化为频率值并在数码管显示该频率值。

具体测量方法如下:

当CLK2接收到的待测信号为高频率的脉冲信号时,令计时为1s,即每秒产生一次中断,即OUT1生成10ms的方波,OUT0出来的便是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的CT0和CT1级联产生出1秒的方波。基准时钟信号是CT1的CLK1自带的内部晶振1.8432MHZ。当CT1写入初值18432时, OUT1即可输出10ms的方波信号再输入给CLKO。CT0写初值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~A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 地址 1…1 1 1 1 1 0 0 0 0 0 FFE0H 1…1 1 1 1 1 0 0 0 0 1 FFE1H 1…1 1 1 1 1 0 0 0 1 0 FFE2H 1…1 1 1 1 1 0 0 0 1 1 FFE3H 对应的片选接74LS138的Y0口 8253的地址是FFF8H~ FFFBH。对应的各地址线如下: A19~A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 地址 1…1 1 1 1 1 1 1 0 0 0 FFF8H 1…1 1 1 1 1 1 1 0 0 1 FFF9H 1…1 1 1 1 1 1 1 0 1 0 FFFAH 1…1 1 1 1 1 1 1 0 1 1 FFFBH 对应的片选接74LS138的Y6口

4.1.4中断部分

将8253的OUT0的计时信号给8259的IR7口产生中断。写入控制字令接收到上升沿产生中断。通过实验箱的内部已接好的输出电路给数码管显示。 4.1.5硬件线路图 (1)电路原理图

D0-D7 A1 A0 A2 A3 A4 D0-D7 GATE1 CLK1 OUT1 A1 A0 CLK0 GATE0 OUT0 CLK2 CS OUT2 GATE2 +5V +5V A B Y6 C Y0 待测信号 +5V 8088 74LS138 8253 CS IR7 数码管显示 8259

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

4.1.6操作时序图

CLK1: (时基信号 ) OUT1: (10ms 方波 ) OUT0: (1S方波 ) OUT0: (10S方波 ) INTR1: (1S中断 ) INTR2: (10S中断 ) CLK2: (被测信号 )

T T1=18432T T2=100T1 每1s上升沿产生中断 T2=1000T1 每10s上升沿产生中断 每次中断之内经过的脉冲个数M,则被测频率F=M 4.2软件电路设计

软件部分共划分为如下几个模块: 1. 8253芯片定时模块 2. 8253芯片计数模块 3. 8259芯片中断模块 显示模块

8259初始化子程序

8253初始化子程序

开始 写初始命令ICW1 写初始命令ICW2 写OCW1 RET 开始 写CT0控制字 置CT0初值 写CT1控制字

8259中断子程序 低频模式显示 置CT1初值 RET 开始 关中断 读取CT2锁存值 并得到对应频率值 N Y 高频显示模式 AX<2000 N Y N Y 低频模式转为 高频模式 高频模式转为 低频模式 AX>2000 高频模式显示 关中断 循环显示 断点恢复 开中断

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

开始 初始化清零

SI SI+5

AX/10 余数存入SI

SI SI-1

是否除尽?

Y 结束 N RET

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

开始

初始化清零

SI SI+5

AX/10 余数存入SI

SI SI-1

AX/10 余数带小数 点存入SI SI SI-1

AX/10 余数存入SI

N 是否除尽?

Y

RET

4.2.2源程序代码(见附页)

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

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

经过小组成员讨论认为可能是高低频计算转换算法有问题,于是我们决定不论高低频都用M法测量定时一秒发现测量结果是正确的,但误差过大,于是将定时时间设为十秒,采用有小数点显示算法测量结果发现测量结果都是乱码,经过小组成员讨论认为是实验箱有问题于是换了一台试验箱测试,结果发现当送给CT2的待测信号是由74LS393的T6、T7给出的时,测量结果是正确的,但当由函数发生器给出待测信号时测量结果是乱码,经过老师知道我们知道了函数发生器产生的方波信号是由负值的需要调整才可产生正确的信号,经调整函数发生器产生正确方波信号后测得正确的结果。

6. 实验结果及分析

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

为0.1Hz~ 65534Hz,经与函数发生器比较,测量误差为高频1Hz,低频0.1Hz。 部分测量结果如下表: 高频 待测(Hz) 实测(Hz) 低频 待测(Hz) 实测(Hz) 44505 44506 7.8 7.7 31165 31166 32.8 32.7 25922 25923 121.9 121.8 2036 2035 1034.9 1035.0

7. 课程设计心得体会

为期两周的微机原理课程设计结束了,在这两周的时间里使我学到了许多东

西,首先通过此次课设,加强了我们的动手、思索和解决问题的能力,也加深了对 在课本上所学理论知识的理解,特别是更加熟悉了对常用芯片比如8253,8259,74LS 138等的应用,同时在这次课设中也加深了我对汇编语言的理解更掌握了8086 的调试环境,使我能更好地将在课本上学到的的理论知识与实践相结合,同时在课设过程中查阅了许多资料从而更加拓宽了我的知识面,在这次课设中也使我更加熟练地掌握了示波器的运用,同时也学会了函数发生器的使用。

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

附页:源程序代码

CODE SEGMENT

ASSUME CS:CODE,DS:CODE,ES:CODE ORG 3400H H8: JMP P8259 ZXK EQU 0FFDCH ZWK EQU 0FFDDH

LED DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;0~9 DB 040H,079H,24H,30H,19H,12H,02H,78H,00H,10H,0FFH ;0.~9. BUF1 DB ? ;定义缓冲区用于存放高低频的选择值 BUF DB ?,?,?,?,?,? ;定义缓冲区存放数码管要显示的频率值 Port0 EQU 0FFE0H ;8259首地址 Port1 EQU 0FFE1H ;8253首地址 P8259: CLI ;关中断

CALL WP ;数码管初始状态为0

MOV AX,OFFSET INT8259;获得中断服务程序入口地址 MOV BX,003CH MOV [BX],AX MOV BX,003EH MOV AX,0000H

MOV [BX],AX ;以上是写中断向量表 CALL FOR8259 ;对8259初始化设置 CALL FOR8253 ;对8253初始化设置 CALL FOR8253X ;对频率范围进行设置 MOV SI,OFFSET BUF1 MOV AL,01H

MOV [SI],AL ;默认为高频 STI

PPP: CALL DIS

JMP PPP ;循环显示等待中断

;8259初始化

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

本文来源:https://www.bwwdw.com/article/s80v.html

Top