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

立即注冊 登錄
返回首頁

uid:254444的個人空間

日志

基于51單片機的rlc測量儀的程序

熱度 1已有 1908 次閱讀2017-11-27 23:03

程序2:電阻、電容和電感測量值的顯示

//簡易電阻、電容、電感測量儀程序

 

//初始化

#include <reg52.h>

#define uint unsigned int

#define uchar unsigned char

#define ulong unsigned long

#define    PI 3.1415926

 

uchar code table1[8]="Welcome!";

uchar table2[16]="f(Hz)=";

uchar table3[16]="R(Ohm)=";

uchar table4[16]="C(pF)=";

uchar table5[16]="L(uH)=";

 

uchar num,a=0,th0,tl0;

uint C,L;

ulong f,R;

 

sbit lcden=P2^4;                         //液晶使能端  

sbit lcdrs=P2^5;                        //液晶數據命令選擇端

 

sbit key_R=P1^5;                      //測量電阻按鍵

sbit key_C=P1^6;                      //測量電容按鍵

sbit key_L=P1^7;                      //測量電感按鍵

 

sbit R_out=P1^2;                        //測量電阻信號輸入

sbit C_out=P1^3;                        //測量電容信號輸入

sbit L_out=P1^4;                        //測量電感信號輸入

 

//聲明子函數

void delayms(uint xms);               //延時函數

void write_com(uchar com);        //液晶寫命令函數

void write_data(uchar date);         //液晶寫數據函數 

void led_init();                            //液晶初始化函數

void t_init();                               //定時器0初始化函數

void keyscan();                            //鍵盤檢測函數(確定被測元件為電阻、電容或電感)

void display_f(ulong f);              //頻率顯示函數

void display_R(ulong R);             //電阻顯示函數

void display_C(uint C);              //電容顯示函數

void display_L(uint L);               //電感顯示函數

 

//主函數

void main()

{

  led_init();

  t_init();

  keyscan();

  write_com(0x01);

  while(1)

  {

       display_f(f);

       switch(a)

       {

         case 1:R=(ulong)(5000000.0/0.6931472/f-150+0.5);display_R(R);break;

         case 2:C=(int)(100000000.0/153/0.6931472/f+0.5);display_C(C);break;

         case 3:L=(int)(1000000000000.0/0.1/PI/PI/f/f+0.5);display_L(L);break;

      }

  }

}

 

//中斷函數

void T0_count() interrupt 1

{

  switch(a)

  {

   case 1:while(R_out);

              while(!R_out);

                TH0=0;

                TL0=0;

                while(R_out);

                while(!R_out);

                th0=TH0;

                tl0=TL0;

                TR0=0;

                break;

   case 2:while(C_out);

              while(!C_out);

                TH0=0;

                TL0=0;

                while(C_out);

                while(!C_out);

                th0=TH0;

                tl0=TL0;

                TR0=0;

                break;

       case 3:while(L_out);

              while(!L_out);

                TH0=0;

                TL0=0;

                while(L_out);

                while(!L_out);

                th0=TH0;

                tl0=TL0;

                TR0=0;

                break;

   }

   f=1000000.0/1.085069/(th0*256+tl0)+0.5;

}

 

//延時函數

void delayms(uint xms) 

{

  uint i,j;

  for(i=xms;i>0;i--)

       for(j=110;j>0;j--);

}

 

//液晶寫命令函數

void write_com(uchar com)

{

  lcdrs=0;

  P0=com;

  delayms(5);

  lcden=1;

  delayms(5);

  lcden=0;

}

 

//液晶寫數據函數

void write_data(uchar date)  

{

  lcdrs=1;

  P0=date;

  delayms(5);

  lcden=1;

  delayms(5);

  lcden=0;

}

 

//液晶初始化函數

void led_init()

{

  lcden=0;

  write_com(0x38);                    //設置16×2顯示,5×7點陣,8位數據接口               

  write_com(0x0c);                    //設置開顯示,不顯示光標        

  write_com(0x06);                    //寫一個字符后地址指針加1            

  write_com(0x01);                    //顯示清0,數據指針清0          

  write_com(0x80);                    //顯示歡迎界面

  for(num=0;num<8;num++)

  {

        write_data(table1[num]);

        delayms(5);

  }

 

}

 

