TDA7313控制程序

  • Gxxz
    了解作者
  • C/C++
    开发工具
  • 115.3KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 5 积分
    下载积分
  • 0
    下载次数
  • 2022-12-05 09:03
    上传日期
c51TDA7313控制程序,完整代码。简单修改即可使用。
tda7313xinzaizai.rar
  • tda7313xinzaizai
  • Listings
  • 7313.m51
    32.2KB
  • 7313.lst
    38.7KB
  • Objects
  • 7313.obj
    30KB
  • 7313.lnp
    89B
  • 7313.build_log.htm
    1.1KB
  • 7313
    25.1KB
  • 7313.hex
    9.3KB
  • STARTUP.OBJ
    786B
  • 7313.uvgui.Administrator
    89.7KB
  • 7313.uvgui_Administrator.bak
    69.3KB
  • 7313.lnp
    62B
  • 7313.M51
    31.8KB
  • 7313_uvproj.bak
    13.2KB
  • 7313.uvopt
    4.9KB
  • STARTUP.A51
    6.2KB
  • 7313.LST
    38.8KB
  • 7313.build_log.htm
    0B
  • 源文件.txt
    27.4KB
  • 7313_uvopt.bak
    54KB
  • STARTUP.LST
    13.7KB
  • TDA7313 1602Ver02.rar
    4.3KB
  • 7313.c
    26.7KB
  • 7313.plg
    6.3KB
  • 7313.uvproj
    14KB
  • STC89C52-TDA7313.lay6
    91.4KB
  • 7313.OBJ
    30.4KB
