三角波产生原理:单片机把初始量0送给DAC0832后,不断地增1,增至0xff后,
再把送给 DAC0832的数字量不断减1,减至0后,再重复上述过程。也可以在每
个减1的瞬间采用一个简短延时,所呈现的三角波则不会出现肉眼可见的差距。
#include<reg51.h>
typedef unsigned char uchar;
sbit cs=P2^0;
sbit wr=P3^6;
void Triangle() //三角波函数
{
P0=0x00;
do{
P0=P0+1;
}while(P0<0xff);
P0=0xff;
do{
P0=P0-1;
}while(P0>0x00);
P0=0x00 ;
}
void init_DA0832() //DAC0832初始化函数
{
cs=0;
wr=0;
}
void main()
{
init_DA0832();
while(1)
{
Triangle(); //三角波函数
}
}
注:由于51单片机P0口内部不含上拉电阻,所以应添加上拉电阻,防止P0口处于高阻态