资讯详情

51单片机的PT2257调音IC控制程序

Volume_Handle.H这头文件请到 http://www.ruidan.com/bbs/dpj-19294-1.html下载,下面的代码是从一个收音机程序里面截取出来的.

/*-----------PT2257调音IC控制-----------*/ /*------ 外部晶振为 12MHz-------*/ #include "C12C5620AD.H" #include "Volume_Handle.H" #include "delay.h" /********************** 声明外部变量**************************/ /********************** 定义变量**************************/ uchar Volume=20; //音量增益参数 /************ IIC2 开始*****************/ void IIC2_Start(void) { IIC2_SDA=1; Delay_us(5); IIC2_SCL=1; Delay_us(5); IIC2_SDA=0; Delay_us(5); IIC2_SCL=0; Delay_us(5); } /************ IIC2 停止*****************/ void IIC2_Stop(void) { IIC2_SCL=0; Delay_us(5); IIC2_SDA=0; Delay_us(5); IIC2_SCL=1; Delay_us(5); IIC2_SDA=1; Delay_us(5); } /************ IIC2 ACK 回应*****************/ void IIC2_ACK(void) { IIC2_SDA=0; Delay_us(5); IIC2_SCL=1; Delay_us(5); IIC2_SCL=0; Delay_us(5); IIC2_SDA=1; Delay_us(5); } /************ IIC2 检测 ACK 回应*****************/ bit IIC2_Test_ACK(void) { bit ErrorBit; IIC2_SDA=1; Delay_us(5); IIC2_SCL=1; Delay_us(5); ErrorBit=IIC2_SDA; Delay_us(5); IIC2_SCL=0; return ErrorBit; } /************ IIC2 写入一字节*****************/ void IIC2_Write_Byte(unsigned char Input) { unsigned char Temp; for(Temp=8;Temp>0;Temp--) { IIC2_SDA=(bit)(Input&0x80); Delay_us(5); IIC2_SCL=1; Delay_us(5); IIC2_SCL=0; Delay_us(5); Input=Input<<1; } } /**********************改变音量参数**************************/ void Volume_Write(uchar Vol) { uchar Temp_H,Temp_L; Temp_H=(Vol/10)|0xe0; Temp_L=(Vol%10)|0xd0; IIC2_Start(); //双声道同时改变,-10dB/Step IIC2_Write_Byte(0x88); //写PT2257地址 if(!IIC2_Test_ACK()) { IIC2_Write_Byte(Temp_H); IIC2_ACK(); IIC2_Write_Byte(Temp_L); IIC2_ACK(); } IIC2_Stop(); } /**********************初始化音量参数**************************/ void Volume_Init() { //Volume_Write(0x78); //MU=OFF Volume_Write(20); //-20dB }

-电子元器件采购网(www.ruidan.com)是本土元器件目录分销商,采用“小批量、现货、样品”销售模式,致力于满足客户多型号、高质量、快速交付的采购需求。 自建高效智能仓储,拥有自营库存超过50,000种,提供一站式正品现货采购、个性化解决方案、选型替代等多元化服务。
锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台