蜂鸣器的原理及使用方法及实验:开关S1闭合发出频率为1kHz的声音,发声时间约为1s。开关S2闭合发出频率为500Hz的声音,发声时间约为0.5s。

实验2 并行I/O口应用设计实验

一、实验目的
(1)熟练掌握51单片机内部并行I/O口的基本应用;
(2)掌握蜂鸣器的原理及使用方法;
(3)能够根据项目任务在Proteus 上设计硬件原理图;
(4)能够在Keil µVersion3上编程实现蜂鸣器的程序管理;
(5)能够使用调试工具进行Proteus和Keil µVersion3的联机调试。
二、实验要求
设计用两个开关S1、S2控制P1.0引脚实现蜂鸣器报警的程序,要求如下:
(1)开关S1、S2分别接到P3.0、P3.1引脚上。
(2)蜂鸣器接到P1.0引脚上。
(3)开关S1闭合发出频率为1kHz的声音,发声时间约为1s。
(4)开关S2闭合发出频率为500Hz的声音,发声时间约为0.5s。
提示:
(1)假设单片机系统时钟频率为12MHz。
(2)采用软件延时。
(3)在Proteus中,可以使用的蜂鸣器有两种,分别是SOUNDER和BUZZER,实验前请查阅资料了解蜂鸣器的使用方法。
三、实验步骤及结果

  1. 用Proteus绘制实验电路原理图
    蜂鸣器的特点与用法:
    1、 BUZZER只是SOUNDER的一种,SOUNDER 可以理解为发声器,本实验采用BUZZER。
    2、 电磁式蜂鸣器: 由振荡器电磁线圈、磁铁、振动膜片及外壳等组成,详情如图:
    蜂鸣器的原理及使用方法及实验:开关S1闭合发出频率为1kHz的声音,发声时间约为1s。开关S2闭合发出频率为500Hz的声音,发声时间约为0.5s。_第1张图片蜂鸣器的原理及使用方法及实验:开关S1闭合发出频率为1kHz的声音,发声时间约为1s。开关S2闭合发出频率为500Hz的声音,发声时间约为0.5s。_第2张图片

                          图1-1  蜂鸣器原理图
    

3、 蜂鸣器工作原理:
通过在某一接脚接高电压使线圈产生电流从而产生电磁场。产生磁场后将振动膜片吸附到中间的铁柱上,然后在此接脚接低电压,电流断开,磁场消失,振动膜片回弹。有振荡器的蜂鸣器为有源蜂鸣器,它可以直接将输入的高电压转换为一定频率的方波。无源蜂鸣器则没有振荡器需自己设计频率。
4、 蜂鸣器的用法:
三极管做蜂鸣器的开关应用:
首先不接三级管是不可以的,虽然单片机能直接写1,在输出口输出5V的电压,但是因为P1的I/o口内接上拉电阻,上拉电阻的电压比较大的,所以单片机的输出电流是不足以驱动蜂鸣器的。
蜂鸣器的原理及使用方法及实验:开关S1闭合发出频率为1kHz的声音,发声时间约为1s。开关S2闭合发出频率为500Hz的声音,发声时间约为0.5s。_第3张图片
图1-2 三级管原理图
如图:当IB>1mA时,E到C接通。
所以蜂鸣器的应用如图所示:
蜂鸣器的原理及使用方法及实验:开关S1闭合发出频率为1kHz的声音,发声时间约为1s。开关S2闭合发出频率为500Hz的声音,发声时间约为0.5s。_第4张图片
图1-3 蜂鸣器应用图

5、 试验电路原理图如图1-4所示:
蜂鸣器的原理及使用方法及实验:开关S1闭合发出频率为1kHz的声音,发声时间约为1s。开关S2闭合发出频率为500Hz的声音,发声时间约为0.5s。_第5张图片
图1-4 实验电路原理图
表1-1 所用元器件及其参数
序号 器件编号 Proteus器件名称 器件性质 参数及说明 数量
1 U1 AT89C51 单片机 12MHz 1
2 R1、R2、R3 RES 8排电阻(限流) 1KΩ 3
3 BUZ1 BUZZER 电磁蜂鸣器 5v有源 1
4 S1、S2 BUTTON 按钮 2
5 Q1 PNP 三 极管 1

  1. 在Keil µVersion中创建C51项目及文件
    代码:
#include
#define uchar unsigned char
#define uint unsigned int
uchar i=1;
sbit S1=P3^0;
sbit S2=P3^1;
sbit Buzzer=P1^0;

/*-------------------------------
  10ms延时程序 
-------------------------------*/
void delay10ms(int x)
{ int i,j; // 声明变量
for (i=1;i<x;i++) // 执行x次,延迟X*10ms
for (j=1;j<1200;j++);// 执行120次,延迟10ms
}
/*---------------------------
  蜂鸣器驱动程序 
---------------------------*/
void BUZZER1k(uint x)                               //0.24ms半周期蜂鸣器程序
{	  
        while(x--)
        {       
                Buzzer=~Buzzer;                      //蜂鸣器谐振频率2048Hz
                for(i=0;i<167;i++);                  //1KHz
        }                                                       
        Buzzer=1;                                    //复位
}
void BUZZER500(uint x)                               //0.24ms半周期蜂鸣器程序
{   
        while(x--)
        {       
                Buzzer=~Buzzer;                      //蜂鸣器谐振频率2048Hz
                for(i=0;i<84;i++);                   //500Hz
        }                                                       
        Buzzer=1;                                    //复位
}
void main()
{  
while(1)
	{   	 
		if((S1==0) )
		{ 
			BUZZER500(500);
            delay10ms(100);//延时1s
			S1==1; 
		}
			if(S2==0)
		{ 
			BUZZER1k(500);
            delay10ms(50);//延时0.5s
			S2==1; 
		}
	}
}
    
  1. Proteus和Keil 51的联机调试
    在Keil µVersion3中编辑、编译程序,排除语法错误后,将编译生成的.hex文件加载至Proteus的单片机中,选择仿真运行,查看运行结果,记录运行现象并分析。
    【说明】每次对程序进行修正后,都需要重新生成.hex文件,同时也要在Proteus中停止单片机的运行,只有再次运行时,修改才能起作用。
    查看Proteus连上后的c语言对应的汇编语言
    蜂鸣器的原理及使用方法及实验:开关S1闭合发出频率为1kHz的声音,发声时间约为1s。开关S2闭合发出频率为500Hz的声音,发声时间约为0.5s。_第6张图片 蜂鸣器的原理及使用方法及实验:开关S1闭合发出频率为1kHz的声音,发声时间约为1s。开关S2闭合发出频率为500Hz的声音,发声时间约为0.5s。_第7张图片实验也可以通过sounder器件实现:
    蜂鸣器的原理及使用方法及实验:开关S1闭合发出频率为1kHz的声音,发声时间约为1s。开关S2闭合发出频率为500Hz的声音,发声时间约为0.5s。_第8张图片 图1-5 方法二的电路图

你可能感兴趣的:(单片机实验)