内容介绍
/* Use LCM1602 */ #include<stc12c5a.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned int #define ShortPress 30 //短时间按下 #define LongPress 200 //长时间按下 #define MUTE_CTROL 0x3f //静音控制数据 //#define AT24c02_ADD 0xa0 //AT24C02地址 #define SC7313_ADD 0x88 //SC7313地址 #define VOL_SAVE_ADD 1 //音量参数断电保存地址 #define BASS_SAVE_ADD 8 //低音参数断电保存地址 #define TREBLE_SAVE_ADD 16 //高音参数断电保存地址 #define LINE_SAVE_ADD 24 //输入选择参数断电保存地址 #define LcmPort P0 //LCM的数据端口 sbit sda=P2^7; sbit scl=P2^6; sbit led=P4^6; sbit a=P3^4; sbit b=P3^3; sbit sw=P3^2; sbit rs=P1^2; sbit rw=P1^1; sbit en=P1^0; bit flag; uint time; static uchar long_press_count=0,vol=0,bass=7,treble=7; static char left=0,right=0; static uchar input_flag=0; uchar code num[]={0x03,0x05,0x19,0x19,0x19,0x19,0x05,0x03, //右声道符号 0x18,0x14,0x13,0x13,0x13,0x13,0x14,0x18}; //左声道符号 uchar code tone[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x0e,0x0d,0x0c,0x0b,0x0a,0x09,0x08}; //bass&treble查表,分别对应低音和高音的衰减 /* 0x88= 10001000 ,由tone[]与0x88求和来计算bass&treble增益 0x00 0000 -14dB 0x01 0001 -12dB 0x02 0010 -10dB 0x03 0011 -8dB 0x04 0100 -6dB 0x05 0101 -4dB 0x06 0110 -2dB 0x07 0111 0dB 1111 0x0f 0x0e 1110 2dB 0x0d 1101 4dB 0x0c 1100 6dB 0x0b 1011 8dB 0x0a 1010 10dB 0x09 1001 12dB 0x08 1000 14dB */ //微秒级延时 void delay() { //uchar a; //for(a=0;a<5;a++) {;;} } //1MS延时 void delay_ms(uint i) { uint x,y; for(x=i;i>0;i--) for(y=1123;y>0;y--); } //开始信号 void start() { sda=1; delay(); scl=1; delay(); sda=0; delay(); } //停止信号 void stop() { sda=0; delay(); scl=1; delay(); sda=1; delay(); } //应答 bit respons() { scl=1; delay(); while(sda==1); scl=0; delay(); return(1); } //向LCD写命令 void write_com(uchar com) { LcmPort=com; rs=0; en=1; delay_ms(1); en=0; delay_ms(1); } //向LCD写数据 void write_data(uchar dat) { LcmPort=dat; rs=1; en=0; delay_ms(1); en=1; delay_ms(1); en=0; } //自定义字符集 void Lcd_ram() { uint i,j,k=0,temp=0x40; for(i=0;i<2;i++) { for(j=0;j<8;j++) { write_com(temp+j); delay_ms(2); write_data(num[k]); k++; } temp=temp+8; } } //初始化 void init() { sda=1; delay(); scl=1; delay(); EX1=1; IT1=1; EA=1; TMOD=0x01; TL0=(65536-1000)%256; TH0=(65536-1000)/256; ET0=1; TR0=0; rw=0; //设置为写状态 write_com(0x38); //设置16*2显示,5*7点阵,8位数据接口 write_com(0x0c); //开显示,不显示光标,光标不闪烁 write_com(0x06); //写一个字符后,地址指针自动加1,不整屏移动 Lcd_ram(); //写特殊字符 write_com(0x01); //清屏,数据指针清0 } //向LCD的某个地址写入1个BYTE数据 void write_1602(uchar com,dat) { write_com(com); write_data(dat); } //从某个开始地址向LCD写入字符串 void display(add,uchar *str) { write_com(add); delay_ms(3); while(*str!='\0') { write_data(*str++); } *str = 0; } //向IIC设备写入1BYTE的数据 void write_i2c(uchar dat) { uchar i,temp; temp=dat; for(i=0;i<8;i++) { temp=temp<<1; scl=0; delay(); sda=CY; delay(); scl=1; delay(); } scl=0; delay(); sda=1; delay(); } //从IIC设备读取数据 uchar read_i2c() { uchar i,k; scl=0; delay(); sda=1; delay(); for(i=0;i<8;i++) { scl=1; delay(); k=(k<<1)|sda; scl=0; delay(); } return k; } //向24c02的某个地址写入1byte数据 /* void write_24c02(uchar address,uchar dat) { start(); write_i2c(AT24c02_ADD); while(!respons()); write_i2c(address); while(!respons()); write_i2c(dat); while(!respons()); stop(); } //从24c02的某个地址读取1byte数据 uchar read_24c02(uchar address) { uchar dat; start(); write_i2c(AT24c02_ADD); while(!respons()); write_i2c(address); while(!respons()); start(); write_i2c(0xa1); while(!respons()); dat=read_i2c(); stop(); return dat; } */ //向SC7313写入1BYTE数据 void write_7313(uchar dat) { start(); write_i2c(SC7313_ADD); while(!respons()); write_i2c(dat); while(!respons()); stop(); } //判断长按&短按,松手&定时检测 void key_press() { static bit f=0; if(!sw) { delay_ms(10); if(!sw) { TR0=1; while(!sw&&!(time>LongPress)); TR0=0; if(time>LongPress) { long_press_count++; if(long_press_count==7)long_press_count=0; switch(long_press_count) { case 0: { write_com(0x01); display(0x83,"VOLUME"); display(0x81+0x40,"Volume Ctr Sys"); write_1602(0x8B,(30-(vol/2))/10+0x30); write_1602(0x8C,(30-(vol/2))%10+0x30); break; } case 1: { write_com(1); write_1602(0x86,'L'); write_1602(0x89,'R'); write_1602(0x85,0x01); write_1602(0x8A,0x00); display(0x81+0x40,"Volume Ctr Sys"); if(left<0) display(0x81,"00"); else {
评论
    相关推荐
    • TDA7313.rar
      这个是一款电子音量控制芯片的控制源码,通过I2C接口进行数据传输,需要的可以下载
    • TDA7313.rar
      HT48c10控制TDA7313N(音效处理芯片)程序 #if 0 //ht48c10控制TDA7313N(音效处理芯片),音源从L3输入,再从OUT LF脚输出 //SDA=PA1--PA7 , SCL=PA0--PA6 ...
    • TDA741x.rar
      音频通道管理芯片TDA741x系列的源代码,多用于多音源系统音频通道管理及信号优化,如车载影音
    • mXrtqrt.rar
      TDA7313 - DIGITAL CONTROLLED STEREO AUDIO PROCESSOR WITH LOUDNESS
    • Proteus TDA7313_TDA7439.rar
      the tonestack on the chip TDA7313_TDA7439.Proteus
    • TDA7412.rar
      aspTDA7313音效处理芯片),音源从L3输入,再从OUT LF脚输出
    • tda7313-bp7.zip
      TDA7313 control from BP7
    • ESP32-Radiola:Radiola-ESP32。 基于 TDA7293 和 TDA7313 音频处理器 + 网络广播(在
      ESP32-Radiola - DIY 音乐中心 ESP32-Radiola项目是跨平台的,即编译和汇编将适用于Linux和Windows兼容的操作系统。 为此,您需要使用此链接从 MicroSoft 为您的操作系统下载并安装VS Code开发环境 ...
    • Uart_Mode1_Vd1.rar
      h i2c.c i2c.h keys.c keys.h tda7313.c tda7313.h TEA5767.C TEA5767.h TEA5767ports.h tic55.c tic55.h tic9153.c tic9153.h
    • libiconv-1.1.tar.gz
      字符集转换程序