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

標(biāo)題: 單片機(jī)LRC萬用表表制作程序+PCB文件 [打印本頁]

作者: 未來研究人員    時(shí)間: 2019-12-6 20:13
標(biāo)題: 單片機(jī)LRC萬用表表制作程序+PCB文件
希望可以幫助你們


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


單片機(jī)源程序如下:
  1. #include <reg52.h>
  2. #define uchar unsigned char
  3. #define uint  unsigned        int
  4. #define C1  0.045

  5. uchar code WenDu1[]="數(shù)\xfd字萬用表   ";
  6. uchar code WenDu2[]="歡迎使用        ";
  7. uchar code code_L[]="電感:          ";        
  8. uchar code code_R[]="電阻:          ";
  9. uchar code code_C[]="電容:          ";
  10. uchar code code_e[]="錯(cuò)誤:          ";
  11. uchar  num;


  12. sbit key1  =P1^0;
  13. sbit key2  =P1^1;
  14. sbit key3  =P1^2;
  15. //unsigned long LZ=0;
  16. //float f=0;

  17. float LZ=0;
  18. float RX=0;
  19. float CX=0;

  20. float f=0;

  21. float temp_f[4];

  22. unsigned int tt,th1,tl1;
  23. unsigned int pluse=0;        
  24. bit flag=0;        
  25. unsigned char key_num=0;

  26. #define  L 1
  27. #define  R 2
  28. #define  C 3

  29. sbit aa1 =P2^0;
  30. sbit bb1 =P2^1;

  31. #include<Lcd12864.h>

  32. void cd4051(unsigned char num)
  33. {
  34.                 switch(num){
  35.                                 case 1: bb1=0;aa1=0;break;
  36.                                 case 2: bb1=0;aa1=1; break;
  37.                                 case 3: bb1=1;aa1=0; break;
  38.                                 default : aa1=1;aa1=1;break;
  39.                 }
  40. }

  41. void scan_key()
  42. {
  43.                 if(!key1){
  44.                                 if(!key1){
  45.                                                 while(!key1);
  46.                                                 key_num=1;
  47.                                                 cd4051(L);
  48.                                         //        aa1=0;bb1=0;
  49.                                             Lcd_ShowSring(4,0,code_L);
  50.                                                 Lcd_ShowSring(1,15,"L");
  51.                                 }
  52.                 }
  53.                 if(!key2){
  54.                                 if(!key2){
  55.                                                 while(!key2);
  56.                                                 key_num=2;
  57.                                                 cd4051(R);
  58.                                         //aa1=0;bb1=1;
  59.                                                 Lcd_ShowSring(4,0,code_R);
  60.                                                 Lcd_ShowSring(1,15,"R");
  61.                                 }
  62.                 }
  63.                 if(!key3){
  64.                                 if(!key3){
  65.                                                 while(!key3);
  66.                                                 key_num=3;
  67.                                                 cd4051(C);
  68.                                            //aa1=1;bb1=0;
  69.                                                 Lcd_ShowSring(4,0,code_C);
  70.                                                 Lcd_ShowSring(1,15,"C");
  71.                                 }
  72.                 }
  73. }


  74.         //中斷初始化
  75.   void init()
  76.   {         
  77. //        TMOD=0x11;                //定時(shí)器0和定時(shí)器1都是方式1,16位定時(shí)器

  78.         //定時(shí)器設(shè)置
  79.     TMOD=0x51;                 //設(shè)置定時(shí)器0,方式1:16位定時(shí)器

  80.         TH1=0x00;         //定時(shí)器1高位裝初值
  81.         TL1=0x00;         //定時(shí)器1低位裝初值
  82.         ET1=1;        //定時(shí)器1          使能位
  83.         
  84.         TH0=(65535-50000)/255;          //定時(shí)器1高位裝初值
  85.         TL0=(65535-50000)%255;;          //定時(shí)器1高位裝初值
  86.         ET0=1;   ////定時(shí)器0          使能位

  87.         TR0=1;
  88.         TR1=1;

  89.         EA=1;//        總中斷
  90. }

  91. void Measurement_L();//電感測(cè)量
  92. void Measurement_R();//電阻測(cè)量
  93. void Measurement_C();//電容測(cè)量
  94. unsigned char gather_num=0;
  95. unsigned char m_second=0;
  96. void main ()
  97. {

  98.         LCDInit();               
  99.         Lcd_ShowSring(1,0,WenDu1);
  100.         Lcd_ShowSring(2,0,WenDu2);
  101. //        Lcd_ShowSring(4,0,code_R);
  102.         init();
  103. //        cd4051(R);
  104. //        key_num=2;
  105.         while(1){
  106.                
  107.                
  108.             scan_key();
  109.                 if(flag){
  110.                         flag=0;

  111.                         //在十ms里面記了這么多個(gè)脈沖
  112.                         // 那么一個(gè)脈沖的周期就是  50ms/tt/1000  (s)   化簡(jiǎn)得到  f  20tt
  113.                         if(gather_num<4) {
  114.                                         temp_f[gather_num]=pluse*65536+256*TH1+TL1;          //1000000000000 12  100000000 8
  115.                                         gather_num++;

  116.                         }
  117.                         else{
  118.                                         gather_num=0;
  119.                                         f=(temp_f[0]+temp_f[1]+temp_f[2]+temp_f[3])/4.0;        
  120.                                 //        Lcd_Display(3,0,f);
  121.                                         switch(key_num)         {
  122.                
  123.                                                         case 1:Measurement_L();        break;
  124.                                                         case 2:Measurement_R(); break;
  125.                                                         case 3:Measurement_C(); break;
  126.                                                         default :break;
  127.                                        
  128.                                         }
  129.                         }
  130.         


  131.                         TH0=(65535-50000)/255;          //定時(shí)器1高位裝初值
  132.                         TL0=(65535-50000)%255;;          //定時(shí)器1高位裝初值                                                
  133.                         TH1=0;                          //清零開始重新計(jì)數(shù)
  134.                         TL1=0;
  135.                         pluse=0;
  136.                         TR0=1;//開定時(shí)器計(jì)時(shí)10ms;//使能位外部中斷0 數(shù)10內(nèi)有多少個(gè)脈沖
  137.                         TR1=1;//進(jìn)行新一輪的計(jì)數(shù)
  138.                         m_second=0;        
  139.                         
  140.                              
  141. //                    num++;
  142. //                        Lcd_Display(4,4,num);
  143.                 }
  144.                                                                         
  145.         }
  146. }


  147. void time0()interrupt 1                //定時(shí)器0 服務(wù)
  148. {        
  149. //        TR1=0;//關(guān)掉定時(shí)器1

  150.         
  151. //        TH0=(65535-50000)/255;          //定時(shí)器1高位裝初值
  152. //        TL0=(65535-50000)%255;;          //定時(shí)器1高位裝初值 */
  153.         TH0=60;          //定時(shí)器1高位裝初值
  154.         TL0=235;;          //定時(shí)器1高位裝初值
  155.         m_second++;
  156.         if(m_second==20){
  157.                         TR1=0;//關(guān)掉定時(shí)器1
  158.                         TR0=0; // 關(guān)掉定時(shí)器0
  159.                 m_second=0;        
  160.                 flag=1;
  161.         }
  162.                         
  163. }

  164. void time1()interrupt 3                //定時(shí)器1 服務(wù)
  165. {
  166.                    pluse++;
  167.                 TH1=0;
  168.                 TL1=0;
  169. }

  170. void Measurement_L()
  171. {

  172.                         if(f==0){
  173.                                 LZ=0;
  174.                                 Lcd_ShowSring(4,0,code_L);
  175.                         }
  176.                         else {
  177.                                 LZ=5.63466627*10e10/f/f;
  178.                                 LZ=LZ/1.0727272727272727272727272727273;
  179.                                 Lcd_ShowSring(4,0,"電感:");
  180.                           Lcd_Display_u(4,4,LZ);
  181.                         }
  182.                         
  183.                         if(LZ>99999999)        {
  184.                         //         Lcd_ShowSring(4,0,code_e);
  185.                         }
  186.                                                                                                                                                                   
  187.                         
  188.         
  189. }
  190. void Measurement_R()//電阻測(cè)量
  191. {
  192.                         
  193.                         if(f==0){
  194.                                                         
  195.                                         RX=0;        
  196.                                                 
  197.                         }

  198.                         else if(  0< f&& f<30) {                                                                   //1M   7

  199.                                            RX=        14400000.0/f;
  200.                                         RX= RX-3000;
  201.                                         RX  =RX/2/0.95;  //修正
  202.                                        
  203.                         }
  204.                         else if(f <700) {                                                                   //10k   650

  205.                                            RX=        14400000.0/f;
  206.                                         RX= RX-3000;
  207.                                         RX  =RX/2/0.95;  //修正
  208.                                          //
  209.                         }
  210.                         else if(f <1500) {                                                                   //4.7k  1209

  211.                                            RX=        14400000.0/f;
  212.                                         RX= RX-3000;
  213.                                         RX  =RX/2/0.94;  //修正
  214.                                        
  215.                         }
  216.                          else if(f <3000) {                                                                 //1k        2983

  217.                                            RX=        14400000.0/f;
  218.                                         RX= RX-3000;
  219.                                          RX  =RX/2/0.91;  //修正
  220.                                         //0.91286863270777479892761394101877
  221.                                        
  222.                         }
  223.                         else if(f <4500) {

  224.                                            RX=        14400000.0/f;
  225.                                         RX= RX-3000;
  226.                                                                                 //修正  200   4372
  227.                                         RX  =RX/2/0.74;  //修正
  228.                                        
  229.                         }
  230.                         else if(f <5000) {

  231.                                            RX=        14400000.0/f;
  232.                                         RX= RX-3000;
  233.                                                                                 //修正  100  
  234.                                         RX  =RX/2/0.50;  //修正
  235.                                        
  236.                         }

  237.                         if(RX==0){
  238.                                         Lcd_ShowSring(4,0,code_R);
  239.                         } else{
  240.                                         Lcd_ShowSring(4,0,"電阻:");
  241.                                         Value_to_ASCII1(4,3, RX);

  242.                         }

  243.                         if(RX>99999999)        {
  244.                         //        Lcd_ShowSring(4,0,code_e);        
  245.                         }
  246.                                                         
  247.                
  248. }
  249. void Measurement_C()//C測(cè)量
  250. {
  251.                         if(f==0){
  252.                                                         
  253.                                         CX=0;
  254.                                         Lcd_ShowSring(4,0,code_C);                        
  255.                         }
  256.                         else if(f>5000){

  257.                                    CX=0;
  258.                                    Lcd_ShowSring(4,0,code_C);
  259.                         }
  260.                         else {
  261.                                 CX=48100.00/f/1.0276595744680851063829787234043;//修正        
  262.                                 Lcd_ShowSring(4,0,"電容:");
  263.                             Value_to_ASCIIC(4,3,CX);                                       
  264.                         }
  265. //                        Lcd_ShowSring(4,0,"電容:");
  266. //                        Value_to_ASCIIC(4,3,CX);                                
  267.                         if(CX>99999999)        {
  268. //                                Lcd_ShowSring(4,0,code_e);        
  269.                         }
  270.                         
  271. }
