找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4740|回复: 1
收起左侧

基于51单片机和DAC0832转换的数控音频功率放大器设计

[复制链接]
ID:444661 发表于 2018-12-12 11:20 | 显示全部楼层 |阅读模式
程控音频功率放大器
一.设计要求
(1)输入信号为30mv 峰峰值的正弦波,频率范围 20HZ~20KHZ,输入阻抗
Ri ≥ 20KΩ,前级程控放大器增益通过单片机键盘输入控制,增益可预置为
10db,20db,30db,40db。
(2)后级功率放大器输出功率≥ 3W(8Ω负载)。
(3)液晶显示。
0.jpg
三.方案对比选择
(1)选用继电器控制前级放大
0.png
用继电器控制电阻的选择进而控制放大倍数。
(2)模拟开关控制前级放大
0.jpg
用模拟开光的断和同来控制放大倍数。
(3)用 DAC0832 控制前级放大
0.png
前级放大 100 倍后用单片机控制 DAC0832 进行衰减。
经对比选择用 DAC0832 控制前级放大比较简单,而且较精确。
四.电路图设计
0.png

五.主要元件选择及参数设计
(1) 运放 LF353
0.png
前级放大分别放大 10 倍,总共放大 100 倍。LF353的工作电压是 +15v,各引脚的接法见上图。将 7 号输出脚的信号作为 DAC0832 的输入。
(2)功率放大器 TDA2030
0.png
TDA2030    的工作电压是 +15v。它将输入的电流进行放大,然后驱动喇叭响。 具体接法见上图。利用    TDA2030进行功率放大。 TDA2030具有体积小,输出功率 大,失真小等特点。功率放大器内含多种保护电路,工作安全可靠性高,主要保 护电路有:短路保护,热保护,地线偶然开路,电源极性反接,以及负载泄放电 压反冲等。其中,热保护电路能够容易承受输出的过载,甚至是长时间的,或者 环境温度超过时均起到保护作用。    与普通电路相比较, 散热片可以有更小的安全 系数。结温超过时,也不会对器件有所损害。
(3) 单片机 STC89S52

STC89S52 是比较常用的    52 系列单片机。它的工作电压是    +5v。外围电路加上12M的晶振,使其正常工作。    P2 口控制    DAC083。2增益的大小。

通过对P2 口赋值来改变输出
(4)1602液晶
(5)DAC0832
0.png
六.软件编程
按照电路图的设计焊接好硬件电路。    就开始软件编程。 程序主要分为两个部
分,即液晶显示部分和控制    DAC0832的部分。由于本设计采用的是用按键分别控
制。可以在主函数中调用一个键盘扫描的函数,    当相应的不同按键按下后控制液 晶显示和单片机    P2 的输出,从而控制    DAC0832的输出增益。源程序见附录。


七.调试部分
本次实验的调试部分花了大量的时间。  当程序写好编译通过后, 下载到单片 机中,调试硬件看有无显示和输出。  调试主要分为  3 个部分。 分别是液晶显示部 分,前级放大部分,功放输出部分。首先是液晶部分,经过几次程序的修改,和
对液晶部分电路的检测终于将液晶部分调出有显示。    然后检查前级放大部分。    在 输入端输入峰峰值为    50mv的正弦波。用示波器检查运放的输出。最后一遍联合 按键控制用示波器观察    DAC0832输出部分的波形。结果显示良好。


八.实验心得体会与总结
经过这次试验, 我还是有一些收获的。    首先感觉到我们所学知识的肤浅,    既 没学活也没学深。 以后要想做好电信专业的工作,    我们还有很长的路要走。    我也 认识到模拟电路是一门很值得研究而且可以大有作为的学科,        要想成功做出一个 模拟电路出来需要付出许多汗水,    并不是能够将电路设计出来就算成功,    由于模 拟电路本身的特点, 理论值和实际情况往往有着很大的区别,     当我们设计出一个
合理的电路并把它焊接出来后,    心中小有成就感, 然而在调试的过程中却遭受了 失败的一次次打击, 我们甚至出现了上午把电路板调试好,    下午输出信号完全混

乱的情况, 幸运的是我们任然坚持到最后并且品尝到了成功的喜悦。    可以说完成理论设计只是完成了整个课题的很小一部分,    调试过程占了很大的比重,    在这个
过程中通过与同学交流我们学到了很多,    比如说电源要接去耦电容、    液晶背光灯 调节电阻的几种解法, 单片机程序中几个函数的用法,    电路虚焊的检验方法等等。
通过这次实验, 进一步验证了我的编程能力,  使我看到了自己有许多需要提 高和改进的地方, 也增强了我学习本专业的兴趣和信心,   可以说以后不管是读研 还是找工作,我要想成为一名合格的电子工程师还有很长的路要走。
0.png
附录二 实验源程序

  1. #include<reg51.h>

  2. #include <intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. sbit E=P1^2; sbit RS=P1^0; sbit RW=P1^1; sbit key1=P1^3; sbit key2=P1^4; sbit key3=P1^5; sbit key4=P1^6; sbit key5=P1^7;

  6. void lcd_init();
  7. void write_comm(uchar);

  8. void write_data(uchar);
  9. void write_string(uchar,uchar,uchar *);
  10. void lcd_delay();
  11. void delay_ms(uint);


  12. void delay_ms(uint i)        //        延时 i        毫秒
  13. {

  14. uint j;
  15. while(i--)
  16. {

  17. for(j=0;j<=74;j++)
  18. {
  19. _nop_();
  20. }
  21. }
  22. }





  23. void lcd_init()
  24. {

  25. lcd_delay();
  26. write_comm(0x38);        // 显示模式控制:设置        16*2 显示, 5*7 点阵, 8
  27. 位数据口

  28. write_comm(0x08);        //        关显示
  29. write_comm(0x01);        //        清屏

  30. write_comm(0x06);        // 输入模式控制:光标右移,整屏不移动
  31. write_comm(0x0c);        // 开显示,显示光标,光标闪烁
  32. //0x0e ,开显示,显示下光标,光标不闪烁
  33. write_comm(0x80);
  34. write_comm(0x02);        // 数据指针清零
  35. }



  36. void write_comm(uchar i)
  37. {

  38. RS=0; RW=0; P0=i;
  39. lcd_delay(); E=0; lcd_delay(); E=1;
  40. }



  41. void write_data(uchar i)

  42. {
  43. RS=1; RW=0; P0=i;
  44. lcd_delay(); E=0; lcd_delay(); E=1;
  45. }



  46. void write_string(uchar row,uchar column,uchar *dis_buffer)
  47. {
  48. switch(row)        //        这种结构保 持以后升级到多行显示液晶
  49. {






  50. 地址指针



  51. }

  52. case 1:write_comm(0x80+column);break;
  53. case 2:write_comm(0x80+0x40+column);break;//        重新调整数据



  54. default:break;

  55. while(*dis_buffer!='\0') // '\0'        结束符
  56. {
  57. write_data(*dis_buffer);
  58. dis_buffer++;
  59. column++;

  60. if(column==16)
  61. {

  62. column=0; row++; if(row>=3)
  63. return; else switch(row)
  64. //        这种结构保持以后升级到多行显示液晶
  65. {
  66. case 1:write_comm(0x80);break;
  67. case 2:write_comm(0x80+0x40);break;
  68. //        重新调整数据地址指针
  69. default:break;
  70. }
  71. }

  72. }
  73. }



  74. void lcd_delay()
  75. {
  76. uchar i;
  77. for(i=0;i<255;i++);
  78. }



  79. void main()

  80. {
  81. lcd_init();
  82. //cntl1=1;cntl3=1; cntl2=0;cntl4=0;cntl5=1;cntl6=0;

  83. write_string(1,0,"Gain:");
  84. while(1)
  85. {
  86. if(key1==0)
  87. {
  88. delay_ms(15);
  89. if(key1==0)

  90. {
  91. while(!key1); P2=0x02;
  92. write_string(2,0,"0dB");
  93. }
  94. }



  95. if(key2==0)

  96. {
  97. delay_ms(15);

  98. if(key2==0)
  99. {
  100. while(!key2); P2=0x08;
  101. write_string(2,0,"10dB");
  102. }
  103. }



  104. if(key3==0)
  105. {

  106. delay_ms(15);
  107. if(key3==0)
  108. {
  109. while(!key3); P2=0x1A;
  110. write_string(2,0,"20dB");
  111. }

  112. }



  113. if(key4==0)
  114. {
  115. delay_ms(15);
  116. if(key4==0)
  117. {

  118. while(!key4); P2=0x51;
  119. write_string(2,0,"30dB");

  120. }
  121. }
  122. if(key5==0)
  123. {
  124. delay_ms(15);
  125. if(key5==0)
  126. {

  127. while(!key5); P2=0xff;
  128. write_string(2,0,"40dB");

  129. }
  130. }
  131. }
  132. }
复制代码

完整的pdf格式文档51黑下载地址:
基于51单片机和DA转换的数控音频功率放大器设计.pdf (253.11 KB, 下载次数: 67)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:700702 发表于 2020-3-1 16:34 | 显示全部楼层
你好,请问有兴趣把“基于51单片机和DAC0832转换的数控音频功率放大器设计 ”的项目的相关电路图等等发给我么,有偿。我最近相类似的任务,需要才考和帮助。非常感谢.
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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