单片机教程网

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

单片机+M26429+PAM8403+MH-M18无线蓝牙音频功放设计 原理图PCB源程序

 [复制链接]
ID:702304发表于 2020-6-10 10:14|显示全部楼层
基于STC89C52的无线蓝牙音频功放
       基于STC89C52的无线蓝牙音频功放,实现的具体功能如下:
           1,无线蓝牙连接,手机可控制歌曲音频选择。
           2,音频声音的大小可控制一排LED的亮灭数量起伏。
           3,按键可控制手机音频的声音大小调节,歌曲的切换。
           4,蓝牙一键开机功能,掉电保护。

Altium Designer画的单片机+M26429+PAM8403+MH-M18原理图和PCB图如下:(51hei附件中可下载工程文件)
51hei.png

51hei.png
51hei.png

单片机源程序如下:
  1. #include "reg52.h"
  2. #include "adc0832.h"
  3. #include "M62429.h"
  4. #include "intrins.h"
  5. #include "key.h"
  6. #include "I2C.h"

  7. uchar Smg[]={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};
  8. uchar led[]={0xff,0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00};

  9. uchar v_led;//LED灯显示个数
  10. uint add=0;//中断溢出

  11. uchar voice_num;//音高
  12. uint led_num=0,led_num1=0;//led显示个数

  13. void key(void);//按键处理函数
  14. void smg_show(uint date);//数码管显示
  15. void led_show(uint led_num);//LED灯显示
  16. void pinit();//初始化函数
  17. void ad(void);//ad采集



  18. /*
  19.        主函数
  20. */
  21. void main()
  22. {
  23.        pinit();
  24.        while(1)
  25.        {
  26.            ad();
  27.            VolSet(33+voice_num*6);//数字电位器,值越大,音量越高
  28. //           smg_show(voice_num);
  29.            led_show(led_num);
  30.            key();
  31.        }
  32. }

  33. /*
  34.        函数名:按键处理
  35.        功能:       按键处理
  36.        输入:       按键扫描返回值
  37.        输出:       无
  38. */
  39. void key()
  40. {
  41.        uchar key_value;
  42.        key_value=key_scan(0);//调用按键扫描
  43.       
  44.        if(key_value==KEY_UP)
  45.        {
  46.            if(voice_num==9)
  47.                  voice_num=9;
  48.            else
  49.                  voice_num++;
  50.        }
  51.        else if(key_value==KEY_DOWN)
  52.        {
  53.            if(voice_num==0)
  54.                  voice_num=0;
  55.            else
  56.                  voice_num--;
  57.        }
  58.        if(!key_value)
  59.            write_eeprom(1,voice_num);
  60. }

  61. /*
  62.        函数名:数码管显示
  63.        功能:       显示音量
  64.        输入:       音量
  65.        输出:       无
  66. */
  67. void smg_show(uint date)
  68. {
  69.        P1=0xfd;
  70.        P0=0xc1;
  71.        delay(500);
  72.        P1=0xfe;
  73.        P0=Smg[date];
  74. }  

  75. /*
  76.        函数名:led显示
  77.        功能:       显示LED灯
  78.        输入:       音量
  79.        输出:       无
  80. */
  81. void led_show(uint led_num)
  82. {
  83.        P2=led[led_num];
  84. }

  85. /*
  86.        函数名:初始化函数
  87.        功能:       定时器初始化
  88.        输入:      
  89.        输出:
  90. */
  91. void pinit()
  92. {
  93.        TMOD=0X01;
  94.        TH0=(65536-10000)/256;
  95.        TL0=(65536-10000)%256;
  96.        TR0=ET0=EA=1;
  97.        voice_num=read_eeprom(1);
  98. }

  99. void timer0() interrupt 1//定时器0中断
  100. {
  101.        TH0=(65536-10000)/256;
  102.        TL0=(65536-10000)%256;
  103.        add++;
  104.        if(add==1000)
  105.            add=0;
  106.        if(add%2)
  107.        {
  108.            P1=0xfd;
  109.            P0=0xc1;
  110.        }
  111.        else if(add%2==0)
  112.        {
  113.            P1=0xfe;
  114.            P0=Smg[voice_num];
  115.        }
  116. }

  117. void ad()
  118. {
  119.        v_led=a_d();
  120.        led_num1=v_led/25;
  121.        if(led_num<=led_num1)
  122.            led_num=led_num1;
  123.        if(add%6==0)
  124.        {
  125.            if(led_num)
  126.            led_num--;
  127.        }
  128. }
复制代码

所有资料51hei提供下载:
无线蓝牙音频功放PCB.7z(759.55 KB, 下载次数: 423)
蓝牙功放各类驱动(cgf).zip(3.89 KB, 下载次数: 230)
数字功放代码.rar(54.07 KB, 下载次数: 243)

评分

黑币 +50
收起理由
+ 50
共享资料的黑币奖励!

查看全部评分

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

Powered by 单片机教程网