其他分享
首页 > 其他分享> > 5.4~5.6 D/A转换、DAC0832实现方式

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