赞
踩
硬件主要由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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。