方波,电阻和电容的大小怎么算

方波,电阻和电容的大小怎么算,第1张

比如:用555定时器产生20Khz方波,电阻和电容的大小怎么算?
大体上充/放电时间遵循07RC
单位是秒
显然你的充电电阻r1+r2,放电电阻r2
现在可以设计r2>>r1从而忽略r1作用
20khz周期是0510^-4
除以14是035710^-4
也就是说rc是这个数值。市场上比较好弄到35k
35k
350k的电阻,电容c1的话,计算下吧,但是最好不要1uf
注意,r1至少要比r2少一个数量级
c2是接地保护电容,001uf就行

方波其实很容易生成,比如你写一个周期为2T的正弦波,通过符号函数就得到周期为2T的方波,你可以再乘上系数加上系数,变成你相要的
方波其实很容易生成,比如你写一个周期为2T的正弦波,通过符号函数就得到周期为2T的方波,你可以再乘上系数加上系数,变成你相要的

首先有个问题,定义T0_init
uchar T0_H,T0_L,a,T0_init;
然后
T0_init=35000;
这样当然控制不了宽度,所以肯定是要改为
uint T0_init;
定时器初值放在中断里计算会使方波宽度产生偏差吧,还是放在主程序里比较好。
void main()
{
T0_init=35000;
TMOD=0x01;//T0方式1,定时
EA=1; //中断初始化
ET0=1;
T0_H=(65535-T0_init)/256;
T0_L=(65535-T0_init)%256;
TH0=T0_H;
TL0=T0_L;
TR0=1;
p10=0;
if(key1&key2==0)
{
if(key1==0)
{
delay(10);
if(key1==0)//减小方波宽度
{
while(!key1);
if(key1==1)
{
T0_init=T0_init+10000;
}
}
}
if(key2==0)
{
delay(10);
if(key2==0)//增加方波宽度
{
while(!key2);
if(key2==1)
{
T0_init=T0_init-10000;
}
}
}
T0_H=(65535-T0_init)/256;
T0_L=(65535-T0_init)%256;
}
}
这样每次按键就会同时更新T0_H和T0_L,而不必每次在中断中重复计算。
确实还有错误,你的主程序只判断了一次,也就是说当执行到if(key1&key2==0) 时,程序发现没有按键发生,结果程序就结束了。应该在这一句前加上while(1),把后面所有代码都括起来,你再试试。

我通过单片机测量方波,三角波,正弦波的脉冲宽度,范围是0-1M,如何测量
----
方波,即矩形波,才有脉冲宽度的说法。
正弦波,有振幅、频率、初相角三个要素,没有脉冲宽度的说法。
三角波,它也没有宽度。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13158588.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-06-13
下一篇 2023-06-13

发表评论

登录后才能评论

评论列表(0条)

保存