天天看点

基于51单片机的555定时器测电容proteus仿真

一、555定时器构成多谐振荡器

由555定时器构成的多谐振荡器如下图所示,

基于51单片机的555定时器测电容proteus仿真

工作原理:电路没有稳态,只有两个暂稳态,也不需要外加触发信号,利用电源VCC通过R1和R2向电容器C充电,使Uc逐渐升高,升到2VCC/3时,Uo跳变到低电平,放电端D导通,这时,电容器C通过电阻R2和D端放电,使uC下降,降到VCC/3时,Uo跳变到高电平,D端截止,电源VCC又通过R1和R2向电容器C充电。如此循环,振荡不停,电容器C在VCC/3和2VCC/3之间充电和放电,输出连续的矩形脉冲,其波形如图(b)所示。

多谐振荡器两个暂稳态的维持时间取决于RC充、放电回路的参数。暂稳态Ⅰ的维持时间,即输出Vo的正向脉冲宽度T1≈0.7(R1+R2)C;暂稳态Ⅱ的维持时间,即输出Vo的负向脉冲宽度T2≈0.7R2C。因此,振荡周期T=T1+T2=0.7(R1+2R2)C,振荡频率f=1/T。正向脉冲宽度T1与振荡周期T之比称矩形波的占空比D,由上述条件可得D=(R1+R2)/(R1+2R2),若使R2>>R1,则D≈1/2,即输出信号的正负向脉冲宽度相等的矩形波(方波)。

所以使用555定时器测电容的C=1.44/F(R1+2R2)

二、51单片机计数器测脉冲频率

采用定时器中断和定时器计数,定时器计数,定时器中断定时1秒,1秒内测到的脉冲数(或下降沿数)即测到的频率。

晶振频率12M,用定时器1做1秒定时,用T0脚定时器0做计数器,按键int0触发后开始计数脉冲

void sys_init()
{
	ET0=1;
	ET1=1;
	TMOD=0x16;
	TH0=0xff;
	TL0=0xff;
	TR0=0;
	TH1=(65536-50000)/256;
	TL1=(65536-50000)%256;
	TR1=0;
    IT0=1;
	EX0=1;
	EA=1;
}

void INT0_1sr()interrupt 0
{
	count=0;
	time=0;
	IT0=0;
	delay_ms(10);
	TH0 = TL0 =0xff;
	TH1=(65536-50000)/256;
	TL1=(65536-50000)%256;
	TR1=1;
	TR0=1;
}

void TM0_1sr()interrupt 1
{
	count++;
}

void time1() interrupt 3
{
	TH1=(65536-50000)/256;
	TL1=(65536-50000)%256;
	time++;
	if(time==20)
	{
		read_s=1;
		TR1=0;
		TR0=0;
	}
}
           

按键按下后,当read_s=1时,count就是T0脚的脉冲频率。

三、proteus仿真

添加上LCD1602显示,和自动换档功能就得到如下电路:

基于51单片机的555定时器测电容proteus仿真

 proteus和程序源码:

 https://download.csdn.net/download/hestering/85752982

继续阅读