首页 理论教育 零起点学Proteus单片机仿真技术教程

零起点学Proteus单片机仿真技术教程

时间:2023-11-06 理论教育 版权反馈
【摘要】:从直流电动机的控制要求出发,我们需要控制高电平输出的个数,即在某个周期内输出高电平的比例,称为PWM占空比。图15-1 中断程序处理变量与输出电平关系两个按钮处理子程序用于处理占空比即高电平脉冲数的改变,按钮1用于增加占空比,按钮2用于减小占空比。若PWMH还大于1,则将PWMH减1,然后再次判断是否已等于1,若等于1,则停止定时器即停止中断处理,并保持输出为低电平,因为,占空比为最小,即整个周期为低电平。

零起点学Proteus单片机仿真技术教程

从直流电动机的控制要求出发,我们需要控制高电平输出的个数,即在某个周期内输出高电平的比例,称为PWM占空比。PWM占空比越大,电动机获得的能量就越大,电动机就转动的越快。

单片机控制占空比的常用方法是用定时器来实现,用定时器输出固定的脉冲宽度,以此来计数,确定在某个周期内输出的脉冲个数。

占空比控制程序如下:

978-7-111-36904-2-Chapter15-1.jpg

978-7-111-36904-2-Chapter15-2.jpg

978-7-111-36904-2-Chapter15-3.jpg

程序首先定义1个脉冲输出引脚和两个按钮,然后定义了3个变量,高电平脉冲数PWMH、周期数PWM、和计数变量COUNTER。

程序包括一个主程序,三个子程序:定时中断子程序和两个按钮处理程序。(www.xing528.com)

主程序设置了高电平脉冲数、计数初值和计数周期数。然后设计定时器参数并启动定时器。在无限循环中检测是否有按钮按下,若有按钮按下,执行按钮处理子程序。

定时中断程序中,首先给计数变量COUNTER加1,然后判断计数变量COUNTER是否等于计数周期数PWM,同时不等于高电平脉冲数PWMH,若符合条件,则计数变量COUNTER复位为1,输出电平为1(高电平)。否则,如果计数变量COUNTER等于设置的高电平脉冲数PWMH,则将输出变为0(低电平),即在周期内按设定的占空比输出高电平。此后,COUNTER计数值不断增加,只会输出低电平,直到到达本周期结束,COUNTER重新置为1,输出电平为1(高电平)。中断程序处理变量与输出电平关系,如图15-1所示。

978-7-111-36904-2-Chapter15-4.jpg

图15-1 中断程序处理变量与输出电平关系

两个按钮处理子程序用于处理占空比即高电平脉冲数的改变,按钮1用于增加占空比,按钮2用于减小占空比。

当按钮1按下时,就会跳转到按钮1处理子程序。程序首先等待按钮放开,然后判断高电平脉冲数PWMH是否已等于周期数,因为PWMH最大不能超过周期数PWM。若没有超过,就将PWMH加1,然后再次判断是否等于周期数PWM,若已等于周期数,则停止定时器即停止中断处理,保持输出为高电平,因为高电平脉冲数等于周期数,即占空比为1,整个周期都是高电平。否则就开启定时器,继续定时中断处理。

当按钮2按下时,就会跳转到按钮2处理子程序。同样,程序等待按钮放开,然后判断高电平脉冲数PWMH是否等于1,若已等于1,则不作任何处理,因为高电平最小是1。若PWMH还大于1,则将PWMH减1,然后再次判断是否已等于1,若等于1,则停止定时器即停止中断处理,并保持输出为低电平,因为,占空比为最小,即整个周期为低电平。否则,开启定时器,继续中断处理。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