1、东南大学微机实验综合课程设计 东南大学自动化学院微机实验及课程设计报告参数可调波形发生器姓 名: 学 号: 专 业: 实 验 室: 组 别: 同组人员: 设计时间: 评定成绩: 审阅教师: 一设计目的和要求-3二原理设计-4三方案论证与实现-6四设计思路及流程图-7五编程实现-10六方案测试与结果分析-18六改进与提高-19七分析与总结-19一、设计要求 1)基本要求 编制1 个参数在线可调的波形发生程序,由DA 输出,构成参数在线可调的波形发生器,并用示波器观察波形。函数波形可选f(t)=asin(bt),其中、参数在线可调(也可自己选择,但要求至少2 个参数可调且调节很明显)。参数调节采用
2、如下两种方式之一:(1)两个可调电位器输出通过AD 转换后作为可调参数;(2)参数通过实验装置上的键盘实时修改(调整);(3)精确时间,开关选择标准信号输出(例如a=2V, b=100RAD/s,即50Hz 正弦波)。2)设计提示(1)当用电位器调节参数时,输出零不能对应相应的参数值就为零;(2)当通过键盘修改参数时,先键入参数名如“”,显示当前参数值,修改后再键入参数名,则修改参数完成,随后输出波形发生变化。3)进一步设计要求 (1)分别采用两种参数调节方式在线调节参数;(2)产生周期性三次可调函数f(t)=at3+bt2+ct+d。二、原理设计方案1 参数通过实验装置上的键盘实时修改 运行
3、程序后,程序首先显示一段字符串,提示输入相应的数字会得到不同的波形输出。从键盘上敲入1后,程序会跳转到参数可调的正弦波发生器代码区域。之后,显示输入可调参数a(0255)、b(0255)的信息。输入a后,波形的幅度会发生相应的变化;输入b后,波形的频率会发生相应的变化。从键盘上敲入0后,退出程序。通过检测开关的状态,判断输出标准正弦波还是a,b值所对应的波形。程序中的主要部分功能原理如下:(1)程序中的a、b参数的输入 采用百位、十位、个位数字逐个读入的方法。输入百位数字以后,由于a、b的取值范围在000255之间、故要判断输入的数字是否小于0,大于2,若小于0或大于2,则重新输入。输入的数若
4、在02之间,将输入的数减去30h,有ASCII码值变为相应的数字,再将此数乘以100后存入c。输入十位数字后,判断输入的数字是否小于0,大于9,若小于0或大于9,则重新输入。输入的数若在09之间,将输入的数减去30h,有ASCII码值变为相应的数字,再将此数乘以10后存入d。输入个位数字后,判断输入的数字是否小于0,大于9,若小于0或大于9,则重新输入。输入的数若在09之间,将输入的数减去30h,有ASCII码值变为相应的数字,并将之存入e。 之后对c、d和e求和,从而得到a的值。同样的可以得到b的值。(2)正弦波幅度的改变实验中所用的8位D/A转换器DAC0832的输入数据与输出电压的关系为
5、: (表示参考电压,N表示输入数据)。产生正弦波是根据正弦函数建立一个正弦数字量表,取值范围为一个周期,此正弦数据表的输出幅度为5V。读取一个正弦数据表中的数据后,将此数据乘以a后再除以255,这样就相当于将输出正弦波的幅度变为原来的a/255倍。(3)正弦波频率的改变 正弦波频率的改变是通过改变读取正弦数据表中的两个相邻数据的时间间隔实现的。输入的数据b加上10表示应调用的延时子程序的次数,设延时子程序的延时时间为t,那么读取正弦数据表中的两个相邻数据的时间间隔为b*t。方案2 两个可调电位器输出通过AD 转换后作为可调参数先读正弦波数据的首地址和一周期取值数,然后按偏移值取出正弦波数据。启
6、动ADC0809模/数转换器,读入IN0的值(IN0的值可以通过调节滑动变阻器1来实现),将取出的正弦波数据乘以此数据除以255,再将得到的数据赋值给DAC0832,调用延时子程序,之后将数据表偏移量加一,一周期剩余取值数减一。判断一周期内取值是否结束,若没有结束则继续按偏移值取出正弦波数据,若结束则返回到读正弦波数据的首地址和一周期取值数。 三、方案论证与实现针对设计思路,我们用到的硬件资源有:、0832、8255、1个LED灯和1个逻辑电平开关、0809和2个电位器。各个硬件的主要作用和工作方式如下:1)0832 根据键盘输入或者电位器调节得到的参数a、b,改变正弦波形数据表的数据,将得到
7、的新数据输出给DAC0832,用示波器观察双极性输出端Ub输出正弦波形。2)8255、1个LED灯与1个逻辑电平开关8255的C口接逻辑电平开关,作为输入,用来选择是否要输出标准正弦波形;A口接LED灯,作为输出,用来显示此时输出波形是否为标准正弦波形。3)0809和2个电位器通过实验台的两个电位器输出05V电压分别送入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 e
8、qu ioport+2A0h ;CS_AD,ADC0809片选地址adcs1 equ ioport+2A1hdacs equ ioport+298h ;CS_DA,DAC0809片选地址io8255a equ ioport+288h ;8255A口地址 io8255b equ ioport+28bh ;8255控制寄存器端口地址io8255c equ ioport+28ah ;08255C口地四、设计思路及流程图原理设计清晰了我的设计思路,我将整个整个程序分为了五个部分,分别为主程序设计、参数调整子程序(键盘输入及电位器调节),调幅及调频子程序设计、正弦波输出子程序、延时子程序。1.主程序设计
9、:主要功能有1)控制整个程序的流程及程序跳转;2)通过检测开关的状态,判断输出标准正弦波还是当前a,b值所对应的波形;3)判断参数调节的方式是键盘输入还是电位器调节。2参数调整程序设计:略。(原理设计中已详细解释)3调幅及调频子程序设计:略。注:需要输出标准正弦波时,将相应的a,b值修改,并保存之前的a,b值。4正弦波输出子程序设计:正弦波输出子程序的主要功能有:1)读取正弦波数据表的数据并利用数模转换显示;2)每显示一次数据后需要调用延时子程序;3)数据表偏移地址加1,读取下一数据,重复以上步骤。5延时子程序设计:延时子程序的主要功能有:1)通过b值的改变得到相应的第一层延时参数; 2)延时
10、子程序内嵌套第二层延时程序;延时部分主要流程:延时程序涉及到嵌套延时,loop指令根据CX的值是否为0确定是否接着执行此指令,因而需要用到两次CX,且相互之间不能影响,因而先将外层CX堆栈(b值不同则外层延时的CX不同),给内层CX赋值(1FFH,此值不能改变),执行lOOP指令,直到CX=0;然后将外层CX弹出减1后堆栈;接着执行内层延时,重复上述步骤,直到外层CX=0。四、编程实现1、主程序设计message1 db 0dh,0ah,0dh,0ah db PRESS 1 FOR SINWAVE MODIFIY WITH THE PC KEYBOARD.,0dh,0ah db PRESS 2
11、 FOR SINWAVE MODIFIY WITH THE VARIABLE RESISTANCE.,0DH,0AH db PRESS 0 FOR QUIT TO DOS.,0DH,0AH,$ db 0dh,0ah message2 db 0dh,0ah,0dh,0ah db Sinwave f=a sin(b t) is modified by the PC keyboard .,0DH,0AH db -Directly press A or B to view the parameter .,0DH,0AH db -Input num(0-17)+A or(0-9) B to modify
12、 the parameter .,0DH,0AH db Input 0 quit to the begin,0dh,0ah,$ db 0dh,0ahmessage3 db 0dh,0ah,0dh,0ah db Sin wave f=a sin(b t) modified by the variable resistance .,0DH,0AH db Press anykey on the PC keyboard to return to the begin.,0dh,0ah,$ db 0dh,0ahmessage4 db 0dh,0ah db please input num!,0dh,0ah
13、,$ db 0dh,0ah a db 1h ;可调参数a b db 1h ;可调参数b c db 1 ;c为百位数字f乘以100 d db 1 ;d为十位数字g乘以10 e db 1 ;e为个位数字h乘以1 f db 0 ;参数a的百位f g db 0 ;参数a的十位g h db 1 ;参数a的各位h i db 1 ;i为百位数字l乘以100 j db 1 ;j为十位数字m乘以10 k db 1 ;k为个位数字n乘以1 l db 0 ;参数b的百位l m db 0 ;参数b的十位m n db 1 ;参数b的各位ndata endsbegin: mov ax,data ;开机显示message1 mov ds,ax mov ax,stacks mov ss,ax lea dx,message1 mov ah,09h int 21h judge1: mov dx,0ffh mov ah,07h int 21h cmp al,1 ;按下1,则键盘输入 jz start cmp al,2 ;按下2,则电位器调节 jz sinvr1 cmp al,0 jnz begin ;不是0,重新选择 jmp qi
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1