基于st89c51单片机和DA的数控音频功率放大器设计.docx

上传人:b****4 文档编号:3972009 上传时间:2023-05-06 格式:DOCX 页数:14 大小:116.35KB
下载 相关 举报
基于st89c51单片机和DA的数控音频功率放大器设计.docx_第1页
第1页 / 共14页
基于st89c51单片机和DA的数控音频功率放大器设计.docx_第2页
第2页 / 共14页
基于st89c51单片机和DA的数控音频功率放大器设计.docx_第3页
第3页 / 共14页
基于st89c51单片机和DA的数控音频功率放大器设计.docx_第4页
第4页 / 共14页
基于st89c51单片机和DA的数控音频功率放大器设计.docx_第5页
第5页 / 共14页
基于st89c51单片机和DA的数控音频功率放大器设计.docx_第6页
第6页 / 共14页
基于st89c51单片机和DA的数控音频功率放大器设计.docx_第7页
第7页 / 共14页
基于st89c51单片机和DA的数控音频功率放大器设计.docx_第8页
第8页 / 共14页
基于st89c51单片机和DA的数控音频功率放大器设计.docx_第9页
第9页 / 共14页
基于st89c51单片机和DA的数控音频功率放大器设计.docx_第10页
第10页 / 共14页
基于st89c51单片机和DA的数控音频功率放大器设计.docx_第11页
第11页 / 共14页
基于st89c51单片机和DA的数控音频功率放大器设计.docx_第12页
第12页 / 共14页
基于st89c51单片机和DA的数控音频功率放大器设计.docx_第13页
第13页 / 共14页
基于st89c51单片机和DA的数控音频功率放大器设计.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于st89c51单片机和DA的数控音频功率放大器设计.docx

《基于st89c51单片机和DA的数控音频功率放大器设计.docx》由会员分享,可在线阅读,更多相关《基于st89c51单片机和DA的数控音频功率放大器设计.docx(14页珍藏版)》请在冰点文库上搜索。

基于st89c51单片机和DA的数控音频功率放大器设计.docx

基于st89c51单片机和DA的数控音频功率放大器设计

 

数控音频功率放大器

 

一.设计要求

(1)输入信号为30mv峰峰值的正弦波,频率范围20HZ~20KHZ,输入阻抗Ri≥20KΩ,前级程控放大器增益通过单片机键盘输入控制,增益可预置为10db,20db,30db,40db。

(2)后级功率放大器输出功率≥3W(8Ω负载)。

(3)液晶显示。

二.原理框图

三.方案对比选择

用DAC0832控制前级放大

前级放大100倍后用单片机控制DAC0832进行衰减。

经对比选择用DAC0832控制前级放大比较简单,而且较精确。

四.电路图设计

 

五.主要元件选择及参数设计

 

(1)运放LF353

前级放大分别放大10倍,总共放大100倍。

LF353的工作电压是+15v,各引脚的接法见上图。

将7号输出脚的信号作为DAC0832的输入。

(2)功率放大器TDA2030

TDA2030的工作电压是+15v。

它将输入的电流进行放大,然后驱动喇叭响。

具体接法见上图。

利用TDA2030进行功率放大。

TDA2030具有体积小,输出功率大,失真小等特点。

功率放大器内含多种保护电路,工作安全可靠性高,主要保护电路有:

短路保护,热保护,地线偶然开路,电源极性反接,以及负载泄放电压反冲等。

其中,热保护电路能够容易承受输出的过载,甚至是长时间的,或者环境温度超过时均起到保护作用。

与普通电路相比较,散热片可以有更小的安全系数。

结温超过时,也不会对器件有所损害。

(3)单片机STC89S52

STC89S52是比较常用的52系列单片机。

它的工作电压是+5v。

外围电路加上12M的晶振,使其正常工作。

P2口控制DAC0832。

通过对P2口赋值来改变输出增益的大小。

(4)1602液晶

1602显示容量为16乘2个字符。

工作电压为+5v。

编号

符号

引脚说明

编号

符号

引脚说明

1

VSS

电源地

9

D2

DateI/O

2

VDD

电源正极

10

D3

DateI/O

3

VL

液晶显示偏压信号

11

D4

DateI/O

4

RS

数据/命令选择端

12

D5

DateI/O

5

R/W

读写选择端

13

D6

DateI/O

6

E

使能端

14

D7

DateI/O

7

D0

DateI/O

15

BLA

背光源正极

8

D1

DateI/O

16

BLK

背光源负极

(5)DAC0832

DI0~DI7:

数据输入线,TLL电平。

ILE:

数据锁存允许控制信号输入线,高电平有效。

CS:

片选信号输入线,低电平有效。

WR1:

为输入寄存器的写选通信号。

XFER:

数据传送控制信号输入线,低电平有效。

WR2:

为DAC寄存器写选通输入线。

Iout1:

电流输出线。

当输入全为1时Iout1最大。

Iout2:

电流输出线。

其值与Iout1之和为一常数。

Rfb:

反馈信号输入线,芯片内部有反馈电阻.Vcc:

电源输入线(+5v~+15v)Vref:

基准电压输线 (-10v~+10v)AGND:

模拟地,摸拟信号和基准电源的参考地DGND:

数字地,两种地线在基准电源处共地比较好.

六.软件编程

按照电路图的设计焊接好硬件电路。

就开始软件编程。

程序主要分为两个部分,即液晶显示部分和控制DAC0832的部分。

由于本设计采用的是用按键分别控制。

可以在主函数中调用一个键盘扫描的函数,当相应的不同按键按下后控制液晶显示和单片机P2的输出,从而控制DAC0832的输出增益。

源程序见附录。

七.调试部分

本次实验的调试部分花了大量的时间。

当程序写好编译通过后,下载到单片机中,调试硬件看有无显示和输出。

调试主要分为3个部分。

分别是液晶显示部分,前级放大部分,功放输出部分。

首先是液晶部分,经过几次程序的修改,和对液晶部分电路的检测终于将液晶部分调出有显示。

然后检查前级放大部分。

在输入端输入峰峰值为50mv的正弦波。

用示波器检查运放的输出。

最后一遍联合按键控制用示波器观察DAC0832输出部分的波形。

结果显示良好。

八.实验心得体会与总结

经过这次试验,我还是有一些收获的。

首先感觉到我们所学知识的肤浅,既没学活也没学深。

以后要想做好电信专业的工作,我们还有很长的路要走。

我也认识到模拟电路是一门很值得研究而且可以大有作为的学科,要想成功做出一个模拟电路出来需要付出许多汗水,并不是能够将电路设计出来就算成功,由于模拟电路本身的特点,理论值和实际情况往往有着很大的区别,当我们设计出一个合理的电路并把它焊接出来后,心中小有成就感,然而在调试的过程中却遭受了失败的一次次打击,我们甚至出现了上午把电路板调试好,下午输出信号完全混乱的情况,幸运的是我们任然坚持到最后并且品尝到了成功的喜悦。

可以说完成理论设计只是完成了整个课题的很小一部分,调试过程占了很大的比重,在这个过程中通过与同学交流我们学到了很多,比如说电源要接去耦电容、液晶背光灯调节电阻的几种解法,单片机程序中几个函数的用法,电路虚焊的检验方法等等。

通过这次实验,进一步验证了我的编程能力,使我看到了自己有许多需要提高和改进的地方,也增强了我学习本专业的兴趣和信心,可以说以后不管是读研还是找工作,我要想成为一名合格的电子工程师还有很长的路要走。

 

附录一实验电路图

 

附录二实验源程序

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

sbitE=P1^2;

sbitRS=P1^0;

sbitRW=P1^1;

sbitkey1=P1^3;

sbitkey2=P1^4;

sbitkey3=P1^5;

sbitkey4=P1^6;

sbitkey5=P1^7;

voidlcd_init();

voidwrite_comm(uchar);

voidwrite_data(uchar);

voidwrite_string(uchar,uchar,uchar*);

voidlcd_delay();

voiddelay_ms(uint);

voiddelay_ms(uinti)//延时i毫秒

{

uintj;

while(i--)

{

for(j=0;j<=74;j++)

{

_nop_();

}

}

}

 

voidlcd_init()

{

lcd_delay();

write_comm(0x38);//显示模式控制:

设置16*2显示,5*7点阵,8位数据口

write_comm(0x08);//关显示

write_comm(0x01);//清屏

write_comm(0x06);//输入模式控制:

光标右移,整屏不移动

write_comm(0x0c);//开显示,显示光标,光标闪烁

//0x0e,开显示,显示下光标,光标不闪烁

write_comm(0x80);

write_comm(0x02);//数据指针清零

}

voidwrite_comm(uchari)

{

RS=0;

RW=0;

P0=i;

lcd_delay();

E=0;

lcd_delay();

E=1;

}

voidwrite_data(uchari)

{

RS=1;

RW=0;

P0=i;

lcd_delay();

E=0;

lcd_delay();

E=1;

}

voidwrite_string(ucharrow,ucharcolumn,uchar*dis_buffer)

{

switch(row)//这种结构保持以后升级到多行显示液晶

{

case1:

write_comm(0x80+column);break;

case2:

write_comm(0x80+0x40+column);break;//重新调整数据地址指针

default:

break;

}

while(*dis_buffer!

='\0')//'\0'结束符

{

write_data(*dis_buffer);

dis_buffer++;

column++;

if(column==16)

{

column=0;

row++;

if(row>=3)

return;

else

switch(row)//这种结构保持以后升级到多行显示液晶

{

case1:

write_comm(0x80);break;

case2:

write_comm(0x80+0x40);break;//重新调整数据地址指针

default:

break;

}

}

}

}

voidlcd_delay()

{

uchari;

for(i=0;i<255;i++);

}

voidmain()

{

lcd_init();

//cntl1=1;cntl3=1;cntl2=0;cntl4=0;cntl5=1;cntl6=0;

write_string(1,0,"Gain:

");

while

(1)

{

if(key1==0)

{

delay_ms(15);

if(key1==0)

{

while(!

key1);

P2=0x02;

write_string(2,0,"0dB");

}

}

if(key2==0)

{

delay_ms(15);

if(key2==0)

{

while(!

key2);

P2=0x08;

write_string(2,0,"10dB");

}

}

if(key3==0)

{

delay_ms(15);

if(key3==0)

{

while(!

key3);

P2=0x1A;

write_string(2,0,"20dB");

}

}

if(key4==0)

{

delay_ms(15);

if(key4==0)

{

while(!

key4);

P2=0x51;

write_string(2,0,"30dB");

}

}

if(key5==0)

{

delay_ms(15);

if(key5==0)

{

while(!

key5);

P2=0xff;

write_string(2,0,"40dB");

}

}

}

}

.

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2