基于单片机和dac0832的波形发生器_第1页
基于单片机和dac0832的波形发生器_第2页
基于单片机和dac0832的波形发生器_第3页
基于单片机和dac0832的波形发生器_第4页
基于单片机和dac0832的波形发生器_第5页
已阅读5页,还剩1页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于单片机和dac0832的波形发生器仿真电路图(输出正弦波、三角波,锯齿波)主程序:#include<reg52.h>

sbitkey2=P2^2;

sbitkey1=P2^1;

sbitkey0=P2^0;

charflag;

//波型输出标置变量

bittime;

unsignedchari;

int

num;

voidfrequency();

voiddelay(intz)//延时

z毫秒

{

intx,y;

for(x=z;x>0;x--)

for(y=124;y>0;y--);

}

unsignedcharsin(unsignedcharx)//正弦波

{

unsignedcharcodesin_tab[]={0x80,0x83,0x86,0x89,0x8c,0x8f,0x92,0x95,0x98,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae,

//上半周

0xb0,0xb3,0xb6,0xb9,0xbc,0xbf,0xc1,0xc4,0xc7,0xc9,0xcc,0xce,0xd1,0xd3,0xd5,0xd8,

0xda,0xdc,0xde,0xe0,0xe2,0xe4,0xe6,0xe8,0xea,0xec,0xed,0xef,0xf0,0xf2,0xf3,0xf4,

0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfc,0xfd,0xfd,0xfe,0xfe,0xff,0xff,0xff,0xff,0xff,

0xff,0xff,0xff,0xff,0xff,0xfe,0xfe,0xfd,0xfd,0xfc,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,

0xf6,0xf4,0xf3,0xf2,0xf0,0xef,0xed,0xec,0xea,0xe8,0xe6,0xe4,0xe2,0xe0,0xde,0xdc,

0xda,0xd8,0xd5,0xd3,0xd1,0xce,0xcc,0xc9,0xc7,0xc4,0xc1,0xbf,0xbc,0xb9,0xb6,0xb3,

0xb0,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99,0x96,0x92,0x8f,0x8c,0x89,0x86,0x83,

0x80,

0x80,0x7d,0x7a,0x76,0x73,0x70,0x6d,0x6a,0x67,0x64,0x61,0x5e,0x5b,0x58,0x55,0x52,//下半周期

0x4f,0x4c,0x49,0x46,0x43,0x41,0x3e,0x3b,0x39,0x36,0x33,0x31,0x2e,0x2c,0x2a,0x27,

0x25,0x23,0x21,0x1f,0x1d,0x1b,0x19,0x17,0x15,0x14,0x12,0x10,0x0f,0x0d,0x0c,0x0b,

0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x03,0x02,0x02,0x01,0x01,

0x00,0x00,0x00,

0x00,0x01,0x01,0x02,0x02,0x03,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0b,0x0c,0x0d,

0x0f,0x10,0x12,0x13,0x15,0x17,0x18,0x1a,0x1c,0x1e,0x20,0x23,0x25,0x27,0x2a,0x2c,

0x2e,0x30,0x33,0x35,0x38,0x3b,0x3d,0x3e,0x40,0x43,0x46,0x48,0x4b,0x4e,0x51,0x54,

0x57,0x5a,0x5d,0x5f,0x60,0x63,0x66,0x69,0x6b,0x6d,0x6f,0x72,0x74,0x76,0x78,0x7a,0x7e,0x80};

returnsin_tab[x];}

voidDAC0832(unsignedcharx)

{

P1=x;

}

voidmain()

{

chard;

d=1;

TMOD=0X02;

num=10;

TH0=256-num;

//num用来控制采样一个点所用的时间

TL0=256-num;

ET0=1;

//按键接于外部中断0,与中断1

EA=1;

TR0=1;

flag=2;

//开始时有输出

i=0;

while(1)

{

if(key2==0)

//按一下key3,d自加1

{

delay(5);

if(key2==0)

{

while(!key2);

d++;

if(d==21)//当d=21,d变为1

d=1;

}

}

frequency();

if(time==1)

{

time=0;

if(i>255)

i=0;

else

i=i+d;//设置采样间隔

switch(flag)

//当按键1的为输出三角波,按键2时输出正弦波

{

case0:DAC0832(i);break;//当flag=0时,锯齿波

case1:

if(i>127)//当flag=1时,三角波

DAC0832(255-i);

else

DAC0832(i);

break;

case2:DAC0832(sin(i));//当flag=2时,正弦波

break;

default:

break;

}

}

}

}voidtime0()interrupt1

{

TH0=256-num;

TL0=256-num;

time=1;

}

voidfrequency()

{

if(key0==0)//

//key0控制flag,频率选择

{

delay(5);

if(key0==0)//再次检测

{

while(!key0);

//等待按键释放

flag++;

//按一下加1

if(flag==3)//大于2返回0

flag=0;

}

}

if(key1==0)

//检测P21是否按下

{

delay(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论