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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2217|回復: 3
打印 上一主題 下一主題
收起左側(cè)

請各位朋友幫忙指正下我單片機電容值測試程序的錯誤

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:344887 發(fā)表于 2019-4-9 23:27 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
50黑幣
我的仿真只有第一檔能夠準確測量出電容容值,其余三擋不準確。請問是程序哪里出現(xiàn)錯誤了?能幫我指正一下嗎?謝謝!

具體可查看附件。




檔位        阻值                           量程

一檔       R=77.2                        1~50微法
                              
二擋       R=772                         0.1~5微法

三擋       R=7720                       0.01~0.5微法

四擋       R=77200                    0.00~0.05微法

單片機源程序如下:
  1. #include <reg51.h>
  2. #include<intrins.h>//庫函數(shù)

  3. #define DATA P0
  4. sbit RW=P2^1;//1602寫數(shù)據(jù)
  5. sbit RS=P2^0;//1602寫地址
  6. sbit EN=P2^2; //1602工作使能
  7. sbit b_test=P3^7;   //開始測量電容的按鍵輸入
  8. sbit _reset=P3^5;   //555時基芯片工作控制信號
  9. unsigned int T_flag,N,C,i,Dis1,Dis0;
  10. unsigned int b[6]={0X13,0X0D,0X00,0X00,0X25,0X16};   //顯示C=00UF

  11. /***********延時1MS******************/
  12. void Delay1ms(unsigned int mm)
  13. {unsigned int i;
  14. for(mm;mm>0;mm--)
  15.    for(i=100;i>0;i--);
  16. }
  17. /***************檢查忙否*****************/
  18. void Checkstates()
  19. {
  20. unsigned char dat;
  21. RS=0;
  22. RW=1;
  23. do{EN=1;//下降沿
  24.     _nop_();//NOP為單周期指令,延時1微妙
  25.         _nop_();
  26.     dat=DATA;
  27.     _nop_();
  28.         _nop_();
  29.     EN=0;
  30. }while((dat&0x80)==1);
  31. }
  32. /**************LCD寫命令函數(shù)*********/
  33. void wcomd(unsigned char cmd)
  34. {
  35. Checkstates();         //判忙
  36. RS=0;        //命令
  37. RW=0;         //寫
  38. DATA=cmd; //準備發(fā)送命令
  39. EN=1;         //使能端為1時 ,允許數(shù)據(jù)交換
  40. _nop_();
  41. _nop_();
  42. _nop_();
  43. _nop_();
  44. EN=0;         //完成數(shù)據(jù)交換,使能端電位拉低
  45. }
  46. /**********LCD寫數(shù)據(jù)函數(shù)**************/
  47. void wdata(unsigned char dat)
  48. {
  49. Checkstates();                 //判忙
  50. RS=1;                //數(shù)據(jù)
  51. RW=0;           //寫
  52. DATA=dat;
  53. EN=1;
  54. _nop_();
  55. _nop_();
  56. _nop_();
  57. _nop_();
  58. EN=0;
  59. }
  60. /*****************初始化********************/
  61. void LCDINIT()
  62. {
  63. Delay1ms(5);
  64. wcomd(0x38);//顯示功能設(shè)置
  65. Delay1ms(5);
  66. wcomd(0x38);
  67. Delay1ms(5);
  68. wcomd(0x01);//清屏
  69. Delay1ms(5);
  70. wcomd(0x08);//關(guān)顯示
  71. Delay1ms(5);
  72. wcomd(0x0c);//開顯示,不開光標

  73. }

  74. /***********顯示函數(shù)**************/
  75. void Display(void) //顯示函數(shù)
  76. {
  77. unsigned char i,j;
  78. unsigned char a[12]={0X4D,0X45,0X41,0X53,0X55,0X52,0X45,0X4D,0X45,0X4E,0X54,0X53};//顯示measurements
  79. LCDINIT();
  80. for(i=0;i<12;i++)//寫顯示第一行
  81.   { wcomd(0x80+i);         //0x80di第一行第一個字符的地址
  82.     Delay1ms(1);
  83.     wdata(a[i]);
  84.     Delay1ms(1);
  85.    }

  86. for(j=0;j<6;j++)//寫顯示第二行
  87. {
  88.   wcomd(0xc0+j); //第二行第二個字符地址
  89.   Delay1ms(1);
  90.   wdata(0x30+b[j]);
  91.   Delay1ms(1);
  92.   }
  93. Delay1ms(150);

  94. }
  95. void main()
  96. {
  97.   EA=1;                          //打開全部的中斷控制,并開啟外部中斷允許
  98.   TMOD=0x09;                        //T0為16位計數(shù)工作方式1
  99.   IT0=1;                            //設(shè)置外部中斷的觸發(fā)的方式為脈沖觸發(fā)
  100.   TH0=0x00;
  101.   TL0=0x00;
  102.   T_flag=0;
  103.   _reset=0;
  104.   while(1)
  105.   {
  106.     while(!b_test)                   //如果有測量按鍵輸入就往下執(zhí)行
  107.     {
  108.      i=0;
  109.      _reset=1;                      //啟動555時基芯片
  110.      EX0=1;          //開啟中斷0
  111.      while(_reset)   //超出等待時間,中斷還沒有過來,就退出
  112.       {
  113.        i++;
  114.        if(i>5000)   //設(shè)置最長等待時間
  115.         {
  116.          _reset=0;  //最長等待時間到還沒有中斷,停止555
  117.         }
  118.       }
  119.      if(N<100)         //如果計數(shù)值小于100,顯示SM,表示應(yīng)換用小一點的量程
  120.       {
  121.        b[3]=0X1D;
  122.        b[2]=0X23;
  123.       }
  124.      if(N>5000)        //如果計數(shù)值大于5000,顯示LA,表示應(yīng)換用大一點的量程
  125.       {
  126.        b[3]=0X11;
  127.        b[2]=0X1C;
  128.       }
  129.      if(N>=100 && N<=5000)
  130.       {
  131.        C=N/100;         //計算電容的大小
  132.        b[2]=C/10;       //計算電容值的十位
  133.        b[3]=C-b[2]*10;  //計算電容值的各位
  134.       }
  135.      }
  136.     Display(); //顯示電容的大小
  137.    }
  138. }
  139. void int0(void) interrupt 0   //第一次中斷開始計數(shù),第二個中斷停止計數(shù)
  140. {
  141.   T_flag=!T_flag;
  142.   if(T_flag==1)
  143.   {
  144.    TR0=1;         //開始計時
  145.   }
  146.   if(T_flag==0)
  147.   {
  148.    TR0=0;         //停止計時
  149.    EX0=0;         //關(guān)閉中斷
  150.    _reset=0;      //停止發(fā)出方波
  151.    N=TH0*256+TL0; //計算計數(shù)器的值
  152.    N=N*5/3;
  153.    TH0=0x00;      //恢復初值
  154.    TL0=0x00;
  155.   }
  156. }
復制代碼


C語言.docx

87.99 KB, 下載次數(shù): 4

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

使用道具 舉報

沙發(fā)
ID:123289 發(fā)表于 2019-4-10 11:04 | 只看該作者
問一下:你是如何保證:開始與結(jié)束剛好是一個周期?
提示:振蕩第一個波的周期,與其它的周期可能存在不同。
回復

使用道具 舉報

板凳
ID:344887 發(fā)表于 2019-4-10 23:51 | 只看該作者
yzwzfyz 發(fā)表于 2019-4-10 11:04
問一下:你是如何保證:開始與結(jié)束剛好是一個周期?
提示:振蕩第一個波的周期,與其它的周期可能存在不同 ...

利用電容充放電,然后555芯片輸出方波控制中斷0,同時計數(shù)器對方波進行計數(shù),由此算出方波的頻率。
回復

使用道具 舉報

地板
ID:344887 發(fā)表于 2019-4-11 10:38 | 只看該作者
yzwzfyz 發(fā)表于 2019-4-10 11:04
問一下:你是如何保證:開始與結(jié)束剛好是一個周期?
提示:振蕩第一個波的周期,與其它的周期可能存在不同 ...

基于AT89C51單片機和555芯片構(gòu)成的多諧振蕩電路設(shè)計一電容測量電路,這種測量方法主要是通過一塊555芯片來測量電容大小。讓555芯片工作在直接反饋無穩(wěn)態(tài)的狀態(tài)下,555芯片輸出一定頻率的方波,其頻率的大小跟被測量的電容之間的關(guān)系是:f=0.772/(R*Cx) ,固定R的大小,其公式就可以寫為:f=k/Cx,只要能夠測量出555芯片輸出的頻率,就可以計算出測量的電容。計算頻率的方法可以利用單片機的計數(shù)器T0和中斷INT0配合使用來進行測量。
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩视频高清 | 精品欧美激情在线观看 | 亚洲一区二区在线播放 | 国内精品视频免费观看 | 可以在线看的黄色网址 | 日韩av.com | 天天射影院 | 免费观看一区二区三区毛片 | 久久这里只有精品首页 | www.亚洲| 国产精品日本一区二区在线播放 | 国产一区影院 | 亚洲在线看 | 久久国产精品一区二区三区 | 久久久久亚洲 | 久久视频精品 | 情侣酒店偷拍一区二区在线播放 | 免费精品视频一区 | 天堂成人国产精品一区 | 久久涩涩 | 日韩欧美在线观看 | 精品视频久久久 | 色视频网站 | 一级免费看片 | 久久精品一级 | 亚洲午夜三级 | 亚洲欧美一区在线 | 亚洲国产一区二区三区 | 久久久久久久一区 | 国产夜恋视频在线观看 | 亚洲精品视频在线观看视频 | 国产成人a亚洲精品 | 免费v片| 国产精品色哟哟网站 | 情侣黄网站免费看 | 国产视频黄色 | www.狠狠干| 伊人伊人 | 成年网站在线观看 | 成人小视频在线观看 | 免费观看色 |