• meilirong
    了解作者
  • Visual C++
    开发工具
  • 78KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 349
    下载次数
  • 2010-04-04 15:12
    上传日期
RLC测试仪,也就是专门测量电阻,电容,电感的仪器,附上程序和电路图,是本人开发的经典之作之一!
RLC.rar
  • 智能RLC和晶体管电流放大系数测试仪
  • 智能RLC和晶体管电流放大系数测试仪
  • Last Loaded fq.DBK
    79.4KB
  • 1602.OBJ
    16.2KB
  • 1602.h
    82B
  • 1602.Opt
    1.9KB
  • 1602.M51
    17.5KB
  • 1602_Uv2.Bak
    1.7KB
  • 1602.Uv2
    1.7KB
  • fq.PWI
    768B
  • 1602.plg
    53.2KB
  • 1602_Opt.Bak
    1.8KB
  • fq.DSN
    81.8KB
  • 1602.hex
    5.1KB
  • 1602.c
    5.2KB
  • 1602.lnp
    40B
  • 1602
    13.1KB
  • 1602.LST
    11.6KB
  • RLC智能测试仪调试.DSN
    140.8KB
内容介绍
#include <reg52.h> #include "1602.h" #define DataPort P0 #define ADCPort P2 #define uchar unsigned char sbit button_r=P1^0; sbit button_c=P1^1; sbit button_l=P1^2; sbit button_q=P1^3; sbit LED_R=P1^4; sbit LED_C=P1^5; sbit LED_L=P1^6; sbit LED_Q=P1^7; sbit RS=P3^0; sbit RW=P3^1; sbit EN=P3^2; sbit START=P3^7; unsigned char func; unsigned long int R,C,L,f,y; uchar i=0; uchar aa,bb,cc; //uchar code aa[5]="free"; uchar code meun[2][16]={" is: ","00000000 "}; uchar code m[10]="0123456789"; unsigned char T0count; unsigned char timecount; bit flag; void Intar_T0T1(void) { flag=0; timecount=0; T0count=0; TH0=0; TL0=0; TR0=1; TR1=1; } void delay1(void) { int i; for(i=80;i>0;i--); } void delay_ms(uchar t) { unsigned char i=0; while(t--)for(i=0;i<120;i++); } void WriteData(uchar dat) { EN=0; RS=0; //********RS寄存器选择输入端,当RS=0;当进行写模块操作,指向指令寄存器。 RW=0; //********当RS=1,无论是读操作还是写操作,都是指向数据寄存器。 RS=1; RW=0; EN=1; DataPort=dat; EN=0; RS=0; RW=0; for (i=0;i<20;i++); } void WriteCmd(uchar cmd) { EN=0; RS=0; //********RS寄存器选择输入端,当RS=0;当进行写模块操作,指向指令寄存器。 RW=0; //********当RS=1,无论是读操作还是写操作,都是指向数据寄存器。 EN=1; DataPort=cmd; RS=0; RW=0; EN=0; for (i=0;i<20;i++); } void DisChar(uchar ps,uchar dat) { WriteCmd((0x80+ps)); WriteData(dat); } void LcdInit(void) { char pp=0; WriteCmd(0x38); delay_ms(5); WriteCmd(0x38); delay_ms(5); WriteCmd(0x38); delay_ms(5); WriteCmd(0x01);delay_ms(5); WriteCmd(0x06);delay_ms(5); WriteCmd(0x38); WriteCmd(0x0c); WriteCmd(0x40); for(pp=0;pp<16;pp++)DisChar(pp,*(meun[0]+pp)); for(pp=0;pp<16;pp++)DisChar(pp+0x40,*(meun[1]+pp)); } void Display(unsigned long int x) { DisChar(0,aa); DisChar(9+0x40,bb); DisChar(10+0x40,cc); DisChar(7+0x40,m[x%10]);x /= 10; DisChar(6+0x40,m[x%10]);x /= 10; DisChar(5+0x40,m[x%10]);x /= 10; DisChar(4+0x40,m[x%10]);x /= 10; DisChar(3+0x40,m[x%10]);x /= 10; DisChar(2+0x40,m[x%10]);x /= 10; DisChar(1+0x40,m[x%10]);x /= 10; DisChar(0+0x40,m[x%10]);x /= 10; delay_ms(200); } button() { //button_r=1; if(button_r==0) { func=1; //功能1:测电阻 LED_R=0; LED_C=1; LED_L=1; LED_Q=1; } //button_c=1; if(button_c==0) { func=2; //功能2:测电容 LED_R=1; LED_C=0; LED_L=1; LED_Q=1; } //button_l=1; if(button_l==0) { func=3; //功能3:测电感 LED_R=1; LED_C=1; LED_L=0; LED_Q=1; } if(button_q==0) { func=4; //功能3:测电感 LED_R=1; LED_C=1; LED_L=1; LED_Q=0; } return func; } void R_measure(void) //电阻测量,以Ω为单位 { while(flag==0); f=(T0count*65536+TH0*256+TL0); //Hz //电阻计算公式 R=721500000/f-10000; y=R; } void C_measure(void) //电容测量,以pF为单位 { while(flag==0); f=(T0count*65536+TH0*256+TL0); //Hz //电容计算公式 C=4800000/f; //pf y=C; } void L_measure(void) //电感测量,以uH为单位 { while(flag==0); f=(T0count*65536+TH0*256+TL0); //Hz //电感计算公式 f/=100000; L=922/(f*f); //L=922*10^10/(f*f) uH y=L; } unsigned int ADCTransform() { unsigned long int uiResult; START=1; START=0; delay_ms(10); uiResult=ADCPort; //出入转换结果。 uiResult=(10000000*uiResult)/51; //处理运算结果。 y=uiResult; } void main(void) { TMOD=0x15;//0001 0101 TH0=0; TL0=0; TH1=(65536-49989)/256; TL1=(65536-49989)%256; ET0=1; ET1=1; EA=1; TR1=1; TR0=1; y=0x00; //ADCPort=51; LcdInit(); // while(1); /*while(1) { if(flag==1) { y=(T0count*65536+TH0*256+TL0); Display(y); flag=0; timecount=0; T0count=0; TH0=0; TL0=0; TR0=1; TR1=1; } }*/ while(1) { button(); if (func==1) { aa='R'; bb='\n'; cc='\n'; R_measure(); } if (func==2) { aa='C'; bb='p'; cc='F'; C_measure(); } if (func==3) { aa='L'; bb='u'; cc='H'; L_measure(); } if(func==4) { aa='Q'; bb='\n'; cc='\n'; ADCTransform(); } Display(y); Intar_T0T1(); } } void t0(void) interrupt 1 using 0 //计脉冲个数 { T0count++; } void t1(void) interrupt 3 using 0 //定时1s { TH1=(65536-50045)/256; TL1=(65536-50045)%256; timecount++; if(timecount==20) { TR0=0; TR1=0; timecount=0; flag=1; } }
评论
    相关推荐
    • RLC.rar
      把R、L、C转换成频率信号f,转换的原理分别是RC振荡电路和LC电容三点式振荡电路。单片机计数得出被测频率,由该频率计算出各个参数值,数据处理后,送显示。
    • celiang.rar
      在单片机上实现电阻,电容,电感的测量,本程序用C语言编程,易懂,可执行
    • RLC-briage.rar
      用C语言编写的RLC数字电桥测试,功能强大,测量范围广,精度高。2012年广西区区赛参赛作品,获得二等奖。
    • RLC测量仪.zip
      电容电阻测量仪,内含proteus图纸,c语言程序
    • RLC测量仪.zip
      用单片机实现电阻(不同阻值范围)与电容的测量
    • zuizhong.rar
      测量仪充分利用了单片机的硬件资源,简洁而高效运行的软件设计思想,实现RLC参数的自动测量和显示。克服了传统的外加交流测量法电源波动易引起偏差和文氏电桥测量法参数调节复杂等问题。系统结构紧凑、操作方便,且...
    • 工程电路分析(第六版)
      3.7 电阻的串联和并联 3.8 分压和分流 实际应用——非地理学的“地” 总结和复习 深入阅读 习题 第4章 基本节点和网孔分析 4.1 节点分析 4.2 超节点 4.3 网孔分析 4.4 超网孔 4.5 节点分析和网孔分析的比较 4.6 ...
    • 幅频特性和相频特性测试(工程主要代码)-电路方案
      I、Q通道平衡对测量仪的精度至关重要,为保证正交平衡,DDS后的放大和滤波电路保证完全相同的电路,参数元件一致,PCB走线一致,由于扫频时间2S,步进为100K,整个频率范围内需要391个频点,对采用速率要求不高,我们...
    • 简易的电阻电容测量电路
      目前,测量电子元件集中参数R、L、C 的仪表种类较多,方法也各不相同,这些方法 都有其优缺点。 电阻R 的测试方法最多。最基本的就是根据R 的定义式来测量。在如图1 中,分别用 电流表和电压表测出通过电阻的电流和...
    • AudioDrv.rar
      惠普CQ40-514TX声卡XP系统驱动