/******************************************************************** * 文件名 : 蜂鸣器发声.c * 描述 : 蜂鸣器通过交替变化的电平后,会发出蜂鸣声。 * 杜邦线接法:P1.2用杜邦线连接到J17的左边第二个。 ***********************************************************************/ #include<reg52.h> #define uchar unsigned char #define uint unsigned int sbit BELL = P1^2; //设置P1.2口,为控制蜂鸣器发声的引脚 /******************************************************************** * 名称 : Delay() * 功能 : 延时 * 输入 : del * 输出 : 无 ***********************************************************************/ void Delay(uint del) { uint i; for(i=0; i<100; i++) ; } /******************************************************************** * 名称 : Main() * 功能 : 实现灯的闪烁 * 输入 : 无 * 输出 : 无 ***********************************************************************/ void Main(void) { while(1) { BELL = 0; Delay(1); //延时10毫秒 BELL = 1; Delay(1); //延时10毫秒 } }
/******************************************************************** * 文件名 : 蜂鸣器发声.c * 描述 : 蜂鸣器通过交替变化的电平后,会发出蜂鸣声。 * 杜邦线接法:P1.2用杜邦线连接到J17的左边第二个。 ***********************************************************************/ #include<reg52.h> #define uchar unsigned char #define uint unsigned int sbit BELL = P1^2; //设置P1.2口,为控制蜂鸣器发声的引脚 /******************************************************************** * 名称 : Delay_1ms() * 功能 : 延时子程序,延时时间为 1ms * x * 输入 : x (延时一毫秒的个数) * 输出 : 无 ***********************************************************************/ void Delay(uint i) { uint x,j; for(j=0;j<i;j++) for(x=0;x<=148;x++); } /******************************************************************** * 名称 : Main() * 功能 : 实现灯的闪烁 * 输入 : 无 * 输出 : 无 ***********************************************************************/ void Main(void) { uint i; while(1) { for(i = 0; i < 500; i++) { BELL = 0; Delay(1); //延时10毫秒 BELL = 1; Delay(1); //延时10毫秒 } Delay(1000); } }
/******************************************************************** * 文件名 : 蜂鸣器发声.c * 描述 : 模拟报警声,如闹钟 滴 滴 滴 滴 * 杜邦线接法:P1.2用杜邦线连接到J17的左边第二个。 ***********************************************************************/ #include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义 sbit SPK=P1^2; //定义喇叭端口 unsigned char frq; void DelayUs2x(unsigned char t);//函数声明 void DelayMs(unsigned char t); /*------------------------------------------------ 主函数 ------------------------------------------------*/ main() { unsigned int i; while(1) { for(i=0;i<200;i++) { DelayUs2x(200); SPK=!SPK; } SPK=0;//防止一直给喇叭通电造成损坏 for(i=0;i<200;i++) { DelayMs(1); } } } /*------------------------------------------------ uS延时函数,含有输入参数 unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是 0~255 这里使用晶振12M,精确延时请使用汇编,大致延时 长度如下 T=tx2+5 uS ------------------------------------------------*/ void DelayUs2x(unsigned char t) { while(--t); } /*------------------------------------------------ mS延时函数,含有输入参数 unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是 0~255 这里使用晶振12M,精确延时请使用汇编 ------------------------------------------------*/ void DelayMs(unsigned char t) { while(t--) { //大致延时1mS DelayUs2x(245); DelayUs2x(245); } }
/******************************************************************** * 文件名 : 蜂鸣器发声.c * 描述 : 模救护车发声 * 杜邦线接法:P1.2用杜邦线连接到J17的左边第二个。 ***********************************************************************/ #include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义 sbit SPK=P1^2; //定义喇叭端口 unsigned char frq; void DelayUs2x(unsigned char t);//函数声明 void DelayMs(unsigned char t); /*------------------------------------------------ 定时器初始化子程序 ------------------------------------------------*/ void Init_Timer0(void) { TMOD |= 0x01; //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响 //TH0=0x00; //给定初值 //TL0=0x00; EA=1; //总中断打开 ET0=1; //定时器中断打开 TR0=1; //定时器开关打开 } /*------------------------------------------------ 主函数 ------------------------------------------------*/ main() { unsigned char i; Init_Timer0(); //初始化定时器 while(1) { frq=0; for(i=0;i<60;i++)//播放1s左右一种频率 { DelayMs(10); } frq=100; for(i=0;i<60;i++)//播放1s左右另外一种频率 { DelayMs(10); } } } /*------------------------------------------------ uS延时函数,含有输入参数 unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是 0~255 这里使用晶振12M,精确延时请使用汇编,大致延时 长度如下 T=tx2+5 uS ------------------------------------------------*/ void DelayUs2x(unsigned char t) { while(--t); } /*------------------------------------------------ mS延时函数,含有输入参数 unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是 0~255 这里使用晶振12M,精确延时请使用汇编 ------------------------------------------------*/ void DelayMs(unsigned char t) { while(t--) { //大致延时1mS DelayUs2x(245); DelayUs2x(245); } } /*------------------------------------------------ 定时器中断子程序 ------------------------------------------------*/ void Timer0_isr(void) interrupt 1 { TH0=0xfe; //重新赋值 TL0=frq; //低8位值在主程序中不断累加 SPK=!SPK; //端口电平取反 }
/******************************************************************** * 描述 : 模拟消防车发声 * 杜邦线接法:P1.2用杜邦线连接到J17的左边第二个。 ***********************************************************************/ #include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义 sbit SPK=P1^2; //定义喇叭端口 unsigned char frq; void DelayUs2x(unsigned char t);//函数声明 void DelayMs(unsigned char t); /*------------------------------------------------ 定时器初始化子程序 ------------------------------------------------*/ void Init_Timer0(void) { TMOD |= 0x01; //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响 //TH0=0x00; //给定初值 //TL0=0x00; EA=1; //总中断打开 ET0=1; //定时器中断打开 TR0=1; //定时器开关打开 } /*------------------------------------------------ 主函数 ------------------------------------------------*/ main() { unsigned char i; Init_Timer0(); //初始化定时器 while(1) { for(i=0;i<200;i++) { DelayMs(10); //延时10ms,累加频率值 frq=i; } for(i=200;i>0;i--) { DelayMs(10); //延时10ms,累减频率值 frq=i; } } } /*------------------------------------------------ uS延时函数,含有输入参数 unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是 0~255 这里使用晶振12M,精确延时请使用汇编,大致延时 长度如下 T=tx2+5 uS ------------------------------------------------*/ void DelayUs2x(unsigned char t) { while(--t); } /*------------------------------------------------ mS延时函数,含有输入参数 unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是 0~255 这里使用晶振12M,精确延时请使用汇编 ------------------------------------------------*/ void DelayMs(unsigned char t) { while(t--) { //大致延时1mS DelayUs2x(245); DelayUs2x(245); } }/*------------------------------------------------ 定时器中断子程序 ------------------------------------------------*/ void Timer0_isr(void) interrupt 1 { TH0=0xfe; //重新赋值 TL0=frq; //低8位值在主程序中不断累加 SPK=!SPK; //端口电平取反 }
/********************************************************************
* 描述 : 模拟警车发声
* 创建人 : 东流,2012年2月7日
* 版本号 : 1.0
* 杜邦线接法:P1.2用杜邦线连接到J17的左边第二个。
***********************************************************************/
#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
sbit SPK=P1^2; //定义喇叭端口
unsigned char frq;
void DelayUs2x(unsigned char t);//函数声明
void DelayMs(unsigned char t);
/*------------------------------------------------
定时器初始化子程序
------------------------------------------------*/
void Init_Timer0(void)
{
TMOD |= 0x01; //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响
//TH0=0x00; //给定初值
//TL0=0x00;
EA=1; //总中断打开
ET0=1; //定时器中断打开
TR0=1; //定时器开关打开
}
/*------------------------------------------------
主函数
------------------------------------------------*/
main()
{
Init_Timer0(); //初始化定时器
while(1)
{
DelayMs(1); //延时1ms,累加频率值
frq++;
}
}
/*------------------------------------------------
uS延时函数,含有输入参数 unsigned char t,无返回值
unsigned char 是定义无符号字符变量,其值的范围是
0~255 这里使用晶振12M,精确延时请使用汇编,大致延时
长度如下 T=tx2+5 uS
------------------------------------------------*/
void DelayUs2x(unsigned char t)
{
while(--t);
}
/*------------------------------------------------
mS延时函数,含有输入参数 unsigned char t,无返回值
unsigned char 是定义无符号字符变量,其值的范围是
0~255 这里使用晶振12M,精确延时请使用汇编
------------------------------------------------*/
void DelayMs(unsigned char t)
{
while(t--)
{
//大致延时1mS
DelayUs2x(245);
DelayUs2x(245);
}
}
/*------------------------------------------------
定时器中断子程序
------------------------------------------------*/
void Timer0_isr(void) interrupt 1
{
TH0=0xfe; //重新赋值
TL0=frq; //低8位值在主程序中不断累加
SPK=!SPK; //端口电平取反
}