復(fù)制代碼

所有資料51hei提供下載:
程序.7z (1.16 MB, 下載次數(shù): 153)




作者: CHENGLCD    時(shí)間: 2020-7-17 09:36
這個(gè)屏是什么型號(hào)啊?
作者: 上善若水001    時(shí)間: 2020-7-17 10:17
CHENGLCD 發(fā)表于 2020-7-17 09:36
這個(gè)屏是什么型號(hào)啊?

應(yīng)該就是普通的12864屏吧
作者: 我在東北玩51    時(shí)間: 2020-7-17 12:19
兩個(gè)PCB 下面的是什么的
作者: lolocard    時(shí)間: 2020-7-17 13:31
這個(gè)屏是什么型號(hào)啊?
作者: qijun68    時(shí)間: 2020-7-18 08:15
ST7920串口12864,帶字庫(kù)。
作者: iamluckman    時(shí)間: 2020-7-18 13:38
測(cè)頻率,計(jì)算LCR值嗎
作者: perseverance51    時(shí)間: 2022-1-16 11:12
雖然沒有電容的ESR值測(cè)量,但是還是很不錯(cuò)的。
作者: hmsd    時(shí)間: 2022-1-16 14:56
電感 電容  電阻的測(cè)量范圍是多少?
作者: sh1900    時(shí)間: 2022-1-17 18:43
這個(gè)表準(zhǔn)確嗎?
作者: 1006381187    時(shí)間: 2022-4-8 11:55
范圍是多少啊大佬,我是小白
作者: 1006381187    時(shí)間: 2022-4-8 12:00
我在東北玩51 發(fā)表于 2020-7-17 12:19
兩個(gè)PCB 下面的是什么的

