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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7967|回復(fù): 13
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)LRC萬用表表制作程序+PCB文件

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
希望可以幫助你們


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();//電感測量
  92. void Measurement_R();//電阻測量
  93. void Measurement_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)   化簡得到  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()//電阻測量
  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測量
  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)



評分

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

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏20 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:770983 發(fā)表于 2020-7-17 09:36 | 只看該作者
這個(gè)屏是什么型號啊?
回復(fù)

使用道具 舉報(bào)

板凳
ID:228467 發(fā)表于 2020-7-17 10:17 | 只看該作者
CHENGLCD 發(fā)表于 2020-7-17 09:36
這個(gè)屏是什么型號啊?

應(yīng)該就是普通的12864屏吧
回復(fù)

使用道具 舉報(bào)

地板
ID:603592 發(fā)表于 2020-7-17 12:19 | 只看該作者
兩個(gè)PCB 下面的是什么的
回復(fù)

使用道具 舉報(bào)

5#
ID:804703 發(fā)表于 2020-7-17 13:31 | 只看該作者
這個(gè)屏是什么型號啊?
回復(fù)

使用道具 舉報(bào)

6#
ID:25481 發(fā)表于 2020-7-18 08:15 | 只看該作者
ST7920串口12864,帶字庫。
回復(fù)

使用道具 舉報(bào)

7#
ID:690831 發(fā)表于 2020-7-18 13:38 | 只看該作者
測頻率,計(jì)算LCR值嗎
回復(fù)

使用道具 舉報(bào)

8#
ID:795427 發(fā)表于 2022-1-16 11:12 | 只看該作者
雖然沒有電容的ESR值測量,但是還是很不錯(cuò)的。
回復(fù)

使用道具 舉報(bào)

9#
ID:655665 發(fā)表于 2022-1-16 14:56 | 只看該作者
電感 電容  電阻的測量范圍是多少?
回復(fù)

使用道具 舉報(bào)

10#
ID:969272 發(fā)表于 2022-1-17 18:43 | 只看該作者
這個(gè)表準(zhǔn)確嗎?
回復(fù)

使用道具 舉報(bào)

11#
ID:1016543 發(fā)表于 2022-4-8 11:55 | 只看該作者
范圍是多少啊大佬,我是小白
回復(fù)

使用道具 舉報(bào)

12#
ID:1016543 發(fā)表于 2022-4-8 12:00 | 只看該作者
我在東北玩51 發(fā)表于 2020-7-17 12:19
兩個(gè)PCB 下面的是什么的

背面走線。。。。。
回復(fù)

使用道具 舉報(bào)

13#
ID:228452 發(fā)表于 2022-4-11 22:23 | 只看該作者
What is the value of inductor LX1 ?
Thanks for the code
回復(fù)

使用道具 舉報(bào)

14#
ID:67185 發(fā)表于 2022-11-30 12:11 | 只看該作者
這不是電橋原理吧!
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久久精 | 亚洲一二三区精品 | 91精品久久久久久久久中文字幕 | 天天澡天天操 | 亚洲狠狠丁香婷婷综合久久久 | 久久99精品久久久水蜜桃 | 国产一级免费视频 | 免费黄色网址视频 | 一区二区在线观看免费视频 | 99久久精品国产一区二区三区 | 日韩精品一区二区三区中文字幕 | 伊人超碰| 国产一区二区三区在线 | 综合久久av | 免费一级黄色录像 | 日本亚洲一区 | 亚洲精品一区二区久 | 一区二区三区成人 | 免费观看一级特黄欧美大片 | 国偷自产av一区二区三区 | 国产一区精品 | 91精品国产91久久久久久最新 | 中文精品一区二区 | 国产精品精品视频一区二区三区 | 欧美日韩成人影院 | 日韩精品在线网站 | 99免费精品视频 | av毛片| 欧美日韩中文在线 | 日韩av手机在线观看 | 欧美精品久久久 | 亚洲欧美中文日韩在线 | 色婷婷av一区二区三区软件 | 亚洲精品视频在线观看免费 | 久久精品视频一区二区三区 | 狠狠躁18三区二区一区 | 天天拍夜夜爽 | 午夜久久久久久久久久一区二区 | 免费能直接在线观看黄的视频 | 国产精品一区二 | 国产在线中文字幕 |