51单片机实现蜂鸣器警车、救护车、消防车声.doc

上传人:wj 文档编号:7395706 上传时间:2023-05-11 格式:DOC 页数:12 大小:50.50KB
下载 相关 举报
51单片机实现蜂鸣器警车、救护车、消防车声.doc_第1页
第1页 / 共12页
51单片机实现蜂鸣器警车、救护车、消防车声.doc_第2页
第2页 / 共12页
51单片机实现蜂鸣器警车、救护车、消防车声.doc_第3页
第3页 / 共12页
51单片机实现蜂鸣器警车、救护车、消防车声.doc_第4页
第4页 / 共12页
51单片机实现蜂鸣器警车、救护车、消防车声.doc_第5页
第5页 / 共12页
51单片机实现蜂鸣器警车、救护车、消防车声.doc_第6页
第6页 / 共12页
51单片机实现蜂鸣器警车、救护车、消防车声.doc_第7页
第7页 / 共12页
51单片机实现蜂鸣器警车、救护车、消防车声.doc_第8页
第8页 / 共12页
51单片机实现蜂鸣器警车、救护车、消防车声.doc_第9页
第9页 / 共12页
51单片机实现蜂鸣器警车、救护车、消防车声.doc_第10页
第10页 / 共12页
51单片机实现蜂鸣器警车、救护车、消防车声.doc_第11页
第11页 / 共12页
51单片机实现蜂鸣器警车、救护车、消防车声.doc_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

51单片机实现蜂鸣器警车、救护车、消防车声.doc

《51单片机实现蜂鸣器警车、救护车、消防车声.doc》由会员分享,可在线阅读,更多相关《51单片机实现蜂鸣器警车、救护车、消防车声.doc(12页珍藏版)》请在冰点文库上搜索。

51单片机实现蜂鸣器警车、救护车、消防车声.doc

1.

/*-----------------------------------------------

名称:

喇叭

论坛:

编写:

shifang

日期:

2009.5

修改:

内容:

模拟警车发声

------------------------------------------------*/

#include//包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义

sbitSPK=P1^2;//定义喇叭端口

unsignedcharfrq;

voidDelayUs2x(unsignedchart);//函数声明

voidDelayMs(unsignedchart);

/*------------------------------------------------

定时器初始化子程序

------------------------------------------------*/

voidInit_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延时函数,含有输入参数unsignedchart,无返回值

unsignedchar是定义无符号字符变量,其值的范围是

0~255这里使用晶振12M,精确延时请使用汇编,大致延时

长度如下T=tx2+5uS

------------------------------------------------*/

voidDelayUs2x(unsignedchart)

{

while(--t);

}

/*------------------------------------------------

mS延时函数,含有输入参数unsignedchart,无返回值

unsignedchar是定义无符号字符变量,其值的范围是

0~255这里使用晶振12M,精确延时请使用汇编

------------------------------------------------*/

voidDelayMs(unsignedchart)

{

while(t--)

{

//大致延时1mS

DelayUs2x(245);

DelayUs2x(245);

}

}

/*------------------------------------------------

定时器中断子程序

------------------------------------------------*/

voidTimer0_isr(void)interrupt1

{

TH0=0xfe; //重新赋值

TL0=frq;//低8位值在主程序中不断累加

SPK=!

SPK;//端口电平取反

}

/*-----------------------------------------------

名称:

喇叭

论坛:

编写:

shifang

日期:

2009.5

修改:

内容:

模救护车发声

------------------------------------------------*/

#include//包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义

sbitSPK=P1^2;//定义喇叭端口

unsignedcharfrq;

voidDelayUs2x(unsignedchart);//函数声明

voidDelayMs(unsignedchart);

/*------------------------------------------------

定时器初始化子程序

------------------------------------------------*/

voidInit_Timer0(void)

{

TMOD|=0x01; //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响

//TH0=0x00; //给定初值

//TL0=0x00;

EA=1;//总中断打开

ET0=1;//定时器中断打开

TR0=1;//定时器开关打开

}

/*------------------------------------------------

主函数

------------------------------------------------*/

main()

{

unsignedchari;

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延时函数,含有输入参数unsignedchart,无返回值

unsignedchar是定义无符号字符变量,其值的范围是

0~255这里使用晶振12M,精确延时请使用汇编,大致延时

长度如下T=tx2+5uS

------------------------------------------------*/

voidDelayUs2x(unsignedchart)

{

while(--t);

}

/*------------------------------------------------

mS延时函数,含有输入参数unsignedchart,无返回值

unsignedchar是定义无符号字符变量,其值的范围是

0~255这里使用晶振12M,精确延时请使用汇编

------------------------------------------------*/

voidDelayMs(unsignedchart)

{

while(t--)

{

//大致延时1mS

DelayUs2x(245);

DelayUs2x(245);

}

}

/*------------------------------------------------

定时器中断子程序

------------------------------------------------*/

voidTimer0_isr(void)interrupt1

{

TH0=0xfe; //重新赋值

TL0=frq;//低8位值在主程序中不断累加

SPK=!

SPK;//端口电平取反

}

/*-----------------------------------------------

名称:

喇叭

论坛:

编写:

shifang

日期:

2009.5

修改:

内容:

模拟消防车发声

------------------------------------------------*/

#include//包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义

sbitSPK=P1^2;//定义喇叭端口

unsignedcharfrq;

voidDelayUs2x(unsignedchart);//函数声明

voidDelayMs(unsignedchart);

/*------------------------------------------------

定时器初始化子程序

------------------------------------------------*/

voidInit_Timer0(void)

{

TMOD|=0x01; //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响

//TH0=0x00; //给定初值

//TL0=0x00;

EA=1;//总中断打开

ET0=1;//定时器中断打开

TR0=1;//定时器开关打开

}

/*------------------------------------------------

主函数

------------------------------------------------*/

main()

{

unsignedchari;

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延时函数,含有输入参数unsignedchart,无返回值

unsignedchar是定义无符号字符变量,其值的范围是

0~255这里使用晶振12M,精确延时请使用汇编,大致延时

长度如下T=tx2+5uS

------------------------------------------------*/

voidDelayUs2x(unsignedchart)

{

while(--t);

}

/*------------------------------------------------

mS延时函数,含有输入参数unsignedchart,无返回值

unsignedchar是定义无符号字符变量,其值的范围是

0~255这里使用晶振12M,精确延时请使用汇编

------------------------------------------------*/

voidDelayMs(unsignedchart)

{

while(t--)

{

//大致延时1mS

DelayUs2x(245);

DelayUs2x(245);

}

}/*------------------------------------------------

定时器中断子程序

------------------------------------------------*/

voidTimer0_isr(void)interrupt1

{

TH0=0xfe; //重新赋值

TL0=frq;//低8位值在主程序中不断累加

SPK=!

SPK;//端口电平取反

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 军事

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2