亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

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

QQ登錄

只需一步,快速開始

搜索
查看: 7200|回復(fù): 9
收起左側(cè)

51單片機(jī)的RLC自動(dòng)測(cè)量電路+程序設(shè)計(jì)

  [復(fù)制鏈接]
ID:465223 發(fā)表于 2019-3-12 16:46 | 顯示全部樓層 |閱讀模式
普渡眾生哈哈哈,交流交流,(5元買的,大家有積分就闊以下載哦)
傳統(tǒng)的RLC參數(shù)測(cè)量的方法種類很多,例如:直接用歐姆表測(cè)量電阻,或者對(duì)電阻兩端施加一定的電壓,利用電流表測(cè)得流過的電流值,再按照歐姆定理計(jì)算出電阻值;而對(duì)電感或電容的測(cè)試采用測(cè)量阻抗角和負(fù)阻抗,然后利用數(shù)學(xué)公式計(jì)算出電容和電抗的參數(shù)。此外還可以采用過渡過程分析方法,此方法用于計(jì)算含有儲(chǔ)能元器件L、C的電路的時(shí)間常數(shù),因研究的是一個(gè)電路從一個(gè)穩(wěn)態(tài)過渡到另一個(gè)穩(wěn)態(tài),此方法涉及到初始值穩(wěn)態(tài)值等數(shù)據(jù)。算出時(shí)間常數(shù),由于電路中使用已知的固定的電阻,所以可以通過公式,計(jì)算得出電抗參數(shù)。在要求測(cè)試準(zhǔn)確度高的情況下還可以采用交流電橋法,通過調(diào)整已知參數(shù)使得電橋達(dá)到平衡,讀出電感或電容值。以上方法必須采用手工操作,而且有些方法需要測(cè)量多個(gè)數(shù)據(jù),再進(jìn)行人工計(jì)算,準(zhǔn)確度不大,且太費(fèi)時(shí)費(fèi)力。在這種情況下,數(shù)字式的RLC測(cè)量?jī)x應(yīng)運(yùn)而生。

電路原理圖如下:
0.png

