程控OCL音频功率放大器.docx
《程控OCL音频功率放大器.docx》由会员分享,可在线阅读,更多相关《程控OCL音频功率放大器.docx(21页珍藏版)》请在冰豆网上搜索。
程控OCL音频功率放大器
学号:
0120909320401
课程设计
题目
程控音频OCL功率放大器
学院
信息工程学院
专业
通信工程
班级
通信0904
姓名
贺炎
指导教师
撒继铭
2012
年
01
月
10
日
课程设计任务书
学生姓名:
贺炎专业班级:
通信工程0904
指导教师:
撒继铭工作单位:
信息工程学院
题目:
程控音频OCL功率放大器
初始条件:
LM324通用四运算放大器功率放大器TDA2030扬声器音频输入若干电容电阻及二极管
要求完成的主要任务:
(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
设计一个功率可程控、有输出功率显示的OCL音频功率放大器电路。
后级OCL功率放大部分用分立元件制作,供电电源为±15V,输入信号电压幅度为(10~1000)mVrms,负载为为8欧电阻.
技术指标如下:
a.失真度≤3%时,输出功率P0≥7.5W;
b.频率响应为(20~22000)Hz;
c.在信号源的幅度和频率固定为某一值时,可以设置输出功率,并实时测量、显示输出功率,显示的输出功率(Ps)与设定功率(Pg)的相对误差
时间安排:
(1)第18周理论讲解。
(2)第19周理论设计、实验设计及安装调试。
地点:
鉴主13楼通信工程综合实验室、鉴主15楼通信工程实验室
(1)
指导教师签名:
年月日
系主任(或责任教师)签名:
年月日
目录
摘要4
Abstract4
1.设计任务及要求4
2.设计方案4
2.1.电路基本功能概述4
3硬件设计4
3.1按键控制电路4
3.2LED显示电路4
4软件设计4
4.1模块设计4
4.2软件流程图如下:
4
5.总结:
4
6.参考文献:
4
7.附录:
4
附1:
元器件明细表4
附2:
仪器设备清单4
附3:
电路图图纸4
附4程序清单4
摘要
采用X9241系列数字电位器,辅以AT89S52单片机进行控制,增益的调整和控制是通过选择数字电位器中不同阻值的电位器以及软件的进一步修正来达到的,较好地实现了数控音频功率放大器,可应用于数据采集系统的信号调理或要求放大器增益可程控等场合。
关键词:
单片机;放大器;数字电位器;可控增益放大器
Abstract
Intheexperiment,usingX9241digitalpotentiometerandAT89S52singlechip.Inordertomodulateandcontrolamplifier′sgain,selectingpotentiometerwhichhasdifferentresistancevaluesandusingsoftwaretomodify.ThismethodcancarryoutNumericalcontrolaudiopoweramplifier,whichcanbeappliedinsignalregulationofdata2collectingsystemandsomesituationwhichamplifier′sgainiscontrolled.
Keywords:
AmplifierDigitalpotentiometer;
Gain2controllableamplifier;
Singlechipcomputer
1.设计任务及要求
设计一个功率可程控、有输出功率显示的OCL音频功率放大器电路。
后级OCL功率放大部分用分立元件制作,供电电源为±15V,输入信号电压幅度为(10~1000)mVrms,负载为为8欧电阻.
技术指标如下:
a.失真度≤3%时,输出功率P0≥7.5W;
b.频率响应为(20~22000)Hz;
c.在信号源的幅度和频率固定为某一值时,可以设置输出功率,并实时测量、显示输出功率,显示的输出功率(Ps)与设定功率(Pg)的相对误差
2.设计方案
2.1.电路基本功能概述
基于数字电位器的数控音频功率放大器,采用X9241数字电位器,用AT89S52单片机进行控制,音量和音调的调节是通过选择数字电位器中不同阻值的电位器以及软件的进一步修正来达到的,较好地实现了可控增益放大器。
其最大特色就在于,实现了用数字的方法控制模拟电路,即音量和音调的控制。
电路基本结构如下:
图1电路框图
利用数字电位器能较容易实现对放大器增益的控制,且具有电路简单、控制方便、成本低廉等优点。
通过采取措施也可实现对放大器增益较高精度的控制,增益的调整是通过选择数字电位器中不同阻值的电位器以及软件的进一步修正来达到的,可控增益放大器可应用于采集系统中的信号调理或要求放大器增益能程控的场合。
基于数字电位器的数控音频功率放大器的硬件设计,首先采用分块设计的方法。
将整个系统分为:
显示电路模块、按键控制模块、单片机与数字电位器的接口电路、音量和音调调节模块及音频功率放大器模块。
其中单片机为主控制器,用来对按键进行定时扫描、利用数码管进行音量和音调的动态显示、通过与数字电位器的接口电路,对X9241数字电位器进行实时控制,实现音量音调的控制。
与此同时,单片机读取数字电位器当前的抽头值,将值送入显示电路进行显示。
主控制电路如下图所示:
图2主控制电路
图3OCL功率放大模块
图4.电压输出
图5.示波器输出
由
可知输出功率p=
=10.5w满足输出功率P0≥7.5W,符合要求
3硬件设计
3.1按键控制电路
按键控制电路有单片机(AT89S52)和3个分别控制音增益大小的按钮构成,按键控制接单片机P1.0~P1.2。
再按键被按下之前,单片机各个引脚处于高电平,当有按键按下时,相对应的引脚变为低电平,当检测到有引脚变为低电平时,执行相应的操作。
电路原理图如图6所示
图6.按键控制电路
按键检测中,采用定时中断的方法。
即当计数值到一定大时,开始读取P3口,并将计数器清零,根据读到的键盘值,执行相应的操作。
另外有一种情况,按键抖动问题:
当操作者手动按键时,由于按键会产生数次抖动,而在较短的时间内,检测程序会检测到多次按下操作,而执行多次相应程序。
这与实际情况并不相符,因为对于操作者来说,只是按了一次按键,而检测程序执行了多次。
因此在软件设计中加入消除按键抖动程序。
具体实现方法如下:
按键被按下时,设置一个时间片(如20ms),在这段时间内进行按键状态判断,如果在时间片结束时,按键状态没有发生变化,仍然为低电平,则表明按键确实被按下,之后再执行相应的操作,这样就可以消除按键抖动对按键检测的造成的影响。
3.2LCD显示电路
LCD显示电路由单片机(AT89S52)、液晶LCD,阻及三级放大管构成。
其中液晶的数据端接至单片机P0.0~P0.7口,液晶选择线接单片机P2.5~2.7,显示数据由P0口输出至数码管,显示相应的内容。
液晶显示内容由单片机从数字电位器获得。
其显示电路原理图如下:
图7显示电路
显示时,单片机通过按键程序读取按键值,并判断是那个控制键被按下,再相应操作。
同时单片机将发送数据到数字电位器,数字电位器再根据传送的数据执行抽头的上调或下调动作,达到音量调节的目的。
单片机可读取数字电位器当前的抽头值,将其编码后送至P0口,数码管获得数据后,显示出相应的值,完成一次显示任务。
数码管设计为动态显示,平均每隔20ms更新一次,从而实现了音量、音调的实时显示功能。
相应的软件实现方法见附录中的按键检测程序。
4软件设计
4.1模块设计
数控音频功率放大器的软件设计,分三个模块,即按键控制程序、数码显示程序和数字电位器控制程序。
其中按键控制程序中由定时程序产生中断,定时读取键盘。
另外,为消除按键抖动对整个模块的影响,辅以消除按键抖动的子程序。
而显示程则根据按键值和获得的数字电位器抽头数据,承担音量、音调的动态显示。
数字电位器控制程序中,单片机可通过数字电位器地址线,发送地址编码,选取其中的某个电位器,再通过SDA串口传送控制指令,使选中的电位器抽头上调或下调,达到音量或音调控制的目的。
4.2软件流程图如下:
5.总结:
利用数字电位器容易实现的数控音频功率放大器,且具有电路简单、控制方便、成本低廉等优点。
本设计的主要部分是单片机对X9241数字电位器的实时控制,控制方式是单片机通过I2C串行总线,根据按键值发送相应的控制命令,值此基础上辅以显示电路,通过数码管显示当前调节内容和相对值。
此电路的最大优点是:
通过数字电路(主控电路),完成了对模拟电路(音量、音调调节电路)的控制,按键抖动、数码动态显示通过软件方式实现,控制灵活,具有较高的控制效率。
而且在实际运用中,它广泛运用于日常生活中的MP3、DVD等数码产品。
通过此次设计,使我对电子设计有全新的认识,在不断的学习和运用当中,我学会了从“整体到局部,再从局部到整体”的设计思想,逐步细化的程序设计方法。
与此同时,极大地提高了我的动手能力,为以后的进一步学习和工作奠定了坚实的基础。
6.参考文献:
《信号与系统》,沈元隆.周井全编,北京:
人民邮电出版社,2007年;
《C程序设计》,谭浩强著,北京:
清华大学,2005年;
《电子技术基础-模拟部分》,康华光编,北京:
高等教育出版社,2006年;
《电子技术基础-数字部分》,康华光编,北京:
高等教育出版社,2006年;
《单片机原理及应用》,李建忠著,西安:
西安电子科技大学,2002年;
《晶体管电路设计》,铃木雅臣著,北京:
科学出版社,2006年;
《ATmega16.pdf》,PDF文档;
7.附录:
附1:
元器件明细表
1、LCD12864
2、89S51/52
3、ATMEGA16
4、AD603
5、AD637
6、OPA2132
7、OPA627
8、MC1403
9、MAX531
10、AD9851
11、MAX187
附2:
仪器设备清单
1、信号发生器
2、五位半数字万用表
3、失真度测量仪
4、数字示波器
5、稳压电源
附3:
电路图图纸
Ocl功率放大部分
单片机与LCD模块
附4程序清单
AVR单片机部分:
#include
#include
#include
#include"MAX531.H"
#include"MAX187.H"
#include"LCD12864.H"
#defineucharunsignedchar
#defineuintunsignedint
#defineS6KPORTD|=(1<#defineS100KPORTD&=~(1<#defineNDPORTD&=~(1<#defineDIVPORTD|=(1<#definekeypress()(PINC&0X1F)!
=0X1F
doubleNowPower=300,SetPower=300;//当前功率,设定功率
longNowV531=1800,NextV531=1000;//当前531电压,预设电压
uintV187;//读187电压
ucharkeycode=0;
uintaddnum=1;
ucharfleg_enter=0;//0时是40K
ucharfleg_jidianqi=0;
ucharR_fleg=0;
longR=800;
floatDIV637=3.327;
ucharAGCflag=0;
uintcount=0;
//端口初始化
voidPORTinit()
{
DDRA=0XFF;
DDRD=0XDF;
PORTD=0X0f;
PORTC=0X1F;
DDRC=0X00;
}
voiddelay(uinti)
{
uintj=65535;
for(;i>0;i--)
for(;j>0;j--)
{;}
}
uchargetkey()
{
if(!
(PINC&0X01))
return
(1);
if(!
(PINC&0X02))
return
(2);
if(!
(PINC&0X04))
return(3);
if(!
(PINC&0X08))
return(4);
if(!
(PINC&0X10))
return(5);
}
voidmain()
{
uintr187data=0,i,j;
doublesed_gonglv=0;
doubleout_gonglv=0;
unsignedlonginput;
S6K;//为6K
DIV;
PORTinit();
lcd_init();
send_531_data(NowV531);
WriteStr(0x80,"程控功放");
WriteStr(0x90,"设定值为:
W");
WriteStr(0x98,"输出功率W");
while
(1)
{
for(i=50000;i>0;i--)
{
r187data=read_187_data();
NowPower=((double)r187data*DIV637)/10;//为U有效值
out_gonglv=(NowPower*NowPower)/1000;//V的平方
if(keypress())//如有键按下
{
keycode=getkey();//取键值
delay(4000);//消抖
while(keypress());//等待松开
switch(keycode)//键处理
{
case1:
fleg_enter=1;
R_fleg=0;
break;
case2:
addnum*=10;break;
case3:
if(R_fleg)
R-=addnum;
else
SetPower-=addnum;
break;
case4:
if(R_fleg)
R+=addnum;
else
SetPower+=addnum;
break;
case5:
R_fleg=1;break;
}
if(addnum==10000||addnum==0)
addnum=1;
if(SetPower>9999)
SetPower=0;
keycode=0;
if(R_fleg)
{
WriteStr(0x90,"设定电阻:
");
SendUint(0x95,R);
SendUint(0x8d,addnum);
}
if(R_fleg==0)
{
WriteStr(0x90,"设定值为:
W");
SendUint(0x95,SetPower);
SendUint(0x8d,addnum);
}
count=0;///
AGCflag=1;
}
SendUint(0x9d,(out_gonglv*1000)/R);
if(AGCflag)
break;
}
if(AGCflag==1)
{
S6K;
send_531_data(2000);
r187data=read_187_data();
NowPower=((double)r187data*DIV637)/10;
if(NowPower<=40)
{
for(j=10;j>0;j--);
S100K;
S100K;
S100K;
fleg_jidianqi=1;
}
}
if(fleg_enter==1)
{
while(AGCflag)
{
r187data=read_187_data();
NowPower=((double)r187data*DIV637)/10;//为U有效值
sed_gonglv=(SetPower*R)/1000;//P*R
out_gonglv=(NowPower*NowPower)/1000;//V的平方
if((fabs(sed_gonglv-out_gonglv))<2)//精度
{
if(count==45)
{
NextV531=NextV531-1;
send_531_data(NextV531);
AGCflag=0;
}
count++;
}
if((fabs(sed_gonglv-out_gonglv))>=2)
{
if(sed_gonglv>out_gonglv)
{
NextV531++;
for(j=10;j>0;j--);
send_531_data(NextV531);
}
if(sed_gonglv{
NextV531--;
for(j=10;j>0;j--);
send_531_data(NextV531);
}
}
}
fleg_enter=0;
fleg_jidianqi=0;
SendUint(0x9d,(out_gonglv*1000)/R);
}
}
}
51单片机部分
#include
#include
#include
#include<12864.h>
#include"key.h"
#include"S51AD9851.h"
#include
#defineucharunsignedchar//类型重定义
#defineuintunsignedint//类型重定义
sbitkey1=P2^0;
sbitkey2=P2^1;
sbitkey3=P2^2;
sbitkey4=P2^3;
unsignedlongintnum=2000;
//uintPhase=0x01;//在"S51AD9851.h"定义了
//unsignedcharnumber[10]={"0123456789"};
//=============================================================
//函数名称:
//函数功能:
//说明:
//=============================================================
voidmain()
{
uinttemp;
LCD_send_order(0x30);//基本指令集
LCD_send_order(0x0e);//整体显示光标开光标不反白
LCD_send_order(0x1c);//显示向右移动,光标跟着移动
LCD_send_order(0x01);//清屏
DDS_Init();
send9851_data(Phase,num);
while
(1)
{
keyscan();
if(key_flag)
{
if(keyval==1)
{
num=num+1000;
send9851_data(Phase,num);
LCD_send_order(0x01);//清屏
set(0x80,num);
set(0x90,Phase);
}
if(keyval==2)
{
num=num+100;
send9851_data(Phase,num);
LCD_send_order(0x01);//清屏
set(0x80,num);
set(0x90,Phase);
}
if(keyval==3)
{
num=num-100;
send9851_data(Phase,num);
LCD_send_order(0x01);//清屏
set(0x80,num);
set(0x90,Phase);
}
if(keyval==4)
{
num=num-1000;
send9851_data(Phase,num);
LCD_send_order(0x01);//清屏
set(0x80,num);
set(0x90,Phase);
}
if(keyval==5)
{
num=num-100;
send9851_data(Phase,num);
LCD_send_order(0x01);//清屏
set(0x80,num);
set(0x90,Phase);
}
key_flag=0;
}
}
}
本科生课程设计成绩评定表
姓名
性别
专业、班级
题目:
答辩或质疑记录:
成绩评定依据:
最终评定成绩(以优、良、中、及格、不及格评定)
指导教师签字:
年月日