STM32数字示波器+详细注释+上位机程序+硬件

2024-05-04 02:20

本文主要是介绍STM32数字示波器+详细注释+上位机程序+硬件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

1、设计指标:

2、功能:

3、上位机的程序

​4、测试的照片

5、PCB 

6、模拟电路板

7、程序

资料下载地址:STM32数字示波器+详细注释+上位机程序+硬件

1、设计指标:

主控:                                        STM32F103ZET6
液晶屏:                                      4.3寸TFT480×272  65K彩色LCD显示屏  FSMC
AD:                                         12位1MHz采样率
最高实时取样率:                   1MSa/s  12Bits
取样缓冲器深度:                   5K  
垂直灵敏度:                            5V,1V,500mV,200mV,100mV,50mV,20mV,10mV;  
水平时基范围:2S,1S,500mS,200mS,100mS,50mS,20mS,10mS,5mS,2mS,1mS,500uS,200uS,100uS,50uS,20uS,10uS,5uS,2uS,1uS
输入阻抗:                                 ≥1MΩ
最高输入电压:                       30Vpp
耦合方式:                                 AC/DC
触发功能:                                 实现自动、常规、单次触发方式 ,上升或下降边沿触发  
参数计算:                                 频率、周期、占空比、交流峰-峰值、平均值、光标追踪显示
RUN/STOP

2、功能:

        1、波形发生器:使用STM32一路DA实现正弦,三角波,方波,白噪声输出。 任意一种波形幅值在0-3.3V任意可调、频率在一定范围任意可调、方波占空比可调。调节选项可以通过触摸屏完成设置。
        2、SD卡存储: SD卡波形存储输出,能够对当前屏幕截屏,以JPG格式存储在SD卡上。能够存储1S内的波形数据,可以随时调用查看。
        3、数据传输:  用C#编写上位机,通过串口完成对下位机的控制。
        (1)实现STOP/RUN功能
        (2)输出波形电压、时间参数
        (3)控制截屏
        (4)控制波形发生器
        (5)控制完成FFT
        (6)波形的存储和显示
        4、图形接口:  UCGUI
        2、水平扫速:  250 ns*、500ns、1μs、5 μs、10μs、50μs、500 μs、5ms 、50ms
        3、垂直电压灵敏度:10mV/div, 20mV/div, 50mV/div, 0.1V/div, 0,2V/div, 0.5V/div, 1V/div,
2V/div, 5V/div
        4、被测信号的各种参数屏幕显示,包括频率、电压峰峰值等。

3、上位机的程序

 4、测试的照片

 

5、PCB 

 

6、模拟电路板

 

 

7、程序

/*------------------------------------------------------------------------------------STM32示波器硬件平台:主控器: STM32F103ZET6 64K RAM 512K ROM屏幕器: SSD1963 分辨率: 480x272 16位色触摸屏: TSC2046模拟电路: OP  - TL084OP  - u741SW  - CD4051CMP - LM311PWR - LM7805- LM7905- MC34063- AMS1117-3.3DRI - ULN2003继电器:信号继电器电源:   DC +12V软件平台:开发环境: RealView MDK-ARM uVision4.10C编译器 : ARMCCASM编译器:ARMASM连接器:   ARMLINK实时内核: uC/OS-II 2.90实时操作系统GUI内核 : uC/GUI   3.90图形用户接口底层驱动: 各个外设驱动程序ROM Size = Code + RO-data +RW-dataRAM Size = RW-data + ZI-dataProgram Size: Code=56024 RO-data=8272 RW-data=256 ZI-data=29912          时间: 2013年11月9日       BoX编写于大二上学期版本: V1.0 - 2013/11/9V1.1 - 2014/2/8V3.0 - 2014/2/19                                
-------------------------------------------------------------------------------------*/   
#include "stm32f10x.h"
#include "ucos_ii.h"
#include "app.h"
#include "GUI.h"#include "usart1.h"
#include "pincfg.h"
#include "delay.h"
#include "tft_api.h"
#include "dac.h"
#include "adc.h"
#include "iwdg.h"
#include "timer.h"
#include "EXTI.H"
#include "oscilloscope.h"
#include "indkey.h"
#include "tsc2046.h"#include "task_rtc.h"
#include "task_gui.h"
#include "task_sd.h"/*-----------------------------------------声明起始任务栈
------------------------------------------*/
OS_STK  Task_Start_Stk[TASK_START_STK_SIZE]; /*-----------------------------------------因为涉及到对共享资源的访问,创建互斥信号量
------------------------------------------*/
OS_EVENT *LCD_Buffer_MUTEX;
OS_EVENT *USART_Buffer_MUTEX;
OS_EVENT *SDtoRAM_Buffer_MUTEX;
/*-----------------------------------------主 函 数
------------------------------------------*/    
int main(void)    
{    INT8U err;SystemInit();                 //初始化RCC时钟OSInit(); LCD_Buffer_MUTEX     = OSMutexCreate(4,&err);        //创建3个共享资源互斥信号量USART_Buffer_MUTEX   = OSMutexCreate(4,&err);SDtoRAM_Buffer_MUTEX = OSMutexCreate(4,&err);OSTaskCreate(Task_Start,(void *)0,&Task_Start_Stk[TASK_START_STK_SIZE-1],TASK_START_PRIO); //起始任务   OSStart();       
}
/*-------------------------------------------------------------------------------函数功能:初始化各种外设说    明:因为跑操作系统,所以外设的初始化应该放在操作系统的初始任务中完成,不能在while(1)循环外部完成外设的初始化工作,否则操作系统可能无法启动.本函数在app.c中被调用
-------------------------------------------------------------------------------*/
void BSP_Init(void)
{OS_CPU_SR  cpu_sr = 0u;OS_ENTER_CRITICAL();DelayInit();                 //初始化延时PinCfg();                         //外部器件控制配置FSMC_LCD_Init();         //FSMC总线配置                  GUI_Init();                         //初始化UCGUI界面TSC2046_Config();         //初始化触摸控制器USART1_Config();         //初始化串口DAC_Config();                 //初始化DAC1ADC1_Init();                 //初始化ADC1EXTI_Config();                 //初始化外部中断Key_EXTI_Config();         //初始化按键中断TIM5_Config(1999,71);  //TIM5以1MHz频率计数,每2ms溢出中断
//        TIM4_Config(59999,71); //TIM4以1MHz频率计数,每60ms溢出中断RTC_Init();                            //初始化RTC
//        SD_Init();JDQ_ACDC = 1;                  //交流耦合ManualGainScan(3);    //调试用IWDG_Init(4,625);     //喂狗时间为1000msOS_EXIT_CRITICAL();         
}

 

