久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8354|回復: 25
打印 上一主題 下一主題
收起左側

51單片機MINI示波器2.0制作 LQFP48開源文件 PCB與源程序

  [復制鏈接]
跳轉到指定樓層
樓主
ID:816912 發(fā)表于 2021-9-27 12:33 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
原創(chuàng)作者是:老劉愛搗鼓 大家可以去看他的視頻:https://space.bilibili.com/40587802

Altium Designer畫的原理圖和PCB圖如下:(51hei附件中可下載工程文件)


制作出來的實物圖如下:


單片機源程序如下:
  1. /*
  2.     Mini DSO with STC MCU
  3.     操作說明:
  4.         主界面-選項設置模式:
  5.             單擊編碼器:切換開始/暫停采樣
  6.             雙擊編碼器:切換波形水平滾動模式/選項設置模式
  7.             長按編碼器:進入設置界面
  8.             旋轉編碼器:修改當前參數(shù)
  9.             按下同時旋轉編碼器:在參數(shù)間切換
  10.             
  11.         主界面-波形水平滾動模式:
  12.             單擊編碼器:切換開始/暫停采樣
  13.             雙擊編碼器:切換波形水平滾動模式/選項設置模式
  14.             長按編碼器:進入設置界面
  15.             旋轉編碼器:水平滾動波形(在暫停采樣狀態(tài)下有效)
  16.             按下同時旋轉編碼器:垂直滾動波形(僅在暫停采樣狀態(tài)下有效)
  17.             
  18.         設置界面:
  19.             單擊編碼器:無效
  20.             雙擊編碼器:無效
  21.             長按編碼器:返回主界面
  22.             旋轉編碼器:修改當前選項
  23.             按下同時旋轉編碼器:切換選項

  24.     主界面參數(shù):
  25.         橫軸時間區(qū)間:"500ms", "200ms", "100ms", "50ms", "20ms", "10ms","5ms", "2ms", "1ms", "500us", "200us", "100us"(100us僅在自動觸發(fā)模式下可用)
  26.         縱軸電壓區(qū)間:設定電壓量程上限,最大30V,順時針旋轉編碼器將電壓上限設置為0則進入自動量程,逆時針旋轉進入手動量程
  27.         觸發(fā)值:設定觸發(fā)電壓值,觸發(fā)位置被放在屏幕中心
  28.         觸發(fā)方向:上下箭頭,分別代表上升沿觸發(fā)和下降沿觸發(fā)
  29.         觸發(fā)方式:
  30.             Auto(自動觸發(fā))  :連續(xù)采樣,指示燈始終點亮,通過單擊編碼器控制啟停;觸發(fā)成功時,觸發(fā)點位于屏幕中心,觸發(fā)失敗則波形無規(guī)律滾動,屏幕左側顯示Fail標志
  31.             Normal(普通觸發(fā)):等待預采樣,待指示燈亮起表示預采樣結束,這時可以輸入信號;
  32.                               觸發(fā)成功后,顯示波形,并繼續(xù)等待下次觸發(fā);
  33.                               如果有新的觸發(fā)成功,則自動顯示新的波形,如沒有新的觸發(fā)成功則屏幕波形保持并一直等待下次觸發(fā);
  34.                               需注意設置正確的觸發(fā)值,否則一直處于等待觸發(fā)狀態(tài),屏幕不會顯示波形
  35.             Single(單次觸發(fā)):等待預采樣,待指示燈亮起表示預采樣結束,這時可以輸入信號;
  36.                               觸發(fā)成功后,顯示波形,并停止采樣,需用戶單擊編碼器開始下次采樣        
  37.                               需注意設置正確的觸發(fā)值,否則一直處于等待觸發(fā)狀態(tài),屏幕不會顯示波形
  38.             
  39.     主界面狀態(tài)顯示:        
  40.         Run:正在采樣
  41.         Stop:停止采樣
  42.         Fail:自動模式下,觸發(fā)值超出波形范圍引起觸發(fā)失敗
  43.         Auto:自動量程
  44.             
  45.     設置界面選項:
  46.         PMode(繪圖模式):
  47.             Vector:波形以矢量顯示
  48.             Dots  :波形以點陣顯示
  49.         LSB(采樣系數(shù)):分壓系數(shù)的100倍,比如用10k加2k的電阻進行分壓,分壓系數(shù)為(10+2/2)=6,LSB理論取值為6x100=600,根據(jù)實際電阻精度進行微調        
  50.         BRT:OLED亮度

  51.     保存設置:長按編碼器退出設置界面時,設置界面和主界面的所有參數(shù)被保存到EEPROM

  52.     2020-04-30更新
  53.     1. 增加單次觸發(fā)和普通觸發(fā)功能,可自定義觸發(fā)點用來捕捉波形變化
  54.     2. 按照規(guī)格書要求將ADC采樣端口設置為高阻輸入
  55.     2020-5-3更新
  56.     1. 增加波形頻率顯示
  57.     2. 使用編碼器水平/垂直滾動波形
  58.     3. 使用編碼器垂直縮放波形
  59.     4. 用戶可設定觸發(fā)電平
  60. */

  61. #include <reg51.h>
  62. #include "global.h"
  63. #include "delay.h"
  64. #include "adc_stc8.h"
  65. #include "config_stc.h"
  66. #include "settings.h"
  67. #include "chart.h"
  68. #include "ssd1306.h"

  69. // #include "uart.h"
  70. // #include "stdio.h"

  71. #define VBAT_UPDATE_FREQ 40 //電池電壓信息的更新頻率 VBAT_UPDATE_FREQ*25ms
  72. #define VBAT_LSB 600        //電池電壓采樣分壓系數(shù)*100
  73. #define INT_0 0             //外部中斷0序號,編碼器旋轉
  74. #define INT_1 2             //外部中斷1序號,編碼器按下
  75. #define TIMER_0 1           //定時器0中斷序號

  76. void init()
  77. {
  78.     InSettings = 0;         //初始化開機界面
  79.     OptionInSettings = 0;   //初始化設置界面的選項編號
  80.     OptionInChart = 0;      //初始化主界面的選項標號
  81.     WaveScroll = 0;         //清零波形滾動標志
  82.     OptionChanged = 0;      //清零設置修改標志
  83.     ADCRunning = 1;         //置位采樣標志
  84.     ADCInterrupt = 0;       //清零ADC中斷標志
  85.     ADCComplete = 0;        //清零ADC完成標志
  86.     WaveUpdate = 0;         //清零波形更新標志
  87.     ClearWave = 0;          //清零清除波形標志
  88.     ClearDisplay = 1;       //置位清空屏幕標志
  89.     EC11PressAndRotate = 0; //清零編碼器旋轉標志
  90.     UpdateVbat = 0;         //清零采樣電池電壓標志
  91.     ADCComplete = 0;        //清零ADC完成采樣標志
  92.     WaveFreq = 0;           //清零波形頻率
  93.     TriPos = 50;            //初始化觸發(fā)點位置
  94.     TriPosOffset = 0;       //初始化觸發(fā)點偏移量
  95.     TriFail = 0;            //清零觸發(fā)失敗標志
  96.     VMax = 0;               //清零波形電壓最大值
  97.     VMin = 0;               //清零波形電壓最小值
  98.     WaveLengthSumNum = 0;   //清零波形長度求和次數(shù)
  99.     WaveLengthSum = 0;      //清零波形長度求和

  100.     /* 波形滾動模式下正在采樣則禁用外部中斷0(編碼器旋轉)
  101.        Disable external interrupt 0(Encoder rotation) in waveform scroll mode when sampling*/
  102.     if (ADCRunning && WaveScroll)
  103.         EX0 = 0;

  104.     /* 獲取內部參考電壓值
  105.        Get internal reference voltage */
  106.     BGV = GetBGV();
  107. }

  108. void runWhenInSettrings()
  109. {
  110.     P_Ready = 0;
  111.     ClearDisplay = 1;
  112.     while (InSettings)
  113.     {
  114.         /* 更新電池電壓信息
  115.            Update voltage infor of battery */
  116.         if (UpdateVbat)
  117.         {
  118.             UpdateVbat = 0;
  119.             VBat = GetVoltage(ADC_BAT, VBAT_LSB);
  120.         }

  121.         /* 更新屏幕亮度
  122.            Update OLED Brightness */
  123.         if (OLED_BrightnessChanged)
  124.         {
  125.             OLED_BrightnessChanged = 0;
  126.             OLED_Write_Command(0x81);
  127.             OLED_Write_Command(OLED_Brightness * 10);
  128.         }

  129.         /* 更新參數(shù)
  130.            Update parameters */
  131.         if (DisplayUpdate)
  132.         {
  133.             DisplayUpdate = 0;
  134.             PlotSettings();
  135.             OLED_Display();
  136.         }
  137.     }

  138.     /* 保存設置
  139.        Save Settings */
  140.     EA = 0;
  141.     if (OptionChanged)
  142.     {
  143.         OptionChanged = 0;
  144.         ClearDisplay = 0;
  145.         /* 保存設置并顯示保存狀態(tài)
  146.            Save settings and display saving status*/
  147.         PlotSaveStatus(Save_Options());
  148.         OLED_Display();
  149.         Delay1000ms();
  150.     }

  151.     /* 退出settings后刷新屏幕
  152.        Redraw display after exit settings */
  153.     ClearDisplay = 1;
  154.     PlotChart();
  155.     OLED_Display();
  156.     IE0 = 0;
  157.     IE1 = 0;
  158.     EA = 1;
  159. }

  160. /*
  161.     ADCRuning=1
  162.     |        WaveUpdate=1
  163.     |        |        ClearWave=1
  164.     |        |        ClearWave=0
  165.     |        WaveUpdate=0
  166.     ADCRuning=0
  167.         DisplayUpdate=1
  168.             WaveUpdate=1
  169.             |        ClearWave=1
  170.             |        ClearWave=0
  171.             WaveUpdate=0
  172. */
  173. void runWhenADCInterrupt()
  174. {
  175.     ADCInterrupt = 0;
  176.     P_Ready = 0;

  177.     /* ADC采樣運行
  178.        ADC Sampling Running */
  179.     if (ADCRunning)
  180.     {
  181.         EX0 = 0;

  182.         if (WaveUpdate)
  183.         {
  184.             WaveUpdate = 0;
  185.             ClearDisplay = 1;

  186.             /* 清空波形緩存
  187.                Clear waveform in buffer*/
  188.             if (ClearWave)
  189.             {
  190.                 ClearWave = 0;
  191.                 memset(ADCbuf, 0x00, SAMPLE_NUM * 2);
  192.                 WaveFreq = 0;
  193.                 TriFail = 0;
  194.                 VMax = 0;
  195.                 VMin = 0;
  196.                 PlotChart();
  197.             }
  198.             /* 顯示緩存中的波形
  199.                Display waveform in buffer*/
  200.             else
  201.             {
  202.                 AnalyseData();
  203.                 PlotChart();
  204.                 PlotWave();
  205.             }
  206.         }
  207.         else
  208.         {
  209.             ClearDisplay = 0;
  210.             PlotChart();
  211.         }
  212.         OLED_Display();

  213.         /* ADCRuning和WaveScroll同時置位時,不開啟外部中斷0(編碼器旋轉)
  214.            Not to enable external interrupt 0(Encoder Rotation) when both of ADCRunning and WaveScroll set. */
  215.         if (!WaveScroll)
  216.         {
  217.             IE0 = 0;
  218.             EX0 = 1;
  219.         }
  220.     }

  221.     /* ADC采樣停止
  222.        ADC Sampling Stopped */
  223.     else
  224.     {
  225.         while (!ADCRunning && !InSettings)
  226.         {
  227.             if (DisplayUpdate)
  228.             {
  229.                 EX0 = 0;
  230.                 DisplayUpdate = 0;
  231.                 if (WaveUpdate)
  232.                 {
  233.                     WaveUpdate = 0;
  234.                     /* 分析緩存中完成采樣的采樣數(shù)據(jù)
  235.                        Analyse completed sampling data in buffer */
  236.                     AnalyseData();
  237.                     ClearDisplay = 1;

  238.                     /* 清空屏幕,繪制波形
  239.                        Clear display and draw waveform */
  240.                     if (ScaleH == ScaleH_tmp)
  241.                     {
  242.                         /* 采樣點數(shù)有限,不支持橫向縮放波形,只有時間區(qū)間與完成采樣的時間區(qū)間相同才繪制波形
  243.                            Since the sampling points limitation, scaling waveform along horizontal is not support.
  244.                            Show waveform only when time scale is same as that when sampling completed */
  245.                         PlotChart();
  246.                         PlotWave();
  247.                     }

  248.                     /* 清空屏幕,不繪制波形
  249.                        Clear display and no waveform */
  250.                     else
  251.                     {
  252.                         WaveFreq = 0; //清零WaveFreq,繪制界面時,頻率位置會顯示****Hz
  253.                         PlotChart();
  254.                     }
  255.                 }
  256.                 /* 只更新屏幕上的參數(shù),波形不變
  257.                    Update parameters on display only, keep waveform */
  258.                 else
  259.                 {
  260.                     ClearDisplay = 0;
  261.                     PlotChart();
  262.                 }

  263.                 OLED_Display();
  264.                 IE0 = 0;
  265.                 EX0 = 1;
  266.             }
  267.         }
  268.     }
  269. }

  270. void runWhenADCComplete()
  271. {
  272.     /*  ADC采樣完成 - 單次觸發(fā)
  273.         ADC Sampling Complete - Single Trigger Mode */
  274.     if (TriMode == 2)
  275.     {
  276.         EX0 = 0;
  277.         ADCInterrupt = 1;
  278.         DisplayUpdate = 0;
  279.         WaveUpdate = 0;
  280.         ADCRunning = 0; //清零ADC運行標志,停止采樣
  281.         AnalyseData();
  282.         ClearDisplay = 1;
  283.         PlotChart();
  284.         PlotWave();
  285.         OLED_Display();
  286.         IE0 = 0;
  287.         EX0 = 1;
  288.     }

  289.     /*  ADC采樣完成 - 自動觸發(fā)或普通觸發(fā)
  290.         ADC Sampling Complete - Auto or Normal Trigger Mode */
  291.     else
  292.     {
  293.         //EX0 = 0;
  294.         ClearDisplay = 1; //置位清空屏幕標志
  295.         AnalyseData();    //分析采樣數(shù)據(jù)
  296.         PlotChart();      //繪制主界面
  297.         PlotWave();       //繪制波形
  298.         OLED_Display();
  299.         //IE0 = 0;
  300.         //EX0 = 1;
  301.     }
  302. }

  303. /* 程序入口
  304.    Program Entry */
  305. void main()
  306. {
  307.     /* 將ADC端口P0.4,P0.6設置為高阻
  308.        Set ADC port P0.4, P0.6 as high-impedance */
  309.     P0M1 |= 0x50;
  310.     P0M0 &= ~0x50;

  311.     /* 設置指示燈端口P1.1為推挽輸出
  312.        Set indicator port P1.1 as push-pull output */
  313.     P0M1 &= ~0x02;
  314.     P0M0 |= 0x02;

  315.     /* 設置編碼器端口P3.2,P3.3,P3.4為準雙向
  316.        Set Encoder port P3.2, P3.3, P3.4 as quasi bidirectional */
  317.     P3M1 &= ~0x1C;
  318.     P3M0 &= ~0x1C;

  319.     /* 設置OLED端口P2.3,P2.4,P2.5,P2.6,P2.7為準雙向
  320.        Set OLED port P2.3, P2.4, P2.5, P2.6 as quasi bidirectional */
  321.     P2M1 &= ~0xF8;
  322.     P2M0 &= ~0xF8;

  323.     /* 編碼器旋轉外部中斷
  324.        Interrupt for rotating of Encoder */
  325.     IT0 = 0; //外部中斷0觸發(fā)方式,上升沿和下降沿
  326.     PX0 = 1; //外部中斷0高優(yōu)先級,可打斷按鍵中斷,用于判斷按下同時旋轉
  327.     EX0 = 1; //開啟外部中斷0

  328.     /* 編碼器按鍵外部中斷
  329.        Interrupt for clicking of Encoder */
  330.     IT1 = 1; //外部中斷1觸發(fā)方式,下降沿
  331.     PX1 = 0; //外部中斷1低優(yōu)先級
  332.     EX1 = 1; //開啟外部中斷1

  333.     /* 定時器0,為更新電池電壓信息計時
  334.        Timer 0, for updating voltage of battery */
  335.     AUXR &= 0x7F; //定時器時鐘12T模式
  336.     TMOD &= 0xF0; //設置定時器模式
  337.     TL0 = 0x46;   //設置定時初值 //27MHz,25ms
  338.     TH0 = 0x24;   //設置定時初值
  339.     TF0 = 0;      //清除TF0標志
  340.     ET0 = 1;      //允許定時器0中斷

  341.     /* 開總中斷
  342.        Enable global interrupt */
  343.     EA = 1;

  344.     //UartInit();

  345.     Read_Options();
  346.     init();
  347.     OLED_Init();
  348.     OLED_SetFontWidth(6);
  349.     PlotChart();
  350.     OLED_Display();

  351.     while (1)
  352.     {
  353.         P_Ready = 0;

  354.         /* 采樣波形
  355.            Sampling*/
  356.         GetWaveData();

  357.         /* 進入設置界面
  358.            Enter Settings Interface */
  359.         if (InSettings)
  360.         {
  361.             runWhenInSettrings();
  362.         }

  363.         /* ADC采樣中斷
  364.            ADC Sampling Interrupt */
  365.         else if (ADCInterrupt)
  366.         {
  367.             runWhenADCInterrupt();
  368.         }

  369.         /* ADC采樣完成
  370.            ADC Sampling Complete */
  371.         else
  372.         {
  373.             runWhenADCComplete();
  374.         }
  375.     }
  376. }

  377. /* 分析編碼器旋轉
  378.    Analyse Rotation of Encoder */
  379. void Scan_EC11(void)
  380. {
  381.     /* 延時去抖動
  382.        Delay to remove jitter */
  383.     Delay500us();

  384.     /* 正轉
  385.        Clockwise */
  386.     if (EC11_A != EC11_B)
  387.     {
  388.         Change_Val(1);
  389.     }

  390.     /* 反轉
  391.        Anticlockwise */
  392.     else if (EC11_A == EC11_B)
  393.     {
  394.         Change_Val(0);
  395.     }
  396. }

  397. /* 編碼器旋轉中斷
  398.    Interrput for Encoder Rotated */
  399. void INT0_interrupt(void) interrupt INT_0
  400. {
  401.     Delay500us();

  402.     /* 編碼器是否被按下
  403.        Whether the Encoder is pressed */
  404.     if (!EC11_KEY)
  405.         EC11PressAndRotate = 1;
  406.     else
  407.         EC11PressAndRotate = 0;

  408.     Scan_EC11();
  409.     ADCInterrupt = 1;
  410.     DisplayUpdate = 1;
  411.     IE1 = 0; //清零外部中斷1標志位
  412.     IE0 = 0; //清零外部中斷0標志位
  413. }

  414. /* 編碼器點擊中斷
  415.    Interrput for Encoder Pressed */
  416. void INT1_interrupt(void) interrupt INT_1
  417. {
  418.     Delay50ms();
  419.     if (!EC11_KEY)
  420.     {
  421.         EC11PressAndRotate = 0;

  422.         /*  長按編碼器按鍵 - 切換主界面和設置界面
  423.             Long presse Encoder - Switch main interface and settings interface */
  424.         if (Delay800ms_Long_Press())
  425.         {
  426.             InSettings = ~InSettings;

  427.             /*  進入設置界面
  428.                 Enter Settings  */
  429.             if (InSettings)
  430.             {
  431.                 DisplayUpdate = 1;
  432.                 UpdateVbat = 1;
  433.                 TF0 = 0; //清零定時器0溢出標志
  434.                 TR0 = 1; //定時器0開始計時,開始電池電壓信息更新計時
  435.                 IE0 = 0; //清零外部中斷0中斷標志
  436.                 EX0 = 1; //開啟外部中斷0(編碼器旋轉)
  437.             }

  438.             /*  回到主界面
  439.                 Retrurn to main interface   */
  440.             else
  441.             {
  442.                 TR0 = 0; //清零定時器0溢出標志
  443.                 TF0 = 0; //定時器0停止計時,停止電池電壓信息更新計時
  444.                 WaveFreq = 0;
  445.                 TriFail = 0;
  446.                 VMax = 0;
  447.                 VMin = 0;
  448.                 DisplayUpdate = 1;
  449.                 WaveUpdate = 1;
  450.                 ClearWave = 0;
  451.             }
  452.             ADCInterrupt = 1;
  453.         }

  454.         /*  按住編碼器同時旋轉
  455.             Rotate Encoder while pressing  */
  456.         else if (EC11PressAndRotate)
  457.         {
  458.             /* 由編碼器旋轉中斷執(zhí)行操作
  459.                Operations Performed by Interrupt of Encoder Rotation */
  460.         }

  461.         /* 雙擊編碼器按鍵 - 在主界面,滾動波形和選項模式之間切換
  462.            Double click Encoder - Switch between Waveform Scroll Mode and Parameter Mode in Main Interface */
  463.         else if (Delay300ms_Double_Click())
  464.         {
  465.             /* 主界面
  466.                Main Interface*/
  467.             if (!InSettings)
  468.             {
  469.                 WaveScroll = ~WaveScroll;
  470.                 OptionChanged = 1;
  471.                 ADCInterrupt = 1;
  472.                 DisplayUpdate = 1;
  473.                 ClearWave = 0;
  474.             }
  475.         }

  476.         /*  單擊編碼器按鍵 - 在主界面,切換Stop/Run狀態(tài)
  477.             Single click Encoder - Switch Run/Stop in main interface    */
  478.         else if (!InSettings)
  479.         {
  480.             EX0 = 0;
  481.             ADCRunning = ~ADCRunning;
  482.             if (ADCRunning)
  483.             {
  484.                 WaveUpdate = 1;
  485.                 ClearWave = 1;
  486.             }
  487.             else
  488.             {
  489.                 DisplayUpdate = 1;
  490.                 WaveUpdate = 1;
  491.             }
  492.             ADCInterrupt = 1;
  493.             IE0 = 0;
  494.             IE1 = 0;
  495.         }
  496.     }
  497.     IE1 = 0;
  498. }

  499. /* 為更新Vbat計時
  500.    Timer for updating Vbat */
  501. void TIMER0_interrupt(void) interrupt TIMER_0
  502. {
  503.     static uint8 n;

  504.     if (++n >= VBAT_UPDATE_FREQ)
  505.     {
  506.         n = 0;
  507.         UpdateVbat = 1;
  508.         DisplayUpdate = 1;
  509.     }
  510. }
