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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

RLC電阻電容電感測量儀Proteus仿真及源程序

  [復制鏈接]
跳轉到指定樓層
樓主
下面是RLC電阻電容電感測量儀的仿真原理圖:




仿真工程文件及源程序下載:
RLC測量儀.rar (71.66 KB, 下載次數: 717)


這個簡單的萬用表采用單片機控制,用lcd1602顯示屏來顯示.下面是部分源程序預覽:
  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #define uchar unsigned char
  4. #define uint  unsigned int
  5. sbit RS=P2^6;
  6. sbit RW=P2^5;
  7. sbit E=P2^7;
  8. sbit R=P1^0;
  9. sbit C=P1^1;
  10. sbit L=P1^2;
  11. sbit A1=P1^3;
  12. sbit A0=P1^4;

  13. #define LCD_data  P0                                       
  14. uchar   code  table1[10]={"R=      R"};
  15. uchar   code  table2[10]={"C=      pF"};
  16. uchar   code  table3[10]={"L=      mH"};

  17. uchar code f_table[88]={13,14,15,16,17,        18,        19,        20,        21,        22,        23,        24,        25,        26,        27,        28,        29,        30,        31,        32,        33,        34,        35,        36,        37,        38,        39,        40,        41,        42,        43,        44,        45,        46,        47,        48,        49,        50,        51,        52,        53,        54,        55,        56,        57,        58,        59,        60,        61,        62,        63,        64,        65,        66,        67,        68,        69,        70,        71,        72,        73,        74,        75,        76,        77,        78,        79,        80,        81,        82,        83,        84,        85,        86,        87,        88,        89,        90,        91,        92,        93,        94,        95,        96,        97,        98,        99,        100};
  18. uchar code f_correct[88]={9,10,        11,        12,        12,        12,        13,        14,        15,        16,        17,        18,        18,        18,        19,        20,        21,        21,        22,        23,        24,        25,        25,        26,        26,        27,        28,        29,        29,        30,        30,        31,        32,        33,        33,        34,        35,        35,        36,        37,        38,        38,        39,        40,        41,        41,        42,        42,        43,        44,        45,        45,        46,        47,        48,        49,        49,        50,        51,        51,        52,        53,        54,        54,        55,        55,        56,        57,        57,        58,        59,        60,        60,        62,        62,        63,        64,        64,        65,        66,        66,        67,        67,        68,        69,        70,        71,        71,};

  19. uchar a6,a5,a4,a3,a2,a1;
  20. uchar flag;
  21. unsigned long cnt,cnt1;
  22. uchar f_cnt;


  23. /********************************/

  24. void delay_us(); //18us
  25. void delay_ms(uint);
  26. void lcd_init();
  27. void lcd_write_com(uchar com);
  28. void lcd_write_dat(uchar dat);
  29. void lcd_init();
  30. void lcd_display(uchar add,uchar dat);
  31. /***********************************/

  32. void delay_us()
  33. {
  34.         uchar x;
  35.         for(x=0;x<5;x++);
  36. }

  37. void delay_ms(uint z)
  38. {
  39.         uint x,y;
  40.         for(x=0;x<z;x++)
  41.                 for(y=0;y<123;y++);
  42. }
  43. void lcd_write_com(uchar com)
  44. {
  45.   E=0;
  46.   RS=0;
  47.   RW=0;
  48.   delay_us();
  49.   LCD_data=com;
  50.   E=1;           //高脈沖寫入數據
  51.   delay_us();
  52.   E=0;
  53. }
  54. void lcd_write_dat(uchar dat)
  55. {
  56.   E=0;
  57.   RS=1;
  58.   RW=0;
  59.   delay_us();
  60.   LCD_data=dat;
  61.   E=1;           //高脈沖寫入數據
  62.   delay_us();
  63.   E=0;
  64. }
  65. void lcd_init()                  //lcd初始化
  66. {
  67.         delay_ms(15);
  68.         lcd_write_com(0x38);
  69.         delay_ms(10);
  70.         lcd_write_com(0x0c);
  71.         lcd_write_com(0x06);
  72.         lcd_write_com(0x01);
  73.         delay_ms(2);
  74.        
  75.        
  76. }
  77. void timer_init(void)  //定時器初始化
  78. {
  79.         TMOD=0X51;
  80.         PT0=1;     /*中斷優先*/
  81.         TH0=0x3c;
  82.         TL0=0xb0;
  83.         TH1=0;
  84.         TL1=0;
  85.         ET0=1;
  86.         ET1=1;
  87.         TR0=1;
  88.         TR1=1;
  89.         EA=1;       
  90. }
  91. void lcd_display(uchar add,uchar dat)           //lcd顯示(地址,數據)
  92. {

  93.         lcd_write_com(add);
  94.        
  95.         lcd_write_dat(dat);
  96.         delay_us();

  97. }
  98. void real_display(void)
  99. {
  100.             if(!R)
  101.                          {
  102. //                         while(!R);
  103.                          A1=A0=0;       
  104.                         lcd_display(0x80,table1[0]);
  105.                         lcd_display(0x80+1,table1[1]);
  106.                         lcd_display(0x80+8,table1[8]);
  107.                         lcd_display(0x80+9,table1[9]);
  108.                           }
  109.                         else if(!C)
  110.                         {
  111.                         A0=0;A1=1;
  112.                         lcd_display(0x80,table2[0]);
  113.                         lcd_display(0x80+1,table2[1]);
  114.                         lcd_display(0x80+8,table2[8]);
  115.                         lcd_display(0x80+9,table2[9]);
  116.                         }
  117.                         else if(!L)
  118.                         {
  119.                         A0=1;A1=0;
  120.                         lcd_display(0x80,table3[0]);
  121.                         lcd_display(0x80+1,table3[1]);
  122.                         lcd_display(0x80+8,table3[8]);
  123.                         lcd_display(0x80+9,table3[9]);
  124.                         }
  125.                         if(a6)
  126.                           lcd_display(0x80+2,0x30+a6);
  127.                         else
  128.                         lcd_display(0x80+2,' ');


  129.                         if(a6||a5)
  130.                         lcd_display(0x80+3,0x30+a5);
  131.                         else
  132.                                  lcd_display(0x80+3,' ');


  133.                         if(a6||a5||a4)
  134.                         lcd_display(0x80+4,0x30+a4);       
  135.                         else
  136.                    lcd_display(0x80+4,' ');


  137.                         if(a6||a5||a4||a3)
  138.                         lcd_display(0x80+5,0x30+a3);       
  139.                         else
  140.                     lcd_display(0x80+5,' ');


  141.                         if(a6||a5||a4||a3||a2)
  142.                         lcd_display(0x80+6,0x30+a2);
  143.                         else
  144.                         lcd_display(0x80+6,' ');

  145.                        
  146.                         lcd_display(0x80+7,0x30+a1);
  147.                

  148. }

  149. void correct(void)                        //誤差修正函數
  150. {
  151.         uchar i,k;
  152.         unsigned long wucha;
  153.         if(cnt<100000)                   //100KHz以內的修正
  154.         {
  155.                 if(cnt>980&&cnt<2100)     cnt-=1;
  156.                 if(cnt>=2100&&cnt<3900)   cnt-=2;
  157.                 if(cnt>=3900&&cnt<4800)   cnt-=3;
  158.                 if(cnt>=4800&&cnt<5700)   cnt-=4;
  159.                 if(cnt>=5700&&cnt<8000)   cnt-=5;
  160.                 if(cnt>=8000&&cnt<9100)          cnt-=6;
  161.                 if(cnt>=9100&&cnt<10900)  cnt-=7;
  162.                 if(cnt>=10900&&cnt<11900) cnt-=8;
  163.                 if(cnt>=11900&&cnt<13000) cnt-=9;
  164.                 if(cnt>=13000&&cnt<=100000)
  165.                 {
  166.                         k=cnt/1000;
  167.                         for(i=0;i<88;i++)
  168.                         {
  169.                                 if(k==f_table[i])
  170.                                 {
  171.                                         cnt-=f_correct[i];
  172.                                 }
  173.                         }
  174.                 }
  175.                
  176.                
  177.         }
  178.         if(cnt>100000)         
  179.         {
  180.                 wucha=(cnt/1000)*73065/100000;
  181.                 cnt-=wucha;
  182.         }
  183. }

  184. void main()
  185. {

  186.     timer_init();
  187.         lcd_init();
  188.         while(1)
  189.         {               
  190.                    if(flag==1)
  191.                    {
  192.                         real_display();
  193.                         flag=0;
  194.                         }
  195.                
  196.        
  197.         }
  198.        
  199. }
  200. void timer0() interrupt 1
  201. {
  202.         uchar timer0;
  203.        
  204.         TH0=0x3c;          //50ms
  205.         TL0=0xb0;
  206.         timer0++;
  207.         if(timer0==20)
  208.         {
  209.                 TR1=0;          //關閉的計數器
  210.                 EA=0;
  211.                 cnt=TL1+TH1*256+f_cnt*65536;
  212.                 correct();
  213.             //cnt1=(1e+9)/(2*0.693 *cnt)-20000/2;
  214.                 if(!R)
  215.                 {
  216. //                while(!R);
  217.                 cnt1=1000000/(0.2*0.693*cnt)-165;
  218.                 }
  219.                 else if(!C)
  220.                 {
  221.                 cnt1=1000000000/(0.693*3*510*cnt);
  222.                 }
  223.                 else if(!L)
  224.                 {
  225.                  cnt1=(1e+9)/(4*3.14*3.14*cnt*cnt*0.05);
  226.                 }
  227.                 timer0=0;
  228.        
  229.                 a6=cnt1%10000000/100000;
  230.                 a5=cnt1%100000/10000;
  231.                 a4=cnt1%10000/1000;
  232.                 a3=cnt1%1000/100;
  233.                 a2=cnt1%100/10;
  234.                 a1=cnt1%10;  
  235.                 flag=1;
  236.                      TH1=0;
  237.                 TL1=0;
  238.                 TH0=0x3c;
  239.                      TL0=0xb0;
  240.                 cnt=0;
  241.                 f_cnt=0;
  242.                 EA=1;
  243.                 TR1=1;           //打開計數器
  244.        
  245.        
  246.         }
  247.        

  248. }       

  249. void int1() interrupt 3
  250. {
  251.          f_cnt++;
  252. }
復制代碼



評分

參與人數 3黑幣 +13 收起 理由
13036200983 + 4 絕世好帖!
qjzyx + 5 贊一個!
小木 + 4 最近在做這個,一籌莫展,感謝樓主

查看全部評分

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

使用道具 舉報

沙發
ID:72624 發表于 2016-12-1 19:25 | 只看該作者
支持一下,希望做出成品.大家分享
回復

使用道具 舉報

板凳
ID:152315 發表于 2016-12-5 15:55 | 只看該作者
做得很好,支持一下
回復

使用道具 舉報

地板
ID:151171 發表于 2016-12-9 17:52 | 只看該作者
樓主您這個測量儀那個測量端口是哪兩個。
回復

使用道具 舉報

5#
ID:167545 發表于 2017-3-1 22:24 | 只看該作者
樓主的代碼寫的很好看
回復

使用道具 舉報

6#
ID:373 發表于 2017-3-7 09:47 | 只看該作者
學習下,不知道精度如何?
回復

使用道具 舉報

7#
ID:130231 發表于 2017-3-18 13:07 | 只看該作者
不錯!感謝分享,我有時間也做下。
回復

使用道具 舉報

8#
ID:153960 發表于 2017-3-21 21:31 | 只看該作者
學習中
回復

使用道具 舉報

9#
ID:164346 發表于 2017-4-10 15:58 | 只看該作者
樓主,你的測量電感的電路里面有一個電容是0.1F,實際電容沒有這么大的呀
回復

使用道具 舉報

10#
ID:151422 發表于 2017-4-22 18:09 | 只看該作者
支持一下,學習學習
回復

使用道具 舉報

11#
ID:194615 發表于 2017-4-28 18:20 | 只看該作者
回復收藏一撥
回復

使用道具 舉報

12#
ID:137736 發表于 2017-4-28 21:32 來自手機 | 只看該作者
dradolee 發表于 2017-4-10 15:58
樓主,你的測量電感的電路里面有一個電容是0.1F,實際電容沒有這么大的呀

應該是微法
回復

使用道具 舉報

13#
ID:200011 發表于 2017-5-18 22:33 | 只看該作者
為啥我調試著電感誤差非常大……
回復

使用道具 舉報

14#
ID:202611 發表于 2017-5-19 17:49 | 只看該作者
樓主有沒有詳細的介紹說明啊
回復

使用道具 舉報

15#
ID:196056 發表于 2017-5-29 21:10 | 只看該作者
怎么測量啊?看不懂,求大神告知,畢業論文要用。
回復

使用道具 舉報

16#
ID:210674 發表于 2017-6-13 09:10 | 只看該作者

支持一下,學習學習
回復

使用道具 舉報

17#
ID:187115 發表于 2017-6-13 11:27 | 只看該作者
這代碼很感人
回復

使用道具 舉報

18#
ID:210742 發表于 2017-6-13 12:07 | 只看該作者
了解。。。。。。。。。。。
回復

使用道具 舉報

19#
ID:236382 發表于 2017-9-28 17:00 | 只看該作者
看不懂啊,大神可以詳細點嘛
回復

