51单片机的蜂鸣器写歌的音阶

2020-08-02来源: eefocus关键字:51单片机  蜂鸣器  音阶

直接上代码!


#include

sbit LS1=P3^7;     //该蜂鸣器为无源蜂鸣器;这是当以它的接口

sbit K0=P1^0;

int code L[]={0,226,229,232,233,236,238,240,241,242,244,245,246,247,248};     //音阶

int code S[]={0,4,13,10,20,3,8,6,2,23,5,26,1,4,3};

int i=0;

void DelayMs(int x)   //延时

{

int i;

while(x--) for(i=0;i<120;i++);

}

void init()   //初始化

{

// TMOD=0x00;  //T0方式0定时  默认情况下就为0x00

IE=0x82;

LS1=0;

}

void T0_time0() interrupt 1  //T0中断函数,在定时器溢出进入中断,即TF0或TF1必须为1时蔡进入中断函数,进入之后硬件可软件可清零,硬件也可清零

{

TH0=L[i];

TL0=S[i];

LS1=!LS1;

}

void main()

{

init();

while(1)

{

while(K0);  //开关未按时等待

while(!K0); //开关按下等待松开

for(i=0;i<15;i++) TR0=1,DelayMs(500),TR0=0,DelayMs(50);

/*让播放器开500ms(在没进入之前,是在main函数中的500ms中;换句话说:在这500ms内定时器中断函数进行了(500ms/定时器初值)次),当然忽略中断函数执行语句的时间,然后再让蜂鸣器关50ms*/

}

}


关键字:51单片机  蜂鸣器  音阶 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic504964.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:基于51单片机的DHT11温湿度控制系统
下一篇:单片机学习路程(四)蜂鸣器唱歌

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

51单片机的准备工作
。     第三,编译软件,KEIL C,全名是keil uvision,下载地址:http://www.51hei.com/keil%CF%C2%D4%D8.html  它是美国Keil Software公司研发的51系列兼容单片机的C语言软件开发系统,我这一代人学51用的都是它。在2005年的时候被ARM公司收购,所以,现在基于ARM内核的STM32单片机也可以用这个软件开发,但是要去官网下载相应的版本。启动界面如下:     另外说一句,现在国内用的基本都是破-解-版,使用上没有问题,也就不要大声嚷嚷了,仅做学习交流用,不要有商业
发表于 2020-07-23
学<font color='red'>51单片机</font>的准备工作
51单片机-KEIL的使用与程序的下载
      很多人学单片机的时候都会遇到的情况,程序写的漂漂亮亮,原理理解的通通透透,但是.......不会用编译软件,不知道怎么下载程序,貌似大学的时候我老师就没讲过,呵呵。所以今天主要讲一下这两个软件的应用。      注:单片机种类多种多样,编译环境自然也有很多种。学习一种编译软件肯定需要一定的时间,不过软件界面基本都是大同小异,会了一个再去学另一个会很快。还有个现象,很多人喜欢用汉化版,个人感觉没必要。首先,汉化的不一定标准;其次,工具英语就那么几个单词,记下来就OK了,汉化反而会增加不必要的麻烦。      好了
发表于 2020-07-23
学<font color='red'>51单片机</font>-KEIL的使用与程序的下载
51单片机-指令周期与LED闪烁
      之前讲了如何点亮LED,包括硬件电路和程序,今天说一下如何让LED闪烁。单片机控制LED闪烁有两种方法,一种是软件延时,另一种是定时器中断。因为涉及到单片机指令集的问题,还有一些简单的C语言,今天只讲第一种。      先说指令集,早期的51单片机都是复杂指令集,因为沿用的习惯现在用的STC89C52单片机也是复杂指令集,和复杂指令集对应的,就是精简指令集,常见的有AVR和430单片机。      这两种指令集的区别是啥?最明显的就是一条指令执行的时间,举个例子:51单片机和AVR单片机都外接一个12M的晶体
发表于 2020-07-22
学<font color='red'>51单片机</font>-指令周期与LED闪烁
51单片机-定时中断与LED闪烁
同时清零了中断标志;去付款,处理了中断子程序;付完款继续吃饭,回到了主程序。STC89C52RC单片机中的中断分为三种:外部中断,一般是IO口的高低电平触发;定时/计数器溢出中断,一般是内部定时/计数器溢出中断;UART口中断,收发数据时引发的中断。这次只说定时/计数器溢出中断。程序如下:/**********************51单片机学习例程************************  平台:Keil U4 + STC89C52*  名称:LED闪烁*  晶体:11.0592
发表于 2020-07-22
51单片机-按键的扫描检测与消抖
; 接下来说应用电路,如下图所示,这是常见的应用电路:     检测方式有两种,一种是扫描检测,另一种是中断检测。这次先说第一种,什么是扫描检测?     就是单片机每隔一段时间,就去检测一下IO口的状态,未触发的时候,该引脚是高电平,触发的时候是低电平。     有人会有疑问,这种方式会不会有遗漏?基本不会,因为单片机以微秒甚至纳秒的级别运行指令,而触发一次按键至少需要几十毫秒,汽车电子里面用到的触发按键,它的触发时间到了100毫秒。只要扫描次数足够,基本不会有遗漏。    
发表于 2020-07-22
学<font color='red'>51单片机</font>-按键的扫描检测与消抖
51单片机-按键的中断检测
      接着昨天,继续说按键的事。昨天说的是扫描检测,今个说一下中断检测。先插播一个小故事~~      当年我和凯凯学单片机的时候,我用扫描检测的方法做的项目,他用中断检测的方法做的项目。当我俩坐一起交流按键检测的方式时,他火了,直接跳起来跟我吼:你不用中断怎么检测?      当时我就意识到他可能陷入了只能用中断的误区,然后就乐呵呵的说:用扫描啊~      他继续吼,我继续乐,我俩就这样陷入了死循环。终于都累了,然后把程序和原理给他看,了解~   
发表于 2020-07-22
学<font color='red'>51单片机</font>-按键的中断检测
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved