标题: 无源蜂鸣器的发生控制(部分程序) [打印本页]

作者: 蓝野    时间: 2017-10-2 15:17
标题: 无源蜂鸣器的发生控制(部分程序)
        while(1)
        {       
                beep=~beep;、//蜂鸣器已经定义,
                delay(10); //延时大约100us   通过修改此延时时间达到不同的发声效果(频率改变音色)       
               
                beep=1;
                delay(10); //延时函数,前面已经定义
                beep=0;
                delay(5);  //调节占空比达到通过改变声音的大小  (还要进一步思考。因为与上面的周期不一致)

        }

问题:对无源蜂鸣器第一部分设置频率(改变声音的音色),第二部分设置占空比(改变声音大小);但是前后的高低电平一个周期内,时间并不想等,有毛病吗?


作者: wulin    时间: 2017-10-2 17:01
驱动无源蜂鸣器最好用定时器中断输出2000Hz,占空比50%的方波,用延时函数会严重影响其它程序运行。要改变频率就改一下定时器重载值。改变占空比并不能明显改变音量。
void Timer0Init()                //250微秒@12.000MHz
{
        TMOD= 0x02;                //设置定时器自动重载模式
        TL0 = 0x06;                //设置定时初值
        TH0 = 0x06;                //设置定时重载值
//        TR0 = 1;                //定时器0开始计时
        EA=1;               //开全局中断
        ET0=1;              //允许T0中断
}

void timer0() interrupt 1
{
        static uint count=0;//中断计数变量
        count++;
        Buzzer=~Buzzer;                //蜂鸣器端口取反
        if(count>=500)                //持续时间
        {
                count=0;                //计数清0                               
                Buzzer=0;                //蜂鸣器端口复位
                TR0 = 0;                //定时器0关闭
        }
}

作者: anhuiyesu    时间: 2017-10-3 11:06
牛人大赞
作者: kelaosan    时间: 2019-4-21 15:44
请问此程序如何和通过按键控制蜂鸣器音量大小结合起来呢?
作者: LH2344    时间: 2019-4-21 21:14
新手表示很难呀,看不明白
作者: sewell    时间: 2019-4-22 01:15
赞一个




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1