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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于單片機的電容測量儀設(shè)計,原理圖仿真,代碼壓縮包

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:444900 發(fā)表于 2020-5-18 00:05 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
前段時間智能儀器結(jié)課做的,
電容測量儀,
里面有proteus仿真文件,單片機代碼


單片機源程序如下:
  1. #include <reg52.h>
  2.         #include<intrins.h> //庫函數(shù)
  3.        
  4.         #define DATA P0
  5.         sbit RW=P2^6;       //1602寫數(shù)據(jù)
  6.         sbit RS=P2^5;       //1602寫地址
  7.         sbit EN=P2^7;       //1602工作使能
  8.         sbit b_test=P3^7;   //開始測量電容的按鍵輸入
  9.         sbit _reset=P3^6;   //555時基芯片工作控制信號
  10.         unsigned int T_flag,N,C,i,Dis1,Dis0;
  11.         unsigned int b[6]={0X13,0X0D,0X00,0X00,0X25,0X16};   //顯示C=00UF
  12.        
  13.         /***********延時1MS******************/
  14.         void Delay1ms(unsigned int mm)
  15.         {unsigned int i;
  16.          for(mm;mm>0;mm--)
  17.            for(i=100;i>0;i--);
  18.         }
  19.         /***************檢查忙否*****************/
  20.         void Checkstates()
  21.         {
  22.          unsigned char dat;
  23.          RS=0;
  24.          RW=1;
  25.          do{EN=1;//下降沿
  26.             _nop_();//保持一定間隔
  27.                 _nop_();
  28.             dat=DATA;
  29.             _nop_();
  30.                 _nop_();
  31.             EN=0;
  32.          }while((dat&0x80)==1);
  33.         }
  34.         /**************LCD寫命令函數(shù)*********/
  35.         void wcomd(unsigned char cmd)
  36.         {
  37.          Checkstates();
  38.          RS=0;
  39.          RW=0;
  40.          DATA=cmd;
  41.          EN=1;
  42.          _nop_();
  43.          _nop_();
  44.          _nop_();
  45.          _nop_();
  46.          EN=0;
  47.         }
  48.         /**********LCD寫數(shù)據(jù)函數(shù)**************/
  49.         void wdata(unsigned char dat)
  50.         {
  51.          Checkstates();
  52.          RS=1;
  53.          RW=0;
  54.          DATA=dat;
  55.          EN=1;
  56.          _nop_();
  57.          _nop_();
  58.          _nop_();
  59.          _nop_();
  60.          EN=0;
  61.         }
  62.         /*****************初始化********************/
  63.         void LCDINIT()
  64.         {
  65.          Delay1ms(15);
  66.          wcomd(0x38);//功能設(shè)置
  67.          Delay1ms(5);
  68.          wcomd(0x38);//功能設(shè)置
  69.          Delay1ms(5);
  70.          wcomd(0x01);//清屏
  71.          Delay1ms(5);
  72.          wcomd(0x08);//關(guān)顯示
  73.          Delay1ms(5);
  74.          wcomd(0x0c);//開顯示,不開光標(biāo)
  75.        
  76.         }
  77.        
  78.         /***********顯示函數(shù)**************/
  79.         void Display(void) //顯示函數(shù)
  80.         {
  81.         unsigned char i,j;
  82.          unsigned char a[16]={'c','e','s','h','i','z','h','o','n','g','.','.','.','.'};//顯示ceshizhong....
  83.          LCDINIT();
  84.          for(i=0;i<15;i++)//寫顯示第一行
  85.           { wcomd(0x80+i);
  86.             Delay1ms(1);
  87.             wdata(a[i]);
  88.             Delay1ms(1);
  89.            }
  90.          for(j=0;j<6;j++)//寫顯示第二行
  91.          {
  92.           wcomd(0xc0+j);
  93.           Delay1ms(1);
  94.           wdata(0x30+b[j]);
  95.           Delay1ms(1);
  96.           }
  97.         Delay1ms(150);
  98.         }
  99.         void main()
  100.         {
  101.           IE=0x81;                          //打開全部的中斷控制,并開啟外部中斷允許
  102.           TMOD=0x09;                        //T0為16位計數(shù)工作方式1
  103.           IT0=1;                            //設(shè)置外部中斷的觸發(fā)的方式為脈沖觸發(fā)
  104.           TH0=0x00;
  105.           TL0=0x00;
  106.           T_flag=0;
  107.           _reset=0;
  108.           while(1)
  109.           {
  110.             while(!b_test)                   //如果有測量按鍵輸入就往下執(zhí)行
  111.             {
  112.              i=0;
  113.              _reset=1;                      //啟動555時基芯片
  114.              EX0=1;          //開啟中斷0
  115.              while(_reset)   //超出等待時間,中斷還沒有過來,就退出
  116.               {
  117.                i++;
  118.                if(i>5000)   //設(shè)置最長等待時間
  119.                 {
  120.                  _reset=0;  //最長等待時間到還沒有中斷,停止555
  121.                 }
  122.               }
  123.              if(N<800)         //如果計數(shù)值小于100,顯示SM,表示應(yīng)換用小一點的量程
  124.               {
  125.                b[3]=0X1D;
  126.                b[2]=0X23;
  127.               }
  128.              if(N>5000)        //如果計數(shù)值大于5000,顯示LA,表示應(yīng)換用大一點的量程
  129.               {
  130.                b[3]=0X11;
  131.                b[2]=0X1C;
  132.               }
  133.              if(N>=800 && N<=5000)
  134.               {
  135.                C=N/100;         //計算電容的大小
  136.                //if(C>=10)
  137.                                  //{
  138.                                  b[2]=C/10; //計算電容值的十位
  139.                                  b[3]=C-b[2]*10; //計算電容值的個位
  140.                                  //}
  141.                                         /*else
  142.                                         {
  143.                                         b[2]=0;      
  144.                                         b[3]='.';
  145.                 b[4]=C;                                       
  146.                        
  147.                                         }*/
  148.                                          
  149.                                 }
  150.              }
  151.             Display(); //顯示電容的大小
  152.            }
  153.         }
  154.         void int0(void) interrupt 0   //第一次中斷開始計數(shù),第二個中斷停止計數(shù)
  155.         {
  156.           T_flag=!T_flag;
  157.           if(T_flag==1)
  158.           {
  159.            TR0=1;         //開始計時
  160.           }
  161.           if(T_flag==0)
  162.           {
  163.            TR0=0;         //停止計時
  164.            EX0=0;         //關(guān)閉中斷
  165.            _reset=0;      //停止發(fā)出方波
  166.            N=TH0*256+TL0; //計算計數(shù)器的值
  167.            N=N*4.93/3;
  168.            TH0=0x00;      //恢復(fù)初值
  169.            TL0=0x00;
  170.           }
  171.          }
