信息学院15年电子竞赛训练简易示波器结题报告.docx
- 文档编号:14812111
- 上传时间:2023-06-27
- 格式:DOCX
- 页数:16
- 大小:1.84MB
信息学院15年电子竞赛训练简易示波器结题报告.docx
《信息学院15年电子竞赛训练简易示波器结题报告.docx》由会员分享,可在线阅读,更多相关《信息学院15年电子竞赛训练简易示波器结题报告.docx(16页珍藏版)》请在冰点文库上搜索。
信息学院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;
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 信息 学院 15 电子 竞赛 训练 简易 示波器 报告