单片机教程网

电脑版
提示:原网页已由神马搜索转码, 内容由www.51hei.com提供.
查看:9236|回复:14

PT2315/TDA7315音量音调控制 Arduino库 源程序

 [复制链接]
ID:190270发表于 2017-4-16 22:33|显示全部楼层
一直用ICCAVR,单片机几天不用又要重新查资料,直到遇到Arduino.
一直都索取,今天我也来奉献点力量--PT2315库。
其实很早就想写,但是一直就是懒,每天在网上搜“Arduino控制PT2315”,一直都找不到,哈哈。
PT2315是干什么的?喜欢玩音响的应该不陌生,与PT2313、PT2314功能差不多。
英语不是我的母语,所以能用中文的,我不会用英文,相信大家应该都看得懂。
库里面有两个例子,一个简单,内容:
#include< PT2315.h>
PT2315 pt2315;
void setup() {
   // put your setup code here, to run once:
pt2315.init();//对音量、高音、低音等初始化

}

void loop() {
   // put your main code here, to run repeatedly:
if(音量) pt2315.volume(vVal); //vVal=0~63
if(高音) pt2315.treble(hVal); //hVal=0~7
if(低音) pt2315.bass(lVal);//lVal=0~7
if(等响度) pt2315.loudness(true);//true等响度打开,false关闭
}

另一个则是我现在正在使用中的成品,AT5104红外发射(电风扇摇控)+红外摇控+DS3231时间芯片+PT2315(音效控制)+12V共阳数码管显示时间和音量及温度等.
代码较长,就不贴出来了,大家下载来看吧。

0.png
PT2315_TEST:
是PT2315的简单运用,单独不能运行的。

MySMG:
AT5104+DS3231+红外摇控+PT2315+12V共阳数码管
用于电子音效控制、数码显示音响

下载:
PT2315.rar(4.15 KB, 下载次数: 115)
ID:1发表于 2017-4-16 22:39|显示全部楼层
PT2315.h文件内容:
  1. /*
  2. 通过TWI对PT2315的音量、高音、低音、等响度进行控制
  3. 音量控制范围0~63 例:volume(12);
  4. 高音和低音的控制范围0~7.例:treble(7);//高音  bass(3);//低音
  5. 等响度打开与关闭 例:loudness(1);
  6. */

  7. #ifndef PT2315_h
  8. #define PT2315_h

  9. /*-------------------------------------------------*/
  10. #include "Arduino.h"
  11. #define uchar unsigned char

  12. #define START 0x08
  13. #define RE_START 0x10
  14. #define MT_SLA_ACK 0x18
  15. #define MT_SLA_NOACK 0x20
  16. #define MT_DATA_ACK 0x28
  17. #define MT_DATA_NOACK 0x30
  18. #define MR_SLA_ACK 0x40
  19. #define MR_SLA_NOACK 0x48
  20. #define MR_DATA_ACK 0x50
  21. #define MR_DATA_NOACK 0x58

  22. #define RD_DEVICE_ADDR 0x80

  23. #define Start() TWCR=(1<<TWINT)|(1<<TWSTA)|(1<<TWEN) //发出 START 信号
  24. #define Stop()  TWCR=(1<<TWINT)|(1<<TWEN)|(1<<TWSTO)
  25. #define Wait()  {while(!(TWCR& (1<<TWINT)));}  //等待 TWINT 置位
  26. #define TestAck() (TWSR&0xf8)
  27. #define SetAck()  (TWCR|=(1<<TWEA))
  28. #define SetNoAck() (TWCR&=~(1<<TWEA))
  29. #define Twi()   (TWCR=(1<<TWINT)|(1<<TWEN))
  30. #define Write8Bit(x) {TWDR=(x);TWCR=(1<<TWINT)|(1<<TWEN);}
  31. /*-------------------------------------------------*/

  32. class PT2315
  33. {
  34. public:
  35.   void volume(uchar vVal);//音量
  36.   void loudness(bool YorN);//等响度
  37.   void bass(uchar lVal);//低音
  38.   void treble(uchar hVal);//高音
  39.   void init();//初始化
  40. private:
  41.   uchar PT2315_w(uchar wdata);
  42. };

  43. #endif
