- 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)