这篇关于STM32数字示波器+详细注释+上位机程序+硬件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/958152

相关文章

从去中心化到智能化:Web3如何与AI共同塑造数字生态

在数字时代的演进中,Web3和人工智能(AI)正成为塑造未来互联网的两大核心力量。Web3的去中心化理念与AI的智能化技术,正相互交织,共同推动数字生态的变革。本文将探讨Web3与AI的融合如何改变数字世界,并展望这一新兴组合如何重塑我们的在线体验。 Web3的去中心化愿景 Web3代表了互联网的第三代发展,它基于去中心化的区块链技术,旨在创建一个开放、透明且用户主导的数字生态。不同于传统

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听

usaco 1.2 Name That Number(数字字母转化)

巧妙的利用code[b[0]-'A'] 将字符ABC...Z转换为数字 需要注意的是重新开一个数组 c [ ] 存储字符串 应人为的在末尾附上 ‘ \ 0 ’ 详见代码: /*ID: who jayLANG: C++TASK: namenum*/#include<stdio.h>#include<string.h>int main(){FILE *fin = fopen (

【STM32】SPI通信-软件与硬件读写SPI

SPI通信-软件与硬件读写SPI 软件SPI一、SPI通信协议1、SPI通信2、硬件电路3、移位示意图4、SPI时序基本单元(1)开始通信和结束通信(2)模式0---用的最多(3)模式1(4)模式2(5)模式3 5、SPI时序(1)写使能(2)指定地址写(3)指定地址读 二、W25Q64模块介绍1、W25Q64简介2、硬件电路3、W25Q64框图4、Flash操作注意事项软件SPI读写W2

EMLOG程序单页友链和标签增加美化

单页友联效果图: 标签页面效果图: 源码介绍 EMLOG单页友情链接和TAG标签,友链单页文件代码main{width: 58%;是设置宽度 自己把设置成与您的网站宽度一样,如果自适应就填写100%,TAG文件不用修改 安装方法:把Links.php和tag.php上传到网站根目录即可,访问 域名/Links.php、域名/tag.php 所有模板适用,代码就不粘贴出来,已经打

跨系统环境下LabVIEW程序稳定运行

在LabVIEW开发中,不同电脑的配置和操作系统(如Win11与Win7)可能对程序的稳定运行产生影响。为了确保程序在不同平台上都能正常且稳定运行,需要从兼容性、驱动、以及性能优化等多个方面入手。本文将详细介绍如何在不同系统环境下,使LabVIEW开发的程序保持稳定运行的有效策略。 LabVIEW版本兼容性 LabVIEW各版本对不同操作系统的支持存在差异。因此,在开发程序时,尽量使用

vscode中文乱码问题,注释,终端,调试乱码一劳永逸版

忘记咋回事突然出现了乱码问题,很多方法都试了,注释乱码解决了,终端又乱码,调试窗口也乱码,最后经过本人不懈努力,终于全部解决了,现在分享给大家我的方法。 乱码的原因是各个地方用的编码格式不统一,所以把他们设成统一的utf8. 1.电脑的编码格式 开始-设置-时间和语言-语言和区域 管理语言设置-更改系统区域设置-勾选Bata版:使用utf8-确定-然后按指示重启 2.vscode

CSP 2023 提高级第一轮 CSP-S 2023初试题 完善程序第二题解析 未完

一、题目阅读 (最大值之和)给定整数序列 a0,⋯,an−1,求该序列所有非空连续子序列的最大值之和。上述参数满足 1≤n≤105 和 1≤ai≤108。 一个序列的非空连续子序列可以用两个下标 ll 和 rr(其中0≤l≤r<n0≤l≤r<n)表示,对应的序列为 al,al+1,⋯,ar​。两个非空连续子序列不同,当且仅当下标不同。 例如,当原序列为 [1,2,1,2] 时,要计算子序列 [

沁恒CH32在MounRiver Studio上环境配置以及使用详细教程

目录 1.  RISC-V简介 2.  CPU架构现状 3.  MounRiver Studio软件下载 4.  MounRiver Studio软件安装 5.  MounRiver Studio软件介绍 6.  创建工程 7.  编译代码 1.  RISC-V简介         RISC就是精简指令集计算机(Reduced Instruction SetCom

arduino ide安装详细步骤

​ 大家好,我是程序员小羊! 前言: Arduino IDE 是一个专为编程 Arduino 微控制器设计的集成开发环境,使用起来非常方便。下面将介绍如何在不同平台上安装 Arduino IDE 的详细步骤,包括 Windows、Mac 和 Linux 系统。 一、在 Windows 上安装 Arduino IDE 1. 下载 Arduino IDE 打开 Arduino 官网