基于STM32单片机的信号发生器设计研究

硬件方案

      硬件主要由stm32单片机核心板+LCD1602液晶显示屏+LM358运算放大电路+DAC0832数模电路+TL431基准参考电压电路+ICL7660稳压电路+按键电路等构成;如图:

 

设计功能

1.LCD1602液晶显示波形种类和频率值(0-50KHZ)。

2.按键可用于设置波形种类和设定频率步进值;

3.电位器器改变振幅0-5V(2V-4V稳定)。

4.共可产生4种波形,分别为正弦波、锯齿波、三角波、矩形波。

5.有四个指示灯用于分别对应四种波形,指示当前系统发出的是哪种信号波形。

设计原理图

        硬件电路使用Altium Designer 15设计完成。主要包括STM32主控电路,DAC0832电路,稳压电路,按键电路,串口电路,显示电路。,如图:

       整体硬件采用DDS和单片机技术相结合,以STM32F103C8T6芯片及DAC0832为核心设计了一种幅度、相位、频率都可调节的信号发生器,它不仅能克服传统的正弦波信号发生器的缺点,而且由模拟乘法器产生调幅电路、采用数字键控的方法实现二进制PSK、ASK信号,且信号频带较宽、以及频率稳定度高,输出的信号波形良好。 

        PCB图如下:

 

软件设计

        本系统的软件设计采用C语言,对STM32单片机功能代码进行编程实现各项功能。采用KEIL软件编写,可以实现波形的切换、幅度频率的调节以及方波的占空比调节、液晶显示等功能。

    主程序主要起到一个导向和决策功能,运行的是整体的功能,通过调用各个子模块的驱动函数以实现整体功能。其余各种功能的实现主要通过具体的子程序来完成。程序流程图如下:


主程序源码 

int main(void)
{       
  int a=1,b=0,c=0,d=0,e=0,zkb_s=5,zkb_g=0; 
  u16 n;             
  Stm32_Clock_Init(10);   //系统时钟设置
  delay_init(128);    //延时初始化
  dac_creat_buf();
  LCD_init(); 
  KEY_Init();   
  Dac1_Init();       //DAC通道1初始化   
  Timerx_Init(255,0);     //256分频 500K的中断频率
  LCD_write_string(1,1," zhankongbi=00% ");  
  LCD_write_string(2,1," Sin f= 00000HZ "); 
  M=8589.93452*data_f;    
  while(1)//1:右,2:上,3:左,4:下, 5:中      
  {   
    KEY_Scan();        //按键扫描函数  
    if(Data_key==3)        //左键,设置频率
    {
      KEY5_num=0;
      KEY3_num++;
      if(KEY3_num>=6)
        KEY3_num=0;
    }
    else if(Data_key==1)  //右键,切换波形
    {
      KEY5_num=0;
      KEY1_num++;
      if(KEY1_num>=4)
        KEY1_num=0;
      //设置波形及显示波形种类
      if(KEY1_num==0)
      {
        wave=0;LCD_write_string(2,1," Sin ");
      }
      else if(KEY1_num==1)
      {
        wave=1;LCD_write_string(2,1," Tri " );
      }  
      else if(KEY1_num==2)
      {
        wave=2;LCD_write_string(2,1," Saw ");
      }
      else if(KEY1_num==3)
      {
        wave=3;LCD_write_string(2,1," squ ");
      }
    }
    else if(Data_key==5) //中键,设置占空比
    {
      KEY3_num=0;
      KEY5_num++;
      if(KEY5_num>=3)
        KEY5_num=0;

    }
    ...
  }
}

链接:https://pan.baidu.com/s/1CG9bi8EC3jOuhDFzGd1mIg?pwd=3wq1 
提取码:3wq1

物联沃分享整理
物联沃-IOTWORD物联网 » 基于STM32单片机的信号发生器设计研究

发表评论