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

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

QQ登錄

只需一步,快速開(kāi)始

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

單片機(jī)電容表的proteus仿真與源程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)

測(cè)量電容需要三步  1、按下"量程選擇按鍵" 2、按下"開(kāi)始測(cè)量按鍵" 3、按下"最終顯示按鍵"



單片機(jī)源程序如下:
  1. #include<reg52.h>
  2. #define DataPort P0 //定義數(shù)據(jù)端口 程序中遇到DataPort 則用P0 替換
  3. sbit LATCH1=P3^0;//定義鎖存使能端口 段鎖存
  4. sbit CAP=P1^2;//運(yùn)放輸出連接端,當(dāng)輸出高電平時(shí)停止計(jì)時(shí)
  5. sbit nf=P3^1;//測(cè)量控制總按鍵,低電平有效
  6. sbit lm1=P1^3;
  7. sbit lm2=P1^4;
  8. sbit lm3=P1^5;
  9. sbit lm4=P1^6;
  10. sbit  key1=P3^2;
  11. sbit  key2=P3^3;
  12. sbit  key3=P3^4;
  13. sbit  key4=P3^5;

  14. unsigned int num;
  15. unsigned char code
  16. dofly_DuanMa1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};// 顯示段碼值0~F,不顯示小數(shù)點(diǎn)。
  17. unsigned char code
  18. dofly_DuanMa2[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0xf7,0xfc,0xb9,0xde,0xf9,0xf1};// 顯示段碼值0~F,顯示小數(shù)點(diǎn)。

  19. dofly_WeiMa[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//分別對(duì)應(yīng)相應(yīng)的數(shù)碼管點(diǎn)亮,即位碼
  20. unsigned char TempData[8]; //存儲(chǔ)顯示值的全局變量

  21. void Delay(unsigned int t); //延時(shí)函數(shù)聲明
  22. void delayms(unsigned char t);
  23. void Display(unsigned char FirstBit,unsigned char Num);
  24. void  ke1(void) ;
  25. void  ke2(void) ;
  26. void  ke3(void) ;
  27. void  ke4(void) ;

  28. void  ke1(void)
  29. {
  30.    TempData[0]=dofly_DuanMa1[num%1000/100];
  31.    TempData[1]=dofly_DuanMa1[num%1000%100/10];
  32.    TempData[2]=dofly_DuanMa2[num/1000];          
  33.    TempData[3]=dofly_DuanMa1[num%1000%100%10];
  34.    TempData[4]=0x73;
  35.    TempData[5]=0x71;          
  36. }

  37. void ke2(void)
  38. {
  39.         TempData[0]= dofly_DuanMa1[num%1000/100];
  40.     TempData[1]=dofly_DuanMa2[num/1000];
  41.     TempData[2]=dofly_DuanMa1[num%1000%100/10];
  42.     TempData[3]=dofly_DuanMa1[num%1000%100%10];
  43.         TempData[4]=0x73;                                                                                                               
  44.     TempData[5]=0x71;
  45. }

  46. void ke3(void)
  47. {
  48.    TempData[0]=dofly_DuanMa1[num%1000/100];
  49.    TempData[1]=dofly_DuanMa1[num%1000%100/10];
  50.    TempData[2]=dofly_DuanMa2[num/1000];          
  51.    TempData[3]=dofly_DuanMa1[num%1000%100%10];
  52.         TempData[4]=0x3e;
  53.     TempData[5]=0x71;
  54. }

  55. void  ke4(void)
  56. {
  57.    TempData[0]=dofly_DuanMa1[num%1000%100/10];                                         
  58.    TempData[1]=dofly_DuanMa2[num%1000%100%10];                                       
  59.    TempData[2]=dofly_DuanMa1[num/1000];
  60.    TempData[3]=dofly_DuanMa1[num%1000/100];
  61.    TempData[4]=0x3e;
  62.    TempData[5]=0x71;
  63.         }

  64. bit key(void)
  65. {
  66.     if(nf==0)
  67.         {
  68.           delayms(10);
  69.           if(nf==0)
  70.          return 0;
  71.           }
  72.           else
  73.           return 1;
  74. }
  75.        
  76. void Delay(unsigned int t)
  77. {
  78. while(--t);
  79. }
  80. void delayms(unsigned char t)      //約延時(shí)1ms
  81.   {
  82.   while(--t)
  83.   {
  84.   Delay(245);
  85.   Delay(245);
  86.        }
  87.          }

  88. void Display(unsigned char FirstBit,unsigned char Num)
  89. {
  90.       unsigned char i;
  91.           
  92.           for(i=0;i<Num;i++)
  93.            {
  94.            DataPort=0;   //清空數(shù)據(jù),防止有交替重影
  95.        LATCH1=1;     //段鎖存
  96.        LATCH1=0;
  97.    P2=dofly_WeiMa[i+FirstBit]; //取位碼
  98.    DataPort=TempData[i]; //取顯示數(shù)據(jù),段碼
  99.        LATCH1=1;     //段鎖存
  100.        LATCH1=0;
  101.        Delay(200); // 掃描間隙延時(shí),時(shí)間太長(zhǎng)會(huì)閃爍,太短會(huì)造成重影
  102. }
  103. }

  104. void main()
  105. {
  106.      P2=0x00;
  107.          TMOD=TMOD|0x01;//選擇計(jì)數(shù)方式,定時(shí)計(jì)數(shù)器1
  108.      EA=1;
  109.      ET0=1;
  110.      TH0=0x00;
  111.      TL0=0x00;// 裝入計(jì)數(shù)初值,即為0
  112.           while(1)
  113.      {
  114.             if (key1==0)
  115.                 {
  116.                    Delay(10);
  117.                    if (key1==0)
  118.                    lm1=0;
  119.                    while(key()==1);
  120.                    lm1=1;
  121.                    TR0=1;
  122.                    Delay(10);
  123.                    while(CAP==0);
  124.            TR0=0;
  125.            num=TH0*256+TL0+10;
  126.                   
  127.            if(num>2100)  //超出測(cè)量范圍是顯示1
  128.           {
  129.            TempData[0]=0x06;
  130.            TempData[1]=TempData[2]=TempData[3]=0x00;
  131.                    TempData[4]=TempData[5]=0x00;
  132.            }
  133.           else
  134.                    {
  135.                    ke1();
  136.                    }
  137.                     while(1)
  138.            {
  139.                 Display(0,6);
  140.                }                  
  141.                   }
  142.             else if (key2==0)
  143.                 {
  144.                    Delay(10);
  145.                    if (key2==0)
  146.                    lm2=0;
  147.                    while(key()==1);
  148.                    lm2=1;
  149.                    TR0=1;
  150.                    Delay(10);
  151.                    while(CAP==0);
  152.            TR0=0;
  153.            num=TH0*256+TL0+200;
  154.                     if(num>2100)  //超出測(cè)量范圍是顯示1
  155.           {
  156.            TempData[0]=0x06;
  157.            TempData[1]=TempData[2]=TempData[3]=0x00;
  158.                       TempData[4]=TempData[5]=0x00;
  159.            }
  160.           else
  161.                    {
  162.                    ke2();
  163.                    }
  164.                     while(1)
  165.            {
  166.                 Display(0,6);
  167.                 }                  
  168.                   }
  169.             else if (key3==0)
  170.                 {
  171.                    lm3=0;
  172.                    while(key()==1);
  173.                    lm3=1;
  174.                    TR0=1;
  175.                    Delay(10);
  176.                    while(CAP==0);
  177.            TR0=0;
  178.            num=TH0*256+TL0+40;
  179.                     if(num>2100)  //超出測(cè)量范圍是顯示1
  180.           {
  181.            TempData[0]=0x06;
  182.            TempData[1]=TempData[2]=TempData[3]=0x00;
  183.                       TempData[4]=TempData[5]=0x00;
  184.            }
  185.           else
  186.                    {
  187.                    ke3();
  188.                    }
  189.                     while(1)
  190.            {
  191.                  Display(0,6);
  192.                 }                  
  193.                   }
  194.             else if (key4==0)
  195.                 {
  196.                
  197.                    Delay(10);
  198.                    if (key4==0)
  199. ……………………

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

所有資料51hei提供下載:
電容表仿真.zip (105.29 KB, 下載次數(shù): 61)





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

使用道具 舉報(bào)

沙發(fā)
ID:830831 發(fā)表于 2020-10-22 17:44 | 只看該作者
不知為什么,改變電容,每次顯示的還是60
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产视频一二三区 | 狠狠做六月爱婷婷综合aⅴ 国产精品视频网 | 91 久久| 精品国产一区探花在线观看 | 中文字幕视频在线观看免费 | 亚州无限乱码 | 成人欧美一区二区三区 | 久久网站黄 | 高清国产午夜精品久久久久久 | 在线免费观看a级片 | 欧美亚州综合 | 国产色网 | 久久夜视频| 午夜免费小视频 | 国产高清在线精品一区二区三区 | 成人国产精品一级毛片视频毛片 | 久久精品久久久久久 | 精品美女| 亚洲精品久久久蜜桃 | 国产精品久久久久久久久久久久午夜片 | 999观看免费高清www | 久久逼逼| 亚洲www啪成人一区二区 | 中文字幕精品一区二区三区在线 | 国产一区三区在线 | 国产伦精品一区二区三区精品视频 | 色综合色综合色综合 | 日本不卡一区二区三区 | 视频一二区 | www.久久久 | 欧美在线视频网 | 欧美日韩综合精品 | 欧美www在线 | 亚洲高清在线观看 | 国产一区二区三区免费观看在线 | 爱操影视| 黄网站涩免费蜜桃网站 | 日韩电影一区二区三区 | 日日操日日干 | 日日干夜夜干 | 精品国产视频在线观看 |