硬件方案

硬件主要由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

基于stm32单片机的信号发生器设计相关推荐

  1. 基于stm32单片机的电子称设计

    基于stm32单片机的电子称设计 **==完整论文和程序关注我获取==** 摘要 关键字 1 绪论 2 系统硬件方案设计 2.1系统总体设计方案比较与论证 2.2系统元器件选型及器件参数介绍 2.2. ...

  2. 85、基于STM32单片机烟雾温度报警器设计火灾防火检测可燃气体监测系统设计

    毕设帮助.开题指导.技术解答(有偿)见文末. 目录 摘要 一.硬件方案 二.设计功能 三.实物图 四.原理图 五.程序源码 六.资料包括 摘要 本设计采用使用STM32F103作为控制器件,MQ-2型 ...

  3. 基于STM32的函数信号发生器设计(上:硬件设计)

    转载请注明出处:http://blog.csdn.net/sctu_vroy/article/details/45888277 大三初学STM32时做的点东西,现在拿出来和大家分享一下~ 这是一款基于 ...

  4. 基于51单片机的信号发生器设计

    目    录 引言... 1 1  课题背景意义及研究内容... 1 1.1 课题背景及研究意义... 1 1.2 课题研究内容... 2 2  设计方案选择... 2 2.1 系统控制芯片选择... ...

  5. 基于STM32的函数信号发生器设计(下:软件设计)

    转载请注明出处:http://blog.csdn.net/sctu_vroy/article/details/46279817 下篇将介绍整个STM32函数信号发生器系统软件设计部分,将着重介绍设计逻 ...

  6. 72、基于STM32单片机音乐喷泉设计播放器频谱彩灯系统设计

    毕设帮助.开题指导.技术解答(有偿)见文末. 目录 摘要 一.硬件方案 二.设计功能 三.实物图 四.原理图 五.程序源码 六.资料包括 摘要 随着人们生活水平的提高和建立绿色城市的向往,音乐喷泉以其 ...

  7. 基于stm32单片机温湿度报警器设计智能实训开发DIY电子

    演示视频:https://v.youku.com/v_show/id_XNDU3OTU0MTA5Mg==.html 将链接复制至IE浏览器打开!!! 功能说明: 打开仿真文件后点开始运行,会一直显示测 ...

  8. 基于STM32单片机智能RFID刷卡汽车位锁设计(论文

    基于STM32单片机智能RFID刷卡汽车位锁设计(论文) 摘要 在车位日益紧张的今天,如何避免私家车位被他人抢占,是令人头痛的事.日前面市的一种新型车位锁,不仅有效解决了这一问题,还可对车辆起到防盗作 ...

  9. 基于STM32单片机智能RFID刷卡汽车位锁设计(开题报告)

    基于STM32单片机智能RFID刷卡汽车位锁设计(开题报告) 文章目录 基于STM32单片机智能RFID刷卡汽车位锁设计(开题报告) 一.课题的背景及意义 二.国内外研究状况: 三.系统功能分析及体系 ...

最新文章

  1. go语言服务器连接mysql_go语言原生连接数据库
  2. 如何强制除法为浮点数? 除数一直舍入到0?
  3. python怎么按键开始与停止_使用Python启动和停止子流程
  4. boost::filesystem目录相关的测试程序
  5. Django模型定义参考
  6. form表单 1128
  7. 一步一步写算法(之单向链表)
  8. 网易面经(内含腾讯ieg/IOS一面面经)
  9. linux学习笔记3——计算机概述:主板、电源、数据表示方式、编码集
  10. KEIL4文件无法正常使用
  11. E路航LH950N更换电池全程图解
  12. 程序员的职业危机是什么?一个12年互联网人的4点思考
  13. 最新emoji表情代码大全_2020最新霜降早上好祝福语动态表情图片大全带字 温馨的霜降问候语免打字图片...
  14. 【kali-漏洞利用】(3.3)Metasploit后渗透(下):后渗透模块使用
  15. 制作商品详情页面案例
  16. 计算机表格 求差,教大家Excel2013中表格求差函数公式怎么使用
  17. 基于JAVA汽车租赁系统 (Springboot框架) 开题报告
  18. Matlab数学建模(七):连续模型
  19. VVC/VTM:代码学习——CIIP详细过程
  20. leetcode【51-52】N-Queens N-Queens II

热门文章

  1. 语雀转换发布CSDN和语雀导出图片图片无法识别处理(针对typora)
  2. CAS统一身份认证(四):集成MySQL用户验证
  3. 语音转文字转换器市场现状研究分析-
  4. 找论文的几个实用网站
  5. Vultr 教程目录
  6. 联想拯救者Y7000P更新BIOS
  7. VUE3祖孙组件传值调用方法
  8. 虚拟机WindowServer2003共享文件夹
  9. Linux-tab键应用
  10. subscription-manager repos --enable <repo>