本帖最后由 房一鹏 于 2022-1-14 11:36 编辑
蜂鸣器中的频率是随便写的,不怎么好听。改变数组中的赋值和whlie(1)中的部分内容可以实现播放歌曲,歌曲频率自己找吧
#include<reg52.h>
sbit pwmout = P1^3;
void openpwmout(unsigned int frequ);
void closepwmout();
unsigned char T0RH=0;
unsigned char T0RL=0;
void main()
{
unsigned int b,i=0;
unsigned int a[7]={
57568,14663,47566,78215,60147,25874,12345
};
EA=1;
TMOD=0x01;
while(1)
{
for(b=0;b<7;b++)
{
openpwmout(a);
for(i=0;i<40000;i++);
closepwmout();
for(i=0;i<40000;i++);
}
}
}
void openpwmout(unsigned int frequ)
{
unsigned int reload;
reload=65536-(32768000/12)/(frequ/2);
T0RH=(unsigned char)(reload>>8);
T0RL=(unsigned char)reload;
TH0=0xFF;
TL0=0xF1;
ET0=1;
TR0=1;
}
void closepwmout()
{
ET0=0;
TR0=0;
}
void interruptTime() interrupt 1
{
TH0=T0RH;
TL0=T0RL;
pwmout = ~pwmout ;
}
|