喇叭音量调节
来源:互联网 发布:3b代码编程及简单图形 编辑:程序博客网 时间:2024/04/28 23:11
/*-----------------------------------------------
名称:IIC协议 PCF8591ADDA转换
论坛:www.doflye.net
编写:shifang
日期:2009.5
修改:无
内容:通过DA输出电压变化控制喇叭声音音量,P1.0用杜邦线连接J42 B1端子
J33插针OUT信号端用一根杜邦线连接到J51插针PWM/DAC Signal IN端子。本程序适用于LY-51S V2.2版本开发板
现象:喇叭声音由弱到强连续变化。
------------------------------------------------*/
#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
#include <intrins.h> //包含NOP空指令函数_nop_();
#define AddWr 0x90 //写数据地址
#define AddRd 0x91 //读数据地址
sbit Sda=P2^1; //定义总线连接端口 根据此定义连接杜邦线
sbit Scl=P2^0;
sbit spk=P1^2; //喇叭端口
/*------------------------------------------------
延时程序
------------------------------------------------*/
void mDelay(unsigned char j)
{
unsigned int i;
for(;j>0;j--)
{
for(i=0;i<125;i++)
{;}
}
}
/*------------------------------------------------
初始化定时器1
------------------------------------------------*/
void Init_Timer1(void)
{
TMOD |= 0x10;
TH1=(65536-500)/256; //初始化值
TL1=(65536-500)%256;
//PT1=1; //优先级
EA=1; //中断使能
ET1=1; //定时器中断使能
TR1=1; //打开定时器
}
/*------------------------------------------------
启动IIC总线
------------------------------------------------*/
void Start(void)
{
Sda=1;
_nop_();
Scl=1;
_nop_();
Sda=0;
_nop_();
Scl=0;
}
/*------------------------------------------------
停止IIC总线
------------------------------------------------*/
void Stop(void)
{
Sda=0;
_nop_();
Scl=1;
_nop_();
Sda=1;
_nop_();
Scl=0;
}
/*------------------------------------------------
应答IIC总线
------------------------------------------------*/
void Ack(void)
{
Sda=0;
_nop_();
Scl=1;
_nop_();
Scl=0;
_nop_();
}
/*------------------------------------------------
发送一个字节
------------------------------------------------*/
void Send(unsigned char Data)
{
unsigned char BitCounter=8;
unsigned char temp;
do
{
temp=Data;
Scl=0;
_nop_();
if((temp&0x80)==0x80)
Sda=1;
else
Sda=0;
Scl=1;
temp=Data<<1;
Data=temp;
BitCounter--;
}
while(BitCounter);
Scl=0;
}
/*------------------------------------------------
写入DA数模转换值
------------------------------------------------*/
void DAC(unsigned char Data)
{
Start();
Send(AddWr); //写入芯片地址
Ack();
Send(0x40); //写入控制位,使能DAC输出
Ack();
Send(Data); //写数据
Ack();
Stop();
}
/*------------------------------------------------
主程序
------------------------------------------------*/
void main()
{
unsigned char num; //DA数模输出变量
Init_Timer1();
while(1)
{
DAC(num); //DA输出,可以用LED模拟电压变化
num++; //累加,到256后溢出变为0,往复循环。显示在LED上亮度逐渐变化
mDelay(20); //延时用于清晰看出变化
}
}
/*------------------------------------------------
定时器中断程序
------------------------------------------------*/
void Timer1_isr(void) interrupt 3 using 1//定时器1
{
TH1=(65536-500)/256;//重装初始化值
TL1=(65536-500)%256;
spk=!spk; //取反喇叭,产生固定频率方波,驱动喇叭发声
名称:IIC协议 PCF8591ADDA转换
论坛:www.doflye.net
编写:shifang
日期:2009.5
修改:无
内容:通过DA输出电压变化控制喇叭声音音量,P1.0用杜邦线连接J42 B1端子
J33插针OUT信号端用一根杜邦线连接到J51插针PWM/DAC Signal IN端子。本程序适用于LY-51S V2.2版本开发板
现象:喇叭声音由弱到强连续变化。
------------------------------------------------*/
#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
#include <intrins.h> //包含NOP空指令函数_nop_();
#define AddWr 0x90 //写数据地址
#define AddRd 0x91 //读数据地址
sbit Sda=P2^1; //定义总线连接端口 根据此定义连接杜邦线
sbit Scl=P2^0;
sbit spk=P1^2; //喇叭端口
/*------------------------------------------------
延时程序
------------------------------------------------*/
void mDelay(unsigned char j)
{
unsigned int i;
for(;j>0;j--)
{
for(i=0;i<125;i++)
{;}
}
}
/*------------------------------------------------
初始化定时器1
------------------------------------------------*/
void Init_Timer1(void)
{
TMOD |= 0x10;
TH1=(65536-500)/256; //初始化值
TL1=(65536-500)%256;
//PT1=1; //优先级
EA=1; //中断使能
ET1=1; //定时器中断使能
TR1=1; //打开定时器
}
/*------------------------------------------------
启动IIC总线
------------------------------------------------*/
void Start(void)
{
Sda=1;
_nop_();
Scl=1;
_nop_();
Sda=0;
_nop_();
Scl=0;
}
/*------------------------------------------------
停止IIC总线
------------------------------------------------*/
void Stop(void)
{
Sda=0;
_nop_();
Scl=1;
_nop_();
Sda=1;
_nop_();
Scl=0;
}
/*------------------------------------------------
应答IIC总线
------------------------------------------------*/
void Ack(void)
{
Sda=0;
_nop_();
Scl=1;
_nop_();
Scl=0;
_nop_();
}
/*------------------------------------------------
发送一个字节
------------------------------------------------*/
void Send(unsigned char Data)
{
unsigned char BitCounter=8;
unsigned char temp;
do
{
temp=Data;
Scl=0;
_nop_();
if((temp&0x80)==0x80)
Sda=1;
else
Sda=0;
Scl=1;
temp=Data<<1;
Data=temp;
BitCounter--;
}
while(BitCounter);
Scl=0;
}
/*------------------------------------------------
写入DA数模转换值
------------------------------------------------*/
void DAC(unsigned char Data)
{
Start();
Send(AddWr); //写入芯片地址
Ack();
Send(0x40); //写入控制位,使能DAC输出
Ack();
Send(Data); //写数据
Ack();
Stop();
}
/*------------------------------------------------
主程序
------------------------------------------------*/
void main()
{
unsigned char num; //DA数模输出变量
Init_Timer1();
while(1)
{
DAC(num); //DA输出,可以用LED模拟电压变化
num++; //累加,到256后溢出变为0,往复循环。显示在LED上亮度逐渐变化
mDelay(20); //延时用于清晰看出变化
}
}
/*------------------------------------------------
定时器中断程序
------------------------------------------------*/
void Timer1_isr(void) interrupt 3 using 1//定时器1
{
TH1=(65536-500)/256;//重装初始化值
TL1=(65536-500)%256;
spk=!spk; //取反喇叭,产生固定频率方波,驱动喇叭发声
0 0
- 喇叭音量调节
- 单片机喇叭音量调节
- 喇叭音量调节
- 单片机喇叭音量调节
- 喇叭音量调节
- 音量调节
- 音量调节
- 音量调节
- IOS音量调节--隐藏系统音量调节
- 拦截音量键调节音量
- 音量调节及静音
- Delphi调节音量
- 调节系统音量(话筒)
- 调节全部音量
- 音量调节及静音
- PCM 音量调节
- brew音量调节
- Delphi 音量调节源码
- C++ fopen按行读取文件及所读取的数据问题
- Android源码编译常见错误(持续更新)
- revert_by_date
- 关系与普通表的术语比较
- 系统集成项目管理工程师教程看书笔记5
- 喇叭音量调节
- 【算法与数据结构】奇数阶魔方阵
- HDU1009
- 《剑指Offer》面试题三之二维数组中的查找
- c++ 设计模式(一) 代理模式
- Wormholes(spfa判断负环)
- c简单位操作
- “距离(distance)”、“相似度(similarity)”相关的量的小结
- 简单图片隐写术破解