⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sound.h

📁 TEA5767收音机模块资料 包括(TEA5767驱动程序
💻 H
字号:
#include <avr/io.h>
/*
这是一个利用T2定时器产生各种频率的信号(占空比都是50%)驱动蜂鸣器发出声音的程序
利用到的AVR单片机资源:

T2定时器
OC2对应的IO口

在主程序开始时请调用 void SOUNDINIT_timer2_init(void) 对T2进行初始化
本子程序是对应8M内部晶体测试
void SOUND_ENTER(void)           进入菜单
void SOUND_ADD(void)             加
void SOUND_DEC(void)             减
void SOUND_WARNING_SIMPLE(void)  警告(普通的)
void SOUND_WARNING_TOOLOW(void)  警告(太低)
void SOUND_WARNING_TOOHIGH(void) 警告(太高)
void SOUND_RING1(void);          自定义声音1
void SOUND_RING2(void);          自定义声音2
void SOUND_RING3(void);          自定义声音3
*/
////////////////////////////////////////////////
/*------宏定义------*/

#define BIT(x)	(1<<(x))
#define NOP()	asm("nop")
#define WDR() 	asm("wdr")
////////////////////////////////////////////////
void SOUNDINIT_timer2_init(void);
void delay_s(unsigned int input);
void SOUND_ENTER(void);
void SOUND_ADD(void);
void SOUND_DEC(void);
void SOUND_WARNING_SIMPLE(void);
void SOUND_WARNING_TOOLOW(void);
void SOUND_WARNING_TOOHIGH(void);
void SOUND_RING1(void);
void SOUND_RING2(void);
void SOUND_RING3(void);


////////////////////////////////////////////////


//声音初始化
void SOUNDINIT_timer2_init(void)
{
	TCCR2  = 0x00;//停止定时器
	ASSR   = 0x00;//异步时钟模式(无)
	TCNT2  = 0x00;//初始值
	OCR2   = 0x18;//匹配值
	TIMSK |= 0x00;//中断允许(中断全关)

}
////////////////////////////////////////////////
void delay_s(unsigned int input)
{
unsigned int i,k;
for(i=0;i<1000;i++)
{for(k=0;k<input;k++)WDR();}


}
////////////////////////////////////////////////
void SOUND_ENTER(void)
{
      OCR2  =  0xF0;
	  TCCR2  = 0x1A;//启动定时器
      delay_s(50);
      TCCR2  = 0x00;//关闭定时器
      delay_s(30);
	  OCR2=0x6F;
	  TCCR2  = 0x1A;//启动定时器
      delay_s(40);
      TCCR2  = 0x00;//关闭定时器
      WDR();

}
////////////////////////////////////////////////
void SOUND_ADD(void)
{
      OCR2  =  0x6F;
	  TCCR2  = 0x1A;//启动定时器
      delay_s(10);
      TCCR2  = 0x00;//关闭定时器
      delay_s(30);
	  OCR2=0x80;
	  TCCR2  = 0x1A;//启动定时器
      delay_s(10);
      TCCR2  = 0x00;//关闭定时器
      WDR();

}
////////////////////////////////////////////////
void SOUND_DEC(void)
{
      OCR2  =  0xEE;
	  TCCR2  = 0x1A;//启动定时器
      delay_s(10);
      TCCR2  = 0x00;//关闭定时器
      delay_s(30);
	  OCR2=0xFF;
	  TCCR2  = 0x1A;//启动定时器
      delay_s(10);
      TCCR2  = 0x00;//关闭定时器
      WDR();

}
////////////////////////////////////////////////
void SOUND_WARNING_SIMPLE(void)
{
      OCR2  =  0xFF;
	  TCCR2  = 0x1A;//启动定时器
      delay_s(200);
      TCCR2  = 0x00;//关闭定时器
	  delay_s(150);
	  OCR2  =  0xFF;
	  TCCR2  = 0x1A;//启动定时器
      delay_s(200);
      TCCR2  = 0x00;//关闭定时器
	  delay_s(150);
	  OCR2  =  0xFF;
	  TCCR2  = 0x1A;//启动定时器
      delay_s(200);
      TCCR2  = 0x00;//关闭定时器
}
////////////////////////////////////////////////
void SOUND_WARNING_TOOLOW(void)
{
      OCR2  =  0x70;
	  TCCR2  = 0x1A;//启动定时器
      delay_s(400);
      TCCR2  = 0x00;//关闭定时器
	  delay_s(150);
	  OCR2  =  0xFF;
	  TCCR2  = 0x1A;//启动定时器
      delay_s(200);
      TCCR2  = 0x00;//关闭定时器
	  delay_s(150);
	  OCR2  =  0xFF;
	  TCCR2  = 0x1A;//启动定时器
      delay_s(200);
      TCCR2  = 0x00;//关闭定时器
}
////////////////////////////////////////////////
void SOUND_WARNING_TOOHIGH(void)
{
      OCR2  =  0xAF;
	  TCCR2  = 0x1A;//启动定时器
      delay_s(400);
      TCCR2  = 0x00;//关闭定时器
	  delay_s(150);
	  OCR2  =  0xFF;
	  TCCR2  = 0x1A;//启动定时器
      delay_s(200);
      TCCR2  = 0x00;//关闭定时器
	  delay_s(150);
	  OCR2  =  0xFF;
	  TCCR2  = 0x1A;//启动定时器
      delay_s(200);
      TCCR2  = 0x00;//关闭定时器
}
////////////////////////////////////////////////
void SOUND_RING1(void)
{
      OCR2  =  0xCC;
	  TCCR2  = 0x1A;//启动定时器
      delay_s(20);
      TCCR2  = 0x00;//关闭定时器
      delay_s(30);
	  OCR2=0x90;
	  TCCR2  = 0x1A;//启动定时器
      delay_s(70);
      TCCR2  = 0x00;//关闭定时器
	  delay_s(30);
	  OCR2  =  0xCC;
	  TCCR2  = 0x1A;//启动定时器
      delay_s(20);
      TCCR2  = 0x00;//关闭定时器
}
////////////////////////////////////////////////
void SOUND_RING2(void)
{
      OCR2  =  0x90;
	  TCCR2  = 0x1A;//启动定时器
      delay_s(20);
      TCCR2  = 0x00;//关闭定时器
      delay_s(30);
	  OCR2=0xDF;
	  TCCR2  = 0x1A;//启动定时器
      delay_s(70);
      TCCR2  = 0x00;//关闭定时器
	  delay_s(30);
	  OCR2  =  0x90;
	  TCCR2  = 0x1A;//启动定时器
      delay_s(20);
      TCCR2  = 0x00;//关闭定时器
}
////////////////////////////////////////////////
void SOUND_RING3(void)
{
      OCR2  =  0xFF;
	  TCCR2  = 0x1A;//启动定时器
      delay_s(20);
      TCCR2  = 0x00;//关闭定时器
      delay_s(30);
	  OCR2 = 0xAA;
	  TCCR2  = 0x1A;//启动定时器
      delay_s(70);
      TCCR2  = 0x00;//关闭定时器
	  delay_s(30);
	  OCR2  =  0x80;
	  TCCR2  = 0x1A;//启动定时器
      delay_s(20);
      TCCR2  = 0x00;//关闭定时器
}





⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -