1、简易自动电阻测试仪目录摘 要.21. 系统方案.31.1 设计任务.31.2 技术指标要求.31.3设计思路.41.3.1设计方案与论证.42. 理论的分析与计算.6 2.1 电阻测量原理.6 2.2 自动量程转换原理.6 2.3自动筛选电阻原理72.4电位器旋转工作原理 82.5 键盘电路原理.92.6 稳压电源电路102.7 LCD1602显示电路.113. 电路与程序设计.12 3.1软件电路134. 测试方案与测试结果.13 4.1 测试方案及测试条件.14 4.2 测试结果分析.14附 录.15摘要本次我组做的是一个简易自动电阻测试仪,相比以往的电阻测试仪,其自动化的程度更高,它能在
2、测电阻值时能自动换挡,也能实现自动筛选电阻,还能通过电位器的旋转测试相应电阻值。自动电阻测试仪使用方便,而且测量精度比较高。它主要是以C8051F020单片机为核心,由按键装置(ZLG7289)、显示装置(LCD1602)、点阵(32*64)、步进电机装置、测试装置等组成。关键词:C8051F020、自动换挡、自动筛选、旋转电位器、按键ZLG7289、LCD1602 AbstractThis time we made a simple automatic resistance tester, resistance tester than in the past, the higher the
3、degree of automation, It can measure resistance values at the same time automatically switch gear, automatic filtering can be achieved, but also by the rotation of the potentiometer resistance value corresponding test. Automatic resistance testers easy to use and relatively high accuracy. It is main
4、ly based on C8051F020 MCU core, the key device (ZLG7289), display device (LCD1602), dot (32 * 64), stepper motor devices, testing devices and other components.Keywords:C8051F020、LCD1602、ZLG7289、Automatic switching 、automatic filtering, rotation potentiometer1. 系统方案1.1 设计任务设计并制作简易自动电阻测试仪。部分如下1-1所示:图1
5、-1 简易自动电阻测试仪原理框图1.2 技术指标要求(1)测量量程为100、1K、10k、10M四档。测量准确度为(1显示数必须为%读书+2)。(2)3位数字显示(最大显示数必须是999),能自动显示小数点和单位,测量速率大于5次/秒。 (3)100、1K、10K三档量程具有自动量程转换功能。 (4)具有自动筛选功能。(5)具有自动测量和显示电位器阻值随旋转角度变化曲线的辅助装置。1. 3 设计思路 为了实现简易自动电阻测试仪能够自动换挡和自动筛选,也能够通过变化电位器的旋转角度检测到的电阻值在LCD1602上显示且在点阵(32*64)上显示相应的曲线。我们将整体分为以下模块进行攻略:LCD1
6、602显示模块、ZLG7289按键控制模块、点阵(32*64)显示、自动换挡和自动筛选模块、步进电机驱动模块、自制电源模块六大部分。1.3.1 设计方案与论证按照系统设计功能要求,本电阻测试仪的设计采用单片机软件系统实现,用单片机的自动控制能力配合按键控制,来控制测电阻时自动换挡、自动筛选、电位器旋转检测及显示。确定系统主要由单片机主控制模块、LCD1602显示模块、ZLG7289按键控制模块、点阵(32*64)显示、步进电机驱动模块、555振荡电路等组成。(1)显示方案选择 方案一:电阻值和频率的显示可以用数码管,但电路复杂且数码管只能显示简单的数字,显示信息少,不适用于大量显示,占用资源较
7、多。 方案二:本设计需要显示大量的信息,因此应该选用显示功能更好的液晶显示,要求显示更多的数据,增加显示信息的可读性,用户看起来更方便。而LCD1602液晶显示器有明显的优点:尺寸小,微功耗,超薄轻巧,显示信息量大,字迹美观,容易控制。所以选择方案二。(2)按键方案选择 方案一:可以用独立按键进行控制,每个按键占用一根I/O端线,每根I/O端线上的按键工作状态不会影响其他I/O端线上按键的工作状态。独立式按键电路配置灵活,软件结构简单,但是每个按键必须用一根I/O端线,在按键数量较多时,I/O端线耗费较多,且电路结构复杂。 方案二:ZLG7289矩阵式键盘,矩阵式键盘I/O端线分为行线和列线,
8、8X8行列结构可连接64个按键,组成一个键盘,与独立式按键相比,其占用I/O端线少,适用于较多场合。因此选择方案二。(3)电机驱动模块 方案一:采用直流电机,通过PWM电路进行控制,已达到调速的目的,鉴于直流电机动力性能好,但是转速难以平稳控制。 方案二:采用步进电机,使用脉冲信号来进行控制,当来一个脉冲,电机转动7.5个角度,虽然动力性能不好,但是转速控制平稳,为了精确控制速度。 因此采用方案二。(4)电阻测量设计方案电阻测量仪的设计可用多种方案完成。其中最基本的是根据R的定义式来测量,即伏安特法,但这方法要测量两个模拟量,不易实现自动化。最常用的到测量方法有如下几种。(a)串联分压原理 图
9、1-3 串联分压原理图图1-4 串联电路原理图根据串联电路的分压原理可知,串联电路上电压与电阻成正比关系,通过测量Rx和R0上的电压,由公式Rx=Ux(U0/R0)。这种方法电路、原理简单,但是易受干扰,准确度和精度难以得到保证。 (b)利用直流电桥平衡原理。图1-5 电桥原理图 通过电路平衡原理,不断调节电位器。使得电表指针指向正中间。由Z1Z4=Z3Z4 ,再通过测量电位器电阻值,即可得到待测电阻的值。但是,这种测量方法参数的值还要通过联立方程求解。调节电阻值一般只能手动,电桥平衡的判别亦难用简单电路实现。因此,电桥法不易实现自动测量。(c)由555芯片构振荡电路将不同阻值的电阻接入555
10、定时器构成振荡电路,会产生不同频率的振荡信号,频率是单片机很容易处理物理量,通过软硬件处理,可以计算出阻值。这种方法相较于前两种,易于控制,非常智能化,且误差小、精度高,因此在本次设计中,我们采用555振荡电路。2. 理论的分析和计算2.1 电阻的测量原理 本设计采用了555构成振荡电路,单片机对此电路产生的频率进行计算,最后可根据精密电阻进行校验,然后显示。在测量电阻时,由于不同量程的电阻使用同样的测量电路存在较大的测量误差,因此在测量过程中将先检测振荡电路所产生的频率,之后通过控制继电器组自动匹配对应量程的测量电路。图1-6 电阻测量原理图公式计算:振荡周期为T=t1+t2=(ln2)(R
11、4+Rx)C8+(ln2)RxC8=(ln2)(R4+2Rx)C8故R4+2Rx=1/(ln2) C8f f=1/(ln2)C8(R4+2RX),单片机根据所给频率求阻值。最后显示。(2) 555芯片功能介绍555定时器是一种模拟电路和数字电路相结合的中规模集成器件,它性能优良,适用范围很广,外部加接少量的阻容元件可以很方便地组成单稳态触发器和多谐振荡器,555 定时器的电源电压范围宽,可在 4.5V16V 工作。一般的工作过程可分为以下四个阶段:(a) 暂稳态 I(Otl): 电容 C 充电 , 充电回路为 VDD R1 R2 C 地 , 充电时间常数为 为1=(R1+R2)C, 电容 C
12、上的电压 uc 随时间 t 按指数规律上升 , 此阶段内输出电压 uo 稳定在高电平. (b) 自动翻转 I(t=tl): 当电容上的电压 uc 上升到了 VDD 时 , 由于 555 定时器内 S=0,R=1, 使触发器状态Q由 1 变为 0, 由0变成 1, 输出电压 uo由高电平跳变为低电平 , 电容 C 中止充电.(c) 暂稳态 (t1t2): 由于此刻=1, 因此放电管 V 饱和导通 , 电容 C 放电 , 放电回路为 C R2 放电管 V 地 , 放电时间常数2=R2C( 忽略 V 管的饱和电阻 ), 电容电压 uc 按指数规律下降 , 同时使输出维持在低电平上。(d) 自动翻转(
13、t=t2): 当电容上的电压 uc下降到了 VDD 时 , 由于 555 定时器内 S=1,R=0, 使触发器状态Q由0 变为 1, 由1变成0, 输出电压uo由低电平跳变到高电平 , 电容 C 中止放电.由于=0, 放电管截止 , 电容 C 又开始充电 , 进入暂稳态 I.以后 , 电路重复上述过程 , 电路没有稳态 , 只有两个暂稳态 , 它们交替变化 , 输出连续的矩形波脉冲信号。图1-7 555定时器构成的多谐振荡器电路及工作波形2.2 自动量程转换原理 系统接入被测电阻后,将首先进入第一档进行匹配测试,如果频率在超出了单机在第一个频率的记录,发现频率小即通过继电器转换量程。如下表设定
14、了三个档位,通过对频率值的判断来由单机决定是否进行自动换档。 表1 第一档R4(W)C(mf)f(RX=10)-f(RX=100)1000.3336.43kHZ-14.57kHZ0.4725.58kHZ-10.23kHZ 第二档R4C8f(RX=100)-f(RX=1K)1K0.3336.43kHZ-14.57kHZ0.4725.58kHZ-10.23kHZ第三档R4C8f(RX=1K)-f(RX=10K)10K0.3336.43kHZ-14.57kHZ0.4725.58kHZ-10.23kHZ自动换档硬件电路图如下:继电器图1-8 自动换档硬件电路图2.3自动筛选电阻原理自动筛选时,由zlg
15、7289键盘输入要求匹配的电阻档位、误差值或电阻值,经单片机计算和判断后,在LCD上显示出被测电阻值并且显示出是否符合选择要求。2.4 电位器旋转工作原理通过步进电动机驱动电位器旋转。步进电机的步距角为7.5,通过测试步进电机每驱动一次对应一定的电阻变化,由单片机根据电位器旋转角度计算出电阻值,然后在LED点阵上进行曲线显示。电动机驱动电位器旋转硬件电路图如下:继电器图1-9 电动机驱动电位器旋转硬件电路图2.5 键盘电路Zlg7289芯片功能介绍: Zlg7289是一片具有串行接口的,可同时驱动8位共阴式数码管(或64只独立LED)的智能显示驱动芯片,该芯片同时还可边接多达64键的键盘矩阵,
16、单片机即可完成LED显示,键盘接口的全部功能。 Zlg7289内部含有译码器,可直接接受BCD码,并同时具有2种译码方式。此外,还具有多种控制指令,如消急、闪烁、左移、右移、段扫址等。Zlg7289具有片选信号 ,可方便地实现多于8位的显示或多于64键的键盘接口。本设计采用了Zlg7289键盘电路,采用键盘输入确定测量类型,键盘由16个按键组成,分两排排列。其原理图如下图所示。通过16个按键可以控制数码管显示0-15。图2-1 ZLG7289原理图2.6 稳压电源电路本设计的供电系统采用了自行设计的直流稳压电源。该稳压电源以最简单的结构为本设计提供了多套电源,原理框图如下所示。图2-2 稳压电
17、源原理图该电源电路实现将220V的交流电转换成为12V、9V、5V、3.3V等多组直流电。用于系统使用。交流电压经桥堆2W10变成了直流电压,经过7812稳压输出12V,经过7809稳压输出9V,经过7805稳压输出5V。电源实物图如下:图2-3 稳压电源实物图该电源电路实现将220V的交流电转换成为12V、9V、5V、3.3V等多组直流电。用于系统使用。2.7 LCD1602显示电路本设计采用了1602字符的LCD显示及LED液晶显示,1602液晶工作电压为+5V。其原理图如下所示:图2-4 LCD1602原理图Lcd1602不论在读还是在写时必须先查忙。基本操作时序: 读状态 输入:RS=
18、L,RW=H,E=H 输出:DB0DB7=状态字 写指令 输入:RS=L,RW=L,E=下降沿脉冲,DB0DB7=指令码 输出:无 读数据 输入:RS=H,RW=H,E=H 输出:DB0DB7=数据 写数据 输入:RS=H,RW=L,E=下降沿脉冲,DB0DB7=数据 输出:无3. 电路与程序设计 3.1软件电路系统软件总流程图如图2-5所示,分为自动换挡、自动筛选、电位器旋转,由ZLG7289控制,其中筛选部分设有档位筛选,误差档位,欲知值位置的设定。如若默认测得电阻的值与筛选值吻合,则输出液晶显示,如若不是则测下一个待定电阻。图2-5 系统软件主流程图4. 测试方案与测试结果校准用的器材、
19、仪表:数字万用表、电阻箱。 电阻的一组数据如下表所示:测量设定电阻值和实测电阻值及误差,记录在下表格中: 电阻Rx的设定值电阻Rx的测量值误差%1010.55100100.120.1210K10.5K2100K101.34K1.341M1.015M1.510M10.017M1.7测量设定电位器旋转角度对应电阻值与实测角度对应电阻值及误差,记录在下表格中:电位器旋转角度(单位度)角度对应电阻值(单位欧母)实测角度对应电阻值(单位欧母)误差%7.50.20.19.0.0137.510.9145.01.214675.022.1582.52.221.5902.42.524.3 测试结果分析本系统采用单
20、片机C8051F020和555振荡电路、步进电机驱动电位器旋转电路实现了对电阻的测量,到达了比较好的效果。本仪器利用单片机技术实现了电阻测量的智能化设计,而且系统性能稳定,测量精度较高,相对误差较小,操作简单,具有较强的实用性。当然本系统还存在着许多需要改进的地方,比如还可以继续提高测量的精度和加大测量的范围。因为是采用单片机实现的,利用其可以编程的特性,使测量的值结合一些数据处理方式使测量更加接近真实值。本系统也还有许多可以扩展的功能,可以增加语音功能,每次测量值稳定的时候就通过语音报告出来;也可以增加在线测量的功能,这样就更能够测量出元件工作时的正常值,而不仅仅是静态时的值。附录:C语言程
21、序#include#include/-/ 位定义/-sbit RS = P31;/输入数据或输入指令sbit RW = P32;/写入数据或读入指令sbit E = P33;/使能信号sbit clk=P35; /同步时钟输入端,向芯片发送数据及读取键盘数据时,此引脚电平上升沿表示数据有效 sbit dio=P36;/数据通信口sbit cs=P34; /片选输入端,此引脚为低电平时,可向芯片发送指令及读取键盘数据sbit LT = P24;/sbit R1 = P25;/sbit R2 = P26;/sbit SK = P27;/sbit EN=P30;/-/ 函数定义/-void w_cm
22、d(unsigned char cmd);/写入指令函数void w_dat(unsigned char dar);/写入数据函数void w_string(unsigned char addr_start,unsigned char*p);/字符串串显示函数void delay(int count);/延时void delay2(unsigned int x);/延时void PORT_Init (void);/端口初始化void SYSCLK_Init (void);/系统时钟初始化void init_int(void);/看门狗初始化void lcd_init(void);/lcd 初始
23、化void js0_ISR(void);/计数器0中断void Timer01_Init(void);/定时器计数器初始化void Timer1_ISR(void);/定时器1中断void input_8 (int in);/输入8位指令子函数void input_16 (int inn);/输入16位指令子函数/void dzjishuan();read_write();/读写子函数LED();/LED点阵函数/-/ 变量声明/-unsigned int u=0,z,x1,c;/u的作用用于计几次溢满 z x用于装高8位 和低8位unsigned int p=0;/无符号的整数变量plong
24、 int k;/定义长整数变量char L016;/定义一个16位字符型变数组long int brm,brl;char L116; /第一行char L5= Qing_Xuan_Ze ;/请选择int k11;char shaixuan= shaixuan ;/筛选char dangwei1= dangwei ;/档位char wucha1= wucha ;/误差char gewei1= gewei ;/个位char shiwei1= shiwei ;/十位char baiwei1= baiwei ;/百位int a,s,d,w,j,h,f,a1,s1,d1,w1,j1,h1,p2,a2,b
25、2,q2=1,w2=0,k2=0,js=0,zz,fz;/定义整数变量int b10=0,1,2,3,4,5,6,7,8,9;/字符对应数组表int y11,z11,w11,q11;/LED点阵变量int R1_dian=1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0;int R2_dian=1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
26、,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0;int dangwei;/档位int wuc;/误差显示的内容int gewei,shiwei,baiwei;/个位,十位,百位int x123;char inw16;int wu;int abc1,abc2,abc3;int g4=0,s4=0,b4=0;int aa;int xyz;float wucha;long int bjrl,bjrm;float lsp;int zzz;int m12=0;int j12,b12,t12,q1
27、2;int check;long int real;int z21,w21,y21,q21;/-/ 有返回值的延时函数/-void delay (int count) /conunnt根据输入值大小,控制延时的时间int i;for(i=0;i0;c-)for(b=152;b0;b-)for(a=70;a0;a-); /-/ 端口初始化/-void PORT_Init (void)/端口初始化 /XBR0 = 0X00; /XBR0 = 0xef; /配置引脚/XBR1 = 0x02; /配置引脚P1MDIN = 0x00;/aXBR0 = 0x87;/int0中断配置交叉开关XBR1 = 0
28、X07; /zlgXBR2 = 0x40; / 使能数据交叉开关和弱上拉P3MDOUT = 0xff; /lcd 1602 控制位P1MDOUT = 0X00;P74OUT = 0xff;/数据输入口/-/ 系统时钟设置 内部时钟8MHz 禁止外部时钟/-void SYSCLK_Init (void)/系统时钟int y;/OSCICN = 0x95; /4MHZ/OSCXCN = 0x00;OSCXCN = 0x67; for (y = 0;y3000;y+); / 1ms /while (OSCXCN & 0x80) = 0); OSCICN = 0x08; /启动外部晶振,内部晶振关闭/
29、-/ 系统初始化 关闭看门狗/-void init_int(void) /程序初始化WDTCN=0xde;/关闭看门狗关WDTCN=0xad; /-/ lcd 初始化/-void lcd_init(void)/液晶初始化w_cmd(0X01);/清屏w_cmd(0X38); /显示模式设置,设置16x2显示,5x7点阵,8位数据接口w_cmd(0x0c);/显示开 显示光标 光标不闪烁 w_cmd(0X06);/写一个字符后地址加一,且光标加一/-/ 写数据/-void w_dat(unsigned char dar)/写数据P7 = dar;RS = 1;/写入数据命令RW = 0;/置0向
30、LCD 写指令或数据E = 1;delay2(200);E = 0;/1-0下降沿 执行内容/-/ 写指令/-void w_cmd(unsigned char cmd)/写指令P7 = cmd;RS=0;/写入指令命令 RW=0;/置0向LCD 写指令或数据 E=1; delay2(2000);E=0;/1-0下降沿 执行内容 weixuan(unsigned int q)/led位选while(q-)SK=0;delay(310); SK=1;delay(310); shizhong(unsigned int q)/led时钟 while(q-) LT=0;delay(2);LT=1;del
31、ay(5);/-/ xxxxxxxxxxxxxxxxxxxxxx/-void Timer01_Init(void) /允许定时器中断请求TMOD = 0x15; /定义方式1TH1 = 0xe2; /赋初值TL1 = 0x00;TR1 = 1;TR0 = 1;ET0 = 1; ET1 = 1; /允许定时器中断请求TH0 = 0x00; /赋初值TL0 = 0x00;void Timer1_ISR(void) interrupt 3TH1 = 0xe2; /赋初值TL1 = 0x00;z=TH0;x1=TL0;u=0;TH0=0x00;TL0=0x00;void js0_ISR(void) i
32、nterrupt 1TH0 = 0x00; /赋初值TL0 = 0x00;u+;/-/ 字符串显示函数/-void w_string(unsigned char addr_start,unsigned char*p)/LED显示w_cmd(addr_start);/地址设置delay2(2000);while(*p !=0)/如果指针的内容不为空则循环下列函数w_dat(*p+);/每次地址加一void input_8 (int in) /in表示输入数据int j3; /j计数用 cs=1; /设置cs和clk的起始值clk=0;delay(100);cs=0;/开始输入数据dio=in; /输入1位数据delay(10);clk=1; /clk产生下降沿,使数据有效delay(20);clk=0;delay(10);
版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。
Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1
陕公网安备 61072602000132号 违法和不良信息举报:0916-4228922