復制代碼

所有資料51hei附件下載(PCB與代碼):
MINI示波器2.0-LQFP48開源文件.7z (4.83 MB, 下載次數(shù): 283)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏25 分享淘帖 頂2 踩
回復

使用道具 舉報

沙發(fā)
ID:258542 發(fā)表于 2021-9-28 22:07 | 只看該作者
在b站上見過,很牛逼的一個
回復

使用道具 舉報

板凳
ID:61493 發(fā)表于 2021-9-29 15:16 | 只看該作者
不錯,那個屏能不能用在大一點的,那個OLED太小了
回復

使用道具 舉報

地板
ID:229641 發(fā)表于 2021-10-2 21:11 來自手機 | 只看該作者
有么有iic屏幕的?
回復

使用道具 舉報

5#
ID:804975 發(fā)表于 2021-10-4 00:52 | 只看該作者
這個視頻我也看了。
回復

使用道具 舉報

6#
ID:65369 發(fā)表于 2021-10-9 09:16 | 只看該作者
這個夠給力了,放在十年前這個也不敢想象的
回復

使用道具 舉報

7#
ID:971289 發(fā)表于 2021-10-14 08:46 | 只看該作者
水平相當可以,點贊
回復

使用道具 舉報

8#
ID:229641 發(fā)表于 2021-10-14 21:02 來自手機 | 只看該作者
有iic的OLED屏幕版本的嗎?
回復

