找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 18785|回復(fù): 27
打印 上一主題 下一主題
收起左側(cè)

STM32數(shù)字示波器制作資料 含源碼 電路原理圖等

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
#
外觀實(shí)物圖:





電路原理圖:


前言:
       最近一直在玩STM32和LCD屏,從字符到TFT,從1.8到3.5寸,挨個(gè)都摸了個(gè)摸,公司產(chǎn)品出來(lái)了,可一直想用這些東東來(lái)作點(diǎn)什么。示波器上班用公司的,雖說(shuō)也是便攜的,但也不好帶回家去用呵,看看市場(chǎng)上動(dòng)轍千元以上,唉,還是自己動(dòng)手來(lái)DIY方便自己,也造福網(wǎng)友。
性能目標(biāo):
     電源使用二節(jié)2500mA鋰電,正常工作5小時(shí)以上。
數(shù)字示波器參數(shù):
·        主控:STM32F103ZET6
·        液晶屏: 3.2"TFT320×24065K彩色LCD顯示屏 STM32 FSMC總線驅(qū)動(dòng)
·        AD: ADS831 IDT7205
·        最高實(shí)時(shí)取樣率60Msps 8Bits,
·        取樣緩沖器深度:5K
·        垂直靈敏度:5V,1V,500mV,200mV,100mV,50mV,20mV,10mV;
·        基準(zhǔn)電壓使用STM32 DA輸出,實(shí)現(xiàn)按鍵調(diào)節(jié)波形基準(zhǔn)。并有位置指示
·        水平時(shí)基范圍:2S,1S,500mS,200mS,100mS,50mS,20mS,10mS,5mS,2mS,1mS,500uS,200uS,100uS,50uS,20uS,10uS,5uS,2uS,1uS,500nS,
·        水平位置可調(diào)并有指示
·        輸入阻抗:≥1MΩ
·        最高輸入電壓:50Vpp
·        耦合方式:AC/DC
·        實(shí)現(xiàn)自動(dòng)、常規(guī)、單次觸發(fā)方式 ,上升或下降邊沿觸發(fā)
·        實(shí)現(xiàn)計(jì)算測(cè)量輸入信號(hào)的頻率、周期、占空比、交流峰-峰值、平均值
·        觸發(fā)電平高低位置可調(diào),并電壓指示
·        觸發(fā)時(shí)基位置可調(diào),并帶指示
·        實(shí)現(xiàn)RUN/STOP功能
·        使用16個(gè)按鍵,真正作到單鍵操作以免去組合按鍵麻煩。

