蜂鸣器播放DOREMI+普中51单片机+江科大自化协

发布时间:2024-08-08  

现象


在无源蜂鸣器上循环演奏低音“DO、RE、MI、FA、SO、LA、SI”这7个音调。


参考程序


1 主函数


#include

#include "delayms.h"

#include "timer0.h"


sbit Buzzer = P2^5;


//音调与频率对照表,低中高:1,1#,2,2#,3,4,4#,5,5#,6,6#,7

//unsigned int FreqTable[]={

//    63628,63731,63835,63928,64021,64103,64185,64260,64331,64400,64463,64528,

//    64580,64633,64684,64732,64777,64820,64860,64898,64934,64968,65000,65030,

//    65058,65085,65110,65134,65157,65178,65198,65217,65235,65252,65268,65283,

//};


//音调与频率对照表,低中高:1,2,3,4,5,6,7

unsigned int FreqTable[]={

    63628,63835,64021,64103,64260,64400,64528,

    64580,64684,64777,64820,64898,64968,65030,

    65058,65110,65157,65178,65217,65252,65283,

};


unsigned char FreqSelect;


void main()

{

    Timer0Init( );

    while(1)

    {

        if(FreqSelect>19)

            FreqSelect = 0;

        else

            FreqSelect++;

        delayms(500);

    }

}


//定时器中断函数

void timer0_routine() interrupt 1

{

    TL0 = FreqTable[FreqSelect]%256;

    TH0 = FreqTable[FreqSelect]/256;

    Buzzer = !Buzzer;

}


2 延时函数


#ifndef _delayms_h_

#define _delayms_h_


void delayms(unsigned int xms);


#endif


#include


void delayms(unsigned int xms)        //@11.0592MHz

{

    unsigned char i, j;

    while(xms--)

    {

        _nop_();

        i = 2;

        j = 199;

        do

        {

            while (--j);

        } while (--i);

    }

}


3 定时器函数


#ifndef _timer0_h_

#define _timer0_h_


void Timer0Init(void);


#endif


#include


/**

  * @brief  定时器0初始化,1毫秒@11.0592MHz

  * @param  无

  * @retval 无

  */

void Timer0Init(void)        //1毫秒@11.0592MHz

{

    TMOD &= 0xF0;        //设置定时器模式

    TMOD |= 0x01;        //设置定时器模式

    TL0 = 0x66;            //设置定时初始值

    TH0 = 0xFC;            //设置定时初始值

    TF0 = 0;                //清除TF0标志

    TR0 = 1;                //定时器0开始计时

    ET0 = 1;                //打开定时器0中断

    EA  = 1;            //打开总中断开关

    PT0 = 0;                //设置定时器0中断优先级

}


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    51单片机开发环境搭建方法;前言 上至航天,下至儿童玩具,凡事沾一点智能的东西,都离不开单片机的身影......,本文开始,我们学习单片机的相关知识,我们采用的是由普中科技开发的A7开发板,该开......
    如何给单片机烧录程序 单机片烧录不进去怎么办;如何给单片机烧录程序? 以51单机片为例 1、首先准备好51单片机最小系统板和烧录器。 2、打开stc-isp烧录软件选择好单片机型号,这里的所选的单片机型号......
    的仿真功能介绍: 习最常用的51单片机就是STC品牌的51单片机,STC的51单片机很很多型号,也分很多系列。 打开STC官方提供干的STC-ISP软件,选择Keil仿真设置,如下图所示: 我们在Keil仿真......
    要注意使用英文,如果使用中文名可能会出现一些奇怪的错误,这里我们命名为template,直接保存在刚才创建的“51 单片机工程模板创建”文件夹下。具体 步骤如下: 2.选择CPU 型号 这个......
    MCU Database" 有STC单片机选项 选好Database后可以看到很多的STC单片机的型号 STC单片机型号 我这里使用的是宏晶公司IAP15W4K58S4芯片,选择好芯片点击“OK......
    的运行速度和性能。因此,需要根据单片机型号和性能需求选购适宜的晶振频率。 综上所述,51单片机的晶振频率是可以根据需要进行调节的,晶振频率与单片机的性能直接相关。JSK晶鸿......
    口驱动是识别到,且驱动运行正常;是否可通过电脑的设备管理器查看驱动是否正常; (3)确保正常后,打开STC-ISP烧录工具; (4)然后选择烧录工具所在的串口号; (5)所需要烧录的单片机型号,以......
    app下单买向导可以赚1元左右佣金,希望能够站着就把1元钱赚了:) 普中科技51单片机开发板stc89c52学习板实验板 C51单片 天猫 ¥56.00 去购买 下载stc 下载软件 主要......
    的发展,8004单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。很多公司都有51系列的兼容机型推出,今后......
    来就会保存工程路径,路径可以自行选择,注意文件名需要自行填写,否则无法保存,保存类型是默认的,不需要更改 接下来会弹出一个选择单片机CPU的窗口 我们使用的是51单片机,所以直接定位Atmel,我的单片机芯片型号......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>