找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 8280|回复: 14
打印 上一主题 下一主题
收起左侧

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

  [复制链接]
跳转到指定楼层
楼主
一直用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共阳数码管显示时间和音量及温度等.
代码较长,就不贴出来了,大家下载来看吧。


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

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

下载:
PT2315.rar (4.15 KB, 下载次数: 112)
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏6 分享淘帖 顶 踩
回复

使用道具 举报

沙发
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 | 只看该作者
谢谢楼主分享好资源!正需要这方面的资料,楼主可否分享电路原理图吗?非常感谢。
回复

使用道具 举报

5#
ID:198286 发表于 2017-5-8 19:01 | 只看该作者
没币,先收藏吧
回复

使用道具 举报

6#
ID:276790 发表于 2018-11-14 16:05 | 只看该作者
正在研究这个东西,谢谢分享
回复

使用道具 举报

7#
ID:276790 发表于 2018-11-16 14:50 | 只看该作者
好东西,学习学习
回复

使用道具 举报

8#
ID:471176 发表于 2019-1-21 15:10 | 只看该作者
你好,我按照你发的pt2315代码,调试过程中发现没声音,代码有可能是什么原因,我用的是arduino uno的板子,方便的话给个微信或qq,谢谢
回复

使用道具 举报

9#
ID:483019 发表于 2019-3-1 23:13 | 只看该作者
虽然不太了解,似乎有用
回复

使用道具 举报

10#
ID:272625 发表于 2019-3-18 03:02 | 只看该作者
下载看看,手上有十几个芯片都没用。
回复

使用道具 举报

11#
ID:619207 发表于 2019-10-9 10:08 来自手机 | 只看该作者
您好!我下载资料
回复

使用道具 举报

12#
ID:867469 发表于 2020-12-24 23:43 | 只看该作者
标记一下,后续学习
回复

使用道具 举报

13#
ID:48994 发表于 2021-7-6 13:43 | 只看该作者
看到这里,收藏一下,以后用到再看!
回复

使用道具 举报

14#
ID:902060 发表于 2021-8-2 00:01 | 只看该作者
你们是怎么安装PT2315.h这个库的?我一直没安装成功。
#include <PT2315.h>  //PT2315这字一直没变成红色
回复

使用道具 举报

15#
ID:721371 发表于 2023-4-26 20:00 来自手机 | 只看该作者
经过测试PT2315地址0x88
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

Powered by 单片机教程网

快速回复 返回顶部 返回列表