聲明,此不是本人原創(chuàng)
單片機(jī)源程序如下:
  1. /***********************************************
  2. ****   STM32示波器測(cè)試平臺(tái)    ***
  3. ****  EDIT by EdmondChao  ***
  4. 芯片型號(hào) : 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. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
程序源碼.rar (506.68 KB, 下載次數(shù): 518)
原理圖.pdf (95.04 KB, 下載次數(shù): 407)
整機(jī)使用說(shuō)明.pdf (238.66 KB, 下載次數(shù): 305)



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏29 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報(bào)

來(lái)自 27#
ID:441421 發(fā)表于 2019-3-22 16:16 | 只看該作者
浪費(fèi)我5積分,代碼沒(méi)有具體東西。
回復(fù)

使用道具 舉報(bào)

來(lái)自 26#
ID:314730 發(fā)表于 2020-5-11 11:20 | 只看該作者
代碼缺文件我去
回復(fù)

使用道具 舉報(bào)

25#
ID:637831 發(fā)表于 2020-8-25 00:10 | 只看該作者
不知該示波器實(shí)際的測(cè)試效果如何?我也想做一個(gè)外出工作調(diào)試方便。
回復(fù)

使用道具 舉報(bào)

24#
ID:197385 發(fā)表于 2020-7-10 17:46 | 只看該作者
厲害,可以試著做一個(gè)來(lái)玩玩。。
回復(fù)

使用道具 舉報(bào)

23#
ID:188945 發(fā)表于 2019-12-12 15:11 | 只看該作者
多謝分享。樓主辛苦了
回復(fù)

使用道具 舉報(bào)

22#
ID:630760 發(fā)表于 2019-10-27 08:03 | 只看該作者
好好學(xué)習(xí),天天向上
回復(fù)

使用道具 舉報(bào)

21#
ID:626287 發(fā)表于 2019-10-18 20:09 | 只看該作者
大神這個(gè)很實(shí)用的工具。!
回復(fù)

使用道具 舉報(bào)

20#
ID:624484 發(fā)表于 2019-10-15 16:48 | 只看該作者
好資料,謝謝樓主分享。
回復(fù)

使用道具 舉報(bào)

19#
ID:385562 發(fā)表于 2019-10-10 10:55 | 只看該作者
好資料,謝謝分享。
回復(fù)

使用道具 舉報(bào)

18#
ID:619840 發(fā)表于 2019-10-6 17:25 | 只看該作者
贊一個(gè),學(xué)習(xí)一下
回復(fù)

使用道具 舉報(bào)

17#
ID:603285 發(fā)表于 2019-9-19 12:57 | 只看該作者
謝謝,學(xué)習(xí)中
回復(fù)

使用道具 舉報(bào)

16#
ID:370022 發(fā)表于 2019-4-16 15:50 | 只看該作者
學(xué)習(xí)了,謝謝樓主分享資料
回復(fù)

使用道具 舉報(bào)

15#
ID:124591 發(fā)表于 2019-4-4 10:37 | 只看該作者
樓主厲害,拿來(lái)學(xué)習(xí)學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

14#
ID:196383 發(fā)表于 2019-3-17 22:37 | 只看該作者
哪里有套件賣(mài)?我想搞一套
回復(fù)

使用道具 舉報(bào)

13#
ID:485407 發(fā)表于 2019-3-6 10:39 | 只看該作者
想問(wèn)下有原理圖文件嗎
回復(fù)

使用道具 舉報(bào)

12#
ID:53978 發(fā)表于 2018-12-14 22:02 | 只看該作者
看著好 復(fù)雜  
回復(fù)

使用道具 舉報(bào)

11#
ID:385010 發(fā)表于 2018-12-13 13:43 | 只看該作者
厲害了
回復(fù)

使用道具 舉報(bào)

10#
ID:256577 發(fā)表于 2018-12-11 22:38 | 只看該作者
下載 學(xué)習(xí) 謝謝樓主
回復(fù)

使用道具 舉報(bào)

9#
ID:272625 發(fā)表于 2018-12-11 00:15 | 只看該作者
太復(fù)雜了,個(gè)人玩不轉(zhuǎn)。自己做比買(mǎi)的價(jià)錢(qián)還貴!
回復(fù)

使用道具 舉報(bào)

8#
ID:443548 發(fā)表于 2018-12-10 19:33 | 只看該作者
好帖,非常實(shí)用
回復(fù)

使用道具 舉報(bào)

7#
ID:399179 發(fā)表于 2018-12-6 13:39 來(lái)自手機(jī) | 只看該作者
哪里有套件賣(mài)?
回復(fù)

使用道具 舉報(bào)

6#
ID:440585 發(fā)表于 2018-12-6 08:21 | 只看該作者
很好的帖子  值得學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

5#
ID:377382 發(fā)表于 2018-8-25 14:42 | 只看該作者
不錯(cuò),非常棒!
回復(fù)

使用道具 舉報(bào)

地板
ID:380389 發(fā)表于 2018-7-29 10:16 來(lái)自手機(jī) | 只看該作者
哇!非常厲害啊!收藏
回復(fù)

使用道具 舉報(bào)

板凳
ID:237938 發(fā)表于 2018-7-5 19:36 | 只看該作者
不錯(cuò),非常棒!
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:276118 發(fā)表于 2018-4-1 17:02 | 只看該作者
樓主,你這是一個(gè)通道的嗎?有套件嗎買(mǎi)套自己裝了用,或是印制板加工文件方便分享下?
回復(fù)

使用道具 舉報(bào)

樓主
ID:289512 發(fā)表于 2018-3-31 11:58 | 只看該作者
好好學(xué)習(xí),天天向上
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表