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

標題: 基于單片機的電容測量儀設計,原理圖仿真,代碼壓縮包 [打印本頁]

作者: 15765975859    時間: 2020-5-18 00:05
標題: 基于單片機的電容測量儀設計,原理圖仿真,代碼壓縮包
前段時間智能儀器結課做的,
電容測量儀,
里面有proteus仿真文件,單片機代碼


單片機源程序如下:
  1. #include <reg52.h>
  2.         #include<intrins.h> //庫函數
  3.        
  4.         #define DATA P0
  5.         sbit RW=P2^6;       //1602寫數據
  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寫命令函數*********/
  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寫數據函數**************/
  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);//功能設置
  67.          Delay1ms(5);
  68.          wcomd(0x38);//功能設置
  69.          Delay1ms(5);
  70.          wcomd(0x01);//清屏
  71.          Delay1ms(5);
  72.          wcomd(0x08);//關顯示
  73.          Delay1ms(5);
  74.          wcomd(0x0c);//開顯示,不開光標
  75.        
  76.         }
  77.        
  78.         /***********顯示函數**************/
  79.         void Display(void) //顯示函數
  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位計數工作方式1
  103.           IT0=1;                            //設置外部中斷的觸發的方式為脈沖觸發
  104.           TH0=0x00;
  105.           TL0=0x00;
  106.           T_flag=0;
  107.           _reset=0;
  108.           while(1)
  109.           {
  110.             while(!b_test)                   //如果有測量按鍵輸入就往下執行
  111.             {
  112.              i=0;
  113.              _reset=1;                      //啟動555時基芯片
  114.              EX0=1;          //開啟中斷0
  115.              while(_reset)   //超出等待時間,中斷還沒有過來,就退出
  116.               {
  117.                i++;
  118.                if(i>5000)   //設置最長等待時間
  119.                 {
  120.                  _reset=0;  //最長等待時間到還沒有中斷,停止555
  121.                 }
  122.               }
  123.              if(N<800)         //如果計數值小于100,顯示SM,表示應換用小一點的量程
  124.               {
  125.                b[3]=0X1D;
  126.                b[2]=0X23;
  127.               }
  128.              if(N>5000)        //如果計數值大于5000,顯示LA,表示應換用大一點的量程
  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   //第一次中斷開始計數,第二個中斷停止計數
  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;         //關閉中斷
  165.            _reset=0;      //停止發出方波
  166.            N=TH0*256+TL0; //計算計數器的值
  167.            N=N*4.93/3;
  168.            TH0=0x00;      //恢復初值
  169.            TL0=0x00;
  170.           }
  171.          }
復制代碼

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


作者: lon7085    時間: 2020-5-18 08:45
剛好需要,感謝樓主分享。
作者: 桑榆未老    時間: 2020-5-26 22:51
誤差是多少啊
作者: JasonW    時間: 2020-10-9 11:54
感謝樓主分享,正好在做一個項目能用上
作者: yonya    時間: 2020-10-11 17:40
要protue8.6以上才能運行
作者: 2949521807    時間: 2020-12-20 23:54
測量范圍多少啊
作者: qzyhlf    時間: 2022-12-20 11:18

剛好需要,感謝樓主分享。
作者: 我在人間撿故事    時間: 2024-11-28 23:11
測量范圍多少




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 国产成人在线视频免费观看 | 99精彩视频| 视频一二区 | 欧美日韩1区2区3区 欧美久久一区 | 日日夜夜天天综合 | 久久免费观看一级毛片 | 亚洲小视频在线播放 | 亚洲综合色婷婷 | 日本久久综合 | 成人一区av偷拍 | 99精品国产在热久久 | 婷婷色在线播放 | 国内精品免费久久久久软件老师 | 日本中出视频 | 狠狠操电影 | com.色.www在线观看 | 精品视频在线观看 | 精品久| 国产一区 日韩 | 成人在线免费网站 | 成人精品一区二区三区四区 | 亚洲91精品| 成人福利片 | 国产精品激情 | 日本二区 | 在线成人av | 日韩aⅴ在线观看 | 九九99久久 | a久久久久久 | 国产一区久久久 | 成人精品一区 | 91国产精品 | 国产精彩视频在线观看 | a免费视频 | 久久99国产精品久久99果冻传媒 | 成人在线精品视频 | 天堂中文字幕av | 国产传媒毛片精品视频第一次 | av网站免费在线观看 | 老妇激情毛片免费 | 一级片在线视频 |