作者:百色学院 李水平 劳成强 林庆亮
指导教师:宁建光 许发翔
作品简介
多功能万用表是电子设计人员必备的工具之一,我们设计的多功能万用表有电阻测量、电容测量、电感测量、电压测量、电流测量以及二极正负极判断等功能,是一款基于实用性价值而设计的产品。
在硬件和软件的结合下,我们实现了多个介面独立显示,为使用方面,我们还实现了一键控制功能,即每一种功能都由一个独立的按键控制,在显示介面发生改变的同明,也会进入到该种状态下,这样就可以减少许多不必要的干拢,也使读数变得直观明了。
由于是设计样品,而不是生产的成品,因此为了降低成本,有很多比较简单明了的元我们用了便宜实惠的元件代替,虽然性能上没有达到很高的要求,但已经足于达到我们电子设计的目的--证实了这种设计的可行性。全景图如下:
平台选型说明
单片机开发板(以STC15F2K61S2芯片为控制核心)为平台
设计说明
一、设计原理:
1:电感的测量
以CD4069以及电阻电容构成电路,当接上被测电感时,整个电路就会形成振荡回路,输出一定频率的正弦波,将该信号输入STC15F2K61S2开发板的外部计数器,得出它的振荡频率,通过软件的计算就会得出电感的感值,其原理图如附录1.
2:电阻的测量
以555以及电阻电容构成电路,当接上被测电阻或者电容时,整个电路就会形成振荡回路,输出一定频率的正弦波,根据555定时器构成单稳态,产生脉冲波形,通过单片机读取高低电平得出频率,通过公式换算得到电阻阻值。由f=1/ [(R1+2R2)*C*In2]得到公式: R2=1/2*[1/ (f*c*Ln2)-R1]
将该信号输入STC15F2K61S2开发板的外部计数器,得出它的振荡频率,通过软件的计算就会得出电阻电容的值,其原理图如附录2。
3:根据555定时器构成单稳态,产生脉冲波形,通过单片机读取高低电平得出频率,通过公式换算得到电容值。由f=1/ [(R1+2R2)*C*In2]得到公式: Cx=1/ [c*Ln2 (R1+2*R2)]
4:二极管的测量
二极管正向接入电路导通,此时蜂鸣器发声,指示灯亮。
5:直流电压的测量
两表笔间连接一定值的两个电阻,用STC15F2K61S2采集两电阻间的电压,经过软件的处理即得出被测点的电压,根据串联电路的分压原理可知,串联电路上电压与电阻成正比关系。通过测量Rx和R0上的电压。由公式 Rx=Ux/(U0/R0) ,其原理图如附录3.
6:其测量原理与电压测量一样,都是采集电压。其原理图如附录4.
二、设计方案:
主控:以STC15F2K61S2为主控芯片,它有丰富的外部中断,以及外部定时器,并且自带八通道的AD采集,而普通的51单片机没有这样的功能,所以选它是大势所需。
电感的测量:CD4069具有低导通阻抗和很低的截止漏电流。幅值为4.5~20V的数字信号可控制峰峰值至20V的模拟信号,其工作频率几乎可达2M,价格便宜,而且已经达到我们的所需,所以选它无疑。
电阻电容的测量:555定时器成本低,性能可靠,只需要外接几个电阻、电容,就可以实现多谐振荡器
二极管、直流电压、电流的测量:由于其电路简单,几乎只用基本元件,所以不再阐述。
三、程序小序
#include
#define uint unsigned int
#define uchar unsigned char
#include "yejing.c"
#include "skdy.c"
uint sec=0;
uint val_L=0;
unsigned long int val_R=0;
uint t1count=0;
uint t0count=0;
uint count_num,time;
uchar flag;
uchar key_num;
/****模拟开关*****/
sbit A1=P2^7;
sbit B1=P2^4;
sbit C1=P2^5;
sbit key1=P3^0;
sbit key2=P3^1;
sbit key3=P3^2;
sbit key4=P2^1;
sbit key5=P2^2;
sbit key6=P2^3;
uchar code table[]="0123456789";
uchar scan_key(void)
{
uchar key;
if(key1==0)
{
delay1(4);
if(key1==0)
{
while(!key1);
wr_lcd(comm,0x01); /*清屏,地址指针指向00H*/
A1=0;
B1=1;
C1=0;//A1=B1=C1=0 选择通道2
writeLCD_C();
key=1; //测电容标志
}
}
void main()
{
uchar a[8],r[7],l[6];
uchar i[5],v[5];
unsigned long int temp;
uint temp2,temp3;
InitADC();
init_lcd(); //
init_interrupt(); //
chn_disp(); //
delay1(10);
while(1)
{
key_num=scan_key();
switch(key_num)
{
//++++++++++++++++++++++++++++
case 1: //获得电容数据
if(flag==1)
{
flag=0; //1秒时间到
TR0=0; //关定时器0
temp=(t0count*65536)+(TH0*256)+TL0; //temp
t0count=0;
//temp2=4435100/temp;
temp2=236795/temp;
sec=temp2;
wr_lcd(comm,0x8b); //write_bt(0xf8,0x94);
wr_lcd(dat,0x3a); //:号
a[3]=sec/10000;
a[4]=sec%10000/1000;
a[5]=sec%1000/100;
a[6]=sec%100/10;
a[7]=sec%10;
wr_lcd(dat,a[2]+0x30);
wr_lcd(dat,a[3]+0x30);
wr_lcd(dat,a[4]+0x30);
wr_lcd(dat,a[5]+0x30);
wr_lcd(dat,a[6]+0x30);
wr_lcd(dat,0x2e); //:号
wr_lcd(dat,a[7]+0x30);
temp=0;
TH0=0; //
TL0=0; //定时为零,
TR0=1; //重新开定时器0
}
break;
case 2: //获得电阻数据
if(flag==1)
{
flag=0;
TR0=0;
temp=(t0count*65536)+(TH0*256)+TL0;//好像是计算1秒内T0的总的计数次数
val_R=(136000/temp)-400;// (1000/(0.693147180*0.09))//差不多 1345
//val_R=22899860/temp-118;
t0count=0;
if((val_R>=10)&&(val_R<=270)) //1k-10k
{val_R=val_R+5;}
if((val_R>=180)&&(val_R<=1600)) //18k-160k
{val_R=val_R+3;}
if((val_R>=1700)&&(val_R<=2100)) //170k-210k
{val_R=val_R-160;}
if((val_R>=21000)&&(val_R<=24000)) // 2m
{val_R=val_R-2260;}
wr_lcd(comm,0x8B);
wr_lcd(dat,0x3a); //":"
r[0]=val_R/1000000;
r[1]=val_R%1000000/100000;
r[2]=val_R%100000/10000;
r[3]=val_R%10000/1000;
r[4]=val_R%1000/100;
r[5]=val_R%100/10;
r[6]=val_R%10;
// wr_lcd(dat,r[0]+0x30);
//write_bt(0xfa,0x2e);
wr_lcd(dat,r[1]+0x30);
wr_lcd(dat,r[2]+0x30);
wr_lcd(dat,r[3]+0x30);
wr_lcd(dat,r[4]+0x30);
wr_lcd(dat,r[5]+0x30);
wr_lcd(dat,0x2e);//:号
wr_lcd(dat,r[6]+0x30);
temp=0;
TH0=0;
TL0=0;
TR0=1; } //case 2 结束
break;
多功能万用表可以说是为致力于学电子的同学量身定做的一款学习工具。
作品特色
先进性:在于它几乎是万用表以及LRC表的组合。
实用性:则是它的功能包括直流电压、直流电流、电阻、电容、电感的测量以及二极管的测试,它虽然不是什么高精度的测量仪器,但也绝对满足了学生在学习中的所需。
创新性:而且我们的设计非常的简单,所用的元器件也不是什么高级的东西,所以多功能万用表对于学生可谓是物美价廉的测量仪器,拥有它绝对是物超所值。
系统演示视频: