找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1579|回复: 0
收起左侧

单片机+DAC0832转换,输出三种波形

[复制链接]
ID:858693 发表于 2020-12-11 17:10 | 显示全部楼层 |阅读模式
__OVT7`EH`5W[E[YCTERJ@7.png
代码:
#include<reg51.h>
#include<math.h>

#define uchar unsigned char
#define uint unsigned int

sbit p0 = P1^0;
sbit p1 = P1^1;
sbit p2 = P1^2;
uchar a;
uint c;
float b;
bit flag;

void delay(uint x)         //延时
{
        uint i, j;
        for(i = x; i > 0; i--)
                for(j = 110; j > 0; j--);
}

void Rectangular_wave()                //方波
{
//        while(!p0);
        while(p1 == 1 && p2 == 1)
        {
                P2 = 255;
                delay(150);
                P2 = 0;
                delay(150);
        }
}

void delta()          //三角波
{
//        while(!p1);
        while(p0 == 1 && p2 == 1)
        {
                for(a = 1; a <= 128; a++)
                P2 = a;
                for(a = 128; a >= 1; a--)
                P2 = a;
        }
        a = 0;
}

void sinusoical()         //正弦波
{
//          while(!p2);
          flag = 0;
          while(p0 == 1 && p1 == 1)
          {
                  for(c = 0; c < 10000 && flag == 0; c++)
                {
                        b = 64 + 63 * sin(2 * 3.1415926 * c * 500 / 40000);
                        P2 = b;
                        if(p0 == 0 || p1 == 0)
                        flag = 1;
                }
          }
}

void scan()
{
        if(p0 == 0)        Rectangular_wave();
        if(p1 == 0)        delta();
        if(p2 == 0) sinusoical();
}

void main()
{
        while(1)
        {
                scan();
        }
}
6VNQ6BZ@_RRY3EV~M{7RH{A.png

DA转换.zip

113.26 KB, 下载次数: 17, 下载积分: 黑币 -5

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表