打印
[应用相关]

 STM8的C语言编程-- 蜂鸣器

[复制链接]
2073|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cr315|  楼主 | 2023-5-16 16:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
蜂鸣器是现在单片机应用系统中很常见的,常用于实现报警功能。为此STM8特别集成了蜂鸣器模块,应用起来非常方便。
在应用蜂鸣器模块时,首先要打开片内的低速RC振荡器(当然也能使用外部的高速时钟),其频率为128KHZ。然后通过设置蜂鸣器控制寄存器BEEP_CSR中的BEEPDIV[4:0]来获取8KHZ的时钟,再通过BEEPSEL最终产生1KHZ或2KHZ或4KHZ的蜂鸣器时钟,最后使能该寄存器中的BEEPEN位,产生蜂鸣器的输出。
下面的实验程序首先初始化低速振荡器,然后启动蜂鸣器,再延时2.5秒,然后关闭蜂鸣器。
同样还是利用ST的开发工具,生成一个汇编程序的框架,然后修改其中的main.c,修改后的代码如下。
 
//  程序描述:启动单片机中的蜂鸣器模块
 
#include "STM8S207C_S.h"
 
// 函数功能:延时函数
// 输入参数:ms -- 要延时的毫秒数,这里假设CPU的主频为2MHZ
// 输出参数:无
// 返 回 值:无
// 备    注:无
void DelayMS(unsigned int ms)
{
  unsigned char i;
  while(ms != 0)
  {
    for(i=0;i<250;i++)
    {
    }
    for(i=0;i<75;i++)
    {
    }
    ms--; 
  }    
}
 
main()
{
  int i;
 
  CLK_ICKR = CLK_ICKR | 0x08;     // 打开芯片内部的低速振荡器LSI
  while((CLK_ICKR & 0x10) == 0);  // 等待振荡器稳定
         
  // 通过设置蜂鸣器控制寄存器,来打开蜂鸣器的功能
  // 蜂鸣器控制寄存器的设置:
  // BEEPDIV[1:0] = 00
  // BEEPDIV[4:0] = 0e
  // BEEPEN       = 1
  // 蜂鸣器的输出频率 = Fls / ( 8 * (BEEPDIV + 2) )= 128K / (8 * 16) = 1K   
  BEEP_CSR = 0x2e;
 
  for(i=0;i<10;i++)
  {
    DelayMS(250);
  }
       
  BEEP_CSR = 0x1e;            // 关闭蜂鸣器
 
  while(1);
}
 

使用特权

评论回复
沙发
公羊子丹| | 2024-5-21 08:25 | 只看该作者

将在原边形成电压尖峰,

使用特权

评论回复
板凳
万图| | 2024-5-21 09:28 | 只看该作者

使该元器件不超过正常值范围

使用特权

评论回复
地板
Uriah| | 2024-5-21 10:31 | 只看该作者

该电容可以存储高达8KV的电位

使用特权

评论回复
5
帛灿灿| | 2024-5-21 12:27 | 只看该作者

ESD静电保护器工作特性与TVS管一致。

使用特权

评论回复
6
Bblythe| | 2024-5-21 13:30 | 只看该作者

环氧树脂、聚胺脂、有机硅灌封胶

使用特权

评论回复
7
周半梅| | 2024-5-21 15:26 | 只看该作者

保护被保护IC或线路

使用特权

评论回复
8
Pulitzer| | 2024-5-21 16:29 | 只看该作者

电源模块的灌封用的胶是可以根据需求而调制的

使用特权

评论回复
9
童雨竹| | 2024-5-21 18:25 | 只看该作者

所以不会通过地损耗

使用特权

评论回复
10
Wordsworth| | 2024-5-21 19:28 | 只看该作者

相当于积分,用于滤波

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1339

主题

3897

帖子

0

粉丝