复制代码
ID:1发表于 2017-4-16 22:40|显示全部楼层
PT2315.cpp文件内容
  1. /*
  2. 使用说明见PT2315.h
  3. */

  4. #include "PT2315.h"
  5. #include "Arduino.h"
  6. //================================================================================
  7. //================================================================================

  8. uchar PT2315::PT2315_w(uchar wdata)
  9. {
  10.      Start();
  11.      Wait();
  12.      if(TestAck()!=START)
  13.          return 1;

  14.      Write8Bit(RD_DEVICE_ADDR);
  15.      Wait();
  16.      if(TestAck()!=MT_SLA_ACK)
  17.          return 1;

  18.      Write8Bit(wdata);
  19.      Wait();
  20.      if(TestAck()!=MT_DATA_ACK)
  21.          return 1;

  22.      Stop();
  23.      return 0;  
  24. }

  25. void PT2315::volume(uchar vVal)//音量
  26. {
  27.      vVal=63-vVal;
  28.      PT2315_w(vVal);
  29. }

  30. void PT2315::loudness(bool YorN) //等响度
  31. {
  32.      if(YorN) PT2315_w(0x40);
  33.      else PT2315_w(0x44);
  34. }

  35. void PT2315::bass(uchar lVal) //低音
  36. {
  37.      lVal=111-lVal;
  38.      PT2315_w(lVal);
  39. }

  40. void PT2315::treble(uchar hVal) //高音
  41. {
  42.      hVal=127-hVal;
  43.      PT2315_w(hVal);
  44. }

  45. void PT2315::init()//初始化
  46. {
  47.   PT2315_w(0x80);   //左声道音量最大,不控制
  48.   delay(100);
  49.   PT2315_w(0xA0);   //右声道音量最大,不控制
  50.   delay(100);
  51.   PT2315_w(0x3E);   //音量最小
  52.   delay(100);
  53.   PT2315_w(0x7F);   //高音最小
  54.   delay(100);
  55.   PT2315_w(0x6F);   //低音最小
  56.   delay(100);


  57. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
ID:167337发表于 2017-5-2 10:43|显示全部楼层
谢谢楼主分享好资源!正需要这方面的资料,楼主可否分享电路原理图吗?非常感谢。
ID:198286发表于 2017-5-8 19:01|显示全部楼层
没币,先收藏吧
ID:276790发表于 2018-11-14 16:05|显示全部楼层
正在研究这个东西,谢谢分享
ID:276790发表于 2018-11-16 14:50|显示全部楼层
好东西,学习学习
ID:471176发表于 2019-1-21 15:10|显示全部楼层
你好,我按照你发的pt2315代码,调试过程中发现没声音,代码有可能是什么原因,我用的是arduino uno的板子,方便的话给个微信或qq,谢谢
ID:483019发表于 2019-3-1 23:13|显示全部楼层
虽然不太了解,似乎有用
ID:272625发表于 2019-3-18 03:02|显示全部楼层
下载看看,手上有十几个芯片都没用。
ID:619207发表于 2019-10-9 10:08来自手机|显示全部楼层
您好!我下载资料
ID:867469发表于 2020-12-24 23:43|显示全部楼层
标记一下,后续学习
ID:48994发表于 2021-7-6 13:43|显示全部楼层
看到这里,收藏一下,以后用到再看!
ID:902060发表于 2021-8-2 00:01|显示全部楼层
你们是怎么安装PT2315.h这个库的?我一直没安装成功。
#include< PT2315.h>  //PT2315这字一直没变成红色
ID:721371发表于 2023-4-26 20:00来自手机|显示全部楼层
经过测试PT2315地址0x88

手机版|小黑屋|51黑电子论坛|51黑电子论坛6群QQ管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网