数字电容表(原理图+PCB+源代码+
- 格式:doc
- 大小:860.50 KB
- 文档页数:11
宝典Protel99SE中常用元件的原理图符号名及PCB封装对
照表
Protel99SE中常用元件的原理图符号名及PCB封装对照表
原理图符号名 PCB封装
普通贴装(SMT) 电阻 RES1 AXIAL0.3 RW10 0805 电位器
POT1 VR4 (VR1)
小电容 CAP RAD0.1 CC4 0805 电解电容
ELECTR01 RB.2/.4 CD8 1005 二极管 DIODE DIODE0.4 DW5 0805 发光二极管光电二极管 LED LED 0603 稳压二极管
PHOTO GJ1
ZENER
PNP三极管 PNP TO-92A(TO-22LB2
0) NPN三极管 NPN
变压器 TRANS
晶振 CRYSAL XTAL1
保险丝 FUSE FUSE
按键 SW-PB T1
开关 SW-SPST
接插件(头) *HEADER SIP*(单列) 接插件(座) CON*
单列直插(IC) PIN SIP*
双列直插(IC) PC* DIP* ILEAD*
电池 BATTERY POLAR0.6 蜂鸣器 BELL
整流堆 BRIDGE1
七段数码管 DPY-7-SEG
电感 INDUCTOR L5 灯 LAMP
麦克风 MIC
集成运放 OPAMP DIP* 光电耦合 OPTOISO1 DIP* 单向可控硅 SCR TO-92A 双向可控硅
TRIAC
喇叭 SPEAKER
三端集成稳压 VOLTREG TO126B
(TO-220 )
继电器 RELAY-SPST J1。
基于51单片机的数字电容表的设计数字电容表,具有准确度和灵敏度高,测量速度快等特点,利用多谐振荡电路的频率计算公式,间接求得所测电容的电容值。
一.硬件系统1.1 单片机硬件设计选用具有低功耗特性的单片机可以大大降低系统功耗。
可以从供电电压、单片机内部结构设计、系统时钟设计和低功耗模式等几方面考察一款单片机的低功耗特性。
1.1.1 选用尽量简单的CPU内核在选择CPU 内核时切忌一味追求性能。
8 位机够用,就没有必要选用16 位机,选择的原则应该是“够用就好”。
现在单片机的运行速度越来越快,但性能的提升往往带来功耗的增加。
一个复杂的CPU集成度高、功能强,但片内晶体管多,总漏电流大,即使进入停止状态,漏电流也变得不可忽视;而简单的CPU 内核不仅功耗低,成本也低。
1.1.2 选择低电压供电的系统降低单片机的供电电压可以有效地降低其功耗。
当前,单片机从与TTL 兼容的5 V 供电降低到3.3 V、3 V2 V 乃至1.8 V 供电。
供电电压降下来,要归功于半导体工艺的发展。
从原来的3 μm 工艺到现在的0.25、0.18、0.13 μm 工艺, CMOS 电路的门限电平阈值不断降低。
低电压供电可以大大降低系统的工作电流,但是由于晶体管的尺寸不断减小,管子的漏电流有增大的趋势,这也是对降低功耗不利的一个方面。
目前,单片机系统的电源电压仍以5 V为主,而过去5 年中,3 V 供电的单片机系统数量增加了1 倍,2V 供电的系统也在不断增加。
再过五年,低电压供电的单片机数量可能会超过5 V 电压供电的单片机。
如此看来,供电电压降低将是未来单片机发展的一个重要趋势。
1.1.3 选择带有低功耗模式的系统低功耗模式指的是系统的等待和停止模式。
处于这类模式下的单片机功耗将大大小于运行模式下的功耗。
过去传统的单片机,在运行模式下有wait和stop两条指令,可以使单片机进入等待或停止状态,以达到省电的目的。
等待模式下,CPU 停止工作,但系统时钟并不停止,单片机的外围I/O 模块也不停止工作;系统功耗一般降低有限,相当于工作模式的50%~70%。
************************** 说明********************************本电路只供电子爱好者学习和制作使用,如果由于用于其它用途而带来的损失或者影响,本人一概不予负责。
本人保留所有版权和解释权。
*******************************************************************自制电容表很多贴片电容都没有标明电容值,而我又舍不得扔了它们;自己做电路玩时,经常看到一些废电路板上有很多贴片电容,可以拆下来用,但是却看不到容量,很郁闷。
所以我决定做一个电容表来测试它们的容量。
我用单片机8952和电压比较器339做了一个简单的电容容量测量表,参数大致如下:电容测量范围为1pF-9999.99uF,最小分辨力为1pF。
分为5个量程,可以自动切换量程,也可手动切换。
另外,有简单的频率计功能,能测量0-60MHz的数字信号频率(TTL电平);还可以产生几个单点频率的方波信号(比如1KHz)。
采用1602LCD作为显示器;4个按键控制;使用24C01保存当前设置值,不用每次开机重新设置。
可单5V供电,也可9V交流供电。
电容测试原理简介:根据电容的充电公式,可以计算出电容在充电到1/nVcc(其中n>1,Vcc为充电电源电压)电压时充电时间跟电容的容量和电阻成正比,跟充电电源电压无关。
(通过一个微分方程即可求得,具体的计算步骤这里省略,一般的电路教材上都有讲解)。
工作过程如下:首先,通过单片机选通放电三极管Q9,将电容上的电放掉,放电完毕之后,选通Q1-Q5中的一个三极管,经过一定的电阻,对电容进行充电;同时,打开单片机的计数器0,开始计数。
然后单片机等待外部中断0的发生。
当电容充电达到参考电压值时,比较器翻转,发出充电完成信号到中断0端口,单片机响应中断,停止计数器0,并关闭充电电路,接通放电电路。
接着读出计数器0的值,进行计算,适当的调整后,输出到LCD上显示。
目录第一章选题分析 (1)1.1 设计内容 (1)1.1.1设计目的 (1)1.1.2实验要求 (1)1.1.3实验原理图 (1)1.2器材和仪器 (1)第二章功能分析和设计方案 (2)2.1总体设计步骤 (2)2.2 具体设计与功能模块(模拟仿真) (3)2.2.1 标准脉冲设计模块 (3)2.2.2待测脉宽产生电路 (3)2.2.3待测脉宽下的标准脉冲电路 (5)2.3 待测电容计算公式 (6)2.4脉冲计数电路与数码显示 (6)2.5 总体电路与仿真结果 (7)2.5.1总体电路图 (7)2.5.2 仿真结果 (8)第三章设计实现与调试 (9)3.1实物连接 (9)3.2电路测试 (9)3.3电路调试 (10)总结 (11)参考文献 (12)第一章选题分析1.1 设计内容1.1.1设计目的:根据常用的电子技术知识,以及可获得技术书籍与电子文档,初步形成电子设计过程中收集、阅读及应用技术资料的能力;熟悉电子系统设计的一般流程;掌握分析电路原理、工程计算及对主要技术性能进行测试的常见方法;最终完成从设计图纸到实物搭建的整个过程,并调试作品。
1.1.2实验要求:电容表测量范围1~999 F,使用3 位数码管显示。
电路设有启动按钮、复位按钮。
按启动按钮后,电路开始测试,测试结束后,显示待测电容值。
按复位按钮,电路复位,显示值清零,准备下一次测试。
1.1.3实验原理图:图1 原理框图表示基本原理:采用间接法测量电容的容量。
电容器的充电时间和其容量大小有关,容量大的电容需要的充电时间长;容量小的电容需要的充电时间短。
当选定固定电阻后,充电时间就与电容容量大小成正比。
利用电容这一特性,将被测电容的充电时间作为门控信号,将基准脉冲发生电路所提供的脉宽作为测量尺度,在被测电容充电时间的同时,将控制闸门打开,让计数与显示电路统计并显示输入计数器脉冲的个数,电容充电结束的同时将控制闸门关闭,计数器显示的脉冲个数即为被测电容的容量。
一款简单的数字电感电容表设计制作本文介绍一款由555时基构成多谐振荡器构成的参数变换电路,反相器、晶振构成标准脉冲发生器,以及三个独立LED数码管组成的数显电路构成的简易数字电感电容表,经过测试电路数显直观、方便有效,精确度高,较好的解决了设计时因制作均衡电容、音箱分频电感产生误差导致音质受损的问题,值得电子发烧友们亲自动手操作一试。
一、数字电感电容表的工作原理数字电感电容表原理图1、参数变换电路:参数变换电路由555时基构成多谐振荡器,可把被测元件Lx/Cx转换成与元件参数成正比的脉宽。
然后把这具有特定脉宽的矩形作为门控信号,在脉宽时间内对一个已知周期的标准脉冲计数通过显示器就可以把脉宽(实际上是元件参数)显示出来。
测量电容时(这时波段开关在5、6、7位)是以Cx为定时元件的多谐振荡器,产生的矩形波经3脚输出,送到计数器的门控端,脉宽tw=CRcln2。
测量电感时(波段开关在1、2、3位),是以Lx为定时元件的多谐振荡器,刚接通电源时,V2(6)=Vcc,555的3脚输出低电平,7脚通地,电源经RL的Lx充电,随着充电的进行,V2(6),当达到V2(6)=1/3Vcc时,电路翻转,3脚输出高电平,7脚与地断开,因Lx电流不能突变,必将产生一个感生电动势使D1导通,Lx经D1、RL放电,V2(6),当达到V2(6)=2/3Vcc时,电路又翻转,5脚输出低电平,7脚又与地接通,Lx又开始充电,这样5脚输出占空比为1:1的方波,送到计数器的门控端。
这时脉宽为tw=Lx/RLln2。
2、标准脉冲发生器:该电路由反相器3、4和晶体构成,晶振频率为1MHz,标准脉冲周期为T=1s,以它作为计数器的计数脉冲。
3、计数、显示电路:显示器由三位LED数码管构成,计数器由MC14553三位动态扫描计数器为核心构成。
T=1s。
第1章绪论随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一。
由于单片机适用与机,电,仪一体化的智能产品,它具有精度高,低功耗,控制功能强,小巧等优点。
把它用到仪器仪表上,可使产品的体积缩小,功能增强,实现不同程度的智能化。
因而受到人们高度重视,并取得了一系列科研成果,成为传统工业技术改造和新产品更新换代的理想机种,更有广阔的发展前景。
数字电容表就是单片机应用的一个实例,在实际应用中给人民带来了极大的便利。
测量电容器充电达到该电压的时间,便能知道充电器的容量。
现在国内市场上上海,广东等电子科技发达地区比较火爆,而在国际上则是日本,美国,德国的产品处于领先地位。
近年来随着国内电子事业的飞速发展,广东,台湾等地的产品已经赶上或是接近了国际先进水平,其精确度,稳定性,以及多功能的设计得到了人们的认可,被越来越多的工作者所接受。
本文介绍了一种对电容器进行数字测量的设计方案,数字电容表采用AT89C2051单片机做编程控制器,实现对电容器的测量。
此仪器是一种性能价格比高的具有结构简单,精度高的智能仪表。
其量程范围采用3位半数字显示,最大显示值为1999,读数单位统一采用毫微法(nf),量程分四挡,实际电容值为读书乘以相应的倍数;测量误差各挡误差均小于0.5%;显示方式为4位LED显示,并具有超量程显示功能。
第2章系统组成框图由图一可知,本电容表的硬件电路由AT89C2051单片机、复位电路、时钟振荡电路、电源滤波电路、键盘扫描电路、数码管显示电路、测试电路以及电源电路组成。
其中89C2051单片机是中央计算处理器,它内中ROM烧录了程序,它统一调度和管理所有接口电路工作。
复位电路是为单片机提供复位信号而设计的。
时钟振荡电路是为单片机提供时钟振荡信号而设计的。
电源滤波电路是为系统抗高频或低频干扰而设计的。
键盘扫描电路是为扫描人机键盘接口而设计的。
数码管显示电路是为显示测量结果而设计的。
测试电路是为测试电容冲充电且电容充电过程中与基准电压比较而知道电容充电完毕而设计的。
1、课程设计目的(1)掌握电子电路的一般设计方法和设计流程;(2)学习简单电路系统设计,掌握Protel99的使用方法;(3)掌握逻辑电路、AT89C2051及555定时器的应用;(4)学习掌握硬件电路设计的全过程。
2、课程设计内容和要求(1)学习掌握AT89C2051及555定时器的工作原理及应用;(2)熟练掌握应用Protel99设计原理图及制作PCB图的过程;(3)整理设计内容,编写设计说明书。
3、设计方案3.1 设计思路3.1.1单片机原理用单片机设计电路,由于使用软硬件结合的方式,所以电路结构简单、调试也相对方便。
该系统以ATS9C2051单片机为核心,系统框图如图1所示:图1.系统框图ATS9C2051是Atmel公司生产的低电压、高性能CMOS 8位单片机,内含2KB可反复擦写的只读程序存储器(EPROM)和128B的随机数据存储器。
引脚图如图2所示:图2.AT89C2051引脚图3.1.2 555电路的结构组成和工作原理(1)电路组成及其引脚图3.555电路组成图图4.555引脚图(2)555的工作原理含有2个电压比较器,一个基本RS比较器,一个放大开关T。
比较器的参考电压由三只5000欧姆的电阻器构成分压。
他们分别使高电平比较器C1同相比较端和低电平比较器C2的反相输入端的参考电平为2/3Vcc和1/3Vcc。
C1和C2输出端控制RS触发器状态和放电管开关状态。
是复位端,当其为0时,555输出低电平。
平时该端开路或接Vcc。
Vco是控制电压端。
T是放电管。
当T导通时,将给接于脚7的电容器提供低阻放电电路。
(3)555电路的引脚功能表1.555真值表3.2、工作原理及硬件框图该数字电容表以电容器的充电规律作为测量依据,测试原理见图5:图5.电容器工作状态图电源电压E+经电阻R给被测电容CX充电,CX两端原电压随充电时间的增加而上升。
当充电时间t等于RC的时间常数T时,CX两端电压约为电源电压的63.2%,即0.632E+。
用A VR单片机制作的电容表来自《电子报》合订本2004下册第313页(作者林凯葛仁春严宇亮李青)由于我的技术不是太好所以用软件画出的电路图很差,这个制作希望能给大家提供帮助这种用A VR单片机制作的数显直读式电容表,具有能测量小至1pF的电容,量程广(1pF----470uF),能自动换挡,使用方便等优点。
(1)硬件电路用分立元件电路测量电容的容量,至少要一个电压比较器,一个时间计数器以及一些逻辑电路,而用A VR单片机A T90S2313就可以实现这些功能。
1)工作原理用A VR单片机制作的数显直读模式电容表的电路图如图1图1该电路由A T90S2313单片机带输出锁存和三态控制的串入/并出转换器CD4094 稳压块78L05,以及4位共阳数码管等组成,所用元件不多,硬件电路非常简单。
该电路采用9V 叠层电池供电,功耗较小,整机工作电流仅32mA左右。
(2)工作过程将待测电容Cx插入JP2,在500ms内将会触发以下测量过程。
测量从低量程开始,单片机先将PB3置为高电平,使Q1截止,断开3.3k电阻R15,仅通过3.3M电阻R16对Cx充电,单片机开始计时,Cx上的电压经R14送单片机内比较器的AIN0端,并与AIN1端的电压0.5Vcc比较,如果在130ms内AIN0端的电压V c达不到0.5Vcc,说明Cx大于57Nf,应切换到高量程,反之,单片机将充电时间换算成Cx的容量,连同容量的单位通过数码管显示出来;如果需要切换到高量程,则单片机会将PB0口置低,Cx通过PB0放电,放电完成后再将PB3置低,使Q1导通,切换到高量程,R15 R16并联向Cx充电(加快充电时间),并重新计时,如果1秒内Cx上的电压Vc达不到0.5Vcc,说明Cx大于440uF,超量程,数码管显示“E2”,表示测量失败,反之,单片机将充电时间换算成Cx的容量,连同容量的单位通过数码管显示出来。
(3)源程序.include “2313def.inc”.include “avr.inc.def _0=r15 ;零寄存器.def _Stm1=r14 ;系统定时器.def _Stm2=r13 ;系统定时器.def _Flags=r25 ;标志寄存器;b0:结果为minus ;b1:捕获完毕;b2:累计时间溢出;b7:有键按下;--数据存储器定义--;.dseg.org RAMTOPDispPtr:.byte 1 ;显示缓冲区DispBuf:.byte 4KeyScan:.byte 2Comp1:.byte2 ;低量程校准.Comp2:.byte2 ;高量程校准.Comp3:.byte2 ;零校准值StrBuf:.byte 10 ;十进制转换缓冲区;-- 程序区--;.csegrjmp reset ;复位rjmp 0 ;外中断INT0rjmp 0 ;外中断INT1rjmp tc0_cap ;TC1捕获rjmp 0 ;TC1捕获rjmp tc1_ovf ;TC1溢出rjmp tc0_ovf ;TC0溢出;rjmp 0 ;Rx接收寄存器准备好;rjmp 0 ;Tx发送寄存器准备好;rjmp 0 ;Tx sfr 空;rjmp 0 ;模拟比较器reset:outi SPL,low(RAMEND)clr _0 ;清零寄存器ldiw Z, RAMTOP 清RAM;ldi AL, 128st Z+,_0dec ALbrne PC–2outi PORTD,0b0111100outi DDRD,0b1111111outi PORTB,0b01111000outi DDRB,0b10001101outi TCCR0,0b100 ;TC0时钟=39kHzouti TIMSK,0b00000010 ;TC0溢出允许sbi ACSR, ACIC ;接AC0至TC1输入捕获clr _Flagsseildiw Y, DisoBuf ;显示测试(500ms)ldi AL, –1std Y+0, ALstd Y+1, ALstd Y+2, ALstd Y+3, ALldi AL, 125rcall dlyrcall load_eep ;读增量校准值breq PC+6ldiw Z, form3*2rcall put_formedldi AL, 250rcall dly;--主程序--;main:ldi AL, 25等待100ms,定时器2erapsedmov _Stm1,ALcbr _Flags,bit7sbrc _Flags,7rjmp btn_pressedtst _Stm1brne PC–5ldi AL,125 ; 启动定时器2(500ms)mov _Stm2,ALrcall measure ;低量程测量brcc PC+3 ;超时,试高量程rcall measurercall adjust_zero ;刷新显示rcall adjust_gainrcall disp_valsbi PORTB,3 ;置为低量程rjmp mainbtn_pressed:ldi AL,4 ;延时16msrcall dlysbis PINB,6 ;ISP1-3短路?rjmp cal_low ;是,校准低量程sbis PINB,5 ;ISP4-6短路?rjmp cal_high ;是,校准高量程rjmp can_offset ;否则,校零cal_high:cbi PORTB,3 ;测大容量标准电容rcall measuresbi PORTB,3ldiw C,0 ;X:D:C=1000*65536;(100nF标准电容) ldiw D,1000ldiw X,0ldiw Z,Comp2cal_low:rcall measure ;测小容量标准电容rcall adjust_zeroldiw C,0 ;X:D:C=1000*65536;(1nF标准电容) ldiw D,10000ldiw X,0ldiw Z,Comp1cal_copm:clrw TO ;X:D:C/=B:A;clrw T2ldi EL,48lslw Crolw Drolw Xrolw T0rolw T2cpw T0,Acpcw T2,Binc CLdec ELbrne PC–21or DL,DH ;溢出检测or DL,XLor DL,XHbrne cal_errstdw Z+0,Crcall clr_disprcall save_eeprjmp maincan_offset:rcall measure ;测量电容为零or BL, BH ;检测精度范围brne cal_errcpi BH, high(2000)brcc cal_errstsw Comp3,A;设此值为零点rcall clr_disprjmp maincal_err:ldiw Z,form4*2rcall put_formedldi AL,250rcall dlyrjmp maindly: mov _Stm1,ALtst _Stm1brne PC–1ret;--测电容--;measure:out TCNT1H,_0 ;清TC1并置时限out TCNT1L,_0clr T2Lldi AL, 20sbis PORTB, 3ldi AL, 152mov T2H, ALouti TIFR,0b10001000 ;允许TC1溢出,TC1捕获outi TIMSK,0b10001010cbr _Flags,bit0+bit1+bit2outi TCCR1B,0b01000001 ;开TC1cbi DDRB,0 ;开始充电sbrc _Flags, 2 ;等待累计结束rjmp mea_oversbrs _Flags,1rjmp PC-3outi TCCR1B, 0b01000000 ;关TC1movew A,T4 ;取结果movew B, T6clcretmea_over:outi TCCR1B,0b01000000 ;关TC1ldi AL,4 ;等待16msrcall dlyldi BH, –1secretadjust_zero:sbis PORTB,3 ;高量程,跳一行rjmp PC+19ldsw C,Comp3 ;B:A -=Comp3subw A,Csbc BL,_0sbc BH,_0brcc PC+10;CY=0,B:A *=–1 ;置符号标志sbr _Flags,bit0comw Acomw Badc AL,_0adc AH,_0adc BL,_0adc BH,_0retadjust_gain:ldiw Y,Comp1sbis PORTB,3 ;增益调整adiw YL,2 ;据量程取校准值送D lddw D,Y+0subw C, C ;B:A = B:A * D / 65536; ldi EL,33brcc PC+3addw C,Drorw Crorw Brorw Adec ELbrne PC–10movew A,Bmovew B,Cret;--显示B:A值,单位0.1pF--;disp_val:diw X,StrBuf ;十进制转换缓冲区clr DL ;十进制数inc DL ;---Digits++clr CL ;---/=10;lslw Arolw Brol CLcpi CL,10brcs PC+3subi CL,10inc ALdec CHbrne PC–10st X+,CLcp AL,_0cpc AH,_0cpc BL,_0cpc BH,_0brne PC–19cpi DL,2 ;调整0.0pF数brcc PC+3st X+,_0inc DLsbis PORTB, 3 ;高量程,数字调整addi DL,3ldiw Z, form2*2–4 ;模式选择sbrs _Flags, 0adiw ZL,16adiw ZL,4dec DLcpi DL,2brcc PC–3put_formed:clr AHldiw Y,DispBuflpmadiw ZL,1mov AL,TOLcltcpi AL,2brcc PC+3bst AL,0ld AL, –Xpushw Zldiw Z,seg7*2addw Z,Alpmpopw Zbld T0L,0st Y+,T0Lcpi YL,DispBuf+4brne PC–20retclr_disp:ldiw Y,DispBufst Y+,_0cpi YL,DispBuf+4brne PC–2retform4:.db 14,5,15,15 ;E5form3:.db 14,4,15,15 ;E4form2:.db 10,1,0,13 ;-0.0p.db 10,0,0,13 ;-00p.db 14,3,15,15 ;E3.db 14,3,15,15 ;E3form1:.db 15,1,0,13 ;0.0p.db 0,1,0,13 ;00.0p.db 0,0,0,13 ;000p.db 1,0,0,12 ;0.00n.db 0,1,0,12 ;00.0n.db 0,0,0,12 ;000n.db 1,0,0,11 ;0.00u.db 0,1,0,11 ;00.0u.db 0,0,0,11 ;000u.db 14,2,15,15 ;E2.db 14,2,15,15 ;E2.db 14,2,15,15 ;E2seg7:.db 0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe00 , 1 , 2 , 3 , 4 , 5 , 6 , 7.db 0xfe,0xf6,0x02,0x4e,0xc4,0xce,0x9e,0x008 , 9 , - , u , n , p , E ,;---EEPROM 读写---;load_eep:ldiw Y,Comp1 ;取校准数据ldiw C,0x5501rcall read_eepst Y+,ALadd CH, ALcpi YL,Comp1+4brne PC-4rcall read_eep ;和校验cp AL,CHbreq PC+6sti –Y, –1st –Y,ALst –Y,ALst –Y,ALretsave_eep:ldiw Y,Comp1 ;存校准值ldiw C,0x5501ld AL, Y+add CH,ALrcall write_eepcpi YL,Comp1+4brne PC–4mov AL,CH ;存校验和SUM write_eep:out EEAR,CLinc CLout EEDR,ALclisbi EECR,EEMWEsbi EECR,EEWEseisbic EECR,EEWErjmp PC–1retread_eep:out EEAR,CLinc CLsbi EECR,EEREin AL,EEDRret;--TC1溢出中断处理--;;T2L计数溢出form TCNT1;置超时错标志.Tc1_ovf:push ALin AL,SREGpush ALinc T2Lcp T2L,T2Hbrcs PC+6sbi DDRB,2sbi DDRB,0sbr _Flags,bit2outi TIMSK,0b00000010pop ALout SREG,ALpop ALreti;--TC1捕获中断--;tc1_eep:pushAL ;结束测量in AL,SREGpush ALsbis DDRB,2 ;转移by测量脉冲rjmp tc1c_edtc1c_st:in T4L,ICR1L ;V c达到0.17Vccin T4H,ICR1H ;取T1mov T6L,T2Lcbi DDRB,2 ;置Vth为0.5Vcc ldi AL,20dec ALbrne PC–1outi TIFR,0b00001000rjmp tc1c_etc1c_ed:mov T6H,T4L ;Vc达到0.5Vccin T4L,ICR1L ;取t2–t1sub T4L,T6Hmov T6H,T4Hin T4H,ICR1Hsbc T4H,T6Hmov T6H,T6Lmov T6L,T2Lclr T6Hsbi DDRB,2 ;置Vth为0.17Vcc. sbi DDRB,0 ;电容放电outi TIMSK,0b00000010 ;中断屏蔽sbr _Flags,bit1 ;测量结束tc1c_e:pop ALout SREG,ALpop ALreti;--TC0溢出中断处理(1kHz)--;;刷新显示.键盘扫描.减_Stm1和_Stm2.(250Hz)tc0_ovf:push ALouti TCNT0, –39seiin AL,SREGpushw Apushw Zldiw Z,DispPtr ;下一个显示数据ld AH,Zinc AHcpi AH,4brcs PC+3rcall scan_keyclr AHst Z+,AHouti PORTD,0b0111100 ;关显示add ZL,AHldi AL,bit6lsr ALsubi AH,1brcc PC–2com ALandi AL,0b0111100ld AH,Z ;取段码ldi ZL,8 ;段码送sregsbrs AH,0sbi PORTD,1sbrc AH,0cbi PORTD,1sbi PORTD,0cbi PORTD,0lsr AHdec ZLbrne PC–8out PORTD,AL ;显示t0_exit:popw Zpopw Aldd AH,Z+6std Z+6,ALcp AL,AHbrne PC+7ldd AH,Z+5std Z+5,ALeor AH,ALand AH,ALbreq PC+2out SREG,ALpop ALretiscan_key:in AL,PINB ;键扫描com ALandi AL,bit4sbr _Flags,bit7tst _Stm1 ;Stm减至零为止breq PC+2dec _Stm1tst _Stm2breq PC+2dec _Stm2ret(4)校准及使用注意事项首次使用电容表,必须先校准。
************************** 说明********************************本电路只供电子爱好者学习和制作使用,如果由于用于其它用途而带来的损失或者影响,本人一概不予负责。
本人保留所有版权和解释权。
*******************************************************************自制电容表很多贴片电容都没有标明电容值,而我又舍不得扔了它们;自己做电路玩时,经常看到一些废电路板上有很多贴片电容,可以拆下来用,但是却看不到容量,很郁闷。
所以我决定做一个电容表来测试它们的容量。
我用单片机8952和电压比较器339做了一个简单的电容容量测量表,参数大致如下:电容测量范围为1pF-9999.99uF,最小分辨力为1pF。
分为5个量程,可以自动切换量程,也可手动切换。
另外,有简单的频率计功能,能测量0-60MHz的数字信号频率(TTL电平);还可以产生几个单点频率的方波信号(比如1KHz)。
采用1602LCD作为显示器;4个按键控制;使用24C01保存当前设置值,不用每次开机重新设置。
可单5V供电,也可9V交流供电。
电容测试原理简介:根据电容的充电公式,可以计算出电容在充电到1/nVcc(其中n>1,Vcc为充电电源电压)电压时充电时间跟电容的容量和电阻成正比,跟充电电源电压无关。
(通过一个微分方程即可求得,具体的计算步骤这里省略,一般的电路教材上都有讲解)。
工作过程如下:首先,通过单片机选通放电三极管Q9,将电容上的电放掉,放电完毕之后,选通Q1-Q5中的一个三极管,经过一定的电阻,对电容进行充电;同时,打开单片机的计数器0,开始计数。
然后单片机等待外部中断0的发生。
当电容充电达到参考电压值时,比较器翻转,发出充电完成信号到中断0端口,单片机响应中断,停止计数器0,并关闭充电电路,接通放电电路。
接着读出计数器0的值,进行计算,适当的调整后,输出到LCD上显示。
然后又开始一次新的测试,如此循环。
本电路通过一个电压比较器(LM339)来检测电容充电的终止。
由电阻R31,R32及RW1构成一个分压器,产生一个基准电压。
当电容两端电压超过比较电压时,比较器翻转,产生一个低电平到单片机的中断0(INT0)引脚,通知单片机电容充电完成。
RW1是精密可调电阻,用来调整电压比较器的参考电压。
调整RW1,使P点电压为电源电压的0.632倍(理论值,实际值可能有点不一样,见调试部分)。
C0是并联在测量端的一个小电容(30pF),用来减少电路分布电容的影响。
因为在单片机内部做了软件调零,所以有一个固定的偏移量,对结果的显示不会造成影响。
Q8和Q10是用来平衡电路和温度补偿。
作用不是很大,如果觉得麻烦,可以省掉这个两个三极管,把集电极和发射极直接连接起来,基极那个位置悬空就行了。
U4是一个计数器,测量频率时,先做一个预分频。
因为52的计数器频率不够高。
调试:先把HEX文件烧入到单片机中,然后将全部零件装好,检查确认无误后,接通电源。
调整RW1,使P点电压约为电源电压的0.632倍。
然后进入主菜单,选择校准0点,确定,等待校准完成。
然后退回到主菜单,选择电容测量,自动模式。
用几个质量比较好的电容(或者用另一块电容表先测量出来),检查电容值是否显示正确。
如果不正确,可适当微调RW1,使其正确。
然后依次检查其它量程,是否正确。
如果各个量程不能同时调准,则需要适当微调一下R11、R13、R15、R18、R20等量程电阻的阻值(可以通过采用并联电阻等方式,不过一般要求不严格的情况下,这些电阻都是可以满足要求的)。
当调试完成后,可用热熔胶将RW1固定下来,避免使用时不小心改变了它的阻值。
使用方法:板上总共有四个按键:MENU键,UP键,DOWN键和ENTER键。
可以使用MENU键,退回到主菜单或者上一级菜单。
使用ENTER键,来确认选用的功能。
UP和DOWN键用来移动菜单和切换量程用。
主菜单包括以下几项:1. Capacity 电容测量;2. Frequency 频率测量;3. Square Wave 方波发生;4. Settings 设置。
1.0版本的Settings里边只有一个选项——调整电容测试0点。
5. Help 帮助选项。
在电容测量的手动模式下,按动MENU键,将返回到主菜单;按动UP键,将增大量程;按动DOWN键,将减少量程;按动ENTER键,将保存当前量程状态,下次进入电容测试时,将会自动选择该量程。
在频率测量模式下,按下MENU键,返回主菜单。
其它按键无效。
在方波发生模式下,按下MENU键,返回主菜单;UP键,升高输出频率;DOWN键,降低输出频率;ENTER键,保存当前频率值,下次再进入方波发生模式时,会自动选则该频率值。
注意:上边的按动,指的均为短按键。
短按键——按键时间大于20ms,小于1S。
长按键——按住按键大于1S。
在1.0版本中,未使用长按键功能。
如果您长按键,系统则会忽略本次按键。
下边是我测试的几个电容的值,供参考:电容编号 1 2 3 4 5标称值 3.3pF 30pF 250pF 2200pF 47000pF量程1 000004pF 000029pF 000249pF 00222*pF 0405**pF量程2 -------- -------- -------- 0002.22nF 0048.8*nF实测值量程3 -------- -------- -------- 00002.2nF 00049.1nF量程4 -------- -------- -------- 000.002uF 000.048uF量程5 -------- -------- -------- --------- 0000.04uF电容编号 6 7 8 9 10标称值0.1uF 0.47uF 1uF 22uF 47uF量程1 0926**pF -------- -------- --------- --------量程2 0110.**nF 0458.1*nF 1014.**nF --------- --------实测值量程3 00114.4nF 00491.0nF 01080.*nF 2224*.*nF 6451*.*nF 量程4 000.112uF 000.482uF 001.057uF 021.886uF 056.6**uF量程5 0000.10uF 0000.43uF 0000.96uF 0021.31uF 0048.52uF电容编号11 12 13 14 15标称值100uF 220uF 470uF 1000uF 1500uF量程1 --------- -------- -------- --------- --------量程2 --------- -------- -------- --------- --------实测值量程3 --------- -------- -------- --------- --------量程4 115.8**uF 231.8**uF 482.***uF --------- --------量程5 0111.65uF 0228.9*uF 0476.**uF 1045.**uF 1484.**uF注:“--------”表示量程不适合,未做测试。
“*”表示读数不稳定。
测量示波器探头,容量为140pF通过上面的测试可以看出,基本上可以确定出电容的容量了。
比如测得的值为22uF左右,那么我就知道这是一个标称为22uF的电容。
Computer-lov2004.11.25 00:41 @SCUT补充几点:系统最好接地(大地),否则,在pF挡,将会导致数据跳动。
如果不好接地,用手握住测量端的地,也会稳定得多。
另外,调零的时候,要把探头接上,否则调好后再接探头,会使底数增加。
我用的这个探头,接上去,底数会增加大概28pF。
在U6(74HC00)的①脚上接一个100K的电阻到地,在R40与频率测试输入之间,接一个0.1uF的电容,可大大提高频率测试的灵敏度。
另外,当测试频率不高时,会发生振荡现象。
在U6(74HC00)的⑥脚与U4(74HC393) 的①脚间,串联一个10K的电阻,即可解决这问题。
Computer-lov2005-1-20 @SCUT阅读全文(3446)| 回复(17)| 引用通告(1)| 编辑Re:一个基于89S52的电容表(原理图+PCB+源代码+实物照片)nicholashui(游客)发表评论于2007-3我在找了2天的开发板,赶快近来看看,非常感谢!下载先个人主页| 引用| 返回| 删除| 回复Re:一个基于89S52的电容表(原理图+PCB+源代码+实物照片)computer00发表评论于2007-3-19 18:59:00解压缩密码是computer00 我干脆将它写到公告栏好了~~~~~~个人主页| 引用| 返回| 删除| 回复Re:一个基于89S52的电容表(原理图+PCB+源代码+实物照片)lieen(游客)发表评论于2007-3-19 9:44:00才看到这么好的文章,解压密码是多少呢?左侧公告栏没有?谢谢!个人主页| 引用| 返回| 删除| 回复回复:一个基于89S52的电容表(原理图+PCB+源代码+实物照computer00发表评论于2006-9-4 20:48:00抱歉,这个程序写得比较早,当时也比较急,所以注释以及结构都不是太好。
端口定义直接看变量名就可以理解了。
要看程序的话就辛苦一下了:)个人主页| 引用| 返回| 删除| 回复回复:一个基于89S52的电容表(原理图+PCB+源代码+实物照jianghui100(游客)发表评论于2006-9-3 20:10:00你的程序怎么哪些标志位和端口的定义也不给注解?????个人主页| 引用| 返回| 删除| 回复回复:一个基于89S52的电容表(原理图+PCB+源代码+实物照computer00发表评论于2006-7-11 0:16:001602本身可以设置成写入后移动。
或者你重新刷屏也行。
个人主页| 引用| 返回| 删除| 回复回复:一个基于89S52的电容表(原理图+PCB+源代码+实物照mikezhong(游客)发表评论于2006-7-10 23:39:0000你好,关于液晶,如果显示的字进行移动,例如从左到右,程序上有什么好的思路.个人主页| 引用| 返回| 删除| 回复回复:一个基于89S52的电容表(原理图+PCB+源代码+实物照老弹弓(游客)发表评论于2006-5-16 20:40:00想仿制您的电容表,能否提供protel 文件啊,您有现成的pcb 板购买更好。