微机原理课程设计频率计报告最完整版.docx

上传人:b****3 文档编号:5340569 上传时间:2022-12-15 格式:DOCX 页数:20 大小:50.90KB
下载 相关 举报
微机原理课程设计频率计报告最完整版.docx_第1页
第1页 / 共20页
微机原理课程设计频率计报告最完整版.docx_第2页
第2页 / 共20页
微机原理课程设计频率计报告最完整版.docx_第3页
第3页 / 共20页
微机原理课程设计频率计报告最完整版.docx_第4页
第4页 / 共20页
微机原理课程设计频率计报告最完整版.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

微机原理课程设计频率计报告最完整版.docx

《微机原理课程设计频率计报告最完整版.docx》由会员分享,可在线阅读,更多相关《微机原理课程设计频率计报告最完整版.docx(20页珍藏版)》请在冰豆网上搜索。

微机原理课程设计频率计报告最完整版.docx

微机原理课程设计频率计报告最完整版

微机原理及应用

课程设计报告

设计题目:

数字式钟表的设计

学院自动化与信息工程学院

专业

班级

姓名

学号

指导教师申明

2011年秋季学期

 

目录

一、系统功能要求分析…………………………………………………1

二、方案设计及其说明…………………………………………………2

三、原理线路设计………………………………………………………3

1.原理线路

2.工作原理说明

3.操作时序分析

4.特点说明

四、程序设计……………………………………………………………4

1.程序结构及流程

2.程序算法分析

3.关键程序段说明

4.源程序清单

五、系统调试及结论……………………………………………………5

1.调试方法

2.重点问题及解决方法

3.运行结果及结论

六、设计体会……………………………………………………………6

附录1系统原理图

附录2源程序清单

参考文献……………………………………………………………….7

本页所列目录大纲,仅供参考,各位同学目录希望能够体现个性化!

参考文献

[1]DAIS系列微机接口实验系统使用手册

[2]DAIS系列微机接口实验系统实验指导书

[3]微机原理及应用课程设计指导书

[4]xxxxxxxxxxxxxxxxxxxxxxxxxxxxx

以下仅为格式说明,不要出现在说明书中!

附件:

课程设计报告的内容及其文本格式

1、课程设计报告用16k纸按照撰写规范书写

①封面(打印)

2、目录格式(手写或打印)

①标题“目录”(三号、黑体、居中)

②章标题(四号字、黑体、居左)

③节标题(小四号子、宋体)

④页码(小四号子、宋体、居右)

3、正文(手写)

4、参考文献格式(手写)

①标题:

“参考文献”,小四,黑体,居中。

②示例:

(五号宋体)

图书类:

[序号]作者1,作者2,……作者n.书名.版本.出版地:

出版社,出版年:

页次.

5、附录(打印)

实验题目:

频率计

1.设计目的

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

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

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

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

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

2、实验设备

1.计算机一台;

2.Dais—958H+(80X88、8253、8259、数码管);

3.基本TTL电路芯片若干(74LS138);

4.导线若干;

辅助设备:

示波器、函数发生器(最低要求为方波发生器);

3.设计功能要求

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

分析:

1.利用8088,8253,8259等芯片实现测量程序的功能;

2.测量的二进制数值转化成十进制,并且显示在数码管上;

3.误差不可以大于1Hz;

4.用函数发生器测试实验的结果;

提升要求:

达到课设要求后,试着扩大测量范围,使其精确到0.1Hz~65kHz;

4.设计提示

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法,定时时间T=1秒,则计数值即为待测频率。

设频率计的测量频率范围为1Hz~65535Hz,则设计方案如下:

利用8253CT0和CT1级联作一秒定时器,利用8253CT2作待测信号脉冲计数器,在定时开始之时也开启计数器,在一秒定时到之时关闭计数器并读取计数值,此计数值即为频率。

参考程序流程如下:

置CT1定时初值

测量结束?

读CT2计数值并显示

一秒定时到?

置CT2定时初值

置CT2计数初值

8253初始化

 

END

5.方案设计及其说明

5.1硬件电路设计

硬件线路部分主要采用了几个学过的芯片,即8088,8253,8259,74LS138。

