基于TDA简易数控功放.doc

上传人:re****.1 文档编号:560342725 上传时间:2022-12-10 格式:DOC 页数:20 大小:161.67KB
返回 下载 相关 举报
基于TDA简易数控功放.doc_第1页
第1页 / 共20页
基于TDA简易数控功放.doc_第2页
第2页 / 共20页
基于TDA简易数控功放.doc_第3页
第3页 / 共20页
基于TDA简易数控功放.doc_第4页
第4页 / 共20页
基于TDA简易数控功放.doc_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《基于TDA简易数控功放.doc》由会员分享,可在线阅读,更多相关《基于TDA简易数控功放.doc(20页珍藏版)》请在金锄头文库上搜索。

1、简易功率放大器 摘 要 本电路设计采用一块功率放大器芯片作为核心,加上其他外围电路而成。通过单片机控制和显示放大量的大小。本设计的主要特点有:结构简单,容易控制,显示准确,具有一定的功率放大能能力。简易功率放大器本系统主要由功率放大模块、显示模块、控制模块和单片机模块组成,下面分别论证这几个模块的选择。1.1 功率放大的论证与选择方案一:用分立元件搭建一个功率放大模块。分立元件搭建的功率放大模块,效率高,失真小,但制作和调试都比较麻烦。方案二:使用TDA2030功率放大芯片。使用TDA2030功放芯片的电路简单,调试容易,有一定的功率放大能力。综合以上两种方案,选择方案二。1.2 显示的论证与

2、选择方案一:1602LCD。1602液晶显示,操作简单,容易控制,但不能显示中文字符。方案二:12864LCD。12864液晶显示,能够显示中文字符,但占用的IO口较多。综合以两种方案,选择方案一。1.3 控制系统的论证与选择方案一:MSP430。TI公司的MSP430,功耗小,IO口多,但操作较复杂。方案二:51单片机。51,操作简单,容易控制。综合考虑采用51单片机做为控制系统。2系统理论分析与计算 DAC0832控制音量大小的理论分析 单片机同归IO口给DAC0832赋不同的值,得到不同的电压,从而达到调节音量大小的作用。把八位二进制的数分成八份每份值为256/8=32,逐加并赋值给IO

3、口。 3电路与程序设计3.1电路的设计3.1.1系统总体框图系统总体框图如图1所示单片机功放主体 DAC0832音量YIN音量显示及控制提示图1 3.1.2 单片机子系统框图与电路原理图单片机子系统框图音量蜂鸣器提示1602LCD51单片机操作提示 图 23.1.4电源 电路电源由外部设备提供,+5V电源供给单片机及相关部分,+12、-12电源供给功放主体和运放。3.2程序的设计3.2.1程序功能描述与设计思路 1602显示“yinlian”提示,当按键按下,出现0到8的音量等级的显示。当按键按下,音量将超出所限等级范围时,蜂鸣器发声提示。3.2.2程序流程图1、主程序流程图开始1602液晶显

4、示加减按键是否按下按键减按键加DAC0832音量控制附录:电路原理图 功放主体 51单片机 DAC0832II程序代码#include /包含单片机寄存器的头文件#include /包含_nop_()函数定义的头文件#define uchar unsigned char#define uint unsigned intuchar code yinliang=0012345678;uchar code yinliang0=0x00,0x00,0x1f,0x3f,0x5f,0x7f,0x9f,0xbf,0xdf,0xff; sbit RS=P20; /寄存器选择位,将RS位定义为P2.0引脚sbi

5、t RW=P21; /读写选择位,将RW位定义为P2.1引脚sbit E=P22; /使能信号位,将E位定义为P2.2引脚sbit BF=P07; /忙碌标志位,将BF位定义为P0.7引脚sbit jia=P10;sbit jian=P14;sbit fmq=P25;unsigned char code string = YINLIANG:; unsigned char code string1 =NOW LOWEST!;unsigned char code string2 =NOW HIGHEST!;unsigned char code string3 =NOW NORMAL!;/*函数功能

6、:延时1ms*/void delay1ms() unsigned char i,j; for(i=0;i10;i+) for(j=0;j33;j+) ; /*函数功能:延时若干毫秒入口参数:n*/ void delay(unsigned int n) unsigned int i;for(i=0;in;i+)delay1ms(); /*函数功能:判断液晶模块的忙碌状态返回值:result。result=1,忙碌;result=0,不忙*/ bit BusyTest(void) bit result;RS=0; /根据规定,RS为低电平,RW为高电平时,可以读状态 RW=1; E=1; /E=1

7、,才允许读写 _nop_(); /空操作 _nop_(); _nop_(); _nop_(); /空操作四个机器周期,给硬件反应时间 result=BF; /将忙碌标志电平赋给resultE=0; return result; /*函数功能:将模式设置指令或显示地址写入液晶模块入口参数:dictate*/void Write_com (unsigned char dictate) while(BusyTest()=1); /如果忙就等待 RS=0; /根据规定,RS和R/W同时为低电平时,可以写入指令 RW=0; E=0; /E置低电平(写指令时, / 就是让E从0到1发生正跳变,所以应先置0

8、 _nop_(); _nop_(); /空操作两个机器周期,给硬件反应时间 P0=dictate; /将数据送入P0口,即写入指令或地址 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四个机器周期,给硬件反应时间 E=1; /E置高电平 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四个机器周期,给硬件反应时间 E=0; /当E由高电平跳变成低电平时,液晶模块开始执行命令 /*函数功能:指定字符显示的实际地址入口参数:x*/ void WriteAddress(unsigned char x) Write_com(x|0x80

9、); /显示位置的确定方法规定为80H+地址码x /*函数功能:将数据(字符的标准ASCII码)写入液晶模块入口参数:y(为字符常量)*/ void WriteData(unsigned char y) while(BusyTest()=1); RS=1; /RS为高电平,RW为低电平时,可以写入数据 RW=0; E=0; /E置低电平(写指令时, / 就是让E从0到1发生正跳变,所以应先置0 P0=y; /将数据送入P0口,即将数据写入液晶模块 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四个机器周期,给硬件反应时间 E=1; /E置高电平 _nop_()

10、; _nop_(); _nop_(); _nop_(); /空操作四个机器周期,给硬件反应时间 E=0; /当E由高电平跳变成低电平时,液晶模块开始执行命令 /*函数功能:对LCD的显示模式进行初始化设置*/void LcdInt(void) delay(15); /延时15ms,首次写指令时应给LCD一段较长的反应时间 Write_com(0x38); /显示模式设置:162显示,57点阵,8位数据接口delay(5); /延时5msWrite_com(0x38);delay(5);Write_com(0x38); /3次写 设置模式delay(5);Write_com(0x0C); /显示模式设置:显示开,有光标,光标闪烁delay(5);Write_com(0x06); /显示模式设置:光标右移,字符不移delay(5);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号