16位da转换芯片

16位da转换芯片,第1张

DAC714 具有串行数据接口的 16 位数模转换器 DAC715 具有谈信 16 位总线接口的 16 位数模转换器 DAC716 具有串行数据接口的 16 位数模转换器 DAC7631 串腔侍判行输入 16 位电压输出数模转换器 DAC7632 具有串行接口的 16 位双路电压输出 DAC DAC7634 16 位四路电压输出数模转换器 DAC7641 16 位电压输出数模转换器

DAC7642 具有并行接口和复位到中间伍改等级功能的 16 位双路电压输出 DAC DAC7643 具有并行接口和复位到最小等级功能的 16 位双路电压输出 DAC DAC7644 16 位四路电压输出数模转换器 DAC7654 16 位四路电压输出数模转换器

DAC7664 数模转换器;四路、16 位、12uS 稳定时间、+/- 1 LSB DNL DAC7731 具有内部 +10V 参考和串行 I/F 的 16 位单通道数模转换器 DAC7734 16 位四路电压输出串行输入数模转换器

DAC7741 具有内部 +10V 参考和并行 I/F 的 16 位单通道数模转换器 DAC7742 具有内部参考的 16 位单通道并行接口 DAC7744 16 位四路电压输出数模转换器

DAC8501 乘法、低功耗、轨至轨输出、16 位串行输入数模转换器

sbit wr=P3^6

sbit rd=P3^2

sbit k0=P1^0

sbit k1=P1^1

sbit k2=P1^2

sbit k3=P1^3

sbit k4=P1^4

unsigned char flag/判扮/当flag为0、1、2、3、4时分别掘让灶产生正弦波、方波、三角波、梯形波、锯齿波

unsigned char const code sin_code[256]={

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,0xfe,0xfe,0xff,

0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfe,

0xfd,0xfc,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf3,0xf2,

0xf0,0xef,0xed,0xec,0xea,0xe8,0xe6,0xe4,0xe3,0xe1,0xde,0xdc,

0xda,0xd8,0xd6,0xd3,0xd1,0xce,0xcc,0xc9,0xc7,0xc4,0xc1,0xbf,

0xbc,0xb9,0xb6,0xb4,0xb1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,

0x99,0x96,0x92,0x8f,0x8c,0x89,0x86,0x83,0x80,0x7d,0x79,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,0xf,0xd,0xc,0xb,0x9,0x8,0x7,0x6,0x5,0x4,

0x3,0x3,0x2,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,

0x0,0x1,0x1,0x2,0x3,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xa,0xc,0xd,

0xe,0x10,0x12,0x13,0x15,0x17,0x18,0x1a,0x1c,0x1e,0x20,0x23,

0x25,0x27,0x29,0x2c,0x2e,0x30,0x33,0x35,0x38,0x3b,0x3d,0x40,

0x43,0x46,0x48,0x4b,0x4e,0x51,0x54,0x57,0x5a,0x5d,0x60,0x63,

0x66,0x69,0x6c,0x6f,0x73,0x76,0x79,0x7c

}//用于生成正弦

unsigned char kscan() //键盘扫描函数

{

unsigned char kscannum,t

P1=0xff

t=P1

if(~(t&0xff))

{

if(k0==0)

{

kscannum=1

}

else if(k1==0)

{

kscannum=2

}

else if(k2==0)

{

kscannum=3

}

else if(k3==0)

{

kscannum=4

}

else if(k4==0)

{

kscannum=5

}

else

{

kscannum=0

}

return kscannum

}

}

void init_DA0832()//DA0832初始化

{

rd=0

wr=0

}

void fangbo()//产生方波函数

{

EA=1//开总中断

ET0=1//计时器T0工作

TMOD=1

TR0=1/滑腔/开启T0

TH0=0xff//装入初值

TL0=0x83

}

void sin()//产生正弦波函数

{

unsigned inti

do{

P2=sin_code[i]

i=i+1

}while(i<256)

}

void juchibo()//产生锯齿波函数

{

P2=0x00

do{

P2=P2+1

}while(P2<=0xff)

}

void sanjiaobo()//产生三角波函数

{

P2=0x00

do{

P2=P2+1

}while(P2<0xff)

P2=0xff

do{

P2=P2-1

}while(P2>0x00)

P2=0x00

}

void tixingbo()//产生梯形波函数

{

unsigned char i

P2=0x00

do{

P2=P2+1

}while(P2<0xff)

P2=0xff

for(i=255i>0i--)

{

P2=0xff

}

do{

P2=P2-1

}while(P2>0x00)

P2=0x00

}

void timer0(void) interrupt 1//中断函数

{

P2=~P2//取反

TH0=0xff//重新装入初值

TL0=0x83

TR0=1

}

/*主函数*/

void main()

{

init_DA0832()//初始化

do

{

flag=kscan()

}while(!flag)//等待按键按下

while(1)

{

switch(flag)

{

case 1:

do{

flag=kscan()

sin()

}while(flag==1)//产生正弦波

break

case 2:

fangbo()

do{

flag=kscan()

}while(flag==2)//产生方波

TR0=0

break

case 3:

do{

flag=kscan()

sanjiaobo()

}while(flag==3)//产生三角波

break

case 4:

do{

flag=kscan()

tixingbo()

}while(flag==4)//产生梯形波

break

case 5:

do{

flag=kscan()

juchibo()

}while(flag==5)//产生锯齿波

break

default:

flag=kscan()

break

}

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/yw/12291707.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存