//定時器0初始化函數

void t_init()

{

  TMOD=0x01;                         //設置定時器0工作方式1(M1M0=0x0001)                                                    

  TH0=0;                                  //裝初值               

  TL0=0;

  EA=1;                                    //開總中斷                  

  ET0=1;                                   //開定時器0中斷

  TR0=1;                                   //啟動定時器0

}

 

//鍵盤檢測函數(確定被測元件為電阻、電容或電感)

void keyscan()

{

  if(key_R==0)

  {

       delayms(10);

       if(key_R==0)

         a=1;

  }

  else

    if(key_C==0)

    {

         delayms(10);

         if(key_C==0)

           a=2;

    }

      else

      if(key_L==0)

      {

           delayms(10);

           if(key_L==0)

             a=3;

      }

         else

              while(key_R&&key_C&&key_L);              //按鍵按下時退出死循環

}

 

//頻率顯示函數

void display_f(ulong f) 

{

  uchar count=0;

  ulong f0;

  f0=f;

  while(f)

  {

        f=f/10;

        count++;

  }

  for(num=5+count;num>5;num--)

  {

      table2[num]=f0%10+48;

       f0=f0/10;

  }

  write_com(0x80);

  for(num=0;num<6+count;num++)

  {

       write_data(table2[num]);

       delayms(5);

  }

}

 

//電阻顯示函數

void display_R(ulong R)

{

  uchar count=0;

  ulong R0;

  R0=R;

  while(R)

  {

        R=R/10;

        count++;

  }

  for(num=6+count;num>6;num--)

  {

      table3[num]=R0%10+48;

       R0=R0/10;

  }

  write_com(0x80+0x40);

  for(num=0;num<7+count;num++)

  {

       write_data(table3[num]);

       delayms(5);

  }

}

 

//電容顯示函數

void display_C(uint C) 

{

  uchar count=0;

  uint C0;

  C0=C;

  while(C)

  {

        C=C/10;

        count++;

  }

  for(num=5+count;num>5;num--)

  {

      table4[num]=C0%10+48;

       C0=C0/10;

  }

  write_com(0x80+0x40);

  for(num=0;num<6+count;num++)

  {

       write_data(table4[num]);

       delayms(5);

  }

}

 

//電感顯示函數

void display_L(uint L)

{

  uchar count=0;

  uint L0;

  L0=L;

  while(L)

  {

        L=L/10;

        count++;

  }

  for(num=5+count;num>5;num--)

  {

      table5[num]=L0%10+48;

       L0=L0/10;

  }

  write_com(0x80+0x40);

  for(num=0;num<6+count;num++)

  {

       write_data(table5[num]);

       delayms(5);

  }

}



路過

雞蛋

鮮花

握手

雷人

發表評論 評論 (2 個評論)

回復 哈哈哈哈慕 2019-8-9 20:26
有沒有原理圖啊
回復 哈哈哈哈慕 2019-8-9 20:26
您能給個原理圖嗎?

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

Powered by 單片機教程網

返回頂部
主站蜘蛛池模板: 国产成人精品综合 | 91精品国产高清久久久久久久久 | 色综合天天网 | 91精品国产乱码久久久久久久 | 国产精品99免费视频 | 九九热在线视频观看这里只有精品 | 女人天堂av| 91精品久久久久久久久中文字幕 | 国产在线播 | 成人av大全| 中日字幕大片在线播放 | 欧美日韩亚洲国产 | 99在线免费视频 | 成人看片在线观看 | 欧美精品一二区 | 久久久欧洲 | 国产一级在线 | 午夜一区二区三区视频 | 成人免费视频观看视频 | 久久成人免费观看 | 九久久 | 久久草视频 | 毛片一级电影 | 欧美日韩在线精品 | 免费在线观看一区二区三区 | 视频在线日韩 | 亚洲欧美aⅴ | 在线伊人 | 国产精品日产欧美久久久久 | 一区二区三区小视频 | 四虎最新视频 | yiren22综合网成人 | 亚洲精品在线看 | 玖玖精品视频 | 亚洲精品一区二区三区在线观看 | 精品一区二区三区免费毛片 | 欧美xxxx做受欧美 | 色婷婷av久久久久久久 | 天天色天天 | 久久精品久久久 | 性色av一区 |