东南大学微机实验综合课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
东南大学自动化学院
微机实验及课程设计报告
《参数可调波形发生器》
姓名:学号:
专业:实验室:
组别:同组人员:
设计时间:
评定成绩:审阅教师:
目录
一.设计目的和要求--------------------------------------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的输入数据与输出电压的关系为:5256
2-⨯=N U U REF
o (REF U 表示参考电压,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灯
ioport equ 0EC00H-0280h ;TPC的io地址
adcs equ ioport+2A0h ;CS_AD,ADC0809片选地址
adcs1 equ ioport+2A1h
dacs equ ioport+298h ;CS_DA,DAC0809片选地址
io8255a equ ioport+288h ;8255A口地址
io8255b equ ioport+28bh ;8255控制寄存器端口地址
io8255c equ ioport+28ah ;08255C口地