復(fù)制代碼

所有資料51hei提供下載:
電容測量儀.zip (54.41 KB, 下載次數(shù): 192)

評分

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

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:284488 發(fā)表于 2020-5-18 08:45 | 只看該作者
剛好需要,感謝樓主分享。
回復(fù)

使用道具 舉報

板凳
ID:710285 發(fā)表于 2020-5-26 22:51 | 只看該作者
誤差是多少啊
回復(fù)

使用道具 舉報

地板
ID:760449 發(fā)表于 2020-10-9 11:54 | 只看該作者
感謝樓主分享,正好在做一個項目能用上
回復(fù)

使用道具 舉報

5#
ID:647434 發(fā)表于 2020-10-11 17:40 | 只看該作者
要protue8.6以上才能運行
回復(fù)

使用道具 舉報

6#
ID:864317 發(fā)表于 2020-12-20 23:54 | 只看該作者
測量范圍多少啊
回復(fù)

使用道具 舉報

7#
ID:3802 發(fā)表于 2022-12-20 11:18 | 只看該作者

剛好需要,感謝樓主分享。
回復(fù)

使用道具 舉報

8#
ID:1137340 發(fā)表于 2024-11-28 23:11 | 只看該作者
測量范圍多少
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: av电影一区二区 | 91精品国产一区二区三区蜜臀 | 亚卅毛片| 色接久久 | 8x国产精品视频一区二区 | 中文字幕一区二区三区不卡在线 | 国产精品无码久久久久 | 久久精品成人 | 国产精品久久久久久久久久尿 | 精品欧美一区二区在线观看欧美熟 | 久久精品黄色 | www.久草 | 久久久毛片 | 在线视频中文字幕 | 免费激情网站 | 狠狠做深爱婷婷综合一区 | 亚洲精品专区 | 久久国产精品一区二区三区 | 欧美在线观看黄色 | 国产电影一区二区在线观看 | 国产精品久久久久久久免费大片 | 九一视频在线观看 | 久久久久免费 | 中文字幕精品视频在线观看 | 国产免费让你躁在线视频 | 日韩欧美在线免费观看视频 | 久久久久久久一区二区三区 | 欧美在线一二三 | 国产在线视频在线观看 | 欧洲亚洲视频 | 成人小视频在线观看 | 国产精品国产三级国产aⅴ无密码 | 一区在线观看 | 国产一级电影在线 | 日本精品久久久久 | 91av在线电影 | 香蕉视频91| 国产欧美精品区一区二区三区 | 国产高清自拍视频在线观看 | 男女羞羞的网站 | 欧美综合一区二区 |