DAC0832波形图C语言程序

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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;i<0xff;i++);
for(i=0;i<18;i++)XBYTE[DAC]=~SINTAB[i]; //第 3 个 1/4 周期
for(i=18;i>0;i--)XBYTE[DAC]=~SINTAB[i]; //第 4 个 1/4 周期
}
/**************主函数*******************/
main()
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;
//正弦波标志
{
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; } }
//判断方波是否按下 //判断正弦波是否按下
XBYTE[DAC]=0xff;
delay();
}
/**************正弦波函数*******************/
void sin()
{
uchar i;
for(i=0;i<18;i++)XBYTE[DAC]=SINTAB[i]; //第 1 个 1/4 周期
for(i=18;i>0;i--)XBYTE[DAC]=SINTAB[i]; //第 2 个 1/4 周期
}
/**************阶梯波函数*******************/
void st()
{
uchar i=0;
while(KST)
{
XBYTE[DAC]=i++;
//启动 DAC
}
}
/**************三角波函数*******************/
void tri()
{
uchar i=0;
{
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
XBYTE[DAC]=i;
do
{
XBYTE[DAC]=i;
i++;
}
while(i<0xff);
do
{
XBYTE[DAC]=i;
i--;
}
while(i>0x0);
}
/**************方波函数*******************/
void sq()
Байду номын сангаас
{
XBYTE[DAC]=0x00;
delay();
#include<reg51.h>
#include<absacc.h>
#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,
相关文档
最新文档