这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 设计工具 » DAC0832波形图C语言程序

共1条 1/1 1 跳转至

DAC0832波形图C语言程序

高工
2013-10-25 15:27:48     打赏

#include

#include

#define uchar unsigned char

#define uint unsigned int

#define DAC 0x7fff //定义DAC端口地址

uchar code SINTAB[]={0x7F,0x89,0x94,0x9F,0xAA,0xB4,0xBE,0xC8,0xD1,0xD9,0xE0,0xE7,

0xED,0xF2,0xF7,0xFA,0xFC,0xFE,0xFF};

uchar bdata Tbase=0x20;

sbit KST=Tbase^0; //阶梯波标志

sbit KTRI=Tbase^1; //三角波标志

sbit KSQ=Tbase^2; //方波标志

sbit KSIN=Tbase^3; //正弦波标志

sbit K1=P1^0; //K1键

sbit K2=P1^2; //K2键

sbit K3=P1^4; //K3键

sbit K4=P1^6; //K4键

/**************延时函数*******************/

void delay()

{

uchar i;

for(i=0;i0xff;i++);

}

/**************阶梯波函数*******************/

void st()

{

uchar i=0;

while(KST)

{

XBYTE[DAC]=i++; //启动DAC

}

}

/**************三角波函数*******************/

void tri()

{

uchar i=0;

XBYTE[DAC]=i;

do

{

XBYTE[DAC]=i;

i++;

}

while(i0xff);

do

{

XBYTE[DAC]=i;

i--;

}

while(i>0x0);

}

/**************方波函数*******************/

void sq()

{

XBYTE[DAC]=0x00;

delay();

XBYTE[DAC]=0xff;

delay();

}

/**************正弦波函数*******************/

void sin()

{

uchar i;

for(i=0;i18;i++)XBYTE[DAC]=SINTAB[i]; //第1个1/4周期

for(i=18;i>0;i--)XBYTE[DAC]=SINTAB[i]; //第2个1/4周期

for(i=0;i18;i++)XBYTE[DAC]=~SINTAB[i]; //第3个1/4周期

for(i=18;i>0;i--)XBYTE[DAC]=~SINTAB[i]; //第4个1/4周期

}

/**************主函数*******************/

main()

{

EX0=1;IT0=1;EA=1;

while(1){

if(KST==1)st();

if(KTRI==1)tri();

if(KSQ==1)sq();

if(KSIN==1)sin();

}

}

/**************INT0中断服务函数*******************/

void int0() interrupt 0 using 1

{

if(K1==0) //判断梯形波是否按下

{

Tbase=0;

KST=1;

}

if(K2==0) //判断三角波是否按下

{

Tbase=0;

KTRI=1;

}

if(K3==0) //判断方波是否按下

{

Tbase=0;

KSQ=1;

}

if(K4==0) //判断正弦波是否按下

{

Tbase=0;

KSIN=1;

}

}




关键词: datasheet中文资料     datasheet p    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]