可以利用51单片机的计数器T0、T1,例如用计数器0的外部计数脉冲输入端T0计数,当计满100个脉冲数量后,触发中断。进入计数服务中断程序。
如果有脉冲信号,经过电容微分后,在下降沿会产生一个向下的尖端脉冲,电阻R2是作为一个偏置,当有向下的尖端脉冲来后,反相端的电压会低于同向端的电压。
从而比较器输出高电平,这个电路图要注意的两个参数是,1,比较器的选择,你可以选LM339,要加上拉电阻。
扩展资料:
通向输入端的那两个电阻是用来产生一个参考电压的,电容用来微分你的PWM波,你可以用示波器在反向输入端观察微分信号。
主程序中可根据不同运行状态调用部分子函数。需要开机按键设置时,优先执行按键程序,其它需要设置以后才能运行的子函数暂时不调用,减少单片机被占用过多。
设置后,不需要按键了,就不调用按键程序了。如果需要随时按键都要反应,可以把按键接到外部中断上,以中断方式响应按键,不受其他子函数影响。
参考资料来源:百度百科——脉冲信号
51单片机如何用计数器检测脉冲信号(高低电平),程序怎么做!没有思路!
可以利用51单片机的计数器T0、T1,例如用计数器0的外部计数脉冲输入端T0计数,当计满100个脉冲数量后,触发中断。进入计数服务中断程序。如果有脉冲信号,经过电容微分后,在下降沿会产生一个向下的尖端脉冲,电阻R2是作为一个偏置,当有向下的尖端脉冲来后,反相端的电压会低于同向端的电压。从而比较器...
51单片机如何用计数器检测脉冲信号(高低电平),程序怎么做!没有思路!
可以利用51单片机的计数器T0、T1,例如用计数器0的外部计数脉冲输入端T0计数,当计满100个脉冲数量后,触发中断。进入计数服务中断程序。计数原理:例如:可以用计数器完成计数计件打包,生产线每传送一件产品,就用光感传感器产生一个脉冲,送单片机计数,当计满100个数时,产生中断,进入产品打包工序。具...
51单片机怎样采样脉冲信号
对于低电压的脉冲信号,你所述的15ms脉宽是比较大的,你可以用运放,如LM358或LM324放大后送给MCU的中断输入脚,用定时器对脉冲进行计时即可测出宽度和周期.
怎样用51单片机测量某一pwm信号? 请教方法或程序? 谢谢!
我觉得可以把PWM信号读入I\/O口,定义两个变量,一个high表示高电平,一个low表示低电平,遇到第一个上升沿开始给high+1,遇到第一个下降沿给low+1,遇到第二个上升沿,则停止计数。统计high与low,就可以知道一个周期内,占空比。
怎样用51单片机定时器测一个高电平的持续的时间?谢谢
如果高电平的时间大于35ms,则需要打开定时器中断,定时器溢出一次中断溢出次数Count++,用外部中断的下降沿中断,当外部中断发生时关闭定时器,记录定时器TH0TL0的值、计算高电平时间(高电平时间=定时器的值+Count*定时器的溢出时间),清零Count,等待中断输入引脚电平为高电平,清零TH0TL0并启动定时器...
51单片机 如何检测某个引脚是否为高低电平 求一个C源程序实例
LED=1; \/\/此时LED不亮,说明这个引脚是高电平。 delayms(1000); LED=0; \/\/此时LED亮,说明这个引脚是低电平。 delayms(1000); }}你若想单纯的去检测正在运行单片机的IO口的电平状态的话,直接用LED接到该IO口观察LED的状态即可。如果事先知道该IO口的电平时固定的,拿更好办了,直接用万用表测。 maoarchy ...
51单片机用c语言编程判断各i\/o口的是否有高低电平,应该怎样写程序?
就直接用 if (P_^_==0) ……这里的_表示数字,51有四个端口,各有八个,你随便用啊
51单片机 C语言 怎样测量高电平持续的时间
假设定时器不溢出,P1.0为高电平输入引脚:while(P1^0==1);\/\/等待眼前的高电平过去 while(P1^0==0);\/\/等待下一个高电平来到 TR0=1;\/\/启动定时器 while(P1^0==1);\/\/等待高电平结束 TR0=0;\/\/关闭定时器 HIGH=TL0+TH0*256;\/\/读取时间 ...
怎样用51单片机检测频率??例如怎样辨别频率小于10Hz,怎样有大于等于10Hz...
方案1: 不用定时中断,可以用定时器计数方式吧? 用外部中断,测量下降沿(或上升沿)和下一个下降沿(或上升沿)之间的时间间隔(用定时器计数更精确,如果频率很高也可以用软件模拟的方式 做一个计数), 软件结构:在下降沿中断的同时,保存当前计数值,计数清零并重新启动计数器(如上,既可以是定时...
51单片机电平检测程序怎么写
TR0=1;\/\/启动定时器,开始计时 n=0;\/\/每次按键都清空定时计数 t++;\/\/按键值累加一次 while(!k);\/\/等待按键松开 } } if(fe==1)\/\/如果没按键输入 { switch(t)\/\/则对已有的按键值进行处理 { case 1:P2=0xfe;break; case 2:P2=0xfd;break;case 3:P2=0xfb;break; case 4:P2=0x...