信息学院15年电子竞赛训练简易示波器结题报告.docx

上传人:b****5 文档编号:14812111 上传时间:2023-06-27 格式:DOCX 页数:16 大小:1.84MB
下载 相关 举报
信息学院15年电子竞赛训练简易示波器结题报告.docx_第1页
第1页 / 共16页
信息学院15年电子竞赛训练简易示波器结题报告.docx_第2页
第2页 / 共16页
信息学院15年电子竞赛训练简易示波器结题报告.docx_第3页
第3页 / 共16页
信息学院15年电子竞赛训练简易示波器结题报告.docx_第4页
第4页 / 共16页
信息学院15年电子竞赛训练简易示波器结题报告.docx_第5页
第5页 / 共16页
信息学院15年电子竞赛训练简易示波器结题报告.docx_第6页
第6页 / 共16页
信息学院15年电子竞赛训练简易示波器结题报告.docx_第7页
第7页 / 共16页
信息学院15年电子竞赛训练简易示波器结题报告.docx_第8页
第8页 / 共16页
信息学院15年电子竞赛训练简易示波器结题报告.docx_第9页
第9页 / 共16页
信息学院15年电子竞赛训练简易示波器结题报告.docx_第10页
第10页 / 共16页
信息学院15年电子竞赛训练简易示波器结题报告.docx_第11页
第11页 / 共16页
信息学院15年电子竞赛训练简易示波器结题报告.docx_第12页
第12页 / 共16页
信息学院15年电子竞赛训练简易示波器结题报告.docx_第13页
第13页 / 共16页
信息学院15年电子竞赛训练简易示波器结题报告.docx_第14页
第14页 / 共16页
信息学院15年电子竞赛训练简易示波器结题报告.docx_第15页
第15页 / 共16页
信息学院15年电子竞赛训练简易示波器结题报告.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

信息学院15年电子竞赛训练简易示波器结题报告.docx

《信息学院15年电子竞赛训练简易示波器结题报告.docx》由会员分享,可在线阅读,更多相关《信息学院15年电子竞赛训练简易示波器结题报告.docx(16页珍藏版)》请在冰点文库上搜索。

信息学院15年电子竞赛训练简易示波器结题报告.docx

信息学院15年电子竞赛训练简易示波器结题报告

摘要:

本题设计一个简易数字示波器,以STM32单片机为核心,辅以必要的外围电路(包括信号调理、A/D转换、D/A转换),实现了题目要求的功能,并且添加了自动测量(AUTO)的功能。

信号采集时,将外部输入信号经信号调理模块调节到A/D电路输入范围,经A/D转换后送入DMA(DirectMemoryAccess),通过液晶屏显示。

经测试,系统整体指标良好。

关键词:

示波器、前置放大、ADC、DAC、DMA

 

目录

摘要3

一、系统总体设计3

1、系统总体方案3

2、系统总体框图3

二、硬件设计3

1、电路方案

1)信号调理前置放大器3

2)A/D模块:

采用STM32单片机内置双A/D,采样频率高达1.6MHZ。

D/A模块:

采用STM32单片机内置双D/A。

3)键盘模块:

所需按键很少,所以采用自行焊接的独立按键。

4)液晶显示模块

2、电路图调理电路3

三、软件设计4

程序流程图4

四、测试结果6

附录:

主程序9

一、系统总体设计

1、系统总体方案:

设计信号调理电路,将需要测量的波形的参数调整到STM32单片机的ADC可以测量的范围。

信号经过调理电路后调节到A/D电路输入范围,经A/D转换后送入DMA(直接内存访问),通过液晶屏显示。

2、系统总体框图

图1(系统框图)

二、硬件设计

1、电路方案

1)信号调理前置放大器:

采用NE5532高性能低噪声运放。

为提高放大器带宽,我们选择采用四级运放级联的方式。

用跳线帽分别设置10dB、20dB、30dB、40dB的放大。

为适应片内单极性ADC的采样,在最后一级运放使用加法器对电压进行抬升。

40dB时,送入ADC的电压最大值在3.3V以下。

2)A/D模块:

采用STM32单片机内置双A/D,采样频率高达1.6MHZ。

D/A模块:

采用STM32单片机内置双D/A。

3)键盘模块:

所需按键很少,所以采用自行焊接的独立按键。

4)液晶显示模块:

采用TFT彩屏。

2、电路图

图2(前置放大原理图)

三、软件设计

程序框图:

四、测试结果

1、10mv、1mV输入指标测试:

10dB

20dB

30dB

40dB

3dB

1dB

3dB

1dB

3dB

1dB

3dB

1dB

10mV

带宽

?

?

2.25M

2.00M

1.88M

1.73M

400k

360k

增益带宽积

?

?

22.5M

20M

60.16M

55.36M

40M

36M

1mV

带宽

?

?

?

?

1.72M

1.63M

400k

350k

增益带宽积

?

?

?

?

55.04M

52.16M

40M

35M

表格1(注:

“?

”表示现有设备无法输出或无法测量)

2、输入电阻:

测量结果

51Ω

测量方法

如图,在信号源与放大器输入端之间串入一个已知的电阻R,分别测出图中

的电压值,根据公式

计算出

