wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

對STM8S電壓電流表頭重新編程(IAR環境)

  [復制鏈接]
跳轉到指定樓層
樓主
ID:250292 發表于 2017-12-20 13:33 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
前一段時間在*寶上買了一款0-80V 0-6A可調電源,下圖左邊的。


此款電源測量電壓的精度很不錯,但是電流非常不準。250mA以下顯示0,0.5A顯示0.3A,1A時顯示0.83A。3A是準的,3A以上又偏大。

沒辦法打開,拆機,發現用的表頭在淘寶上有賣,測量電流不準的原因是電流分流電阻并不是表頭配套的。


沒有辦法,只有自己重新編程才能解決電流測量不準的問題。首先對照實物繪制原理圖,如下。


原來這款表頭的電流量程是50A的,需配50A的分流電阻,測量電流才能達到該表頭原有的設計精度。可是此電源卻沒有用50A的分流電阻,而是用約2毫歐的分流電阻。這樣0-6A在分流電阻上的電壓為 0-12mV。
對照原理圖測量電流部分可以得出:運放部分的放大倍數為 23(188.2/8.2)- 35(288.2/8.2),輸出電壓為 0-420mV。這個電壓太小,因為STM8的ADC輸入電壓可以到3300mV,所以我將放大電阻R6有原來的180k換成了1M,這樣放大倍數就變成 123-135,運放的輸出電壓為 0-1620mV。
實際上,放大倍數在 3300/12=275時最理想(R6換成2M左右),可以充分利用ADC的轉換精度。但我手頭只有1M貼片,就沒有再折騰了。

然后就是編程了,STM8是第一次,一直在用STM32。就在網上找了些例子,幾番折騰終于能夠編譯和下載了。
電壓測量校準比較簡單,只調整電位器就能達到不錯的精度。不過我還是用軟件作了多區間線形校正。
10V以下精度 <1%,10V以上精度 <0.5%
電流校正沒有分區間,精度基本做到 <1%。

下面是自己編程的工程文件,可以直接修改編譯。

