基于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
基于stm32单片机的信号发生器设计相关推荐
- 基于stm32单片机的电子称设计
基于stm32单片机的电子称设计 **==完整论文和程序关注我获取==** 摘要 关键字 1 绪论 2 系统硬件方案设计 2.1系统总体设计方案比较与论证 2.2系统元器件选型及器件参数介绍 2.2. ...
- 85、基于STM32单片机烟雾温度报警器设计火灾防火检测可燃气体监测系统设计
毕设帮助.开题指导.技术解答(有偿)见文末. 目录 摘要 一.硬件方案 二.设计功能 三.实物图 四.原理图 五.程序源码 六.资料包括 摘要 本设计采用使用STM32F103作为控制器件,MQ-2型 ...
- 基于STM32的函数信号发生器设计(上:硬件设计)
转载请注明出处:http://blog.csdn.net/sctu_vroy/article/details/45888277 大三初学STM32时做的点东西,现在拿出来和大家分享一下~ 这是一款基于 ...
- 基于51单片机的信号发生器设计
目 录 引言... 1 1 课题背景意义及研究内容... 1 1.1 课题背景及研究意义... 1 1.2 课题研究内容... 2 2 设计方案选择... 2 2.1 系统控制芯片选择... ...
- 基于STM32的函数信号发生器设计(下:软件设计)
转载请注明出处:http://blog.csdn.net/sctu_vroy/article/details/46279817 下篇将介绍整个STM32函数信号发生器系统软件设计部分,将着重介绍设计逻 ...
- 72、基于STM32单片机音乐喷泉设计播放器频谱彩灯系统设计
毕设帮助.开题指导.技术解答(有偿)见文末. 目录 摘要 一.硬件方案 二.设计功能 三.实物图 四.原理图 五.程序源码 六.资料包括 摘要 随着人们生活水平的提高和建立绿色城市的向往,音乐喷泉以其 ...
- 基于stm32单片机温湿度报警器设计智能实训开发DIY电子
演示视频:https://v.youku.com/v_show/id_XNDU3OTU0MTA5Mg==.html 将链接复制至IE浏览器打开!!! 功能说明: 打开仿真文件后点开始运行,会一直显示测 ...
- 基于STM32单片机智能RFID刷卡汽车位锁设计(论文
基于STM32单片机智能RFID刷卡汽车位锁设计(论文) 摘要 在车位日益紧张的今天,如何避免私家车位被他人抢占,是令人头痛的事.日前面市的一种新型车位锁,不仅有效解决了这一问题,还可对车辆起到防盗作 ...
- 基于STM32单片机智能RFID刷卡汽车位锁设计(开题报告)
基于STM32单片机智能RFID刷卡汽车位锁设计(开题报告) 文章目录 基于STM32单片机智能RFID刷卡汽车位锁设计(开题报告) 一.课题的背景及意义 二.国内外研究状况: 三.系统功能分析及体系 ...
最新文章
- go语言服务器连接mysql_go语言原生连接数据库
- 如何强制除法为浮点数? 除数一直舍入到0?
- python怎么按键开始与停止_使用Python启动和停止子流程
- boost::filesystem目录相关的测试程序
- Django模型定义参考
- form表单 1128
- 一步一步写算法(之单向链表)
- 网易面经(内含腾讯ieg/IOS一面面经)
- linux学习笔记3——计算机概述:主板、电源、数据表示方式、编码集
- KEIL4文件无法正常使用
- E路航LH950N更换电池全程图解
- 程序员的职业危机是什么?一个12年互联网人的4点思考
- 最新emoji表情代码大全_2020最新霜降早上好祝福语动态表情图片大全带字 温馨的霜降问候语免打字图片...
- 【kali-漏洞利用】(3.3)Metasploit后渗透(下):后渗透模块使用
- 制作商品详情页面案例
- 计算机表格 求差,教大家Excel2013中表格求差函数公式怎么使用
- 基于JAVA汽车租赁系统 (Springboot框架) 开题报告
- Matlab数学建模(七):连续模型
- VVC/VTM:代码学习——CIIP详细过程
- leetcode【51-52】N-Queens N-Queens II