使用道具 舉報

9#
ID:588154 發(fā)表于 2021-10-24 19:29 | 只看該作者
為什么我下載程序的時候一直顯示:正在檢測目標單片機。
回復

使用道具 舉報

10#
ID:588154 發(fā)表于 2021-10-24 19:30 | 只看該作者
為什么我給單片機燒錄程序的時候一直顯示:正在檢測目標單片機。
單片機型號選正確了的、RX和TX也沒接錯。
回復

使用道具 舉報

11#
ID:229830 發(fā)表于 2021-11-10 19:09 | 只看該作者
秦_瘦 發(fā)表于 2021-10-24 19:30
為什么我給單片機燒錄程序的時候一直顯示:正在檢測目標單片機?
單片機型號選正確了的、RX和TX也沒接錯 ...

先點下載,再上電
回復

使用道具 舉報

12#
ID:367875 發(fā)表于 2021-11-10 22:14 | 只看該作者
秦_瘦 發(fā)表于 2021-10-24 19:29
為什么我下載程序的時候一直顯示:正在檢測目標單片機?

單片機要重新上電
回復

使用道具 舉報

13#
ID:230500 發(fā)表于 2021-11-26 00:17 | 只看該作者
厲害, 能把51擋32用的 都是軟件高手達人,
回復