其工作过程如下:

利用8253芯片的CT1定时/计数器的OUT1端和CT0定时/计数器的CLK0端级联计时,CT2定时/计数器的CLK2端接收待测信号进行计数,OUTO端口将计时信号输出到8259芯片的IR7口产生中断。

中断产生后,从CT2中读出计数值转化成频率值由数码管显示。

若CLK2接收到的为高频率的脉冲,令计时为1s,即每秒产生一次中断,即OUT1生成10ms的方波,OUT0出来的是1s的方波。

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

若CLK2接收到的是低频率的脉冲,此时若计时仍为1s,则用M法无法测量,所以改设定中断时间为10s,即OUT1生成的依旧是10ms的方波,OUT0生成10s方波脉冲。

在下一个中断来临时,记下CLK2经过的脉冲数M个,所测的频率为:

f=M/10,转换为十进制显示在数码管上。

5.1.1计时部分

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

基准时钟信号是CT1的CLK1自带的内部晶振1.8432MHZ。

CT1写入初值18432,令OUT1输出10ms的方波信号再输入给CLKO。

当待测信号为高频时,CT0写初值100从OUT0输出1s的脉冲时钟信号;当待测信号为低频时,修改CT0的初值为1000令其输出10s的脉冲信号。

控制字如下:

CTO:

0

0

1

1

0

1

1

0

 

计数器0从低到高读写工作方式3二进制

 

CT1:

0

1

1

1

0

1

1

0

 

计数器1从低到高读写工作方式3二进制

5.1.2计数部分

用8253的CT2产生计数。

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

OUT2悬空不接线。

初值定为65535,即从65535开始,每一个脉冲周期自减一。

控制字如下:

CT2:

1

0

1

1

0

0

0

0

 

计数器2从低到高读写工作方式0二进制

5.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口

5.1.4中断部分

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

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

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

 

5.1.5硬件线路图

 

74LS138

 

5.1.6操作时序图

每次中断之内经过的脉冲个数M,则被测频率F=M

 

CLK1:

(时基信号)

 

OUT1:

(10ms方波)

 

OUT0:

(1S方波)

 

OUT0:

(10S方波)

 

INTR1:

(1S中断)

 

INTR2:

(10S中断)

 

CLK2:

(被测信号)

 

5.2软件电路设计

项目作品的软件部分共划分为如下几个模块:

1.8253芯片定时模块

2.8253芯片计数模块

3.8259芯片中断模块

4.显示模块

5.2.1软件流程图

原程序:

结束

8259初始化子程序

RET

 

8253初始化子程序

开始

 

写CT0控制字

置CT0初值

 

写CT1控制字

 

置CT1初值

 

RET

8259中断子程序

 

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

开始

初始化清零

 

SI←SI-1

 

是否除尽?

 

RET

N

 

二进制-十进制转化子程序(低频)与高频流程类似,先显示最低位,再调用有小数点的数字显示带小数点位,最后显示高三位。

 

5.2.2源程序代码(见附页)

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

刚开始课设时候小组出现两种方案,最后经过对比与讨论准备用第二种也就是做成功的这个方案,在实验硬件接线成功后进行测试时候发现测试不出来数据,最后经过反复研究,用示波器测波形,发现8253的CT0口出现问题,而CT1口可以正常产生1s方波,经过和孙老师研究后发现是8253芯片的问题,最后换箱子,结果换的新箱子数码管没有显示,最后经过一番折腾,再次换新箱子之后所有硬件才正常了,数码管正常显示。

在此期间,我们还对程序做了一点改进,因为刚开始受书本知识的影响,8253,8259地址都做成一个了,经过修改使其能用74LS138进行片选。

还有锁存程序也进行了改进。

7.实验结果及分析

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

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

部分测量结果如下表:

高频

待测(Hz)

65530

35562

6233

4211

3030

实测(Hz)

65530

35561

6233

4210

3031

低频

待测(Hz)

562.53

36.11

1.52

0.790

0.352

实测(Hz)

562.5

36.2

1.5

0.8

0.3

8.课程设计心得体会

微型计算机已经广泛应用于各行各业,促进了社会的进步。

