找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2924|回复: 4
打印 上一主题 下一主题
收起左侧

STM32F407万用表集成装置设计 附源程序

  [复制链接]
跳转到指定楼层
楼主
ID:719987 发表于 2020-4-2 12:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
     准备材料:正点原子探索者开发板(只要带4.3寸屏幕的STM32F407ZGT6开发板就行),4.3寸屏幕。本套程序全部使用的正点原子STM32的库,相信广大嵌入式爱好者都选择正点原子的吧,适合入门参考学习。另外郑重提醒所有的测试都是使用STM32F407内部资源,测波形时电压不能高于5V,如果想扩大测试范围,外部必须衰减电压信号。频率测试部分是利用软件测试,精度不是很高,>20KHz时频率测试误差较大。本套设备适合个体开发户,市面上的示波器主要是太贵了买不起,而且多数情况只是想看看单片机发出的波形是否正常,对于嵌入式开发人员来说确实很少接触到高压。
     如果您有探索者(带4.3寸屏幕接口的STM32F407ZGT6开发板),下载程序进去后可以直接看到如下图的界面。

制作出来的实物图如下:

万用表:


信号发生器:


示波器:


开机界面:




以下是部分代码(使用正点原子的库)
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "beep.h"
#include "key.h"
#include "lcd.h"
#include "dac.h"
#include "adc.h"
#include "timer.h"
#include "waveform.h"
#include "oscilloscope.h"
#include "timer.h"
#include "stm32f4xx_it.h"
#include "exti.h"
#include "touch.h"
#include "digital_multimeter.h"
//#include "string.h"

u8 welcom_flag=1;//welcom_flag为1时 进行主屏幕触摸检测
u8 SG_flag=1;//SG_flag为1 函数发生器才可以进行循环判断
u8 OSC_flag=1;//OSC_flag为1 数字示波器才可以进行循环
u8 DM_flag=1;//DM_flag为1 数字万用表才可以进行循环


//得到触摸屏的输入
u8 wel_get_keynum(void)
{
        u8 key_touch=0;
        tp_dev.scan(0);                  
        if(tp_dev.sta&TP_PRES_DOWN)                        //触摸屏被按下
        {        
                if(tp_dev.x[0]<280&&tp_dev.x[0]>20&&tp_dev.y[0]<340&&tp_dev.y[0]>140)key_touch=1;         
                if(tp_dev.x[0]<570&&tp_dev.x[0]>310&&tp_dev.y[0]<320&&tp_dev.y[0]>160)key_touch=2;        
                if(tp_dev.x[0]<760&&tp_dev.x[0]>620&&tp_dev.y[0]<390&&tp_dev.y[0]>110)key_touch=3;        
        }
        return key_touch;
}
int main(void)
{
        u8 welcome_key;
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
        delay_init(168);//初始化延时函数
        uart_init(115200);//初始化串口波特率为115200
        LED_Init();//初始化LED
        BEEP_Init();//初始化蜂鸣器端口
        KEY_Init();//按键初始化
         LCD_Init();//初始化LCD FSMC接口
  Adc_Init();//初始化ADC
        DM_Adc_Init();//初始化数字万用表中的ADC
        DacGPIO_Configuration();//DAC初始化
        DM_Init();
        TIM9_CH1_Cap_Init(0XFFFF,84-1); //以1Mhz的频率计数
        //TIM5_PWM_Init(500-1,84-1);        //84M/84=1Mhz的计数频率,重装载值500,所以PWM频率为 1M/500=2Khz.   
        EXTIX_Init();//外部中断初始化
        tp_dev.init();//初始化触摸屏
        Welcome_Background();
  while(welcom_flag==1)
        {               
                welcome_key=wel_get_keynum();
                if(welcom_flag==1)
                {
                        switch(welcome_key)
                        {
                                case 1 :
                                {
                                        welcom_flag=0;
                                        OSC_flag=1;
                                        LCD_Clear(WHITE);
                                        Osc_Welcome();
                                        break;
                                }
                                case 2 :
                                {
                                        welcom_flag=0;
                                        SG_flag=1;
                                        LCD_Clear(WHITE);
                                        SG_Welcome();
                                        break;
                                }
                                case 3 :
                                {
                                        welcom_flag=0;
                                        DM_flag=1;
                                        LCD_Clear(WHITE);
                                        DM_Run();
                                        break;
                                }
                                default :break;
                        }
                }
                //可以用来控制开关机等
//                key=KEY_Scan(0);
//                if(key==KEY2_PRES)//KEY2按下
//                {

//                }  
                delay_ms(100);
                {
                        LED1 = !LED1;
                }
        }
}     以上为主程序部分







IMG20200401225041.jpg (4.69 MB, 下载次数: 81)

STM32F407ZGT6开发板

STM32F407ZGT6开发板

IMG20200401225128.jpg (3.67 MB, 下载次数: 77)

IMG20200401225128.jpg

IMG_20200402_115258.jpg (2.36 MB, 下载次数: 79)

示波器

示波器

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏7 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:719987 发表于 2020-4-2 12:09 | 只看该作者
这个是源程序,测试部分

基于STM32F407ZGT6的示波器 信号发生器 数字万用表集成装置设计.7z

1.44 MB, 下载次数: 83, 下载积分: 黑币 -5

回复

使用道具 举报

板凳
ID:91165 发表于 2020-4-3 10:17 | 只看该作者
先下载了谢谢楼主
回复

使用道具 举报

地板
ID:23606 发表于 2020-4-3 11:08 | 只看该作者
感谢分享!!
回复

使用道具 举报

5#
ID:997431 发表于 2021-12-29 09:21 | 只看该作者
请问楼主怎么测电容电阻哇
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表