用AVR单片机制作的电容表.docVIP

  • 6
  • 0
  • 约1.01万字
  • 约 12页
  • 2017-08-11 发布于重庆
  • 举报
用AVR单片机制作的电容表

用AVR单片机制作的电容表 来自《电子报》合订本2004下册第313页(作者林凯 葛仁春 严宇亮 李青) 由于我的技术不是太好所以用软件画出的电路图很差,这个制作希望能给大家提供帮助 这种用AVR单片机制作的数显直读式电容表,具有能测量小至1pF的电容,量程广(1pF----470uF),能自动换挡,使用方便等优点。 硬件电路 用分立元件电路测量电容的容量,至少要一个电压比较器,一个时间计数器以及一些逻辑电路,而用AVR单片机AT90S2313就可以实现这些功能。 工作原理 用AVR单片机制作的数显直读模式电容表的电路图如图1 图1 该电路由AT90S2313单片机 带输出锁存和三态控制的串入/并出转换器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端的电压Vc达不到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 RAMTOP DispPtr:.byte 1 ;显示缓冲区 DispBuf:.byte 4 KeyScan:.byte 2 Comp1:.byte2 ;低量程校准 .Comp2:.byte2 ;高量程校准 .Comp3:.byte2 ;零校准值 StrBuf:.byte 10 ;十进制转换缓冲区 ;-- 程序区 --; .cseg rjmp reset ;复位 rjmp 0 ;外中断INT0 rjmp 0 ;外中断INT1 rjmp 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, 128 st Z+,_0 dec AL brne PC–2 outi PORTD,0b0111100 outi DDRD,0b1111111 outi PORTB,0outi DDRB,0outi TCCR0,0b100 ;TC0时钟=39kHz outi TIMSK,0b00000

文档评论(0)

1亿VIP精品文档

相关文档