單片機(jī)源程序如下:
  1. #include <reg51.h>
  2. #include"lcd.h"
  3. #include <stdio.h>                                          
  4. /*******************************************************************/
  5. /*宏定義 特征值
  6. /******************************************************************/
  7. #define RS_1 4078852                  //特征值  //328852   通過文獻(xiàn)中的公式計(jì)算出的值
  8. #define RS_2 60134752                                        //72134752
  9. #define CS_1 45067376                                    //36067376
  10. #define CS_2 8208983                                    //48089834
  11. #define LS   545077                                            //445077 通過示波器測(cè)220uh,顯示的頻率反推出的值
  12. /*******************************************************************/
  13. /*I/O口申明
  14. /******************************************************************/
  15. sbit A1 = P2^0;                                  //模擬開關(guān)地址位
  16. sbit B1 = P2^1;                              

  17. sbit kr        = P2^2;                                  //電阻擋
  18. sbit kc = P2^3;                                  //電容擋
  19. sbit kl = P2^4;           //按鍵          //電感擋

  20. sbit sr = P1^0;                                  //繼電器1 控制電阻換擋
  21. sbit sc = P1^1;           //繼電器          //繼電器2 控制電容換擋
  22. /*******************************************************************/
  23. /*變量定義
  24. /******************************************************************/
  25. uint tval = 0,f = 0,sr_f = 0,sc_f = 0,ft = 0,ff = 0;  //tval測(cè)量值,f元件標(biāo)志位,sr_f電阻繼電器標(biāo)志位,Sc_f電容繼電器標(biāo)志位,頻率標(biāo)志位
  26. unsigned long rs = RS_1,cs = CS_1,ls=LS,value = 0;   //特征值初始化

  27. /*********************************************************************/
  28. /*子函數(shù)定義
  29. /********************************************************************/

  30. /****************************************/
  31. /* 函數(shù)名:unsigned int read()
  32. /* 功能:  讀取計(jì)數(shù)器中的值
  33. /* 輸入: 無
  34. /* 輸出: 計(jì)數(shù)器中的數(shù)值
  35. /****************************************/
  36. uint read(){
  37.         uchar tl,th1,th2;
  38.         uint val;
  39.         while(1){
  40.                 th1=TH0;
  41.                 tl=TL0;
  42.                 th2=TH0;                        
  43.                 if(th1==th2)                          //保證MCU計(jì)數(shù)器工作正常
  44.                         break;
  45.         }
  46.         val=(th1<<8)+tl;                          
  47.         return val;
  48. }
  49. /****************************************/
  50. /* 函數(shù)名:unsigned int LcdDisplayInt(unsigned int num)
  51. /* 功能:  打印數(shù)字
  52. /* 輸入: 數(shù)值
  53. /* 輸出:LCD打印INT數(shù)字
  54. /****************************************/
  55. unsigned int LcdDisplayLong(unsigned long num){
  56.         unsigned char buff[11]=NULL;
  57.         unsigned int len,i;
  58.         len = sprintf(buff,"%ld",num);
  59.         for(i=0;i<len;i++){
  60.                 LcdWriteData(buff[i]);        
  61.         }
  62.         return 1;
  63. }
  64. /****************************************/
  65. /* 函數(shù)名:        void measure_R()
  66. /* 功能: 測(cè)量R
  67. /* 輸入: 特征值
  68. /* 輸出:  電阻值
  69. /****************************************/
  70. unsigned long measure_R(uint fx,unsigned long rs){
  71.    unsigned long R = 0,fr=0;
  72.    fr=ff*65535+fx;
  73.    ff=0;
  74.    if(fr != 0) R=rs/fr-110;        
  75.    return R;
  76. }
  77. /****************************************/
  78. /* 函數(shù)名:        void measure_C()
  79. /* 功能: 測(cè)量C
  80. /* 輸入: 特征值
  81. /* 輸出: 電容值
  82. /****************************************/
  83. unsigned long measure_C(uint fx,unsigned long cs){
  84.    unsigned long C = 0,fc=0;
  85.    fc=ff*65535+fx;
  86.    ff=0;
  87.    if(fc != 0) C=cs/fc;
  88.    return C;
  89. }
  90. /****************************************/
  91. /* 函數(shù)名:        void measure_L()
  92. /* 功能: 測(cè)量L
  93. /* 輸入: 特征值
  94. /* 輸出: 電感值
  95. /****************************************/
  96. unsigned long measure_L(uint fx,unsigned long ls){
  97.    unsigned long L = 0,L1 = 0,fl = 0;
  98.    fl=ff*65535+fx;
  99.    ff=0;
  100.    if(fl != 0){ L1=ls/fl;L=L1*L1;}
  101.    return L;
  102. }
  103. /****************************************/
  104. /* 函數(shù)名:        detection()
  105. /* 功能: 按鍵檢測(cè)
  106. /* 輸入: 無
  107. /* 輸出: 無
  108. /****************************************/
  109. void detection(){
  110.         //按鍵檢測(cè)         0為電阻 1為電電容 2為電感
  111.         if(kr == 0)                         { f = 0; A1 = 0;B1 = 0;}
  112.         else if(kc == 0)                 { f = 1; A1 = 0;B1 = 1;}        
  113.         else if(kl == 0)                 { f = 2; A1 = 1;B1 = 0;}                                                
  114. }
  115. /****************************************/
  116. /* 函數(shù)名:        measure()
  117. /* 功能: 測(cè)量
  118. /* 輸入: 無
  119. /* 輸出: 無
  120. /****************************************/
  121. void measure(){
  122.         switch (f){
  123.                 case 0:         //電阻測(cè)量
  124.                                 LcdWriteData('R');
  125.                                 LcdWriteData(':');
  126.                                 //電阻換擋
  127.                                 value = measure_R(tval,rs);
  128.                                 if(value >= 1000 && sr_f == 0) {
  129.                                         sr = 1;
  130.                                         rs = RS_2;
  131.                                         sr_f = 1;
  132.                                 }
  133.                                 else if(value < 1000 && sr_f == 1){
  134.                                         sr = 0;
  135.                                         rs = RS_1;
  136.                                         sr_f = 0;
  137.                                 }
  138.                                 value = measure_R(tval,rs);
  139.                         //        LcdDisplayLong(sr_f);                                 //顯示檔位
  140.                         //        LcdWriteData(':');
  141.                                 break;

  142.                 case 1:         //電容測(cè)量
  143.                                 LcdWriteData('C');
  144.                                 LcdWriteData(':');
  145.                                 value = measure_C(tval,cs);
  146.                                 //電容換擋
  147.                                 if(value < 1000 && sc_f == 0){
  148.                                         sc = 1 ;
  149.                                         cs = CS_2;
  150.                                         sc_f = 1;
  151.                                 }
  152.                                 else if(value >= 1000 && sc_f == 1){
  153.                                         sc = 0;
  154.                                         cs = CS_1;
  155.                                         sc_f = 0;
  156.                                 }
  157.                                 value = measure_C(tval,cs);
  158.                                 break;

  159.                 case 2:        //電感測(cè)量
  160.                                 LcdWriteData('L');
  161.                                 LcdWriteData(':');
  162.                                 value = measure_L(tval,ls);
  163.                                 break;

  164.                                 default:
  165.                                 break;
  166.                         }
  167. }
  168. /****************************************/
  169. /* 函數(shù)名:        unit()
  170. /* 功能:顯示單位
  171. /* 輸入: 無
  172. /* 輸出: 無
  173. /****************************************/
  174. void unit(){
  175.         switch (f){
  176.                 case 0:
  177.                                 LcdWriteData(' ');
  178.                                 LcdWriteData('O');
  179.                                 LcdWriteData('H');
  180.                                 LcdWriteData('M');
  181.                                 break;

  182.                 case 1:
  183.                                 LcdWriteData(' ');
  184.                                 LcdWriteData('P');
  185.                                 LcdWriteData('F');
  186.                                 break;

  187.                 case 2:
  188.                                 LcdWriteData(' ');
  189.                                 LcdWriteData('U');
  190.                                 LcdWriteData('H');
  191.                                 break;

  192.                                 default:
  193.                                 break;
  194.         }
  195. }
  196. /****************************************/
  197. /* 函數(shù)名:Init()
  198. /* 功能:初始化
  199. /* 輸入: 無
  200. /* 輸出: 無
  201. /****************************************/
  202. void Init(){
  203.         TMOD = 0x15;                                        //設(shè)置計(jì)數(shù)器和計(jì)時(shí)器1的工作模式
  204.         //Falg初始化
  205.         f = 0;
  206.         //配置中斷
  207.         EA = 1;
  208.         ET0 = 1;
  209.         ET1 = 1;
  210.         //初始化計(jì)數(shù)器
  211.         TH0 = 0;
  212.         TL0 = 0;
  213.         TR0 = 1;
  214.         //初始化定時(shí)器
  215.         TH1 = (65536-45782)/256;
  216.         TL1 = (65536-45782)%256;
  217.         TR1 = 1;
  218.         //初始化開關(guān)
  219.         A1 = 0;
  220.         B1 = 0;
  221.         //初始化繼電器
  222.         sr = 0;
  223.         sc = 0;
  224. }

  225. /*********************************************************************/
  226. /*主函數(shù)
  227. /********************************************************************/

  228. /****************************************/
  229. /* 函數(shù)名:void main()
  230. /* 功能: 主函數(shù)
  231. /* 輸入: 無
  232. /* 輸出: 無
  233. /****************************************/
  234. void main(){
  235.         //延時(shí)以便增加電路穩(wěn)定
  236.         Lcd1602_Delay1ms(1000);
  237.         Lcd1602_Delay1ms(1000);
  238.            LcdInit();
  239.     Init();
  240.         //=======初始化完成=======
  241.                
  242.         //主循環(huán)
  243.         while(1){
  244.                 detection();        //按鍵檢測(cè)
  245.                 //屏幕顯示
  246.                 Lcd1602_Delay1ms(1000);                //延時(shí)1S
  247.                 LcdWriteCom(0x01);                        //清屏
  248.                 LcdWriteCom(0x80);                        //設(shè)置指針起點(diǎn)
  249.                 measure();                                        //測(cè)量
  250.                 LcdDisplayLong(value);                //顯示值
  251.                 unit();                                                //顯示單位               
  252.         }

  253. }

  254. /*********************************************************************/
  255. /*中斷子函數(shù)
  256. /********************************************************************/

  257. /****************************************/
  258. ……………………

  259. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
0.png

所有資料51hei提供下載:
2.電路城資料.rar (327.8 KB, 下載次數(shù): 128)


評(píng)分

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

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:1 發(fā)表于 2019-3-16 02:25 | 顯示全部樓層
好資料,51黑有你更精彩!!!
回復(fù)

使用道具 舉報(bào)

ID:135915 發(fā)表于 2019-3-16 11:56 | 顯示全部樓層
很好,贊
回復(fù)

使用道具 舉報(bào)

ID:491577 發(fā)表于 2019-3-16 12:26 | 顯示全部樓層
這個(gè)只是適合學(xué)習(xí)用,了解一下LRC測(cè)量原理是可以的,實(shí)用誤差太大。真正LRC測(cè)量重點(diǎn)在模擬電路部分,準(zhǔn)確度是由模擬電路來保證的,單片機(jī)只是計(jì)算,顯示而已。
回復(fù)

使用道具 舉報(bào)

ID:454000 發(fā)表于 2019-3-16 13:21
你想要多少幣?最好你多少來多發(fā)言,談?wù)勛约旱膯栴},或幫別人解決問題

ID:465223 發(fā)表于 2019-3-23 10:29 | 顯示全部樓層
hhh402 發(fā)表于 2019-3-16 12:26
這個(gè)只是適合學(xué)習(xí)用,了解一下LRC測(cè)量原理是可以的,實(shí)用誤差太大。真正LRC測(cè)量重點(diǎn)在模擬電路部分,準(zhǔn)確度 ...

