打印
[创新制造展示]

【21ic第三届设计大赛】+数字函数发生器

[复制链接]
1798|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
沙发
yiilanying|  楼主 | 2019-6-16 11:00 | 只看该作者
按键1,按键2组合分别控制四种波形锯齿波、三角波、方波、正弦波的相互变化

1560653783(1).jpg (130.24 KB )

1560653783(1).jpg

1560653824(1).jpg (142.19 KB )

1560653824(1).jpg

1560653865(1).jpg (130.21 KB )

1560653865(1).jpg

1560653914(1).jpg (141.67 KB )

1560653914(1).jpg

使用特权

评论回复
板凳
王栋春| | 2019-6-16 12:51 | 只看该作者
图纸资料晒一下

使用特权

评论回复
地板
一路向北lm| | 2019-6-17 10:47 | 只看该作者
yiilanying 发表于 2019-6-16 11:00
按键1,按键2组合分别控制四种波形锯齿波、三角波、方波、正弦波的相互变化 ...

仿真的啊?

使用特权

评论回复
5
yiilanying|  楼主 | 2019-6-17 12:00 | 只看该作者

是的,三号按键改变幅值,四号案件改变周期

使用特权

评论回复
6
yiilanying|  楼主 | 2019-6-17 12:00 | 只看该作者
幅值,周期改变效果

1560743729(1).jpg (141.86 KB )

1560743729(1).jpg

1560743783(1).jpg (140.51 KB )

1560743783(1).jpg

1560743848(1).jpg (140.49 KB )

1560743848(1).jpg

使用特权

评论回复
7
yiilanying|  楼主 | 2019-6-17 18:28 | 只看该作者
虚拟串口调试图

1560767177(1).jpg (302.12 KB )

1560767177(1).jpg

使用特权

评论回复
8
对卜起zZ| | 2019-6-18 08:31 | 只看该作者
我就想知道频率多高

使用特权

评论回复
9
yiilanying|  楼主 | 2019-6-19 10:12 | 只看该作者
#include <absacc.h>
#include <reg52.h>
#include<stdio.h>
#include <stdlib.h>
#include<math.h>

#define DA0832 XBYTE[0xfffe]

#define uchar unsigned char
#define uint unsigned int

sbit S1 = P1^0;
sbit S2 = P1^1;
sbit S3 = P1^2;
sbit S4 = P1^3;
//00锯齿波;01方波;10三角波;11正弦波

void Delay_MS(uint);// delay
void stair(uchar AMP);//锯齿波
void square(uchar AMP, uchar THL,uchar TLL);//方波
void trian(uchar AMP);//三角波
//void sin1();//正弦波
void getSinTab(uchar point,uint maxnum);
void scan(uint AMP);//扫描函数
void Uart1_Init();

static uint Times=0;
static uint amp=200;

void main()
{       
Uart1_Init();
        while(1)
        {       
                                if(0==S3)
                                {
                                         Delay_MS(100);
                                         while(1==S3);
                                         amp-=50;
                                         if(amp==0)amp=200;
                                }
             if(0==S4)
                                {
                                         Delay_MS(100);
                                         while(1==S4);
                                         Times+=50;
                                         if(Times==200)Times=0;
                                }

        scan(amp);
        }
}

void scan(uint AMP)
{
        if((0 == S1) &&(0 == S2))
            stair(AMP);
        else if((1 == S1) && (0 ==S2))
                square(AMP,10,10);
        else if((0 == S1) && (1 == S2))
                trian(AMP);
        else
          getSinTab(300,AMP);
               
               
       
}
void Delay_MS(uint n)
{
        uint k;
        for(n; n  >0 ;n--)
                for(k = 10; k > 0 ;k--);
}

void stair(uchar AMP)
{
        uchar i;
        for(i = 0 ;i < AMP; i++)
        {
            DA0832 = i;
                  Delay_MS(Times);
        }
         
}

void square(uchar AMP, uchar THL, uchar TLL)
{
        DA0832 = 255 - AMP;
        Delay_MS(THL);
        DA0832 = 255;
        Delay_MS(TLL);
        Delay_MS(Times);
}

void trian(uchar AMP)
{
        uchar i;
        for(i = 255 - AMP ;i < 255; i++)
        {
            DA0832 = i;
                Delay_MS(Times/2);
        }
       
        for(i-1 ;i > 255 - AMP; i--)
        {
            DA0832 = i;
                Delay_MS(Times/2);
        }
}


void getSinTab(uchar point,uint maxnum)
{
uchar i=0;
float x;  //弧度
float jiao;//角度 分度角
jiao=360.000/point;

for(i=0;i<point;i++)
{
       
  x=jiao*i; //得到角度值
  x=x*0.01744; //角度转弧度 ?弧度=角度*(π/180)
  DA0832=(maxnum/2)*sin(x)+(maxnum/2);
        Delay_MS(Times);
}

}

void Uart1_Init()
{
    SCON=0X50;          //0101 000??????????sm0,sm1?01,??????1  
    TMOD=0X20;          //?????????2
    TH1 = 0xfd; //?????
    TL1 = 0xfd;
          EA=1;               //?????  
    ES=1;               //???????????????  
          TR1 = 1;    //?????
       
}

void Usart() interrupt 4  
{  
    uchar        rec;  
          SBUF=55; // 发送数据55
   while(!TI);
    TI=0;
         if(RI)
                {
                rec=SBUF;
                RI=0;
                }
                  //?????????  
}

1560910294(1).jpg (64.73 KB )

1560910294(1).jpg

使用特权

评论回复
10
yiilanying|  楼主 | 2019-6-19 10:14 | 只看该作者
程序正在调试中,最近有点忙,可能晚些更新,

使用特权

评论回复
11
lihui567| | 2019-6-26 08:46 | 只看该作者
后续更新的话,最好是通过实物和原理图。通过示波器观察这样更直观一点

使用特权

评论回复
12
振鸣| | 2019-6-26 13:02 | 只看该作者
加油!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:求道不求仙,求人不求全。

9

主题

196

帖子

1

粉丝