东南大学微机实验综合课程设计.docx

上传人:b****5 文档编号:3198696 上传时间:2022-11-20 格式:DOCX 页数:21 大小:143.13KB
下载 相关 举报
东南大学微机实验综合课程设计.docx_第1页
第1页 / 共21页
东南大学微机实验综合课程设计.docx_第2页
第2页 / 共21页
东南大学微机实验综合课程设计.docx_第3页
第3页 / 共21页
东南大学微机实验综合课程设计.docx_第4页
第4页 / 共21页
东南大学微机实验综合课程设计.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

东南大学微机实验综合课程设计.docx

《东南大学微机实验综合课程设计.docx》由会员分享,可在线阅读,更多相关《东南大学微机实验综合课程设计.docx(21页珍藏版)》请在冰豆网上搜索。

东南大学微机实验综合课程设计.docx

东南大学微机实验综合课程设计

 

东南大学自动化学院

 

微机实验及课程设计报告

《参数可调波形发生器》

 

姓名:

学号:

专业:

实验室:

组别:

同组人员:

设计时间:

评定成绩:

审阅教师:

 

一.设计目的和要求--------------------------------------3

二.原理设计--------------------------------------------4

三.方案论证与实现--------------------------------------6

四.设计思路及流程图--------------------------------------------------------7

五.编程实现--------------------------------------------------------------------10

六.方案测试与结果分析----------------------------------18

六.改进与提高------------------------------------------19

七.分析与总结------------------------------------------19

 

一、设计要求

1)基本要求

编制1个参数在线可调的波形发生程序,由D/A输出,构成参数在线可调的波形发生器,并用示波器观察波形。

函数波形可选f(t)=asin(bt),其中a、b参数在线可调(也可自己选择,但要求至少2个参数可调且调节很明显)。

参数调节采用如下两种方式之一:

(1)两个可调电位器输出通过A/D转换后作为可调参数;

(2)参数通过实验装置上的键盘实时修改(调整);

(3)精确时间,开关选择标准信号输出(例如a=2V,b=100πRAD/s,即50Hz正弦波)。

2)设计提示

(1)当用电位器调节参数时,输出零不能对应相应的参数值就为零;

(2)当通过键盘修改参数时,先键入参数名如“a”,显示当前参数值,修改后再键入参数名,则修改参数完成,随后输出波形发生变化。

3)进一步设计要求

(1)分别采用两种参数调节方式在线调节参数;

(2)产生周期性三次可调函数f(t)=at3+bt2+ct+d。

 

二、原理设计

方案1参数通过实验装置上的键盘实时修改

运行程序后,程序首先显示一段字符串,提示输入相应的数字会得到不同的波形输出。

从键盘上敲入1后,程序会跳转到参数可调的正弦波发生器代码区域。

之后,显示输入可调参数a(0~255)、b(0~255)的信息。

输入a后,波形的幅度会发生相应的变化;输入b后,波形的频率会发生相应的变化。

从键盘上敲入0后,退出程序。

通过检测开关的状态,判断输出标准正弦波还是a,b值所对应的波形。

程序中的主要部分功能原理如下:

(1)程序中的a、b参数的输入

采用百位、十位、个位数字逐个读入的方法。

输入百位数字以后,由于a、b的取值范围在000~255之间、故要判断输入的数字是否小于’0’,大于’2’,若小于’0’或大于’2’,则重新输入。

输入的数若在'0'~'2'之间,将输入的数减去30h,有ASCII码值变为相应的数字,再将此数乘以100后存入c。

输入十位数字后,判断输入的数字是否小于’0’,大于’9’,若小于’0’或大于’9’,则重新输入。

输入的数若在'0'~'9'之间,将输入的数减去30h,有ASCII码值变为相应的数字,再将此数乘以10后存入d。

输入个位数字后,判断输入的数字是否小于’0’,大于’9’,若小于’0’或大于’9’,则重新输入。

输入的数若在'0'~'9'之间,将输入的数减去30h,有ASCII码值变为相应的数字,并将之存入e。

之后对c、d和e求和,从而得到a的值。

同样的可以得到b的值。

(2)正弦波幅度的改变

实验中所用的8位D/A转换器DAC0832的输入数据与输出电压的关系为:

表示参考电压,N表示输入数据)。

产生正弦波是根据正弦函数建立一个正弦数字量表,取值范围为一个周期,此正弦数据表的输出幅度为5V。

读取一个正弦数据表中的数据后,将此数据乘以a后再除以255,这样就相当于将输出正弦波的幅度变为原来的a/255倍。

(3)正弦波频率的改变

正弦波频率的改变是通过改变读取正弦数据表中的两个相邻数据的时间间隔实现的。

输入的数据b加上10表示应调用的延时子程序的次数,设延时子程序的延时时间为t,那么读取正弦数据表中的两个相邻数据的时间间隔为b*t。

方案2两个可调电位器输出通过A/D转换后作为可调参数

先读正弦波数据的首地址和一周期取值数,然后按偏移值取出正弦波数据。

启动ADC0809模/数转换器,读入IN0的值(IN0的值可以通过调节滑动变阻器1来实现),将取出的正弦波数据乘以此数据除以255,再将得到的数据赋值给DAC0832,调用延时子程序,之后将数据表偏移量加一,一周期剩余取值数减一。