背面走線。。。。。
作者: mick32    時(shí)間: 2022-4-11 22:23
What is the value of inductor LX1 ?
Thanks for the code
作者: tplin    時(shí)間: 2022-11-30 12:11
這不是電橋原理吧!




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 亚洲国产成人精品女人久久久 | 一区二区三区四区免费在线观看 | 久久久久免费精品国产小说色大师 | 久久天天躁狠狠躁夜夜躁2014 | 麻豆成人在线视频 | 九九久久精品 | 放个毛片看看 | 欧美精品一区二区免费 | 欧美黄a| 午夜一区二区三区在线观看 | 超碰成人在线观看 | 成人国产精品久久 | 亚洲精品免费在线观看 | 国产精品久久久久久久三级 | 国产成人精品一区二区三区网站观看 | 国产日韩精品视频 | 中文字幕在线免费视频 | 国产视频一二三区 | 欧美高清视频在线观看 | 国产精品国产成人国产三级 | 欧美日韩国产中文 | 一区二区三区不卡视频 | 羞视频在线观看 | 狠狠入ady亚洲精品经典电影 | a毛片| 狠狠综合网 | 成人免费看片 | 国产一区二区三区亚洲 | av色站 | 久久视频免费看 | 欧美女优在线观看 | 一区二区三区中文字幕 | 嫩草影院黄 | 欧美日韩中文国产一区发布 | 精品欧美一区免费观看α√ | 欧美三级视频在线观看 | 日韩在线观看视频一区 | 久久9999久久 | 91资源在线 | 91在线精品一区二区 | 久久九精品 |