添加实验蜂鸣器唱小星星

This commit is contained in:
fengbh 2024-07-15 23:21:40 +08:00
parent 27b4a51317
commit c5e448b3a6

View File

@ -14,12 +14,31 @@
#include "led.h"
#include "time0.h"
__code u16 toneH[10]={ //音调对应的定时器计数值的高8位 第一个音为低音7
0XF8,0XF8,0XF9,0XFA,0XFA,0XFB,0XFB,0XFC,0XFC,0XFC
};
__code u16 toneL[10]={ //音调对应的定时器计数值的低8位
0X18,0X8C,0X6B,0X15,0X67,0X04,0X90,0X0C,0X44,0XAC
};
__code u16 soundtone[42]={
1,1,5,5,6,6,5,4,4,3,3,2,2,1,
5,5,4,4,3,3,2,5,5,4,4,3,3,2,
1,1,5,5,6,6,5,4,4,3,3,2,2,1
};
__code u16 soundlong[42]={
1,1,1,1,1,1,2,1,1,1,1,1,1,2,
1,1,1,1,1,1,2,1,1,1,1,1,1,2,
1,1,1,1,1,1,2,1,1,1,1,1,1,2
};
/*******************************************************************************
* : main
* :
* :
* :
*******************************************************************************/
u16 tH, tL;
void main(void)
{
@ -39,10 +58,22 @@ void main(void)
// i = rotate_left(i,1);
// delay_ms(1000);
// 实验三:蜂鸣器
BEEP=!BEEP;
// BEEP=!BEEP;
// delay_10us(100);
time0_delay1ms(1);
// 实验四:小星星
for(u8 t=0;t<42;t++)
{
tH=toneH[soundtone[t]]; //提取音调对应的定时器初始值
tL=toneL[soundtone[t]];
TH0=tH; //给TH0和TL0赋值
TL0=tL;
TR0=1; //打开定时器,蜂鸣器发声
delay_ms(soundlong[t]*500); //延时soundlong[t]指定的时间长度
TR0=0;
BEEP=0; //蜂鸣器不发声,停顿片刻
delay_ms(50);
}
delay_ms(2000);
// printf("Hello,world!\r\n");
}
}
@ -69,8 +100,7 @@ void uart(void) __interrupt (4) //串口通信中断函数
void time0(void) __interrupt (1) //定时器0中断函数
{
static u16 i;//定义静态变量i
TH0=0XFC; //给定时器赋初值定时1ms
TL0=0X18;
time0_delay_cnt++;//计数器自增
TH0=tH; //给定时器赋初值定时1ms
TL0=tL;
BEEP =! BEEP;
}