标题: 基于STM32的四种波形发生器设计和Proteus仿真 [打印本页]
作者: YF12 时间: 2020-7-17 01:01
标题: 基于STM32的四种波形发生器设计和Proteus仿真
(1) 可以实现四种波形:正弦波、方波、三角波、锯齿波;
(2) 通过按键进行选择,频率可以调整;
(3) LCD液晶显示;
(4)设计出来之后用Proteus软件仿真出效果;
主要硬件设备:STM32F103单片机、DAC0832数模转换芯片、矩阵键盘、LCD12864液晶屏幕。
效果图
正弦波
方波
三角波
锯齿波
单片机源程序如下:
- #include "stm32f10x.h"
- #include "sys.h"
- #include "delay.h"
- #include "12864.h"
- #include "key4_4.h"
- #include "timer.h"
- //LYF
- #define KEY0 GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_10) //读取按键0
- void Delay_Ms(u16 time);
- /*************** 配置Switch用到的I/O口 *******************/
- void Init_GPIO_Switch(void)
- {
- GPIO_InitTypeDef GPIO_InitStructure;
-
- GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);//关闭jtag,使能SWD,可以用SWD模式调试
-
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); // 使能PC端口时钟
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; //PC0
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //设置成输入
- GPIO_Init(GPIOB, &GPIO_InitStructure); //初始化PC0
- }
- /* Private functions ---------------------------------------------------------*/
- /*******************************************************************************
- *功能名称:main
- *描述:主程序。
- *输入:无
- *输出:无
- *返回:无
- *******************************************************************************/
- int main(void)
- {
- u8 i=0;
- RCC_ClocksTypeDef RCC_Clocks; //初始化程序
-
- RCC_Configuration(RCC_PLLMul_4); //8M*4 == 32M
- RCC_GetClocksFreq(&RCC_Clocks); //获取片上时钟
-
- Init_12864(); //初始化12864液晶
-
- Key_Init();
- Init_GPIO_Switch();
- Init_GPIO_DAC0832();
-
- Data0=25;
- TIM3_Int_Init(50+Data0,320); //频率:32000000/ 320 ==100 000 /100 == 1000 /50==20
-
- LCD_P6x8Str(3,16," Sine Wave ");
- LCD_P6x8Str(7,6*2,"Frequency: 15 Hz");
-
- while (1)
- {
- if(KEY0)
- {
- if(i!=2)
- {
- __set_PRIMASK(1);
- GPIO_ResetBits(GPIOB, ((uint16_t)0xC000));
- }
- Key_Test();
-
- i=2;
- }
- else{
-
- if(i!=5)
- {
- TIM3_Int_Init(50+Data0,320);
- __set_PRIMASK(0); //使能TIMx外设
- GPIO_ResetBits(GPIOB, ((uint16_t)0xC000));
- }
-
- i=5;
- }
- }
- }
- //LYF
复制代码
全部资料51hei下载地址:
作者: 51hei团团 时间: 2020-7-21 01:38
好资料,51黑有你更精彩!!!
作者: 烤鱼c 时间: 2020-7-26 19:46
请问一下为什么仿真里报一万个警告,显示总线错误
作者: YF12 时间: 2020-8-9 21:36
重新装载一下hex文件,还不行就根据提升配置一下供电网
作者: 拔胡萝贝 时间: 2021-1-30 19:51
你好请问一下,仿真过程中如何更换显示的波形啊,按键按了都没有反应呢
作者: 袁木子爱学习 时间: 2021-2-1 16:48
我也想知道
怎么切换波形
作者: 袁木子爱学习 时间: 2021-2-1 16:49
请问这个如何切换波形 按了按键没有反应
作者: BlueFox 时间: 2021-3-7 14:09
下载下来学习学习!!谢谢分享!!
作者: neomuzoahea 时间: 2021-4-20 15:24
感觉方波有一点畸形 这怎么解决
作者: YF12 时间: 2021-5-29 11:10
先把开关打开关闭波形输出,(不然电脑带不动)在按A,B,C,D切换
作者: YF12 时间: 2021-5-29 11:11
把方波输出电压调低一点点就可以
作者: RDH 时间: 2021-6-13 11:19
矩阵按键中0-9有什么用呢,急急急求解!
作者: RDH 时间: 2021-6-13 12:18
那个按键0-9怎么使用,非常着急,求解
作者: RDH 时间: 2021-6-15 15:18
neomuzoahea 发表于 2021-4-20 15:24
感觉方波有一点畸形 这怎么解决
请问矩阵按键中0-9有什么用呢
作者: RDH 时间: 2021-6-15 15:19
YF12 发表于 2020-8-9 21:36
重新装载一下hex文件,还不行就根据提升配置一下供电网
请问矩阵按键中0-9有什么用呢,如何使用,急急急求解
作者: YF12 时间: 2021-6-27 21:34
测试用的
作者: 大麦豆 时间: 2021-6-30 14:52
感觉有点复杂
作者: 2464079027 时间: 2021-8-9 13:28
怎么调高输出频率呀,有没有大神能讲讲

作者: YF12 时间: 2021-8-13 11:19
关闭开关(关闭波形),#键+,*键-,要改频率上限到key4_4.c和Timer.c文件上该
作者: YF12 时间: 2021-8-13 14:02
main函数73行:TIM3_Int_Init(50+Data0,320/2);
sine_wave函数:double x=(double)location/25*PI;//把0-100放缩到0-2派
TIM3_IRQHandler中断函数:case W_SINE:sine_wave((u8)(time*freq/50)%50);break;//计算出波的位置
3个地方改一下就可以,要波形好看,频率高就把TIM3中断关掉,里面的程序放到mian里面的死循环里面就可以,注意电脑性能可以跟得上
作者: zkgl 时间: 2022-5-9 10:24
好资料,51黑有你更精彩!!!
作者: zkgl 时间: 2022-5-9 12:33
矩阵按键中0-9有什么用呢,急急急求解!
作者: Thinking-227 时间: 2024-12-8 09:45
报错说:VCC and GND nets are connected check net GND! 这要怎么解决?
作者: Thinking-227 时间: 2024-12-8 09:46
VCC and GND nets are connected check net GND!
出现这个报错要怎么解决?
作者: 456745@ 时间: 2025-5-8 19:47
基于STM32的四种波形发生器设计和Proteus仿真,代码是用keil4编译运行吗?
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |