通过查阅资料, 我们可以得知, 通过改变输出电平的高低电平占空比, 可以控制蜂鸣器发声的声音大小.
要想使得改变占空比变得更为容易, 则采用下述方式来获取时延: 这样一来, 通过改变两个时延函数的所占时间即可实现对高低电平占空比的改变. 比如, delay_low()中需要执行10000次";"语句, delay_high()中也需要执行10000次";"语句, 这样一个完整的周期就为10000 + 10000 = 20000次";"语句执行的时间. 要想改变高低电平的占空比, 就需要改变两个函数中执行";"语句的次数, 且在改变后要使得一个周期内执行";"语句的次数和改变前相同.
#include <STC89C5xRC.H>
sbit beep = P1 ^ 5;// P1 xor 0000 0101
void delay_low()
{
int i, j;
for(i = 0; i < 100; i ++)
for(j = 0; j < 100; j ++)
{
;
}
}
void delay_high()
{
int i, j;
for(i = 0; i < 100; i++)
for(j = 0; j < 100; j ++)
{
;
}
}
int main()
{
while(1)
{
beep = 0;
delay_low();
beep = 1;
delay_high();
}
return 0;
}