FPGA 20个例程篇:2.按键控制蜂鸣器输出PWM波,发出不同频率响声

 一、典型基础入门,小试牛刀 :

2.按键控制蜂鸣器输出PWM波,发出不同频率响声

       谈起蜂鸣器,大家都不会陌生,在嵌入式领域应用也非常广泛,比如仪器仪表、工控设备当中都离不开蜂鸣器的身影,在轻触触摸屏来进行机器操作的时候,蜂鸣器的响声不同则可以用于标记机器的当前状态:正常使用、报警、异常等等。

       那么如何才能做到准确地控制蜂鸣器发出不同的响声呢,使得其有时低沉,有时清脆,有时尖锐,而本身蜂鸣器只有一个IO口是连接到FPGA芯片上的,那么这里就需要引入PWM的概念。 PWM即脉冲宽度调制,PWM的输出只有高电平1与低电平0。PWM不停的重复输出周期为T,其中高电平1时间为t的脉冲,t/T是它的占空比,图1即为PWM信号的总体示意图。

FPGA 20个例程篇:2.按键控制蜂鸣器输出PWM波,发出不同频率响声_第1张图片

图1 PWM占空比的示意图

       我们需要首先定义输出周期T的时间,比如在这里选取是100ms,然后结合开发板的电路如图2所示,可以很清楚地看到蜂鸣器高电平表示响,而低电平表示不响,同样是100ms的时钟周期,按下1-4号按键分别把同一个周期低电平的占空比调整为20%、40%、60%、80%,如图3所示是蜂鸣器占空比发声的示意图。

FPGA 20个例程篇:2.按键控制蜂鸣器输出PWM波,发出不同频率响声_第2张图片

图2 豌豆开发板Artix7上蜂鸣器电路FPGA 20个例程篇:2.按键控制蜂鸣器输出PWM波,发出不同频率响声_第3张图片

图3 蜂鸣器占空比PWM发声示意图

       如图4所示,在把key_scan模块产生的key_value和key_vld信号例化到顶层模块即可,通过key_value和key_vld再对PWM进行周期赋值操作,key_scan模块在上一个例程当中已经详细介绍,在此不赘述了。

FPGA 20个例程篇:2.按键控制蜂鸣器输出PWM波,发出不同频率响声_第4张图片FPGA 20个例程篇:2.按键控制蜂鸣器输出PWM波,发出不同频率响声_第5张图片FPGA 20个例程篇:2.按键控制蜂鸣器输出PWM波,发出不同频率响声_第6张图片

图4 按键控制蜂鸣器顶层文件的例化

源工程代码下载链接:

链接:https://pan.baidu.com/s/191h0SHXMNy9RGy0el72lyg 
提取码:8whz 
 

你可能感兴趣的:(FPGA20个例程,fpga开发,硬件工程)