51单片机-蜂鸣器编程

文章目录

  • 基本程序
    • 实验问题
    • 注意点
  • 拓展程序

基本程序

#include "reg52.h"			 //此文件中定义了单片机的一些特殊功能寄存器
#include		//因为要用到左右移函数,所以加入这个头文件

typedef unsigned int u16;	  //对数据类型进行声明定义
typedef unsigned char u8;

sbit beep=P1^5;	   

/*******************************************************************************
* 函 数 名         : delay
* 函数功能		   : 延时函数,i=1时,大约延时10us
*******************************************************************************/
void delay(u16 i)
{
	while(i--);	
}

/*******************************************************************************
* 函 数 名       : main
* 函数功能		 : 主函数
* 输    入       : 无
* 输    出    	 : 无
*******************************************************************************/
void main()
{	
	while(1)
	{	
		beep=~beep;
		delay(10); //延时大约100us   通过修改此延时时间达到不同的发声效果	
	}
}

实验问题

没有调用定义的函数

WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS

注意点

蜂鸣器的电流比较大,必须外接驱动电路
LED流比较小,可以直接IO口驱动

拓展程序

#include 						
sbit buzzer = P1^5;				//声明蜂鸣器位置
void delay(int);				//声明延迟函数
void pulse_BZ(int,int,int);		//声明发声函数

//主程序

main()
{
	while(1)
	{
		pulse_BZ(100,10,10);	//响100次,频率为100Hz
		delay(2000);			//延迟2000×0.5ms=1s
	}
}

//延迟函数:延迟时间=n×0.5ms

void delay(int n)
{
	int i,j;
	for(j=0;j

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