使用道具 舉報

14#
ID:3802 發(fā)表于 2021-12-10 17:06 | 只看該作者
好資料,51黑有你更精彩!!!
回復

使用道具 舉報

15#
ID:503691 發(fā)表于 2021-12-15 14:45 | 只看該作者
51黑有你更精彩
回復

使用道具 舉報

16#
ID:977861 發(fā)表于 2021-12-21 22:41 | 只看該作者
主要技術參數(shù)如何?只能玩玩吧
回復

使用道具 舉報

17#
ID:59202 發(fā)表于 2022-7-26 17:06 | 只看該作者
就是個玩具,不過初學者可以學習一下
回復

使用道具 舉報

18#
ID:1025635 發(fā)表于 2022-7-26 19:28 | 只看該作者
主要技術參數(shù)(頻率范圍)等如何
回復

使用道具 舉報

19#
ID:430492 發(fā)表于 2022-7-27 08:39 | 只看該作者
這個很大程度還是讓電工們了解一下原理,實用的話還是很有限的。
回復

使用道具 舉報

20#
ID:130135 發(fā)表于 2022-9-16 00:24 | 只看該作者
歷害6666, 能把51擋32用的 都是軟件高手達人,
回復

使用道具 舉報

21#
ID:1102669 發(fā)表于 2023-12-8 11:18 | 只看該作者
電壓采樣不是很懂。
回復

