5.4~5.6 D/A转换、DAC0832实现方式
作者:互联网
数字量是用二进制代码按数位组合起来表示的,对于有权码,每位代码都有一定的权。为了将数字量转换成模拟量,必须将每1位的代码按其权的大小转化成模拟量,然后将这些模拟量相加,即可得到与数字量成正比的模拟量,从而实现数模转换,这是构成D/A转换器的基本思路。
//用单片机控制DAC0832芯片输出电流,让二极管D12由灭均匀变到最亮,再由最亮均匀熄灭。
//在最亮和最暗时刻使用蜂鸣器分别报警一声,完成整个周期时间控制在5s左右,循环变化。
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit dula = P2 ^ 6;
sbit wela = P2 ^ 7;
sbit dawr = P3 ^ 6;
sbit dacs = P3 ^ 2;
sbit beep = P2 ^ 3;
void delayms(uint xms)
{
uint i, j;
for (i = xms; i>0; i--)
for (j = 110; j>0; j--);
}
void main()
{
uchar val, flag;
dula = 0;
wela = 0;
dacs = 0;
dawr = 0;
P0 = 0;
while (1)
{
if (flag == 0)
{
val += 5; //val=val+5,把新的+5的数值赋值给val
P0 = val; //通过P0口给DA数据口赋值
if (val == 255)
{
flag = 1;
beep = 0;
delayms(100);
beep = 1;
}
delayms(50);
}
else
{
val -= 5;
P0 = val; //通过P0口给DA数据口赋值
if (val == 0)
{
flag = 0;
beep = 0;
delayms(100);
beep = 1;
}
delayms(50);
}
}
}
标签:beep,P0,5.4,5.6,val,delayms,DAC0832,flag,sbit 来源: https://blog.csdn.net/weixin_44386138/article/details/121712449