您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 基于DAC0832幅频可调正弦波发生器设计
1实验六D/A0832(幅频可调正弦波发生器)实验1.实验目的(1)了解D/A转换与单片机的接口方法;掌握D/A转换芯片DA0832的性能及编程方法。(2)掌握通过DA0832数字合成正弦波形信号的方法。(3)掌握正弦波形信号幅度、频率调节的软件处理方法。2.实验内容单片机P1口与4个按键连接,用于信号幅度和频率调节操作键。单片机P0、P2.7、P3.6(-WR)与DA0832、2个741(运放)连接构成波形信号输出电路。编程使波形信号输出电路输出正弦波信号,并且可通过操作键调节信号的幅度和频率。幅度和频率调节级别从0~10,共11个等级。3.实验器材(1)Proteus仿真软件(2)keilC51开发环境软件4.实验原理(1)外扩模拟输出口——利用单片机总线功能,通过单片机的P0、P2.7、P3.6(-WR)与DA0832、1个741(运放)连接,可外扩一个模拟输出口;该口在经过1个741(运放)的单到双信号变换处理,可输出双极性波形信号。(2)通过“正弦表.exe”软件产生8位量化级数和36个采样点数的正弦波信号波表数组数据。通过DA0832双极性波形信号电路顺序输出波表数组数据中的数据,可实现数字合成的正弦波信号。(3)通过调节(键操作)顺序输出波表数据的时间间隔延时,可改变正弦信号的频率。时间间隔延时控制参数TC=0~10,共有11个等级。(4)通过调节(键操作)比例系数,将比例系数乘于波表中各个数据,可改变正弦信号的幅度。幅度调整的计算公式解释如下:y=x×K+(1-K)×128公式(1)其中:x原波表数据;y调整后的波表数据;K比例系数;(1-K)×128用于双极性信号输出位移调整。为了提高计算速度,所有参与运算参数采用整型变量,比例系数K可变换成如下形式:K=RC÷10公式(2)其中:RC幅度控制参数。RC=0~10(11个等级),K=0~1。将公式(1)带入公式(2),求得新的幅度调整计算公式如下:y=x×RC÷10+128-128×RC÷10公式(3)25.实验电路原理图7.实验步骤(1)按照“5.实验电路原理图”,用proteus绘制原理图。(2)用keilC51开发环境软件,按照“6.程序流程图”,编写、调试和运行C51处理程序(提示:可参考课堂练习10_4.C和“8_3(双机通信测试)”功能程序FUNCTION.C中的按键扫描函数。)。(3)观察和记录幅度调节最大时,波形电压的峰峰值。(4)观察和记录频率调节最大和最小时,波形的最小和最大周期时间。(将绘制的原理图和编写、调试和运行的处理程序存放在自己所带的USB盘中。)9.撰写实验报告(1)预习(2)原始记录——“7.实验步骤”中的(2)(3)(4)内容。(3)实验报告内容36.程序框图按键扫描子程序可参考课堂练习“8_3(双机通信测试)”功能程序FUNCTION.C中的按键扫描函数。/*【例10-2】要求在图10-3输出端输出锯齿波电压,产生频率随意,幅值为5V,见图10-5。用C语言编程,程序如下:*///用C语言编程,程序如下:#includeregx51.h//#includeabsacc.h//#defineda0832XBYTE[0x7fff]#defineucharunsignedchar#defineuintunsignedintucharkeyscan(void);//keyscanroutinevoiddelay_10ms(void);//10msdelayroutinevoidscale(ucharkk);//比例计算ucharxdatada0832_at_0x7fff;ucharcodedot1[36]={0x80,0x96,0xab,0xbf,0xd2,0xe2,0xee,0xf8,0xfe,//正弦初始化波表指针和计数变量输出一个波表数据波表指针和计数变量增1YNYN开始调用延时子程序调用按键扫描子程序有键按下?增幅键值?减幅键值?增频键值?减频键值?36个波点输出完?增幅处理减幅处理增频处理减频处理YYYNNNNY4波数据0xff,0xfe,0xf8,0xee,0xe2,0xd2,0xc0,0xab,0x96,0x80,0x69,0x54,0x40,0x2d,0x1e,0x11,0x7,0x1,0x0,0x1,0x7,0x10,0x1d,0x2d,0x3f,0x53,0x69};uchardatadot[36]={0x80,0x96,0xab,0xbf,0xd2,0xe2,0xee,0xf8,0xfe,//正弦波数据0xff,0xfe,0xf8,0xee,0xe2,0xd2,0xc0,0xab,0x96,0x80,0x69,0x54,0x40,0x2d,0x1e,0x11,0x7,0x1,0x0,0x1,0x7,0x10,0x1d,0x2d,0x3f,0x53,0x69};ucharTC=10,RC=10;main(){unsignedchari,j,temp;P1=(RC4)|0x0f;P3=TC|0xf0;while(1){for(i=0;i36;i++){da0832=dot[i];/*输出数据,启动转换*/for(j=0;jTC+5;j++)temp=keyscan();/*延时*/if(temp!=0x0f)//有键按下,幅频调整。{if(temp==0&&TC10)P3=++TC|0xf0;//TC++;//频率减,并且显示频率系数elseif(temp==1&&TC0)P3=--TC|0xf0;//TC--;//频率增,并且显示频率系数elseif(temp==2&&RC0)scale(--RC);//幅度减,调用比例计算函elseif(temp==3&&RC10)scale(++RC);//幅度增,调用比例计算函}}}}voidscale(ucharkk){uchari;for(i=0;i36;i++)dot[i]=dot1[i]*kk/10+128-128*kk/10;P1=(kk4)|0x0f;//显示幅度系数}ucharkeyscan()//keyscanroutine{uchartemp,keycode=0;//P1=0xff;temp=P1&0x0f;if(temp!=0x0f){delay_10ms();temp=P1&0x0f;if(temp!=0x0f){if(P1_0==0)return0;elseif(P1_1==0)return1;elseif(P1_2==0)return2;elseif(P1_3==0)return3;}}return0x0f;}voiddelay_10ms()//10msdelayroutine{uinti;for(i=0;i2500;i++);}
本文标题:基于DAC0832幅频可调正弦波发生器设计
链接地址:https://www.777doc.com/doc-6242339 .html