在程序中,此蜂鸣器的驱动程序是高级和低级驱
作者:admin | 发布时间:2019-05-30 11:37 | 浏览次数:

该项目的示意图如下:

如果无法保证I/O的输出性能,可根据情况增加上拉或下拉电阻。

切入主题:程序中这个蜂鸣器的驱动程序是高低级驱动器。高电平晶体管导通,蜂鸣器响起,低电平晶体管关闭,蜂鸣器不响。这很简单,我在程序开头写了它:

当然,如果MCU没有良好的I/O跳转功能,可以按如下方式进行修改:

这是一个小解释:

1)

功能:蜂鸣器声音驱动器

输入参数:蜂鸣器响起的次数

2)

传入cnt的数量需要在函数中加倍。这是因为传入参数是让蜂鸣器连续发送cnt声音。但听起来时蜂鸣器不发出声音。也就是说,每次响铃时蜂鸣器需要关闭一次。如果没有关机操作,它将不会发出几声而是连续的声音。这也很容易理由。

3)

在while循环后需要蜂鸣器才能关闭操作。

这里,如果传入的参数是2,则目的是使蜂鸣器发出两次声音。根据该计划的执行步骤:

Cnt2变为4.

第一个while(4)蜂鸣器打开cnt减少到3

第二个(3)cnt蜂鸣器减少到2

第三个while(2)蜂鸣器打开cnt减少到1

第四个(1)关闭cnt的蜂鸣器减少到0

时,第5个while(0)跳出

可以看出蜂鸣器状态在一段时间后已经关闭,但确保在调用该功能后蜂鸣器关闭。例如,第一个函数I/O跳转需要更安全,因为代码只能看到跳转,跳转后看不到状态。

此时,一个简单的蜂鸣器电路和驱动器全部完成,然后干货:

编写程序时,多次注意程序的效率。例如,蜂鸣器驱动器将降低驱动过程中的效率。有实力的人可以很快发现这是延迟延迟问题。但是上面也说没有延迟也行不通。因此,为了提高效率,我试图改变驱动蜂鸣器的方式。

代码如下:

它的实现也非常简单,只需说明原则:

1)首先,提供蜂鸣器驱动的I/O配置,

2)然后配置计时器

3)最后,实现定时器中断功能

我选择的定时器是项目微控制器中最简单的定时器,并配置为1ms中断以提供溢出中断。实际上,这个计时器我通常用来计算系统运行时Systick_ms。但该项目并未用于此系统时间,然后使用此计时器进行大惊小怪。

实施方法:

1.调用蜂鸣器时,相同的功能相同,输入参数是蜂鸣器响起的次数。

2,函数体发生了变化,这里改为两个变量的赋值,第一BELL_CNT和CNT2的常用方法,这里不再赘述。第二个是FLAG_BELL是一个状态变量,用于存储是否需要驱动蜂鸣器。因此,由于调用了驱动程序函数,因此该变量必须为true。

相关文章: