STM8的C语言编程(13)--+蜂鸣器

 STM8C语言编程(13)-- 蜂鸣器

 

蜂鸣器是现在单片机应用系统中很常见的,常用于实现报警功能。为此STM8特别集成了蜂鸣器模块,应用起来非常方便。

在应用蜂鸣器模块时,首先要打开片内的低速RC振荡器(当然也能使用外部的高速时钟),其频率为128KHZ。然后通过设置蜂鸣器控制寄存器BEEP_CSR中的BEEPDIV[4:0]来获取8KHZ的时钟,再通过BEEPSEL最终产生1KHZ2KHZ4KHZ的蜂鸣器时钟,最后使能该寄存器中的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);

}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荣华富贵8

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值