我们分别串入阻值为33Ω,10Ω的电阻,分别测量出输入电阻取平均值,得输入电阻的阻值

表格2

3、输出电阻:

测量结果

2.2Ω

测量方法

如下图所示,信号源给放大器加幅度和频率合适的交流信号输入。

在放大器的输出端接一个已知的负载电阻

和串联一个开关S,用电压表或示波器分别测出S打开和S闭合的输出电压值

=

-

 

 

图3

 

表格3

4、波形显示:

输入波形

显示波形

5、幅值测量:

增益

输入

10dB

20dB

30dB

40dB

10mV

输入测量/mv

9.7

10

10.4

实际测量/mv

9.56

9.38

9.7

1mV

输入测量/mv

实际测量/mv

表格4

6、回放波形(10mV输入):

10dB增益:

20dB增益:

30dB增益:

40dB增益:

示波器观测回放波形并测量回放波形幅值是输入波形1/2。

 

附录:

主程序

#include"GUI.h"

#include"stm32f10x.h"

#include"adc.h"

#include"stdio.h"

#include"usart.h"

#include"osc.h"

#include"BSP.h"

#include"MainTask.h"

#include"timer.h"

#include"dac.h"

#include"nvic.h"

#include"GraphDemo.h"

#include"gpio.h"

externuint16_tOSC_Buffer[Sample_Count*2];//采样数组

externuint32_tFreq;//频率

externuint8_tproportion;

externcharrun;

intmain(void)

{

__set_PRIMASK

(1);//关闭主中断

//初始化

NVIC_Configuration();

ADC_Config();

DAC_Config();

Capture_Init();

Button_Init();

proportion=30;

DMA_Cmd(DMA1_Channel1,ENABLE);//开启ADC—DMA传输

__set_PRIMASK(0);//开启总中断

RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);//用于触发ADC采样

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);//用于输入捕获测量频率

DataTransfer();

BSP_Init();

MainTask();//绘制框架

TIM_Cmd(TIM1,ENABLE);

while

(1)

{

if(run==1)

{

GUI_ClearRect(4,29,316,181);

DispFrame();

GUI_SetColor(GUI_YELLOW);

DataTransfer();

DisMeas();

DrawGraph();

GUI_Delay(100);

}

}

}

voidADC1_2_IRQHandler(void)

{

ADC_ClearITPendingBit(ADC1,ADC_IT_EOC);

DAC->DHR12R1=(ADC1->DR&0xFFFF)/2;

}

voidDMA1_Channel1_IRQHandler(void)//DMA传输完成中断

{

if(DMA_GetITStatus(DMA1_IT_TC1))

{

DMA_Cmd(DMA1_Channel1,DISABLE);//

StartADC();

}

}

voidTIM2_IRQHandler(void)

{

if(TIM_GetITStatus(TIM2,TIM_IT_CC2)==SET)

{

/*ClearTIM3Capturecompareinterruptpendingbit*/

TIM_ClearITPendingBit(TIM2,TIM_IT_CC2);

if(CaptureNumber==0)

{

/*GettheInputCapturevalue*/

IC2ReadValue1=TIM_GetCapture2(TIM2);

CaptureNumber=1;

}

elseif(CaptureNumber==1)

{

/*GettheInputCapturevalue*/

IC2ReadValue2=TIM_GetCapture2(TIM2);

/*Capturecomputation*/

if(IC2ReadValue2>IC2ReadValue1)

{

Capture=(IC2ReadValue2-IC2ReadValue1);

}

else

{

Capture=((0xFFFF-IC2ReadValue1)+IC2ReadValue2);

}

/*Frequencycomputation*/

Freq=(uint32_t)2000000/Capture;

CaptureNumber=0;

}

}

}

//auto

voidEXTI0_IRQHandler(void)

{

EXTI_ClearITPendingBit(EXTI_Line0);

if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)==RESET)

{

proportion=30;

TIM1->ARR=72000000/(Freq*26);

TIM_Cmd(TIM1,ENABLE);

}

}

voidEXTI3_IRQHandler(void)

{

EXTI_ClearITPendingBit(EXTI_Line3);

if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_3)==RESET)

{

proportion+=1;

}

}

voidEXTI9_5_IRQHandler(void)

{

EXTI_ClearITPendingBit(EXTI_Line5);

EXTI_ClearITPendingBit(EXTI_Line6);

EXTI_ClearITPendingBit(EXTI_Line7);

if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_5)==RESET)

{

proportion-=1;

}

if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_6)==RESET)

{

freq=72000000/TIM1->ARR;

if(freq+20000>=1700000)

SetSampRate(freq);

else

SetSampRate(freq+20000);

TIM_Cmd(TIM1,ENABLE);

}

if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_7)==RESET)

{

freq=72000000/TIM1->ARR;

if(freq-20000<=20000&&freq-20000>4000)

{

SetSampRate(freq-2000);

}

elseSetSampRate(freq-20000);

TIM_Cmd(TIM1,ENABLE);

}

}

voidEXTI15_10_IRQHandler(void)

{

EXTI_ClearITPendingBit(EXTI_Line13);

for(i=0;i<720000;i++);

if(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_13)==RESET)

{

if(run==1)

run=0;

elseif(run==0)

run=1;

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工作范文 > 制度规范

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2