找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 18050|回复: 27
收起左侧

STM32数字示波器制作资料 含源码 电路原理图等

  [复制链接]
ID:295960 发表于 2018-3-23 16:08 | 显示全部楼层 |阅读模式
外观实物图:
0.jpg
0.png 0.png

电路板

电路板

显示屏

显示屏


电路原理图:

电路图

电路图


前言:
       最近一直在玩STM32和LCD屏,从字符到TFT,从1.8到3.5寸,挨个都摸了个摸,公司产品出来了,可一直想用这些东东来作点什么。示波器上班用公司的,虽说也是便携的,但也不好带回家去用呵,看看市场上动辙千元以上,唉,还是自己动手来DIY方便自己,也造福网友。
性能目标:
     电源使用二节2500mA锂电,正常工作5小时以上。
数字示波器参数:
·        主控:STM32F103ZET6
·        液晶屏: 3.2"TFT320×24065K彩色LCD显示屏 STM32 FSMC总线驱动
·        AD: ADS831 IDT7205
·        最高实时取样率60Msps 8Bits,
·        取样缓冲器深度:5K
·        垂直灵敏度:5V,1V,500mV,200mV,100mV,50mV,20mV,10mV;
·        基准电压使用STM32 DA输出,实现按键调节波形基准。并有位置指示
·        水平时基范围:2S,1S,500mS,200mS,100mS,50mS,20mS,10mS,5mS,2mS,1mS,500uS,200uS,100uS,50uS,20uS,10uS,5uS,2uS,1uS,500nS,
·        水平位置可调并有指示
·        输入阻抗:≥1MΩ
·        最高输入电压:50Vpp
·        耦合方式:AC/DC
·        实现自动、常规、单次触发方式 ,上升或下降边沿触发
·        实现计算测量输入信号的频率、周期、占空比、交流峰-峰值、平均值
·        触发电平高低位置可调,并电压指示
·        触发时基位置可调,并带指示
·        实现RUN/STOP功能
·        使用16个按键,真正作到单键操作以免去组合按键麻烦。

声明,此不是本人原创
单片机源程序如下:
  1. /***********************************************
  2. ****   STM32示波器测试平台    ***
  3. ****  EDIT by EdmondChao  ***
  4. 芯片型号 : STM32F103ZET6
  5. 采用: 8.0000Mhz
  6. ***********************************************/
  7. #include "main.h"
  8.                                                 


  9. static volatile ErrorStatus HSEStartUpStatus = SUCCESS;
  10. static vu32 TimingDelay = 0;
  11. static vu32 SELStatus = 0;

  12. volatile u8 Timingms=0,Timing200ms=0;                     

  13. /*******************************************************************************
  14. * Function Name  : main
  15. * Description    : Main program.
  16. * Input          : None
  17. * Output         : None
  18. * Return         : None
  19. *******************************************************************************/
  20. int main(void)
  21. {
  22.    //  u8 a=0;

  23. #ifdef DEBUG
  24.   debug();
  25. #endif



  26.          
  27.   SysTick_Config();


  28.   
  29.    //Delay(100);
  30.   /* Intialize the STM32 LCD Demo */
  31.   STM32_LCD_Demo();

  32.   BB_LED_Init();
  33.   Key_Init();

  34.   TIM_pwm_init();

  35.   LCD_Clear(0X8430);
  36.    Lcd_WriteString(0,0,0,Red,"ver 1.0");

  37.   Delay(50);
  38.   LCD_Clear(0x4188);


  39.         
  40.     LCD_Clear(0x4188);

  41.                 BB(1);        
  42.         
  43.         




  44.           count_clock_LineConfig();

  45.           FIFO_init();
  46.           Clock_CtrlLineConfig();
  47.           Relay_CtrlLineConfig();
  48.           DAC_config();


  49.          
  50.     while(1)
  51.     {
  52.          
  53.                  menu_osc();            
  54.          
  55.                
  56.           }
  57. }

  58. void STM32_LCD_Demo(void)
  59. {
  60.   /* SYSCLK, HCLK, PCLK2 and PCLK1 configuration -----------------------------*/   
  61.   /* RCC system reset(for debug purpose) */
  62.   RCC_DeInit();

  63.   /* Enable HSE */
  64.   RCC_HSEConfig(RCC_HSE_ON);

  65.   /* Wait till HSE is ready */
  66.   HSEStartUpStatus = RCC_WaitForHSEStartUp();

  67.   if(HSEStartUpStatus == SUCCESS)
  68.   {
  69.     /* Enable Prefetch Buffer */
  70.     FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);

  71.     /* Flash 2 wait state */
  72.     FLASH_SetLatency(FLASH_Latency_2);
  73.    
  74.     /* HCLK = SYSCLK */
  75.     RCC_HCLKConfig(RCC_SYSCLK_Div1);
  76.   
  77.     /* PCLK2 = HCLK */
  78.     RCC_PCLK2Config(RCC_HCLK_Div1);

  79.     /* PCLK1 = HCLK/2 */
  80.     RCC_PCLK1Config(RCC_HCLK_Div2);

  81.     /* PLLCLK = 8MHz * 9 = 72 MHz */
  82.     RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);

  83.     /* Enable PLL */
  84.     RCC_PLLCmd(ENABLE);

  85.     /* Wait till PLL is ready */
  86.     while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
  87.     {
  88.     }

  89.     /* Select PLL as system clock source */
  90.     RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);

  91.     /* Wait till PLL is used as system clock source */
  92.     while(RCC_GetSYSCLKSource() != 0x08)
  93.     {
  94.     }
  95.   }

  96.   
  97.                  RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO , ENABLE);

  98. /*------------------- Drivers Initialization -------------------------------*/
  99.   /* Initialize the LCD */
  100.   STM3210E_LCD_Init();

  101.   /* Clear the LCD */
  102.   LCD_Clear(Black);


  103.   
  104. }



  105. /*******************************************************************************
  106. * Function Name  : SysTick_Config
  107. * Description    : Configure a SysTick Base time to 10 ms.
  108. * Input          : None
  109. * Output         : None
  110. * Return         : None
  111. *******************************************************************************/
  112. void SysTick_Config(void)
  113. {
  114.   /* Configure HCLK clock as SysTick clock source */
  115.   SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK);

  116.   /* SysTick interrupt each 100 Hz with HCLK equal to 72MHz */
  117.   SysTick_SetReload(720000);

  118.   /* Enable the SysTick Interrupt */
  119.   SysTick_ITConfig(ENABLE);
  120. }



  121. /*******************************************************************************
  122. * Function Name  : Delay
  123. * Description    : Inserts a delay time.
  124. * Input          : nCount: specifies the delay time length (time base 10 ms).
  125. * Output         : None
  126. * Return         : None
  127. *******************************************************************************/
  128. void Delay(u32 nCount)
  129. {
  130.   TimingDelay = nCount;

  131.   /* Enable the SysTick Counter */
  132.   SysTick_CounterCmd(SysTick_Counter_Enable);
  133.   
  134.   while(TimingDelay != 0)
  135.   {
  136.   }

  137.   /* Disable the SysTick Counter */
  138.   //SysTick_CounterCmd(SysTick_Counter_Disable);

  139.   /* Clear the SysTick Counter */
  140.   SysTick_CounterCmd(SysTick_Counter_Clear);
  141. }



  142. /*******************************************************************************
  143. * Function Name  : Decrement_TimingDelay
  144. * Description    : Decrements the TimingDelay variable.
  145. * Input          : None
  146. * Output         : TimingDelay
  147. * Return         : None
  148. *******************************************************************************/
  149. void Decrement_TimingDelay(void)
  150. {
  151.   if (TimingDelay != 0x00)
  152.   {
  153.     TimingDelay--;
  154.   }
  155. }




  156. /*******************************************************************************
  157. * Function Name  : Set_SELStatus
  158. * Description    : Sets the SELStatus variable.
  159. * Input          : None
  160. * Output         : SELStatus
  161. * Return         : None
  162. *******************************************************************************/
  163. void Set_SELStatus(void)
  164. ……………………

  165. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
