基于STM32单片机的简易波形发生器设计

描述

一.系统概

系统内使用STM32单片机进行主控,proteus内部集成示波器,使用按键可以调节波形的输出方式,在示波器上可以实时观察波形的变化。

示波器

二.仿真概述

1. 调出示波器且此时没有按下按键波形就是一条直线

示波器

2.按下方波按键就可以在示波器上看到方波波形

示波器

3. 按下三角波按键就可以在示波器上看到三角波波形

示波器

4.按下锯齿波按键就能看到锯齿波波形,可以调节示波器的旋钮来移动查看和放大缩小

示波器

三.程序设计

 

#include 
#include 
#include 
#include 
#include 
 
int main(void)
{  
  u8 f=0,i=0,k=0;
  
  Lcd1602_Init();
  DAC0832_Init();
  Key_Init();
  
  while(1)
  {
    if(Key0==0||Key1==0||Key2==0||Key3==0)
    {
      delay_ms(100);
      if(Key0==0)
      {
        k=1;
        while(Key0);
      }
      if(Key1==0)
      {
        k=2;
        while(Key1);
      }
      if(Key2==0)
      {
        k=3;
        while(Key2);
      }
      if(Key3==0)
      {
        k=0;
        while(Key3);
      }    
    }
    
    if(k==1)
    {
      //方波======================================
      if(f==0)
      {
        i++;
        DAC_com(255);
        delay_us(19);
        if(i==255)
        {
          f=1;
        }
      }
      else
      {
        i--;
        DAC_com(0);
        delay_us(19);
        if(i==0)
        {
          f=0;
        }
      }
    }
    if(k==2)
    {
      //三角波======================================
      if(f==0)
      {
        i++;
        DAC_com(i);
        delay_us(19);
        if(i==255)
        {
          f=1;
        }
      }
      else
      {
        i--;
        DAC_com(i);
        delay_us(19);
        if(i==0)
        {
          f=0;
        }
      }
    }
    
    if(k==3)
    {
      //锯齿======================================
      if(f==0)
      {
        if(i<255)
        {
          i++;
          DAC_com(i);
          delay_us(19);
        }else i=0;
      }
    }        
  }  
}
 

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分