简单的PT2314BT2314音调程序.docx
- 文档编号:24687150
- 上传时间:2023-05-31
- 格式:DOCX
- 页数:20
- 大小:845.92KB
简单的PT2314BT2314音调程序.docx
《简单的PT2314BT2314音调程序.docx》由会员分享,可在线阅读,更多相关《简单的PT2314BT2314音调程序.docx(20页珍藏版)》请在冰豆网上搜索。
简单的PT2314BT2314音调程序
/**********************************************************************************************/
//PT2314的音量调节,高低音调节,声道选择,静音,红外遥控,
/**********************************************************************************************/
#include"reg52.h"
#include"intrins.h"
#defineucharunsignedchar
#defineuintunsignedint
#defineulongunsignedlong
/*pt2314写入地址*/
#defineWriteDeviceAddress0x88
/*红外0/1代码时长定义*/
#defineImax14000
#defineImin8000
#defineInum11450
#defineInum2700
#defineInum33000
/*对应音量+,音量-,高音+,高音-,低音+,低音-静音,音源选择*/
/*菜单,静音,加,减,dvd,vcd,cd,aut*/
#defineVol_Cut0x08/*静音*/
#defineup0x07
#definedown0x0a
#definemenu_Choose0x05/*包括treble,bass,vol*/
/*#definevol_bass_up0x05遥控器的便捷扩展按键
#definevol_bass_down0x06
#definevol_treble_up0x03
#definevol_treble_down0x04*/
#definemenu_road_Choose0x03//菜单选择包括了下面按一下就跳变次
/*#defineChoose_dvd0x09遥控器的便捷扩展按键
#defineChoose_cd0x10
#defineChoose_mp30x11
#defineChoose_mp40x12*/
/*显示定义*/
//unsignedcharBass=0x60;
//unsignedcharTreble=0x70;
/////////////////////
#definevol0x00;
#definebass0x60;
#definetreble0x70;
#defineaud_Choose0x40;
///////////////////////////////////////////////送到显示程序中的数组
unsignedchartab_display[]={0x7c,0x3a,0xfe,0xfc,0x04};//C:
0x9cD:
0xfcV:
0x7co:
0x3aB:
0xfeA:
0xee
///////////////////////////////////////////////共阴数MR6625显示T:
0x1er:
0x0e
unsignedcharcodedis_code[]={
0xfc,/*0*/
0x60,/*1*/
0xDA,/*2*/
0xF2,/*3*/
0x66,/*4*/
0xB6,/*5*/
0xBE,/*6*/
0xE0,/*7*/
0xFE,/*8*/
0xF6/*9*/
};
/////////////////////////////////////////////
unsignedcharvol_iic[]={0,0,0,0x5c,0,0};/*vol,bass,treble,aud_Choose,左声道静音量右声道静音量,传到iiC的数据*/
/////////////////////////////////////////////
unsignedcharChoose_vbt[]={38,8,8};/*vol,bass,vtreble音量调节变量存储*/
/////////////////////////////////////////////////MR-6625最后一位显示表格
//unsignedcharcodeMR_6625[]={0X20,0X01,0X02,0X04,0X08,0X10,0X40};//mp4,播放,暂停,DVD,CD,点,mp3正
unsignedcharcodeMR_6625[]={0X04,0X80,0X40,0X20,0X10,0X08,0X02};//mp4,播放,暂停,DVD,CD,点,mp3反
///////////////////////////////////////////////////////////////////////音量表格
/*unsignedcharcodevol_10db[]={0x00,0x08,0x10,0x18,
0x20,0x28,0x30,0x38};//10db增量
unsignedcharcodevol_1_25db[]={0x00,0x01,0x02,0x03,0x04,
0x05,0x06,0x07};//1.25db增量
*/
unsignedcharcodevol_db[]={0x38|0x07,0x38|0x06,0x38|0x05,0x38|0x04,0x38|0x03,0x38|0x02,0x38|0x01,0x38|0x00,
0x30|0x07,0x30|0x06,0x30|0x05,0x30|0x04,0x30|0x03,0x30|0x02,0x30|0x01,0x30|0x00,
0x28|0x07,0x28|0x06,0x28|0x05,0x28|0x04,0x28|0x03,0x28|0x02,0x28|0x01,0x28|0x00,
0x20|0x07,0x20|0x06,0x20|0x05,0x20|0x04,0x20|0x03,0x20|0x02,0x20|0x01,0x20|0x00,
0x18|0x07,0x18|0x06,0x18|0x05,0x18|0x04,0x18|0x03,0x18|0x02,0x18|0x01,0x18|0x00,
0x10|0x07,0x10|0x06,0x10|0x05,0x10|0x04,0x10|0x03,0x10|0x02,0x10|0x01,0x10|0x00,
0x08|0x07,0x08|0x06,0x08|0x05,0x08|0x04,0x08|0x03,0x08|0x02,0x08|0x01,0x08|0x00,
0x00|0x07,0x00|0x06,0x00|0x05,0x00|0x04,0x00|0x03,0x00|0x02,0x00|0x01,0x00|0x00,
};
///////////////////////////////////////////////////////////////////////B/T调音声调表格
unsignedcharcodeTiaoyin[]={0x00,0x01,0x02,0x03,
0x04,0x05,0x06,0x07,
0x0f,0x0e,0x0d,0x0c,
0x0b,0x0a,0x09,0x08};
//////////////////////////////////////////////////////////32位编码接收存储
unsignedcharIm[4]={0x00,0x00,0x00,0x00};
/////////////////////////////////////////////
unsignedlongm,Tc;
unsignedcharIrOK;//码是否正确的标识符
unsignedcharf;
unsignedcharflag;
//unsignedcharh;
unsignedcharMenuChoosem;
unsignedcharNumer;
unsignedcharMenuRoadChoosem;
unsignedcharChoose;
unsignedcharUpDown;
unsignedcharVolCutm;
unsignedcharppp;
///////////////////////////////////////
sbitm74HC164_DATA=P1^0;
sbitm74HC164_CLK=P1^1;
sbitMenu_high=P1^2;
sbitMenu_low=P1^3;
sbitValue_high=P1^4;
sbitValue_low=P2^5;
sbitPostion_Choose=P2^6;
//sbitP17=P1^7;
sbita0=ACC^0;//累加器做模拟串口传输的数据位定义
//////////////////////////////
sbitK1=P2^0;
sbitK2=P2^1;
sbitK3=P2^2;
sbitK4=P2^3;
sbitK5=P2^4;
//////////////////////////////////////////
sbitSCL=P3^7;//总线端口设置
sbitSDA=P3^6;
////////////////////////////////////////////////////////////////
voidDely()
{
unsignedcharm,n,s;
for(s=2;s>0;s--)
for(m=2;m>0;m--)
for(n=2;n>0;n--);
}
//定时函数
///////////////////////////////////////////
voidDelayMs(unsignedintnumber)//红外延时
{
unsignedchartemp;
for(;number!
=0;number--)
{
for(temp=112;temp!
=0;temp--);
}
}
//////////////////////////////////////////
voiddelay(unsignedcharms)//显示延时程序
{
unsignedchari;
while(ms--)
{
//for(i=0;i<125;i++);
for(i=0;i<30;i++);
}
}
///////////////////////////////////////////////////////PT2314iic程序
//开总线
voidStart()
{
SDA=1;
SCL=1;_nop_();_nop_();//_nop_();
SDA=0;_nop_();_nop_();//_nop_();
SCL=0;//_nop_();_nop_();_nop_();
}
///////////////////////////////////////////////////////////
//结束总线
voidStop()
{
SCL=0;
SDA=0;_nop_();_nop_();//_nop_();
SCL=1;_nop_();_nop_();//_nop_();
SDA=1;//_nop_();_nop_();_nop_();
}
///////////////////////////////////////////////////////
//测试ACK
bitTestAck()
{
bitErrorBit;
SDA=1;_nop_();//_nop_();_nop_();
SCL=1;_nop_();//_nop_();_nop_();
ErrorBit=SDA;
SCL=0;
return(ErrorBit);
}
///////////////////////////////////////////////////
//写入8个bit到PT2314
Write8Bit(ucharinput)
{
uchartemp;
for(temp=8;temp!
=0;temp--)
{
SDA=(bit)(input&0x80);
SCL=1;_nop_();//_nop_();_nop_();_nop_();
SCL=0;_nop_();//_nop_();_nop_();_nop_();
input=input<<1;
}
}
////////////////////////////////////////////////////
//写入一个字节到PT2314中
voidWritePT2314(ucharch)
{
Start();
Write8Bit(WriteDeviceAddress);
TestAck();
Write8Bit(ch);
TestAck();
Stop();
//DelayMs(20);
}
/////////////////////////////////////////////////////////////////////
voidchange_all()/*数值处理分配到表格*/
{
switch(MenuChoosem)
{
case0:
tab_display[2]=dis_code[Choose_vbt[0]/10];
tab_display[3]=dis_code[Choose_vbt[0]%10];break;/*vol*/
case1:
tab_display[2]=dis_code[Choose_vbt[1]/10];
tab_display[3]=dis_code[Choose_vbt[1]%10];break;/*bass*/
case2:
tab_display[2]=dis_code[Choose_vbt[2]/10];
tab_display[3]=dis_code[Choose_vbt[2]%10];break;/*treble*/
}
/*IIC数据处理*/
if(VolCutm==0)
{
tab_display[4]=MR_6625[2]|MR_6625[5]|MR_6625[Choose];
vol_iic[4]=0xdf;//静音
vol_iic[5]=0xff;
}
else
{
tab_display[4]=MR_6625[1]|MR_6625[5]|MR_6625[Choose];
vol_iic[4]=0xc0;//开静音
vol_iic[5]=0xe0;
}
vol_iic[0]=vol_db[Choose_vbt[0]]|vol;
vol_iic[1]=Tiaoyin[Choose_vbt[1]]|bass;
vol_iic[2]=Tiaoyin[Choose_vbt[2]]|treble;
if(Choose==0)
{vol_iic[3]=0x5c;}
if(Choose==3)
{vol_iic[3]=0x5d;}
if(Choose==4)
{vol_iic[3]=0x5e;}
if(Choose==6)
{vol_iic[3]=0x5f;}
}
voidout_74HC164(unsignedchardata_buf)/*模拟传输到74HC164*/
{
unsignedchari;//y;
i=8;
ACC=data_buf;
do
{
m74HC164_DATA=a0;
m74HC164_CLK=0;
m74HC164_CLK=1;
ACC=ACC>>1;
}
while(--i!
=0);
}
///////////////////////////////////////////////////////////
voiddisplay_74HC164()
{unsignedcharm;
for(m=0;m<3;m++)
{
Numer=tab_display[0];//菜单高位显示
out_74HC164(Numer);
Menu_high=0;
delay
(2);
Menu_high=1;
Numer=tab_display[1];//菜单低位显示
out_74HC164(Numer);
Menu_low=0;
delay
(2);
Menu_low=1;
Numer=tab_display[2];//数值高位显示
out_74HC164(Numer);
Value_high=0;
delay
(2);
Value_high=1;
Numer=tab_display[3];//数值低位显示
out_74HC164(Numer);
Value_low=0;
delay
(2);
Value_low=1;
Numer=tab_display[4];//点位选择显示
out_74HC164(Numer);
Postion_Choose=0;
delay
(2);
Postion_Choose=1;
}
m=0;
}
////////////////////////////////////////////////////////////////
voidVol_Cut_m()/*静音入口*/
{
VolCutm=~VolCutm;
}
/////////////////////////////////////////////////////////////
voidmenu_road_Choose_m()//选择mp4,DVD,CD,mp3/*输入选择*/
{//Choose:
0346
MenuRoadChoosem++;
if(MenuRoadChoosem==4)
{
MenuRoadChoosem=0;
}
switch(MenuRoadChoosem)
{
case0:
Choose=0;break;/*mp4*/
case1:
Choose=3;break;/*DVD*/
case2:
Choose=4;break;/*CD*/
case3:
Choose=6;break;/*mp3*/
}
}
/////////////////////////////////////////////////////////////////////
voidmenu_Choose_m()/*菜单控制选择*/
{
MenuChoosem++;
if(MenuChoosem==3)
{
MenuChoosem=0;
}
switch(MenuChoosem)//显示代码
{
case0:
tab_display[0]=0x7c;
tab_display[1]=0x3a;break;/*vol*/
case1:
tab_display[0]=0xfe;
tab_display[1]=0xee;break;/*bass*/
case2:
tab_display[0]=0x1e;
tab_display[1]=0x0e;break;/*treble*/
}
}
///////////////////////////////////////////////////////////////////////////////////
voidup_m()/*数值调节+*/
{
switch(MenuChoosem)
{
case0:
UpDown=Choose_vbt[0];break;/*vol*/
case1:
UpDown=Choose_vbt[1];break;/*bass*/
case2:
UpDown=Choose_vbt[2];break;/*treble*/
}
UpDown++;
if(MenuChoosem==0)/*vol重新存入Choose_vbt[]*/
{if(UpDown>64)
{
UpDown=64;
}
Choose_vbt[0]=UpDown;
}
if((MenuChoosem==1)|(MenuChoosem==2))
{
if(UpDown>16)
{
UpDown=16;
}
}
if(MenuChoosem==1)/*bass重新存入Choose_vbt[]*/
{
Choose_vbt[1]=UpDown;
}
if(MenuChoosem==2)/*treble重新存入Choose_vbt[]*/
{
Choose_vbt[2]=UpDown;
}
}
////////////////////////////////////////////////////////////////////////////////////
voiddown_m()/*数值调节-*/
{
switch(MenuChoosem)
{
case0:
UpDown=Choose_vbt[0];break;/*vol*/
case1:
UpDown=Choose_vbt[1];break;/*bass*/
case2:
UpDown=Choose_vbt[2];break;/*treble*/
}
if(UpDown>1)
{
UpDown--;
}
else
{
UpDown=0;
}
if(MenuChoosem==0)/*vol重新存入Choose_vbt[]*/
{
Choose_vbt[0]=UpDown;
}
if(MenuChoosem==1)/*bass重新存入Choose_vbt[]*/
{
Choose_vbt[1]=UpDown;
}
if(MenuChoosem==2)/*treble重新存入Choose_vbt[]*/
{
Choose_vbt
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 简单 PT2314BT2314 音调 程序