精编完整版信号发生器功能程序设计微机原理毕业论文报告文档格式.docx

上传人:b****2 文档编号:12975259 上传时间:2022-10-01 格式:DOCX 页数:41 大小:155.86KB
下载 相关 举报
精编完整版信号发生器功能程序设计微机原理毕业论文报告文档格式.docx_第1页
第1页 / 共41页
精编完整版信号发生器功能程序设计微机原理毕业论文报告文档格式.docx_第2页
第2页 / 共41页
精编完整版信号发生器功能程序设计微机原理毕业论文报告文档格式.docx_第3页
第3页 / 共41页
精编完整版信号发生器功能程序设计微机原理毕业论文报告文档格式.docx_第4页
第4页 / 共41页
精编完整版信号发生器功能程序设计微机原理毕业论文报告文档格式.docx_第5页
第5页 / 共41页
点击查看更多>>
下载资源
资源描述

精编完整版信号发生器功能程序设计微机原理毕业论文报告文档格式.docx

《精编完整版信号发生器功能程序设计微机原理毕业论文报告文档格式.docx》由会员分享,可在线阅读,更多相关《精编完整版信号发生器功能程序设计微机原理毕业论文报告文档格式.docx(41页珍藏版)》请在冰豆网上搜索。

精编完整版信号发生器功能程序设计微机原理毕业论文报告文档格式.docx

2.3电路原理图7

第三章典型模块分析8

3.1波形产生模块8

3.1.1方波9

3.1.2三角波9

3.1.3锯齿波10

3.1.4正弦波12

3.2小键盘模块13

3.3调幅调频模块14

第四章系统调试过程及结果16

第五章收获与体会17

参考文献18

附录1汇编语言源程序代码19

附录2C语言源程序代码33

第一章

概要

1.1设计目的

信号发生器的功能设计结合了软硬件的知识,这样的一个课程设计促使我们主动去找寻资料,自主学习更多的知识。

尤其重要的是设计本身是一种实践,将课本知识应用到设计中,验证并且进一步熟悉它从而获得新的领悟,这是只啃书本所不能达成的好处。

信号发生器的设计尤其加深我们对信号发生的理解,对以8086cpu为中心的各芯片功能的了解以及对微机原理和汇编语言编程有了更深的体会。

1.2课程设计内容及要求

(1)、分别用C语言和汇编语言编程完成硬件接口功能设计;

(2)、硬件电路基于80x86微机的接口电路;

(3)、程序功能要求:

小键盘给定、数码管或屏幕显示,并产生对应信号波形(D/A)输出(信号波形包括正弦波、三角波、方波、锯齿波)、输出信号波形幅度、频率可调。

(按键数量尽量少)。

1.3所需芯片及硬件简介

1.3.18255A特性简介

(1)具有24条输入/输出引脚、可编程的通用并行输入/输出接口电路。

它是一片使用单一+5V电源的40脚双列直插式大规模集成电路。

8255A的通用性强,使用灵活,通过它CPU可直接与外设相连

(2)8255A在使用前要写入一个方式控制字,选择A、B、C三个端口各自的工作方式,共有三种。

方式0:

基本的输入输出方式,即无须联络就可以直接进行的I/O方式。

其中A、B、C口的高四位或低四位可分别设置成输入或输出;

方式1:

选通I/O,此时接口和外围设备需联络信号进行协调,只有A口和B口可以工作在方式1,此时C口的某些线被规定为A口或B口与外围设备的联络信号,余下的线只有基本的I/O功能,即只工作在方式0;

方式2:

双向I/O方式,只有A口可以工作在这种方式,该I/O线即可输入又可输出,此时C口有5条线被规定为A口和外围设备的双向联络线,C口剩下的三条线可作为B口方式1的联络线,也可以和B口一起方式0的I/O线。

本次设计只用到了三个端口的方式0。

1.3.2D/A0832功能简介

DAC0832是采用CMOS工艺制成的单片电流输出型8位数/模转换器。

DAC0832的引脚功能说明如下:

D0-D7:

数字信号输入端

CS:

片选信号,低电平有效

WR:

写信号1,低电平有效

OUT:

DAC电流输出端

图1.1唐都实验箱D/A0832接线图

1.3.3A/D0809功能简介

ADC0809是采样频率为8位的、以逐次逼近原理进行模—数转换的器件。

其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。

当地址ABC=000时,IN0通道被选通。

图1.2唐都实验箱A/D0809接线图

1.3.4唐都小键盘简介

唐都实验箱中提供了4行×

4列16个按键,列选择信号X1-X4,行扫描信号Y1-Y4。

图1.3唐都实验箱小键盘接线图

第二章

总体设计方案

2.1设计思想论述

(1).波形产生:

通过汇编语言编写各个波形子程序,其中方波和三角波参考了唐都的参考程序。

锯齿波由三角波修改而来,正弦波事先用MATLAB仿真存入各点数据,产生波形时依次输出各个数据即可。

波形子程序中主要是各个波形一个周期的代码,循环执行,由此产生连续波形并通过D/A0832将数字量转换成模拟量输出,即可得各种波形。

具体方案见第三章3.1节。

(2).波形切换:

用小键盘输入进行波形的选择,按键0~3分别对应方波、三角波、锯齿波和正弦波。

每个波形周期输出后,调用键盘查询子程序,判断有无按键按下,没有则继续输出下一周期,否则转到相应的波行子程序上。

可随时进行波形间的切换。

具体方案见第三章3.2节。

(3).无极调频:

改变波形子程序中的各个数据输出延时时间,就可改变整个波形的频率,延时越短频率越高。

而延时时间长短可由外部输入决定,通过A/D0809将电位计(0~5V)的模拟量转化成数字量(00~FF)作为延时时间长短。

调节电位器即可调节延时,进而调节频率。

ADC0809芯片分辨率为8位,即可将延时分为256个等级,实现无极调频。

具体方案见第三章3.3、3.4节。

(4).无极调幅:

改变波形子程序中DA输出值的大小即可改变幅值,可以在原数据基础上乘以一个增益。

而增益可由外部输入,原理与调频相似,通过A/D0809输入一个数字量(00~FF)。

按键4用于调频/调幅的切换。

当判断当前为调幅状态时就将这个数字量存入幅值增益变量中,如果判断是调频状态则存入频率延时变量中。

从而实现只用一个电位器分别调节频率和幅度的功能。

(5).开始结束:

通过扫描小键盘,按下5键则退出。

2.2程序流程图

2.3电路原理图

图2.2硬件连接电路图

第三章典型模块分析

3.1波形产生模块

四个波形子程序结构类似,当子程序被调用后,进行以下步骤:

(1)通过8255的C7位输出一个低电平来启动AD0809,并从8255的B口读入AD输入的数字量(00H~FFH)。

(2)判断幅频标志位FLAG_FUPIN,为0则把AD输入的数字量存入频率值空间FRE,否则存入幅值空间AMP。

(3)输出波形的一个周期。

(4)调用子程序CCSCAN,判断小键盘有无按键按下,无则继续步骤

(1),有则返回主程序。

流程图如图3.1所示。

图3.1波形子程序流程图

3.1.1方波

方波的产生先向DA0832输出一个低电平(00H),并延时一段时间。

再输出一个高电平(此处直接用AMP的值作为高电平,AMP是外部AD输入的幅值增益),延时一段相同时间,就是矩形波的一个周期。

(1)一个周期波形的代码:

NEXT1_1:

MOVDX,DA0832;

写00H,输出低电平

MOVAL,00H

OUTDX,AL

CALLDELAY1;

延时

写AMP,输出高电平

MOVAL,AMP;

AMP=00H~FFH,默认值7FH

(2)延时子程序代码:

DELAY1PROCNEAR;

软件延时子程序

PUSHCX

PUSHAX

MOVCH,FRE;

读取频率值,FRE=00H~FFH

ANDCH,0F0H

ADDCH,0FH;

CH的值受FRE的控制,改变FRE则改变延时时间

MOVCL,0FFH

DD1:

MOVAX,0FF00H

DD2:

DECAX

JNZDD2

LOOPDD1

POPAX

POPCX

RET

DELAY1ENDP

3.1.2三角波

三角波从最小值开始逐渐上升,到达最大值之后再逐渐减小到最小。

因此先将最小值(00H)放到BL,输出并延时,对BL加一,再输出并延时,达到最大值后就对BL依次减一,输出并延时,直到BL=00H,则为一个周期波形。

因此三角波有两个过程。

一个周期波形的代码如下:

NEXT1_2:

MOVBL,00H;

BL赋最小值00H

UP1:

AL幅值增益AMP,AMP=00H~FFH

ANDAL,0F0H

SHRAL,4;

AL=00H~0FH

MULBL;

ALBL*AL

启动D/A转换

OUTDX,AL;

输出AL

CALLDELAY2

INCBL;

BL加一

CMPBL,25H;

判断BL是否加到最大值了

JNEUP1

DOWN:

AL幅值增益AMP,AMP=00H~FFH

ANDAL,0F0H

MOVDX,DA0832

CALLDELAY2

DECBL;

BL减一

CMPBL,00H;

判断BL是否减到最小值了

JNEDOWN

延时子程序与方波类似,此处不再赘述。

局部流程图如图3.2所示。

3.1.3锯齿波

锯齿波与三角波类似,只是锯齿波到达最大值之后,直接跳到最小值。

因此锯齿波只有对BL依次加一的过程。

NEXT1_3:

UP2:

AL幅值增益AMP,AMP=00H~FFH

ANDAL,0F0H

MULBL;

INCBL;

JNEUP2

BL加到最大之后直接赋给最小值00H

MOVAL,AMP

SHRAL,4

MOVDX,DA0832

局部流程图如图3.3所示。

3.1.4正弦波

正弦波是利用正弦表(见附录代码段)输出的,即将正弦表中的数值一一输出并延时。

一个周期波形的代码:

NEXT1_4:

LEASI,SIN;

指向正弦表中的第一个数据

MOVCX,255

UP:

MOVBL,AMP;

BL幅值增益AMP,AMP=00H~FFH

ANDBL,0F0H

SHRBL,4;

AMP=00H~FFH,BL=00H~0F

MOVAL,[SI];

读取正弦表中的一个数据

SHRAL,2

ALAL*BL

CALLDELAY3

INCSI;

指向表中的下一个数据

LOOPUP

局部流程图如图3.4所示。

3.2小键盘模块

小键盘用到两个子程序(ccscan和scan)。

(1)ccscan子程序只是一个辅助程序,用于判断当前小键盘是否有键按下,有则全零标志位ZF=0(运算结果不为0),无键按下则ZF=1(运算结果为0)。

子程序代码如下:

CCSCANPROCNEAR;

扫描是否有按键闭合子程序

MOVAL,0

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

当前位置:首页 > 小学教育 > 语文

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

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