說得對(duì),這個(gè)只是一個(gè)原理,要是高精度的話那肯定需要做出很大的改進(jìn)的
回復(fù)

使用道具 舉報(bào)

ID:380985 發(fā)表于 2019-4-7 18:13 來自觸屏版 | 顯示全部樓層
好資料
回復(fù)

使用道具 舉報(bào)

ID:465223 發(fā)表于 2019-4-16 16:42 | 顯示全部樓層
hhh402 發(fā)表于 2019-3-16 12:26
這個(gè)只是適合學(xué)習(xí)用,了解一下LRC測(cè)量原理是可以的,實(shí)用誤差太大。真正LRC測(cè)量重點(diǎn)在模擬電路部分,準(zhǔn)確度 ...

這個(gè)有一個(gè)可以調(diào)節(jié)誤差的參數(shù),但是需要程序上分類討論,可能很麻煩,但是確實(shí)是一種改進(jìn)誤差的方法
回復(fù)

使用道具 舉報(bào)

ID:511461 發(fā)表于 2019-8-7 21:32 | 顯示全部樓層
精度能達(dá)到多少
回復(fù)

使用道具 舉報(bào)

ID:741786 發(fā)表于 2020-4-30 15:48 | 顯示全部樓層
過的
下順德區(qū)
回復(fù)

使用道具 舉報(bào)

11#
無效樓層,該帖已經(jīng)被刪除
12#
無效樓層,該帖已經(jīng)被刪除
ID:626187 發(fā)表于 2020-11-20 14:33 | 顯示全部樓層
請(qǐng)問這個(gè)電阻、電容的換擋測(cè)量范圍是多少?
回復(fù)

使用道具 舉報(bào)

14#
無效樓層,該帖已經(jīng)被刪除

本版積分規(guī)則

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

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

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