使用道具 舉報

20#
ID:236382 發表于 2017-10-1 10:54 | 只看該作者
大神,請問你這個施密特觸發器74132只是單純的起切換的作用嗎?那我可以取消這個嗎
回復

使用道具 舉報

21#
ID:254819 發表于 2017-12-1 19:38 | 只看該作者
原理能說下嗎
回復

使用道具 舉報

22#
ID:239427 發表于 2017-12-29 11:30 | 只看該作者
不錯的
回復

使用道具 舉報

23#
ID:102963 發表于 2017-12-29 21:47 | 只看該作者
100mH的測出來是84mH,這個誤差可以??
回復

使用道具 舉報

24#
ID:338735 發表于 2018-5-30 19:44 | 只看該作者
中間那個真的是74LS132嗎?怎么看著不像呢
回復

使用道具 舉報

25#
ID:373459 發表于 2018-11-30 16:59 | 只看該作者
學習中 謝謝樓主分享
回復

使用道具 舉報

26#
ID:441881 發表于 2018-12-9 13:20 | 只看該作者
電感誤差巨大
回復

使用道具 舉報

27#
ID:501295 發表于 2019-3-30 17:09 | 只看該作者

樓主的代碼寫的很好看
回復

使用道具 舉報

28#
ID:429748 發表于 2019-5-3 11:04 | 只看該作者
下載。。。看看
回復

使用道具 舉報

29#
ID:522603 發表于 2019-5-9 13:21 | 只看該作者
厲害的樓主,GOOD!!
回復

使用道具 舉報

30#
ID:531686 發表于 2019-5-9 18:58 | 只看該作者
求詳細功能介紹
回復

使用道具 舉報

31#
ID:582456 發表于 2019-7-12 15:11 | 只看該作者
厲害,加油啊
回復

使用道具 舉報

32#
ID:462433 發表于 2019-7-30 21:23 | 只看該作者
非常的不錯
回復

使用道具 舉報

33#
ID:586583 發表于 2019-8-7 08:43 | 只看該作者
感謝樓主
回復

使用道具 舉報

34#
ID:654692 發表于 2019-12-3 18:05 來自手機 | 只看該作者
用的什么元件可以告訴一下么。
回復

使用道具 舉報

35#
ID:655334 發表于 2019-12-3 18:19 | 只看該作者
感謝樓主
回復

使用道具 舉報

36#
ID:646125 發表于 2019-12-6 20:49 | 只看該作者
電感誤差太大了
回復

使用道具 舉報

37#
ID:655334 發表于 2019-12-9 21:01 | 只看該作者
樓主有沒有只測電感的代碼
回復

使用道具 舉報

38#
ID:631951 發表于 2019-12-10 09:44 | 只看該作者
有實物圖嗎?我想看看電路怎么焊接的?
回復

使用道具 舉報

39#
ID:660548 發表于 2019-12-10 14:50 | 只看該作者
對我幫助很大,謝謝。
回復

使用道具 舉報

40#
ID:196787 發表于 2020-3-4 21:06 | 只看該作者

學習中 謝謝樓主分享
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 99精品国产一区二区三区 | 久久久久成人精品 | 91在线一区| 日本欧美黄色片 | 亚洲一区在线免费观看 | 精品亚洲一区二区三区四区五区 | av一区在线观看 | 久久久久久久久久久丰满 | 91久久看片 | 成人精品一区 | 久久久噜噜噜久久中文字幕色伊伊 | 久久精品国产免费一区二区三区 | 伊人久久伊人 | 日韩一区二区三区视频 | 国产欧美一区二区三区久久 | 一级毛片网 | 伊人久久大香线 | 国产综合久久久久久鬼色 | 精品欧美乱码久久久久久1区2区 | 老司机狠狠爱 | 在线视频日韩精品 | 九九久久精品 | 日本二区在线观看 | 国产一级免费在线观看 | 91偷拍精品一区二区三区 | 国产精品不卡一区 | 北条麻妃一区二区三区在线观看 | 性做久久久久久免费观看欧美 | 国产精品不卡 | 欧美中文一区 | 国产精品美女久久久久久免费 | 日日干日日射 | 黄色网址在线免费观看 | 日韩精品一区二区三区在线观看 | 午夜激情免费视频 | 免费国产一区 | 亚洲精品久久久久久一区二区 | 久久精品色欧美aⅴ一区二区 | 久久精品国产a三级三级三级 | 日韩一区和二区 | 一区二区三区四区在线视频 |