作为今天的设计人员,必须很好的掌握微型计算机的概念与技术。

书本上学习的知识通常只是理论上的东西,而微机原理则是与实际结合很紧密的事情。

所以实践是必不可少的掌握所学内容的阶段。

微机原理课设是学校提供给我们的很好的理论与实际相结合从而把学习课程融会贯通的机会。

通过此次课设,加强了我们的动手,思索和解决问题能力。

熟悉了所常用的芯片比如8253,8259,74ls138等的应用,其中8259大纲的要求很少,通过课设,使我们掌握了中断的具体应用。

通过对程序的编译,使我对汇编语言的基本知识的使用更加熟练,同时也增加了我对汇编语言的一些认识,在课设完成过程中通过和同学的交流,也增加了合作的技巧。

通过查阅以下资料也学到了一些课本上没有的东西,拓宽了自己的知识面,更掌握了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?

BUFDB?

?

?

?

?

?

Port0EQU0FFE0H

Port1EQU0FFE1H

P8259:

CLI

CALLWP;数码管初始状态为0

MOVAX,OFFSETINT8259

MOVBX,003CH

MOV[BX],AX

MOVBX,003EH

MOVAX,0000H

MOV[BX],AX;以上是写中断向量表

CALLFOR8259;对8259初始化设置

CALLFOR8253;对8253初始化设置

CALLFOR8253X;对频率范围进行设置

MOVSI,OFFSETBUF1

MOVAL,01H

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

STI

PPP:

CALLDIS

JMPPPP;循环显示等待中断

 

;8259初始化

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

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

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

;8253初始化(一秒信号)

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

FOR8253:

MOVDX,0FFFBH

MOVAL,36H;01110110CT1,方式3

OUTDX,AL

MOVAL,76H;00110000CT0,方式0,

OUTDX,AL

MOVDX,0FFF9H

MOVAX,18432;(6144)CT1产生10ms方波

OUTDX,AL

MOVAL,AH

OUTDX,AL

MOVDX,0FFF8H

MOVAX,100;1000;1s脉冲

OUTDX,Al

MOVAL,AH

OUTDX,AL

RET

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

;8253初始化(十秒信号)

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

FOR8253b:

MOVDX,0FFFBH

MOVAL,36H;CT0,方式0

OUTDX,AL

MOVAL,076H;CT1,方式3

OUTDX,AL

MOVDX,0FFF9H;CT1

MOVAX,18432;(18432)产生10ms方波

OUTDX,AL

MOVAL,AH

OUTDX,AL

MOVDX,0FFF8H;CT0

MOVAX,1000;1000;10s脉冲

OUTDX,AL

MOVAL,AH

OUTDX,AL

RET

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

;控制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为,则CL=3

STOP1:

RET

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

;8259的中断子程序

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

INT8259:

PUSHAX

PUSHDX

PUSHBX;断点保护

CLI

MOVDX,0FFFBH

MOVAL,80H

OUTDX,AL;给CT2置控制字,方便下面读取CT2接口的值

MOVDX,0FFFAH

INAL,DX

MOVBl,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;大于2000则为高频,跳转

GOM2:

CALLFOR8253X

CALLWP

POPAX;出栈

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

JMPX59

OTHER:

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

jmpGOM

OTHER2:

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

jmpGOM2

X59:

MOVAL,20H

MOVDX,Port0

OUTDX,AL;中断响应后,将ISR相应位清0

MOVCX,0050H;置循环显示的次数

XX59:

PUSHCX

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

POPCX

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

POPBX

POPDX

POPAX;断点回复

LAST:

STI

IRET

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

;DIS是显示子程序

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

DIS:

MOVCL,20H;准备好数码管位

MOVBX,OFFSETBUF

DIS1:

MOVAL,[BX]

PUSHBX

MOVBX,OFFSETLED

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

POPBX

MOVDX,ZXK;输出字型位

OUTDX,AL

MOVAL,CL;输出字位位

MOVDX,ZWK

OUTDX,AL

PUSHCX

MOVCX,0100H

DELAY:

LOOP$

POPCX

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;让高频转为低频(0)

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

RET

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

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

当前位置:首页 > 自然科学 > 物理

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

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