使用道具 舉報

22#
ID:390438 發(fā)表于 2023-12-16 08:13 | 只看該作者
有空做一個,使用鋰電池供電,維修電源時的好助手
回復

使用道具 舉報

23#
ID:165291 發(fā)表于 2024-2-2 10:19 | 只看該作者
牛人,嗶哩嗶哩上怎么找你?
回復

使用道具 舉報

24#
ID:95809 發(fā)表于 2024-2-3 00:30 來自手機 | 只看該作者
做過一個,就是屏幕太小了,看著費勁。
回復

使用道具 舉報

25#
ID:965040 發(fā)表于 2024-4-10 22:12 | 只看該作者
秦_瘦 發(fā)表于 2021-10-24 19:30
為什么我給單片機燒錄程序的時候一直顯示:正在檢測目標單片機啊?
單片機型號選正確了的、RX和TX也沒接錯 ...

單片機重新上電,上電下載程序
回復

使用道具 舉報

26#
ID:965040 發(fā)表于 2024-4-10 23:07 | 只看該作者
太牛了,大神作品
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品国产不卡一区二区三区 | 欧美综合久久久 | 国产精品久久久久无码av | 一级片网址 | 水蜜桃久久夜色精品一区 | 久久综合狠狠综合久久综合88 | 97在线超碰| 国产香蕉视频 | 亚洲网站在线播放 | 久久国产精品72免费观看 | 一区二区三区欧美 | 夜夜骑首页 | 亚洲精品免费视频 | 好好的日在线视频 | 久久99精品国产 | 国产精品精品视频一区二区三区 | 国产成人精品亚洲日本在线观看 | 久久精品亚洲精品国产欧美 | 日韩一二三区视频 | 成人精品毛片 | 亚洲欧美激情精品一区二区 | 男人av网| 亚洲一二三区免费 | 国产精品mv在线观看 | 国产综合久久久 | 国产一区二区三区四区 | 久久久夜夜夜 | 国产一区二区在线免费观看 | 精品91久久 | 一区二区在线观看av | 成人动慢| 国产日韩欧美精品一区二区三区 | 国产精品av久久久久久毛片 | 91视频在线看 | 亚洲黄色成人网 | 日韩一区二区精品 | 天堂中文av | 国产有码| 精品视频一区二区三区四区 | 一区二区不卡视频 | 成人h视频在线 |