×
单片机 > 单片机程序设计 > 详情

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

发布时间:2023-06-09 发布时间:
|

直接上代码!


#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*/

}

}



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
Keil(MDK-ARM)系列教程(七)_菜单