DAC0832 产生三角波
(1)计划及任务要求
利用 DAC0832(DAC0830)可实现输出三角波波形信号,按照 DAC0832 芯片工作步骤,硬
RP1
RESPACK-8
1
23456789
0
D
1
D
2
D
3
D
4
D
5
D
6
D
7
D
2
3
-15v
1
1
4
+15v
U3:A
1
LM324
(A)
A
B
C
D
件设计采用直通方式。
(2)硬件电路设计
19
18
9
29
30
31
1
2
3
4
5
6
7
8
U1
XTAL1
XTAL2
RST
PSEN
ALE
EA
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
AT89C51
D0
D1
D2
D3
D4
D5
D6
D7
-5v
P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7
P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11
P2.4/A12
P2.5/A13
P2.6/A14
P2.7/A15
P3.0/RXD
P3.1/TXD
P3.2/INT0
P3.3/INT1
P3.4/T0
P3.5/T1
P3.6/WR
P3.7/RD
39
38
37
36
35
34
33
32
21
22
23
24
25
26
27
28
10
11
12
13
14
15
16
17
D3
D2
D1
D0
1
2
3
4
5
6
7
8
9
10
U2
CS
WR1
GND
DI3
DI2
DI1
DI0
VREF
RFB
GND
DAC0832
VCC
ILE(BY1/BY2)
WR2
XFER
DI4
DI5
DI6
DI7
IOUT2
IOUT1
20
19
18
17
16
15
14
13
12
11
D4
D5
D6
D7
(3)软件程序设计
#include //头文件
#define uchar unsigned char
#define uint unsigned int
#define dadata P0//定义波形输出口
void delay(uint xms)//延时子函数
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void main()//主函数
{
uchar temp=0,a=0;//设置初值
while(1)//等待
{
if(a==0)//输出三角波上升沿部分
{
dadata=temp;//输出数据
delay(5);//延时
temp++;//三角波上升沿
if(temp==50)//到达最大值
a=1;//上升结束准备进入下降沿部分
}
if(a==1)//输出下降沿波形部分
{
dadata=temp;//输出数据
delay(5);//延时
temp--;//三角波下降沿
if(temp==0)//到达最小值
a=0;//进入下一周期
}
}
}