您好,欢迎访问三七文档
当前位置:首页 > 金融/证券 > 金融资料 > 51单片机实现蜂鸣器警车、救护车、消防车声
1./*-----------------------------------------------名称:喇叭论坛:编写:shifang日期:2009.5修改:无内容:模拟警车发声------------------------------------------------*/#includereg52.h//包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义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--){//大致延时1mSDelayUs2x(245);DelayUs2x(245);}}/*------------------------------------------------定时器中断子程序------------------------------------------------*/voidTimer0_isr(void)interrupt1{TH0=0xfe;//重新赋值TL0=frq;//低8位值在主程序中不断累加SPK=!SPK;//端口电平取反}二/*-----------------------------------------------名称:喇叭论坛:编写:shifang日期:2009.5修改:无内容:模救护车发声------------------------------------------------*/#includereg52.h//包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义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;i60;i++)//播放1s左右一种频率{DelayMs(10);}frq=100;for(i=0;i60;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--){//大致延时1mSDelayUs2x(245);DelayUs2x(245);}}/*------------------------------------------------定时器中断子程序------------------------------------------------*/voidTimer0_isr(void)interrupt1{TH0=0xfe;//重新赋值TL0=frq;//低8位值在主程序中不断累加SPK=!SPK;//端口电平取反}三/*-----------------------------------------------名称:喇叭论坛:编写:shifang日期:2009.5修改:无内容:模拟消防车发声------------------------------------------------*/#includereg52.h//包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义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;i200;i++){DelayMs(10);//延时10ms,累加频率值frq=i;}for(i=200;i0;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--){//大致延时1mSDelayUs2x(245);DelayUs2x(245);}}/*------------------------------------------------定时器中断子程序------------------------------------------------*/voidTimer0_isr(void)interrupt1{TH0=0xfe;//重新赋值TL0=frq;//低8位值在主程序中不断累加SPK=!SPK;//端口电平取反}
本文标题:51单片机实现蜂鸣器警车、救护车、消防车声
链接地址:https://www.777doc.com/doc-5236582 .html