STM8S單片機源程序(IAR環境)如下:


  1. #include "math.h"
  2. //#include "stdbool.h"
  3. #include "iostm8s003f3.h"
  4. #include "stm8s.h" //包含用到的外設的頭文件

  5. #define u8  unsigned char
  6. #define uchar  unsigned char
  7. #define uint   unsigned int
  8. #define sCnt   104

  9. uint ms_count, tmpin, ADCBuff[6], ADValueV[sCnt], ADValueI[sCnt], ADCData, mA;
  10. u8 pDataV=0, pDataI=0, vDotPS, cDotPS, VGain = 35, ampGain = 129, vFlag=0, iFlag=0;
  11. unsigned long mV;  //uint的話,mV最大只能到 65535mV,本電源80V,故用long
  12. float voltRAW, curtRAW, Rs = 0.00218;
  13. float ADVal_Av[2]={0}, Val_Av[2]={0};                     

  14. float preCoef[2]={0.005};        //ADC 轉換濾波噪聲用的系數
  15. bool preTrend[2]={TRUE};        //ADC 轉換結果的變化趨勢 true:變大,false:變小
  16. float ADvalue[2]={0.0};        //ADC 前次的轉換結果濾波后的值
  17. float newData[2]={0.0};        //ADC 本次次的轉換結果

  18. /*******************************************************************************
  19. **函數名稱:void GPIO_Init0()
  20. **功能描述:GPIO->功能引腳初始化
  21. **入口參數:無
  22. **輸出:無
  23. *******************************************************************************/
  24. void GPIO_Init0()
  25. {
  26.   PA_ODR |=0x02;    //PA1置高,I個位選通
  27.   PA_ODR &=0xf3;    //PA2,3置零,g,f
  28.   PA_DDR |=0x0e;    //設置端口PA1,2,3的輸入輸出方向寄存器為輸出方向
  29.   PA_CR1 |=0x0e;     //PA1,2,3為推挽輸出
  30.   PA_CR2 |=0x0e;     //PA1,2,3是輸出速度最快為10MHz
  31.   
  32.   PB_ODR |=0x30;    //PB4,5置高,I十位和百位選通
  33.   PB_DDR |=0x30;    //設置端口PB4,5的輸入輸出方向寄存器為輸出方向
  34.   PB_CR1 |=0x30;     //PB4,5為推挽輸出
  35.   PB_CR2 |=0x30;     //PB4,5是輸出速度最快為10MHz
  36.   
  37.   PC_ODR &=0x07;    //置零PC3,4,5,6,7, c,f,h,d,e
  38.   PC_DDR |=0xf8;    //設置端口PC->3,4,5,6,7的輸入輸出方向寄存器為輸出方向
  39.   PC_CR1 |=0xf8;     //PC->3,4,5,6,7為推挽輸出
  40.   PC_CR2 |=0xf8;     //PC->3,4,5,6,7是輸出速度最快為10MHz
  41.   
  42.   PD_ODR &=0xfd;    //置零PD1, a
  43.   PD_ODR |=0x70;    //PD4,5,6置高 V百位 個位 和十位選通
  44.   PD_DDR |=0x72;    //設置端口PD->1,4,5,6的輸入輸出方向寄存器為輸出方向
  45.   PD_CR1 |=0x72;     //PD->1,4,5,6為推挽輸出
  46.   PD_CR2 |=0x72;     //PD->1,4,5,6是輸出速度最快為10MHz
  47. }

  48. /*******************************************************************************
  49. **函數名稱:void SMG_Display(int num)
  50. **功能描述:SMG顯示函數
  51. **入口參數:int num
  52. **輸出:無
  53. *******************************************************************************/
  54. void SMG1_Display(unsigned char num)
  55. {
  56.   PA_ODR |=0x02;    //PA1置高,I個位選通
  57.   PB_ODR |=0x30;    //PB4,5置高,I十位和百位選通
  58.   PD_ODR |=0x70;    //PD4,5,6置高 V百位 個位 和十位選通
  59.   switch(num)
  60.   {
  61.   case 0: //a b c d e f
  62.     PA_ODR |=0x08;    //PA3置高,b
  63.     PA_ODR &=0xfb;    //PA2置零,g
  64.     PC_ODR &=0xdf;    //置零PC5,h
  65.     PC_ODR |=0xd8;    //PC3,4,6,7置高 c,f,d,e
  66.     PD_ODR |=0x02;    //PD1置高 a
  67.     break;
  68.   case 1: //b c
  69.     PA_ODR |=0x08;    //PA3置高,b
  70.     PA_ODR &=0xfb;    //PA2置零,g
  71.     PC_ODR &=0x0f;    //置零PC4,5,6,7,f,h,d,e
  72.     PC_ODR |=0x08;    //PC3置高 c
  73.     PD_ODR &=0xfd;    //PD1置零 a
  74.     break;
  75.   case 2: // a b d e g
  76.     PA_ODR |=0x0c;    //PA2,3置高,g,b
  77.     PC_ODR &=0xc7;    //置零PC3,4,5 c,f,h
  78.     PC_ODR |=0xc0;    //PC6,7置高,d e
  79.     PD_ODR |=0x02;    //PD1置高 a
  80.     break;
  81.   case 3: //a b c d g
  82.     PA_ODR |=0x0c;    //PA2,3置高,g,b
  83.     PC_ODR &=0x4f;    //置零PC4,5,7,f,h,e
  84.     PC_ODR |=0x48;    //PC3,6置高 c,d
  85.     PD_ODR |=0x02;    //PD1置高 a
  86.     break;
  87.   case 4: //b c f g
  88.     PA_ODR |=0x0c;    //PA2,3置高,g,b
  89.     PC_ODR &=0x1f;    //置零PC5,6,7,h,d,e
  90.     PC_ODR |=0x18;    //PC3,4置高 c,f
  91.     PD_ODR &=0xfd;    //PD1置零 a
  92.     break;
  93.   case 5: //a c d f g
  94.     PA_ODR |=0x04;    //PA2置高,g
  95.     PA_ODR &=0xf7;    //PA3置零,b
  96.     PC_ODR &=0x5f;    //置零PC5,7 h,e
  97.     PC_ODR |=0x58;    //PC3,4,6置高 c,f,d
  98.     PD_ODR |=0x02;    //PD1置高 a
  99.     break;
  100.   case 6: //a c d e f g
  101.     PA_ODR |=0x04;    //PA2置高,g
  102.     PA_ODR &=0xf7;    //PA3置零,b
  103.     PC_ODR &=0xdf;    //置零PC5,h
  104.     PC_ODR |=0xd8;    //PC3,4,6,7置高 c,f,d,e
  105.     PD_ODR |=0x02;    //PD1置高 a
  106.     break;
  107.   case 7: //a b c
  108.     PA_ODR |=0x08;    //PA3置高,b
  109.     PA_ODR &=0xfb;    //PA2置零,g
  110.     PC_ODR &=0x0f;    //置零PC4,5,6,7,f,h,d,e
  111.     PC_ODR |=0x08;    //PC3置高 c
  112.     PD_ODR |=0x02;    //PD1置高 a
  113.     break;
  114.   case 8: //a b c d e f g
  115.     PA_ODR |=0x0c;    //PA2,3置高,g,b
  116.     PC_ODR &=0xdf;    //置零PC5,h
  117.     PC_ODR |=0xd8;    //PC3,4,6,7置高 c,f,d,e
  118.     PD_ODR |=0x02;    //PD1置高 a
  119.     break;
  120.   case 9: //a b c d f g
  121.     PA_ODR |=0x0c;    //PA2,3置高,g,b
  122.     PC_ODR &=0x5f;    //置零PC5,7 h,e
  123.     PC_ODR |=0x58;    //PC3,4,6置高 c,f,d
  124.     PD_ODR |=0x02;    //PD1置高 a
  125.     break;
  126.   }
  127. }


  128. /*******************************************************************************
  129. **函數名稱:void ADC_Init()
  130. **功能描述:初始化ADC
  131. **入口參數:無
  132. **輸出:無
  133. *******************************************************************************/
  134. void ADC_Init()
  135. {
  136.   //電流
  137.   PD_DDR_bit.DDR2 = 0;   //設置PD->2 為輸入
  138.   PD_CR1_bit.C12 = 0;    //設置為浮空輸入
  139.   PD_CR2_bit.C22 = 0;    //設置中斷禁止
  140.   
  141.   //電壓
  142.   PD_DDR_bit.DDR3 = 0;   //設置PD->3 為輸入
  143.   PD_CR1_bit.C13 = 0;    //設置為浮空輸入
  144.   PD_CR2_bit.C23 = 0;    //設置中斷禁止
  145.   
  146.   ADC_CR1_bit.SPSEL = 7;    //fmaster / 18 = 16MHZ / 18 = 888888HZ
  147.   ADC_CR2_bit.ALIGN = 1;    //RIGHT ALIGN
  148.   
  149.   ADC_CR1_bit.ADON = 1;     //初次上電喚醒ADC
  150. }


  151. /*******************************************************************************
  152. **函數名稱:uint Get_Adc(unsigned char ac)
  153. **功能描述:讀取ADC完成一次模數轉換結果
  154. **入口參數:ac ->ADC通道號
  155. **輸出:ADC轉換結果
  156. *******************************************************************************/
  157. uint Get_Adc(u8 ac)           //獲取adc值
  158. {
  159.   uint Value;
  160.   ADC_CSR_bit.CH = ac;       //選擇ADC通道 AIN3,4
  161.   ADC_CR1 |= 0x01;           //開始轉換
  162.   while((0x80&ADC_CSR)==0); //等待轉換完成
  163.   ADC_CSR &= ~0x80;          //清除轉換標志
  164.   Value  = (uint)ADC_DRL;    //取低8位
  165.   Value |= (uint)ADC_DRH<<8; //低8位和高兩位合并
  166.   return(Value);            //返回adc值
  167. }

  168. float* Ad_Av(u8 ac)      //每次只采樣一個數據,采完sCnt個數據就更新結果,否則就顯示上一次的結果
  169. {
  170.   u8 num, pMaxV=0, pMaxV2=0, pMinV=0, pMinV2=0, pMaxI=0, pMaxI2=0, pMinI=0, pMinI2=0;
  171.   if(ac==4){    //電壓
  172.     ADValueV[pDataV] = Get_Adc(ac);
  173.     Val_Av[0] += ADValueV[pDataV++];
  174.   }else{    //電流
  175.     ADValueI[pDataI] = Get_Adc(ac);
  176.     Val_Av[1] += ADValueI[pDataI++];
  177.   }
  178.   if(pDataV>=sCnt){     //電壓數據采樣完成,去除最大最小求平均
  179.     pDataV=0; vFlag=1;
  180.     for(num=0;num<sCnt;num++) {
  181.       if(ADValueV[num] < ADValueV[pMinV]) pMinV = num;
  182.       if(ADValueV[num] > ADValueV[pMaxV]) pMaxV = num;
  183.     }
  184.     for(num=0;num<sCnt;num++) {       //去掉次大次小
  185.       if(num != pMinV && ADValueV[num] < ADValueV[pMinV2]) pMinV2 = num;
  186.       if(num != pMaxV && ADValueV[num] > ADValueV[pMaxV2]) pMaxV2 = num;
  187.     }
  188.     ADVal_Av[0] = (Val_Av[0] - ADValueV[pMinV] - ADValueV[pMinV2] - ADValueV[pMaxV] - ADValueV[pMaxV2])/(sCnt-4);                    
  189.     //ADVal_Av[0] = (Val_Av[0] - ADValueV[pMinV] - ADValueV[pMaxV])/(sCnt-2);   //只去掉最大最小的話,用這句
  190.     Val_Av[0]=0;
  191.   }
  192.   if(pDataI>=sCnt){     //電流數據采樣完成,去除最大最小求平均
  193.     pDataI=0; iFlag=1;
  194.     for(num=0;num<sCnt;num++) {
  195.       if(ADValueI[num] < ADValueI[pMinI]) pMinI = num;
  196.       if(ADValueI[num] > ADValueI[pMaxI]) pMaxI = num;
  197.     }
  198.     for(num=0;num<sCnt;num++) {       //如果還要去掉次大次小的話,就去掉注釋
  199.       if(num != pMinI && ADValueI[num] < ADValueI[pMinI2]) pMinI2 = num;
  200.       if(num != pMaxI && ADValueI[num] > ADValueI[pMaxI2]) pMaxI2 = num;
  201.     }
  202.     ADVal_Av[1] = (Val_Av[1] - ADValueI[pMinI] - ADValueI[pMinI2] - ADValueI[pMaxI] - ADValueI[pMaxI2])/(sCnt-4);                    
  203.     //ADVal_Av[1] = (Val_Av[1] - ADValueI[pMinI] - ADValueI[pMaxI])/(sCnt-2);     //只去掉最大最小的話,用這句                  
  204.     Val_Av[1]=0;
  205.   }
  206.   return(ADVal_Av);                       
  207. }

  208. /*****  噪聲濾波     *******************
  209. baseCoef:濾波系數,越小濾波越強;
  210. i:通道,可供多個測量對象濾波
  211. preCoef:上次濾波后計算的系數值
  212. preTrend:上次濾波的數據變化方向
  213. preData:上次濾波后的結果
  214. newData:這次新采樣的數據
  215. ***********************************************************************/
  216. void Noise_Filter(float baseCoef, u8 i, float *preCoef, bool *preTrend, float *preData, float *newData){
  217.   bool newTrend;
  218.   if (newData[i] == preData[i]) return;
  219.   if (newData[i] > preData[i]) newTrend = TRUE;
  220.   else newTrend = FALSE;
  221.   if (newTrend == preTrend[i])        preCoef[i] = preCoef[i] * 2;
  222.   else preCoef[i] = baseCoef;
  223.   preTrend[i] = newTrend;
  224.   if(preCoef[i] < baseCoef) preCoef[i] = baseCoef;
  225.   else if(preCoef[i] > 0.995) preCoef[i] = 0.995;
  226.   preData[i] = preData[i] + (newData[i] - preData[i])* preCoef[i];
  227. }

  228. /*****  電壓數據處理  ***************************************
  229. tmpin:采集的電壓數據;
  230. 輸出:電壓值,單位:V
  231. *********************************************************/
  232. float ProcessVoltage(float tmpin)
  233. {
  234.     float Temp;
  235.     Temp = tmpin * 3.3 * VGain / 1023; //單位:V
  236.     //下面是校正,應根據實際情況重新計算。其實不校正精度也不錯
  237.     if(Temp<=0.5) Temp = 1.0 * Temp;   
  238.     else if(Temp>0.5 && Temp<2.5) Temp = 0.98 * Temp + 0.28;
  239.     else if(Temp<6.5) Temp = 1.005 * Temp + 0.235;
  240.     else if(Temp<11.5) Temp = 1.00325 * Temp + 0.22925;
  241.     else if(Temp<36.5) Temp = 0.990417 * Temp + 0.385;
  242.     else  Temp = 0.988889 * Temp + 0.482222;
  243.     if(Temp<0) Temp=0;
  244.     return (Temp);
  245.    
  246. }

  247. /*****  電流數據處理  ***************************************
  248. tmpin:采集的電流數據;
  249. 輸出:電流值,單位:A
  250. *********************************************************/
  251. float ProcessCurrent(float tmpin)
  252. {
  253.     float Temp;
  254.     Temp = tmpin * 3.3 / 1023 / ampGain / Rs;    //單位:A
  255.     //下面是校正,應根據實際情況重新計算。本例中是將運放的反饋電阻 R6(180k)
  256.     //改成 1M后,放大系數ampGain由29變為129。
  257.     //取樣電阻 Rs約為 2mR。
  258.     Temp = 1.385042 * Temp - 1.698751;
  259.     if(Temp<0) Temp=0;
  260.     return (Temp);
  261.    
  262. }

  263. /****   本例中未使用     ******************************************************
  264. **函數名稱:void Timer4Init()
  265. **功能描述:定時器4參數初始化
  266. **入口參數:無
  267. **輸出:無
  268. *******************************************************************************/
  269. void Timer4Init()
  270. {
  271.   TIM4_IER_bit.UIE = 0;       //禁止中斷
  272.   TIM4_EGR_bit.UG = 0;           
  273.   TIM4_PSCR_bit.PSC = 7;      // 設置TIM4的時鐘分頻系數為 128  即定時器時鐘 = 16000000 /128 = 125KHZ
  274.                                                             
  275.   TIM4_ARR = 125;             // 設定TIM4產生1毫秒的計數值
  276.   TIM4_CNTR = 0x00;            // 清除TIM4計數寄存器數值
  277.    
  278.   TIM4_SR_bit.UIF = 0;        //清除中斷標志
  279.   TIM4_SR_bit.TIF = 0;
  280.   TIM4_CR1_bit.CEN = 1;       //使能定時器4計數
  281.   TIM4_CR1_bit.ARPE = 1;      //使能預裝載
  282.   TIM4_IER_bit.UIE = 1;       // 使能更新中斷
  283. }

  284. /****   本例中未使用    *******************************************************
  285. **函數名稱:void TIM2_Init()
  286. **功能描述:定時器2參數初始化
  287. **入口參數:無
  288. **輸出:無
  289. *******************************************************************************/
  290. void TIM2_Init()
  291. {
  292.   TIM2_PSCR = 0x00;     //定時器2預分頻數為 1 分頻,即定時器時鐘 = 系統時鐘 = 16MHz
  293.   TIM2_ARRH = 0x3E;     //設置1毫秒時間自動重載 16000 = 0x3e80
  294.   TIM2_ARRL = 0x80;     //

  295.   TIM2_CNTRH = 0x00;    //清除計數寄存器
  296.   TIM2_CNTRL = 0x00;    //
  297.   TIM2_SR1 = 0x00;      //清除所有的中斷標志

  298. }

  299. /****   本例中未使用    ******************************************************
  300. **函數名稱:void TIM2_DelayMs(unsigned int ms)
  301. **功能描述:定時器2參進行精確延時,最小為1毫秒,最大65535
  302. **入口參數:unsigned int ms     1=< ms <= 65535
  303. **輸出:無
  304. *******************************************************************************/
  305. void TIM2_DelayMs(unsigned int ms)
  306. {
  307.    
  308.     TIM2_CR1 = 0x81;        //啟動定時器2開始計數
  309.     while(ms--)
  310.     {
  311.       
  312.       while( !(TIM2_SR1 & 0x01)); //等待計數是否達到1毫秒
  313.       TIM2_SR1 &= ~(0x01);  //計數完成1毫秒,清除相應的標志
  314.     }
  315.      TIM2_CR1 = 0x00;       //延時全部結束,關閉定時器2
  316. }

  317. /*******************************************************************************
  318. **函數名稱:void delay(unsigned int ms)
  319. **功能描述:大概延時
  320. **入口參數:unsigned int ms   輸入大概延時數值
  321. **輸出:無
  322. *******************************************************************************/
  323. void delay(unsigned int ms)
  324. {
  325.   unsigned int x , y;
  326.   for(x = ms; x > 0; x--)           /*  通過一定周期循環進行延時*/
  327.     for(y = 1000 ; y > 0 ; y--);
  328. }

  329. /*******************************************************************************
  330. **函數名稱:void V_Show()
  331. **功能描述:在數碼管上顯示電壓值
  332. **入口參數:ms:每個數碼管延時。顯示數據存儲在 ADCBuff[2] - ADCBuff[0]
  333. **輸出:無
  334. *******************************************************************************/
  335. void V_Show(unsigned int ms)
  336. {
  337.   SMG1_Display(ADCBuff[2]);   //顯示V百位
  338.   if(vDotPS==2) PC_ODR |=0x20;    //PC5置高,h點
  339.   PD_ODR &=0xef;    //PD4置低 V百位選通
  340.   delay(ms);
  341.   SMG1_Display(ADCBuff[1]);   //顯示V十位
  342.   if(vDotPS==1) PC_ODR |=0x20;    //PC5置高,h點
  343.   PD_ODR &=0xbf;    //PD6置低 V十位選通
  344.   delay(ms);
  345.   SMG1_Display(ADCBuff[0]);   //顯示V個位
  346.   PD_ODR &=0xdf;    //PD5置低 V個位選通
  347.   delay(ms);
  348. }

  349. /*******************************************************************************
  350. **函數名稱:void I_Show()
  351. **功能描述:在數碼管上顯示電流值
  352. **入口參數:ms:每個數碼管延時。顯示數據存儲在 ADCBuff[5] - ADCBuff[3]
  353. **輸出:無
  354. *******************************************************************************/
  355. void I_Show(unsigned int ms)
  356. {
  357.   SMG1_Display(ADCBuff[5]);   //顯示A百位
  358.   if(cDotPS==5) PC_ODR |=0x20;    //PC5置高,h點
  359.   PB_ODR &=0xdf;    //PB5置低,I百位選通
  360.   delay(ms);
  361.   SMG1_Display(ADCBuff[4]);   //顯示A十位
  362.   if(cDotPS==4) PC_ODR |=0x20;    //PC5置高,h點
  363.   PB_ODR &=0xe0;    //PB4置低,I十位選通
  364.   delay(ms);
  365.   SMG1_Display(ADCBuff[3]);   //顯示A個位
  366.   PA_ODR &=0xfd;    //PA1置低,I個位選通
  367.   delay(ms);
  368. }


  369. /*    主函數    */
  370. int main(void)
  371. {
  372.   //asm("sim");             //關閉系統總中斷
  373.   CLK_CKDIVR = 0x00;      //CPUDIV = 1 HSIDIV = 1  內部時鐘 = 16Mhz
  374.   GPIO_Init0();
  375.   ADC_Init();             //調用ADC初始化函數
  376.   //TIM2_Init();
  377.   //Timer4Init();           //初始化定時器4
  378.   //asm("rim");             //打開系統總中斷
  379.   while(1)
  380.   {
  381.     //if(adcflag == 1)                        //1秒定時時間到對使能ADC進行采樣
  382.     //{
  383.       //asm("sim");                           //關系統總中斷

  384.     voltRAW = Ad_Av(4)[0];      //獲取電壓數據
  385.     if(vFlag==1){       //電壓數據采集完成才進行以下計算,否則跳過,將顯示上次數據
  386.       vFlag=0;
  387.       newData[0] = ProcessVoltage(voltRAW);
  388.       Noise_Filter(0.5, 0, preCoef, preTrend, ADvalue, newData);
  389.       //ADvalue[0] = newData[0];        //不要上面的濾波時使用
  390.       mV = (unsigned long)(ADvalue[0]*1000);
  391.       if(mV > 9999){
  392.         vDotPS=1;
  393.         ADCBuff[0] = mV / 100 % 10;     //0.1V
  394. ……………………

  395. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
STM8S_VIMeter.zip (1.16 MB, 下載次數: 803)



評分

參與人數 5黑幣 +127 收起 理由
BigWheels + 6 很給力!
csy1991hf + 10 很給力!
wlxf + 1 剛好可以用到,多謝分享
qjzyx + 10 高手,向你學習!
admin + 100 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:55317 發表于 2018-1-16 11:35 | 只看該作者
多謝分享,好資料,51黑有你更精彩!!!
回復

使用道具 舉報

板凳
ID:266116 發表于 2018-1-16 14:18 | 只看該作者
謝謝分享!
回復

使用道具 舉報

地板
ID:98894 發表于 2018-1-21 19:27 | 只看該作者
謝謝分享
回復

使用道具 舉報

5#
ID:98894 發表于 2018-1-21 19:27 | 只看該作者
不錯,挺好的資料
回復

使用道具 舉報

6#
ID:289512 發表于 2018-3-9 16:18 | 只看該作者
高手,謝謝樓主的分享。。。。。
回復

使用道具 舉報

7#
ID:296060 發表于 2018-4-9 17:01 | 只看該作者
感謝分享,學習下!!
回復

使用道具 舉報

8#
ID:44037 發表于 2018-4-10 07:03 | 只看該作者
謝謝樓主的分享。。。學習  學習
回復

使用道具 舉報

9#
ID:307026 發表于 2018-4-12 23:45 | 只看該作者
感謝分享
回復

使用道具 舉報

10#
ID:314905 發表于 2018-4-24 13:36 | 只看該作者
感謝分享,電壓表壞了可以修理了。
回復

使用道具 舉報

11#
ID:202897 發表于 2018-6-7 13:22 | 只看該作者
樓主請教:輸入VGain = 35,是如何計算的?tmpin * 3.3 * VGain / 1023
回復

使用道具 舉報

12#
ID:202897 發表于 2018-6-7 14:11 | 只看該作者
看明白了,輸入電壓又被分壓270/8.2=33,10K調節到軟件設定35
回復

使用道具 舉報

13#
ID:378605 發表于 2018-10-11 20:08 | 只看該作者
謝謝分享
回復

使用道具 舉報

14#
ID:239055 發表于 2018-11-17 16:00 來自觸屏版 | 只看該作者
我手上也有一個和你相似的電壓電流模塊,程序有沒有編譯好的?燒寫用什么軟件?
回復

使用道具 舉報

15#
ID:171207 發表于 2018-11-29 11:55 | 只看該作者

好東西要學習
回復

使用道具 舉報

16#
ID:437372 發表于 2018-12-1 21:23 | 只看該作者
多謝分享,好資料,51黑有你更精彩!!!
回復

使用道具 舉報

17#
ID:246635 發表于 2018-12-5 20:26 | 只看該作者
謝謝分享,我能直接照做一個吧
回復

使用道具 舉報

18#
ID:149992 發表于 2018-12-25 16:05 | 只看該作者
多謝分享,好資料,51黑有你更精彩!!!
回復

使用道具 舉報

19#
ID:149992 發表于 2018-12-30 14:20 | 只看該作者
去某寶買了這個一樣的表,到手居然MCU居然換成了新唐芯片,自己動手換芯片,換芯片后顯示正常,但是測量USB5v電壓個位數跳的厲害。
回復

使用道具 舉報

20#
ID:466148 發表于 2019-1-19 17:44 來自觸屏版 | 只看該作者
請問如果想還輸出一路pwm,要用那個腳可以用?本人剛接觸stm8,菜鳥中的雛鳥,望不要見笑。
回復

使用道具 舉報

21#
ID:104974 發表于 2019-1-31 15:59 | 只看該作者
剛好可以用到,多謝分享!
回復

使用道具 舉報

22#
ID:33899 發表于 2019-2-27 09:17 | 只看該作者
樓主厲害,需要里面的濾波函數,學習學習樓主
回復

使用道具 舉報

23#
ID:33899 發表于 2019-2-27 09:21 | 只看該作者
就是有點貴啊
回復

使用道具 舉報

24#
ID:33899 發表于 2019-2-27 19:50 | 只看該作者
很好用,濾波函數已經移植到我的軟件里面,效果很明顯,如下圖

8a06e681e54af0857ba03a563e4a0f8.png (36.51 KB, 下載次數: 180)

8a06e681e54af0857ba03a563e4a0f8.png
回復

使用道具 舉報

25#
ID:488256 發表于 2019-3-11 01:09 | 只看該作者
感謝分享~正需要學習下!
回復

使用道具 舉報

26#
ID:488949 發表于 2019-3-13 03:43 來自觸屏版 | 只看該作者
我這個單片機芯片型號被可惡的商家搽掉了!跟你說的差不多。電壓還行,電流不回零。重新刷代碼行嗎?
回復

使用道具 舉報

27#
ID:489675 發表于 2019-3-13 09:17 來自觸屏版 | 只看該作者
謝謝樓主,下載了
回復

使用道具 舉報

28#
ID:490467 發表于 2019-3-14 10:01 | 只看該作者
很好的教程說明,感謝,可以多多學習了
回復

使用道具 舉報

29#
ID:466148 發表于 2019-3-15 17:21 來自觸屏版 | 只看該作者
我買的芯片型號也擦掉了,按stm8s003、103都讀不了,關鍵是聯系不上設備,還有辦法嗎?
回復

使用道具 舉報

30#
ID:499770 發表于 2019-3-29 21:29 | 只看該作者
謝謝樓主的分享
回復

使用道具 舉報

31#
ID:236621 發表于 2019-4-3 23:36 | 只看該作者
謝謝分享
回復

使用道具 舉報

32#
ID:149630 發表于 2019-4-19 20:45 | 只看該作者
感謝,學習了
回復

使用道具 舉報

33#
ID:275144 發表于 2019-4-24 10:23 | 只看該作者

請問大師們,按上圖原理圖電壓表頭怎么沒電壓顯示呢
回復

使用道具 舉報

34#
ID:536468 發表于 2019-5-13 13:13 | 只看該作者
lixianshen 發表于 2019-3-15 17:21
我買的芯片型號也擦掉了,按stm8s003、103都讀不了,關鍵是聯系不上設備,還有辦法嗎?

因為供電的問題嗎
回復

使用道具 舉報

35#
ID:536468 發表于 2019-5-13 14:52 | 只看該作者
lixianshen 發表于 2019-1-19 17:44
請問如果想還輸出一路pwm,要用那個腳可以用?本人剛接觸stm8,菜鳥中的雛鳥,望不要見笑。

請問可以嗎重新輸出?
回復

使用道具 舉報

36#
ID:536468 發表于 2019-5-13 14:53 | 只看該作者
lixianshen 發表于 2019-3-15 17:21
我買的芯片型號也擦掉了,按stm8s003、103都讀不了,關鍵是聯系不上設備,還有辦法嗎?

這個板子接到電腦上的接線圖可以分享一下嗎謝謝
回復

使用道具 舉報

37#
ID:536468 發表于 2019-5-13 14:54 | 只看該作者
請問這個板子怎么接到電腦上進行燒錄啊
回復

使用道具 舉報

38#
ID:541986 發表于 2019-5-19 16:15 | 只看該作者
好資料,謝謝分享!
回復

使用道具 舉報

39#
ID:510119 發表于 2019-5-27 15:55 | 只看該作者
ccy1231 發表于 2019-4-24 10:23
請問大師們,按上圖原理圖電壓表頭怎么沒電壓顯示呢

你也在弄這個電壓電流表嗎,我試了,不能用
回復

使用道具 舉報

40#
ID:56665 發表于 2019-5-27 17:52 | 只看該作者
謝謝樓主的分享
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
日韩精品久久久久久| 一区二区亚洲欧洲国产日韩| 国语精品一区| gogo久久| 九九大香尹人视频免费| 国产精品suv一区| 亚洲中文字幕久久精品无码喷水| 国产精品美女在线| 日韩欧美国产系列| 欧美国产精品久久| 欧美激情一级片一区二区| 欧美日韩五区| 亚洲成人av在线影院| 热re66久久精品国产99热| 黄色片子在线观看| 欧美日韩在线免费播放| 农村寡妇一区二区三区| 精品久久久av| 色综合久久综合| aaa欧美色吧激情视频| 最新欧美人z0oozo0| **日韩最新| 97caopron在线视频| 蜜芽在线视频| 国产成a人亚洲精v品无码 | y97精品国产97久久久久久| 精品国产福利在线| 久久亚区不卡日本| 日韩av在线发布| 欧美日韩高清| 天堂久久一区| 色偷偷色偷偷色偷偷在线视频| 国产真实伦在线观看| 欧美多人猛交狂配| 国产主播中文字幕| 国产免费一区二区三区四在线播放| 成人福利网站在线观看| 久久国产视频网站| 欧美一区二区三区公司| 亚洲国产视频在线| 成人91在线观看| 蜜桃视频一区| 在线观看日韩av电影| 日韩大胆成人| www欧美在线观看| 少妇视频在线观看| 国产中文字幕在线播放| 福利电影导航| 午夜羞羞视频| 国产大片在线观看| 国产欧美丝袜| 欧美xxxxxbbbbb| 综合在线亚洲| 综合久久2023| 国产成人精品aa毛片| 亚洲另类图片色| 别急慢慢来1978如如2| 无码少妇一区二区| 国产精品九九九九| 国产探花在线观看| 精品一区二区在线看| 亚洲国产精品热久久| 国产一区二区三区在线| 国产精品观看在线亚洲人成网| 久草热视频在线观看| 欧美日韩亚洲国产另类| 中文字幕在线播放视频| 国语对白做受xxxxx在线中国| av成人在线电影| 无码专区aaaaaa免费视频| 四虎影院在线免费播放| 男人天堂午夜在线| 亚洲国产一区二区精品专区| 亚洲欧美制服丝袜| av影院在线播放| 亚洲欧美韩国| caoporn国产精品免费视频| 国产免费专区| 日本成本人片免费观看| 情趣网站视频在线观看| 网址你懂得在线观看| 米奇777在线影院线| 三级黄色网址| 欧美日韩在线精品一区二区三区激情综| 秋霞福利视频| 在线资源av| av在线播放网| 18video性欧美19sex高清| 性国裸体高清亚洲| 经典三级一区二区| 91丨精品丨国产| 成人福利一区| 欧洲杯什么时候开赛| 亚洲精品在线观看91| 亚洲国产一区二区三区a毛片| 香蕉久久国产| 国产精品系列在线观看| 久久五月婷婷丁香社区| 日韩一区在线看| 欧美日韩国产专区| 日韩一区二区影院| 中文字幕无线精品亚洲乱码一区 | 91蜜桃在线视频| 免费观看亚洲| 粉嫩精品导航导航| 欧美成人自拍| 老司机精品视频一区二区三区| 成人免费观看视频| 亚洲图片欧美视频| 精品日韩欧美在线| 欧美精品生活片| 91精品国产综合久久久久久久久| 国产精品久久久久久久小唯西川 | 亚洲自拍偷拍在线| 亚洲欧洲日韩综合二区| 久久午夜夜伦鲁鲁一区二区| 在线免费看黄色片| 久久综合亚洲色hezyo国产| 亚洲专区在线播放| 欧美色黄视频| 免费裸体视频网站| 免费a级在线播放| 国产欧美自拍| 希岛爱理av一区二区三区| 日本成人在线视频网站| 久久久久久久久久久黄色 | 久久99精品久久久久久青青日本| 一区二区不卡在线| 国产 porn| 亚洲ⅴ国产v天堂a无码二区| 欧美男人天堂网| 高清av中文在线字幕观看1| 天天综合网天天做天天受| 日本在线人成| 中文字幕日韩在线| 久久成人免费| 专区另类欧美日韩| 亚洲国产成人精品电影| 69视频在线免费观看| 欧美成人一区二区在线| 99视频在线免费| 欧美亚洲色综久久精品国产| 国产免费黄色录像| www在线视频观看| 五月婷婷视频在线观看| 亚洲毛片免费看| 麻豆国产欧美日韩综合精品二区| 一区二区三区四区蜜桃| 日韩av在线天堂网| 成人福利在线观看| 99色精品视频| 国产美女久久久久久| 天天色棕合合合合合合合| 毛片.com| 久草综合在线| 国产精品腿扒开做爽爽爽挤奶网站| 久久男人中文字幕资源站| 欧美日韩一区精品| 97色在线播放视频| 老司机av福利| 中国美女乱淫免费看视频| 一二三四区在线| 男人资源网站| 日本美女久久| 老色鬼久久亚洲一区二区| 亚洲激情中文1区| 中文字幕欧美在线| 欧美日韩在线精品一区二区三区| 午夜视频在线免费看| 中文字幕一区二区人妻痴汉电车| 日本dvd播放| 极品美鲍一区| 影音先锋一区| 亚洲一卡二卡三卡四卡| 日韩一区二区av| 亚洲一二三区在线| 黄色一级片一级片| 男人精品网站一区二区三区| 操你啦在线视频| 91tv官网精品成人亚洲| 自拍视频在线观看一区二区| 色妞在线综合亚洲欧美| 在线观看成人av电影| 午夜精品久久久久99蜜桃最新版| 日韩欧美在线视频一区二区| 国产原创精品视频| 欧美日韩a区| 亚洲国产精品一区二区久久恐怖片 | 亚洲激情网址| 性久久久久久久久久久久| 韩国三级日本三级少妇99| 欧美 日韩 国产在线观看| 中文字幕第15页| 男男gay免费网站| 北条麻妃一区二区三区在线观看| 成人三级在线视频| 亚洲欧美成人在线| 欧美 日韩 国产 在线观看| 国语对白在线播放| xfplay每日更新av资源| 一区二区三区国产好| 91蜜桃在线观看| 久久久国产精品免费| 18禁免费观看网站| 中文天堂在线播放| 免费国产在线观看| 欧美日韩三级电影在线| 色综合久久久久久久| 成人黄色大片在线免费观看| 亚洲欧美在线不卡| 国产精品69一区二区三区| 日韩精品第一| 久久网站热最新地址| 久久久久久久久久av| 三级av免费观看| 中国女人精69xxxxxx视频| 欧美aa在线观看| 国产成人综合亚洲网站| 一区国产精品视频| www.com毛片| 二区三区在线视频| 黄视频免费在线看| 成人免费视频app| 九九热精品视频| 中文字幕一区二区三区四| 欧美性xxxx极品hd欧美| 亚洲黑人在线| 国产精品免费看片| 国产精品日韩专区| 先锋影音av在线| 成人高清免费| 久久久久国产精品| 四虎精品视频| 国产一区二区三区视频| 日本电影全部在线观看网站视频| 国产欧美日韩精品在线观看| 国产有码在线| 97超级碰碰碰| 在线播放亚洲一区| 欧美一区亚洲二区| 日韩成人一区二区三区| 在线免费中文字幕| 亚洲精品社区| 日韩精品中文字幕在线观看| 霍思燕三级露全乳照| 亚洲欧美黄色片| 成人全视频在线观看在线播放高清 | 天堂资源中文在线| 视频一区在线视频| 中文字幕亚洲欧美日韩在线不卡| 国产一二三区av| 污的视频网站| 成人情趣视频| 欧美成人一区二区三区在线观看| 亚洲 欧美 综合 另类 中字| 欧美 日韩 国产 成人 在线| 久久天天久久| 亚洲国产精品一区二区www| 精品伊人久久大线蕉色首页| 无码人妻久久一区二区三区| 97超碰资源站在线观看| 成人av动漫在线| 国产极品jizzhd欧美| 强制高潮抽搐sm调教高h| 九色网友自拍视频手机在线| 美女一区二区三区在线观看| 欧美激情免费在线| jizz日本在线播放| aiai在线| 91丨porny丨中文| 亚洲bt欧美bt日本bt| 国产精品久久久久久人| 高清精品在线| 一区二区三区视频在线观看| 日本精品一区二区| 无码国产精品一区二区免费16| 成人av激情人伦小说| 91麻豆精品国产91久久久资源速度| 国产二区视频在线播放| 日批视频网站| 在线午夜精品| 欧美激情久久久| 成人免费视频网站入口::| 8888四色奇米在线观看| 久久―日本道色综合久久| 国产亚洲情侣一区二区无| 精品人妻无码一区二区色欲产成人| 精品久久亚洲| 欧美一区三区四区| 国产精品嫩草影视| 五月天天在线| 久久夜色精品国产噜噜av| 精品福利影视| 澳门永久av免费网站| 国产精品成人av| 久热在线中文字幕色999舞| 青青青视频在线免费观看| 伊人春色在线观看| 亚洲一区二区视频在线观看| 天天想你在线观看完整版电影免费| 国产网站麻豆精品视频| 亚洲视频精品| 国模私拍一区二区三区| 亚洲一区 视频| 久久女人天堂| 欧美精品一区二区精品网| 中文字幕精品视频在线| 麻豆传媒在线免费| 夜色激情一区二区| www.av中文字幕| t66y最新发布地址| 91在线最新| 毛片在线免费视频| 欧美男人的天堂| 日本高清成人免费播放| 97一区二区国产好的精华液| 青草青青国产| 成人免费在线小视频| 亚洲日本aⅴ片在线观看香蕉| 国产精品一级在线| sm捆绑调教国产免费网站在线观看| 一本到在线视频| 人人妻人人做人人爽| 中文字幕一区二区三区电影| 精品在线一区二区| 免费在线毛片| 久久精品国产亚洲av麻豆蜜芽| 日韩av电影在线观看| 欧美日韩性生活视频| 成人爽a毛片| 91caopron| 日本www.色| 日韩在线欧美在线国产在线| 国产精品主播直播| 91九色porn在线资源| 亚洲日韩色图| 黄色精品视频在线观看| 不卡一区二区三区四区五区| 欧美丰满高潮xxxx喷水动漫| 一区二区三区中文字幕| 久久在线免费观看| 午夜国产精品视频免费体验区| 国产黄色在线| 日韩在线观看视频一区二区三区| www.午夜av| 成人在线免费观看视视频| 欧美日本韩国一区二区三区视频| 雨宫琴音一区二区三区| 韩国日本一区| 国内精品免费视频精选在线观看| 黄色片网站免费| 国产91在线亚洲| 性欧美激情精品| 欧美精品vⅰdeose4hd| 国产二区国产一区在线观看| 久久国产精品免费精品3p| 午夜在线观看91| 性欧美极品另类| 亚洲成人av影片| 波多野结衣三级视频| 亚洲春色在线视频| 国产精品久久久久久av福利| 日韩视频在线你懂得| 久久久久久久网| 久久久av毛片精品| 欧美亚洲一级| 69堂免费精品视频在线播放| 久热精品免费视频| 九热这里只有精品| 亚洲一区日韩精品| 91猫先生在线| 黄色性视频网站| 精品无码久久久久久久久| 妺妺窝人体色www聚色窝仙踪 | 一道本无吗一区| 欧美精品导航| 国产专区一区二区| 国产性一级片| 欧美日韩中文在线| 性猛交娇小69hd| 成人香蕉社区| 三级小说欧洲区亚洲区| 图片区小说区亚洲| 天堂在线免费av| 羞羞的视频免费| x88av蜜桃臀一区二区| 国产成人精品综合网站| www.污视频| 国产精品一品二区三区的使用体验| 国产福利拍拍拍| 国产精品久久久午夜夜伦鲁鲁| wwww.国产| 国产日韩欧美日韩大片| 成人在线一区二区| 国产精品99久久久久久大便| 天堂av手机在线| 日批视频免费在线观看| 91九色porn| 大香伊人久久| 亚洲精品久久|