程序源码.rar (506.68 KB, 下载次数: 518)
回复

使用道具 举报

ID:441421 发表于 2019-3-22 16:16 | 显示全部楼层
浪费我5积分,代码没有具体东西。
回复

使用道具 举报

ID:314730 发表于 2020-5-11 11:20 | 显示全部楼层
代码缺文件我去
回复

使用道具 举报

ID:289512 发表于 2018-3-31 11:58 | 显示全部楼层
好好学习,天天向上
回复

使用道具 举报

ID:276118 发表于 2018-4-1 17:02 | 显示全部楼层
楼主,你这是一个通道的吗?有套件吗买套自己装了用,或是印制板加工文件方便分享下?
回复

使用道具 举报

ID:237938 发表于 2018-7-5 19:36 | 显示全部楼层
不错,非常棒!
回复

使用道具 举报

ID:380389 发表于 2018-7-29 10:16 来自手机 | 显示全部楼层
哇!非常厉害啊!收藏
回复

使用道具 举报

ID:377382 发表于 2018-8-25 14:42 | 显示全部楼层
不错,非常棒!
回复

使用道具 举报

ID:440585 发表于 2018-12-6 08:21 | 显示全部楼层
很好的帖子  值得学习
回复

使用道具 举报

ID:399179 发表于 2018-12-6 13:39 来自手机 | 显示全部楼层
哪里有套件卖?
回复

使用道具 举报

ID:443548 发表于 2018-12-10 19:33 | 显示全部楼层
好帖,非常实用
回复

使用道具 举报

ID:272625 发表于 2018-12-11 00:15 | 显示全部楼层
太复杂了,个人玩不转。自己做比买的价钱还贵!
回复

使用道具 举报

ID:256577 发表于 2018-12-11 22:38 | 显示全部楼层
下载 学习 谢谢楼主
回复

使用道具 举报

ID:385010 发表于 2018-12-13 13:43 | 显示全部楼层
厉害了
回复

使用道具 举报

ID:53978 发表于 2018-12-14 22:02 | 显示全部楼层
看着好 复杂  
回复

使用道具 举报

ID:485407 发表于 2019-3-6 10:39 | 显示全部楼层
想问下有原理图文件吗
回复

使用道具 举报

ID:196383 发表于 2019-3-17 22:37 | 显示全部楼层
哪里有套件卖?我想搞一套
回复

使用道具 举报

ID:124591 发表于 2019-4-4 10:37 | 显示全部楼层
楼主厉害,拿来学习学习
回复

使用道具 举报

ID:370022 发表于 2019-4-16 15:50 | 显示全部楼层
学习了,谢谢楼主分享资料
回复

使用道具 举报

ID:603285 发表于 2019-9-19 12:57 | 显示全部楼层
谢谢,学习中
回复

使用道具 举报

ID:619840 发表于 2019-10-6 17:25 | 显示全部楼层
赞一个,学习一下
回复

使用道具 举报

ID:385562 发表于 2019-10-10 10:55 | 显示全部楼层
好资料,谢谢分享。
回复

使用道具 举报

ID:624484 发表于 2019-10-15 16:48 | 显示全部楼层
好资料,谢谢楼主分享。
回复

使用道具 举报

ID:626287 发表于 2019-10-18 20:09 | 显示全部楼层
大神这个很实用的工具啊!!
回复

使用道具 举报

ID:630760 发表于 2019-10-27 08:03 | 显示全部楼层
好好学习,天天向上
回复

使用道具 举报

ID:188945 发表于 2019-12-12 15:11 | 显示全部楼层
多谢分享。楼主辛苦了
回复

使用道具 举报

ID:197385 发表于 2020-7-10 17:46 | 显示全部楼层
厉害,可以试着做一个来玩玩。。
回复

使用道具 举报

ID:637831 发表于 2020-8-25 00:10 | 显示全部楼层
不知该示波器实际的测试效果如何?我也想做一个外出工作调试方便。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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