怎么用外部中断检测方波

电子元器件 时间:2023-02-16 17:39:15 回答数:4条 机械归档 醉学网
怎样用单片机外部中断测方波周期

最佳答案


Notice: Undefined variable: v in /home/www/wwwroot/926169/file/cache/tpl/default/know/show.php on line 116

Notice: Undefined variable: v in /home/www/wwwroot/926169/file/cache/tpl/default/know/show.php on line 120
搞怪的超短裙

苹果乐曲

2023-02-16 17:39:15

这个太简单了,

//搞个外中断,中断来了就计数

void t0(void) interrupt 0

{

T0count++//这是全局变量

}

//T1工作在定时状态下,每定时1秒钟到,刷新T0的计数,

void t1(void) interrupt 1

{

TR0=1//搞个计数器中断

TH0=0x3c//重新初始化

TL0=0xb0//这是12M晶振的

timecount++//中断一次,记个数

if(timecount==20) //一个计数器,一次记不到一秒的,只有记很多次,才能算一秒,这就一秒了

{ frequency=T0count//看看中断多少次,frequency就是你要的频率。

T0count=0//把这个清了,记下一秒的次数。

}

}

main()

{

TMOD = 0x01//选择计数器0的模式

EA=1 // 打开总中断

EX0=1IT0=1//开0外中断

ET0=1TR0=1//开0计时器

这里你加点代码,把frequency显示出来。

}

其他答案共有3条回答

  • 落寞的自行车
    2023-02-16 17:39:15

    当然可以,单片机可以实现对方波频率、占空比的检测。做这个东西你得从以下方面入手:

    1、首先测出方波的频率(这个跟占空比无关),利用这个计算出周期T;

    2、利用一个独立的外部中断,在测量完频率后启动。

    (1)先开启中断,并设置为上升边沿触发;

    (2)方波从低电平跳变到高电平后,中断触发后,将其设置为下降边沿触发,同时启动定时器;

    (3)第二次触发中断后,停止计时,两次中断之间的间隔修正补偿后,就是高电平的持续时间Tu。

    占空比可以计算出来,就是q=Tu/T*100%,

    然后就显示即可。

  • 醉熏的小鸽子
    2023-02-16 17:39:15

    1.方波频率不能过高,理论最大值是单片机周期的1/2,实际达不到

    2.方波的电平需要匹配,也就是不能直接与单片机io脚相连,最好做好接口电路

    3.方波最好做整形

    程序上

    方波进入外部中断引脚

    记录定时器数值

    计算定时器的差值

    根据时钟频率折算出时间

    频率=1/时间

  • 动人的秀发
    2023-02-16 17:39:15

    什么型号单片机,用STM32单片机可以方波开始和结束,因其定时器有脉冲捕获功能,可以进行上升沿和下降沿捕获。上升沿开启定时器,下降沿关闭定时器,可以测脉冲宽度。51单片机可以用外部中断功能,但只能下降沿触发,因此只能测两个下降沿之间的时间,即周期。