判断一周期内取值是否结束,若没有结束则继续按偏移值取出正弦波数据,若结束则返回到读正弦波数据的首地址和一周期取值数。

三、方案论证与实现

针对设计思路,我们用到的硬件资源有:

、0832、8255、1个LED灯和1个逻辑电平开关、0809和2个电位器。

各个硬件的主要作用和工作方式如下:

1)0832

根据键盘输入或者电位器调节得到的参数a、b,改变正弦波形数据表的数据,将得到的新数据输出给DAC0832,,用示波器观察双极性输出端Ub输出正弦波形。

2)8255、1个LED灯与1个逻辑电平开关

8255的C口接逻辑电平开关,作为输入,用来选择是否要输出标准正弦波形;A口接LED灯,作为输出,用来显示此时输出波形是否为标准正弦波形。

3)0809和2个电位器

通过实验台的两个电位器输出0~5V电压分别送入ADC0809的通道0和1(IN0、IN1),通过A/D转换,得到参数a和b。

;CS_AD-----2A0H,CS_DA-----298H;V1-----IN0,V2-----IN1,Ub-----示波器;C0-----K1(开关),A0-----LED灯

ioportequ0EC00H-0280h;TPC的io地址

adcsequioport+2A0h;CS_AD,ADC0809片选地址

adcs1equioport+2A1h

dacsequioport+298h;CS_DA,DAC0809片选地址

io8255aequioport+288h;8255A口地址

io8255bequioport+28bh;8255控制寄存器端口地址

io8255cequioport+28ah;08255C口地

四、设计思路及流程图

原理设计清晰了我的设计思路,我将整个整个程序分为了五个部分,分别为主程序设计、参数调整子程序(键盘输入及电位器调节),调幅及调频子程序设计、正弦波输出子程序、延时子程序。

1.主程序设计:

主要功能有

1)控制整个程序的流程及程序跳转;

2)通过检测开关的状态,判断输出标准正弦波还是当前a,b值所对应的波形;

3)判断参数调节的方式是键盘输入还是电位器调节。

2.参数调整程序设计:

略。

(原理设计中已详细解释)

3.调幅及调频子程序设计:

略。

注:

需要输出标准正弦波时,将相应的a,b值修改,并保存之前的a,b值。

4.正弦波输出子程序设计:

正弦波输出子程序的主要功能有:

1)读取正弦波数据表的数据并利用数模转换显示;

2)每显示一次数据后需要调用延时子程序;

3)数据表偏移地址加1,读取下一数据,重复以上步骤。

5.延时子程序设计:

延时子程序的主要功能有:

1)通过b值的改变得到相应的第一层延时参数;

2)延时子程序内嵌套第二层延时程序;

延时部分主要流程:

延时程序涉及到嵌套延时,loop指令根据CX的值是否为0确定是否接着执行此指令,因而需要用到两次CX,且相互之间不能影响,因而先将外层CX堆栈(b值不同则外层延时的CX不同),给内层CX赋值(1FFH,此值不能改变),执行lOOP指令,直到CX=0;然后将外层CX弹出减1后堆栈;接着执行内层延时,重复上述步骤,直到外层CX=0。

四、编程实现

1、主程序设计

message1db0dh,0ah,0dh,0ah

db'PRESS1FORSINWAVEMODIFIYWITHTHEPCKEYBOARD.',0dh,0ah

db'PRESS2FORSINWAVEMODIFIYWITHTHE

VARIABLERESISTANCE.',0DH,0AH

db'PRESS0FORQUITTODOS.',0DH,0AH,'$'

db0dh,0ah

message2db0dh,0ah,0dh,0ah

db'Sinwave[f=asin(bt)]ismodifiedbythePCkeyboard.',0DH,0AH

db'-DirectlypressAorBtoviewtheparameter.',0DH,0AH

db'-Inputnum(0-17)+Aor(0-9)Btomodifytheparameter.',0DH,0AH

db'Input0quittothebegin',0dh,0ah,'$'

db0dh,0ah

message3db0dh,0ah,0dh,0ah

db'Sinwave[f=asin(bt)]modifiedbythe

variableresistance.',0DH,0AH

db'PressanykeyonthePCkeyboardtoreturnto

thebegin.',0dh,0ah,'$'

db0dh,0ah

message4db0dh,0ah

db'pleaseinputnum!

',0dh,0ah,'$'

db0dh,0ah

adb1h;可调参数a

bdb1h;可调参数b

cdb'1';c为百位数字f乘以100

ddb'1';d为十位数字g乘以10

edb'1';e为个位数字h乘以1

fdb'0';参数a的百位f

gdb'0';参数a的十位g

hdb'1';参数a的各位h

idb'1';i为百位数字l乘以100

jdb'1';j为十位数字m乘以10

kdb'1';k为个位数字n乘以1

ldb'0';参数b的百位l

mdb'0';参数b的十位m

ndb'1';参数b的各位n

dataends

begin:

movax,data;开机显示message1

movds,ax

movax,stacks

movss,ax

leadx,message1

movah,09h

int21h

judge1:

movdx,0ffh

movah,07h

int21h

cmpal,'1';按下'1',则键盘输入

jzstart

cmpal,'2';按下'2',则电位器调节

jzsinvr1

cmpal,'0'

jnzbegin;不是'0',重新选择

jmpqi

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

当前位置:首页 > 幼儿教育 > 唐诗宋词

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

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