您的位置:控制工程论坛网论坛 » 软件与程序 » 单片机学习,C51单片机入门经典30课 第十八课

xilinxue

xilinxue   |   当前状态:在线

总积分:16186  2024年可用积分:0

注册时间: 2008-06-26

最后登录时间: 2020-03-22

空间 发短消息加为好友

单片机学习,C51单片机入门经典30课 第十八课

xilinxue  发表于 2009/2/10 13:27:08      1084 查看 2 回复  [上一主题]  [下一主题]

手机阅读

第18课,嘀声报警信号输出试验


这一课,我们将学习如何控制蜂鸣器的声音输出,这一课我们只输出一个频率的声音,之后几课我们将逐步输出更为复杂的音乐声,你甚至可以自己输入一个乐谱,直接播放出来。


蜂鸣器有有源和无源的几种。也称为直流蜂鸣器和交流蜂鸣器。有源蜂鸣器只要通上直流电,就会发出预定的声音,比如,连续嘀声,或者间断嘀嘀声,这种声音无法控制,频率也无法改变。一般用在一些简单应用场合。无源蜂鸣器相当于一个简单的喇叭,通上直流点不会发声,只有通上交流电时,才会根据交流点的频率发出相应的声音,这种蜂鸣器可以任意控制声音输出,但是需要用户以相应的信号驱动,工作复杂一些。


我们的试验使用的是交流蜂鸣器。我们的电路中用P17来驱动。


下面看连续输出一个频率的例程:


――――――――――――
#define uchar unsigned char //定义一下方便使用
#define uint unsigned int
#define ulong unsigned long
#include //包括一个52标准内核的头文件
char code dx516[3] _at_ 0x003b;//这是为了仿真设置的
sbit P10=P1^0; //LED1
sbit K1=P3^2; //K1
sbit BEEP=P1^7; //喇叭输出脚
//嘀声报警信号输出试验
void main(void) // 主程序
{
uint n;
while(1)
{
for(n=0;n<100;n++); //延时
BEEP=~BEEP; //取反输出到喇叭的信号
}
}
―――――――――――――――――――


程序里,在延时一点时间之后,就将驱动蜂鸣器的引脚取反,不断循环,形成一个交流信号,蜂鸣器也就响了。


请编译,运行。可以听到发出嘀的连续的声音。

1楼 0 0 回复
  • xilinxue

    xilinxue   |   当前状态:在线

    总积分:16186  2024年可用积分:0

    注册时间: 2008-06-26

    最后登录时间: 2020-03-22

    空间 发短消息加为好友

    xilinxue   发表于 2009/2/7 13:13:23

    改变延时值,以改变蜂鸣器输出声音的频率。

    第十八课工程源码lesson18code.rar
    2楼 回复本楼

    引用 xilinxue 2009/2/7 13:13:23 发表于2楼的内容

  • xilinxue

    xilinxue   |   当前状态:在线

    总积分:16186  2024年可用积分:0

    注册时间: 2008-06-26

    最后登录时间: 2020-03-22

    空间 发短消息加为好友

    xilinxue   发表于 2009/2/10 13:27:08

    改变延时值,以改变蜂鸣器输出声音的频率。


    再用另外一个 中断口来驱动另外一个蜂鸣器输出声音


    实现两个同时输出

    3楼 回复本楼

    引用 xilinxue 2009/2/10 13:27:08 发表于3楼的内容

总共 , 当前 /