1、工学基于单片机的程控放大器设计工学基于单片机的程控放大器设计 工学基于单片机的程控放大器设计 可编程放大器设计 摘要 本设计主要以DAC0832内部的电阻网络作为核心,利用AT89S52单片机控制所选D/A的电阻网络状态,同时利用两个独立键盘来控制正弦波的放大倍数,并利用四位数码管将其显示出来。 经过实际测量,本系统可以实现通频为20Hz20KHz,Vpp为20mV20V,放大0.4100倍,且步进为0.4可调的无失真的波形放大器。 关键词: AT89S52单片机 数码管 放大器 Abstract The design mainly base on DAC0832 s inside resis
2、tors regarding as the kernel,it is used on the AT89S52 MCU controlling the resistors condition.At the same time,it utilizes double Individual Keys to control sinusoidal wave s amplify,additionally,four digital tube to display the concrete value.After measured,the system could make the function come
3、true. In detail,the wave amplifier s parameter:pass band:20Hz20KHz, Vpp:20mV20V,amplify:0.4100,step:0.4(adjusted no distortion). Key words: AT89S52 Micro Controller Unit digital tube amplifier 目录 摘要 -2 一核心模块的方案论证与比较-3 1.1 滤波模块 - 3 1.2 控制模块-3 1.3 显示模块- 3 1.4 自动增益模块-4 1.5 波形放大模块-4 二方案设计与总体论证-4 三单元电路分析
4、与实现 -5 3.1 滤波模块 -5 3.2显示模块 - 6 3.3 波形放大模块-7 3.4 自动增益模块-8 四单片机软件设计-9 4.1 软件功能-9 4.2 流程图-9 五测试结果及分析-9 六设计总结-10 七附录 -11 7.1 主要元器件清单-11 7.2 程序清单-11 第一章 绪论 1.1目前研究的概况和发展趋势 输入端的信号在一定幅度内,从而保证整个仪表的测量精度。 但是人工档位调节增加了仪表操作的复杂性、影响了数据测量的实时性,同时档位调节通常采用机械转扭,增加了仪器的不可靠性和接触电阻对测量精度的影响。 而且传统的方法是采用可软件设置增益的放大器,如AD8321芯片,并
5、且该类放大器价格较高(如AD8321),选择档位也较少(如TI的PGA103,206等仅3-4档)。 还有一种可满足核仪器中所要求的线性度与增益稳定性以及自动稳谱的增益要求的数控放大器。 系统在保证放大器的增益稳定性和线性指标的同时却降低了放大器的输入阻抗,必然对前级电路输出阻抗提出更高的要求。 在实际应用中可通过增大反馈电阻提高输入阻抗,另外必要时还可以增加一级电压跟随电路,电压跟随器的输入阻抗极高,这样可以忽略电路中的导通电阻对增益的影响,各级增益完全取决于所选电阻。 目前通常由于各类测量仪表设备中的传感器在不同测试中,其输出信号的幅度可能相差很多,传统的处理方法是对放大器增加手动档位调节
6、以保证后端的A/D采集采用单片机来自动选择量程档位,采用非易失性数字电位器和仪表放大器组成的高精度、多档位、低成本的程控放大器。 以单片机(或个人计算机)为基础的仪器测量系统的出现,是电子电工测量的一项重大变革,具有广阔的应用前景。 1.2核心模块的方案论证与比较 1.2.1滤波模块 方案一:采用CF412或者LF412芯片 此方案采用CF412或是LF412芯片,因为此芯片的带宽增益积可以达到8MHz, 理论上来说,其上限截至频率可以达到100KHz,但是考虑到此芯片需要18V供电,这会给电源供电模块带来难度而且价格较贵,故不采用这种方案。 方案二:采用LM324N芯片 此方案是采用LM32
7、4N芯片,其带宽增益积为1MHz,经过实际测量,可以实现上限截止频率为20KHz,甚至可以达到30KHz,足以实现基本要求部分,而且此芯片便宜,只需12V供电,会给整个系统的设计带来很大的方便,故采用此方案。 1.2.2控制模块 方案一:4*4矩阵键盘控制 此方案可以直接输入所需要的波形放大倍数,方便快捷,但是程序操作复杂,故不采用这种方案。 方案二:独立按键控制 此方案利用两个独立按键共同控制放大倍数,其中一个按键用来控制倍数的放大,另外一个控制倍数的衰减,以此来达到放大倍数的调节,由于本系统元件较少,而且51单片机正好有两个外部中断口可以利用,程序设计简单,故采用此方案。 1.2.3 显示
8、模块 方案一:1602液晶显示 此方案中液晶显示器可以由ASCll码控制,控制简单,可以显示更多的信息,比如放大倍数和单位等,但是价格相对昂贵,故不为本系统所采用。 方案二:数码管显示 此方案中利用共阴极数码管并对09这10数字进行编码,并利用数码管的动态扫描形式来显示不同的数字,以达到显示放大倍数的目的。 由于本系统仅需对放大倍数进行显示,利用四段数码管已经足以达到要求,程序设计也相对容易,产品价格低廉,故本设计采用这种方案实现。 1.2.4自动增益模块 方案一:采用MOSFET实现 此方案通过输入信号控制MOS管的Rds 来实现增益的自动调节,由于Rds不好调节,尤其是信号较小时,Rds
9、变化不明显,需要找到非常合适的电阻,才可以将信号幅度控制在2V3V的范围内,虽然电路简单,但准确度不高,参数的选择较为麻烦,故不采用这种方案。 方案二:采用ADC0809实现 此方案首先通过峰值检测电路,检测出输入信号的峰值,然后将峰值电压输入ADC0809,由A/D与单片机结合,再通过单片机控制D/A来实现增益的自动调节,该方案简单,容易调节,故采用这种方案。 1.2.5波形放大模块 方案一:采用模拟开关CD4051 此方案中采用具有八路模拟开关的电子芯片CD4051,这样可以实现八种不同的放大倍数,若采用两片,就可以实现十六种不同的放大倍数,以此类推。 但是显然,这不可以实现步进调节,且其
10、内部的开关导通阻值较大,也会给波形放大带来较大的误差,故不采用这种方案。 方案二:采用DAC0832 此方案是利用51单片机来控制D/A内部电阻网络的状态,以此来控制其内部电阻的变化,从而控制放大倍数。 由于DAC0832输出的是电流信号,所以需要利用LM324N运算放大器来将其转换成电压形式,以此来输出放大后的正弦波,故采用这种方案。 1.3 本文的设计思路 本章提出了一种基于AT89C51单片机控制的简易程控放大器系统。 单片机通过DAC0832将数字量转化为模拟量经放大器放大输出最后通过液晶显示。 本系统的设计基于AT89C51单片机和运算放大器,通过调节外部独立按键来实现控制电压的大小
11、。 1.4 本文的主要内容 (1) DAC0832的工作原理 (2) 放大器工作原理 (3) LCD1602液晶的驱动 1.5系统设计要求 本系统设计的程控放大器可以实现如下功能: 设计一个简易的程控放大器系统,它可以通过按键输入来控制输出的电压大小。 输出的值可通过LCD1602液晶显示。 能够自己改变放大器的放大倍数。 第二章 系统的硬件设计 该方案是以单片机AT89S52控制为核心,两个独立按键和D/A芯片与单片机结合参与工作,实现波形放大以及放大倍数的调节。 系统框图如图2-1所示。 该方案的优点是实现了软件与硬件相结合的控制方式,设置参数较为方便,可以实现倍数的快速调节,误差也较小,
12、并且通过数码管将其显示出来。 再加上峰值检测电路和模数转换,可以实现增益的自动调节。 图2-1 系统整体设计框图 2.1 AT89S52 单片机 AT89S52为 ATMEL 所生产的一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flsah存储器。 (一)、AT89S52主要功能列举如下: 1、拥有灵巧的8位CPU和在系统可编程Flash 2、晶片内部具时钟振荡器(传统最高工作频率可至 12MHz) 3、内部程序存储器(ROM)为 8KB 4、内部数据存储器(RAM)为 256字节 5、32 个可编程I/O 口线 6、8 个中断向量源 7、三个 16 位定时器/计数器 8、三级加
13、密程序存储器 9、全双工UART串行通道 (二)、AT89S52各引脚功能介绍,如图2-2: 图2-2 AT89S52 引脚图 VCC: AT89S52电源正端输入,接+5V。 VSS: 电源地端。 XTAL1: 单芯片系统时钟的反相放大器输入端。 XTAL2: 系统时钟的反相放大器输出端,一般在设计上只要在 XTAL1 和 XTAL2 上接上一只石英振荡晶体系统就可以动作了,此外可以在两引脚与地之间加入一 20PF 的小电容,可以使系统更稳定,避免噪声干扰而死机。 RESET: AT89S52的重置引脚,高电平动作,当要对晶片重置时,只要对此引脚电平提升至高电平并保持两个机器周期以上的时间,
14、AT89S51便能完成系统重置的各项动作,使得内部特殊功能寄存器之内容均被设成已知状态,并且至地址0000H处开始读入程序代码而执行程序。 EA/Vpp: “EA“为英文“External Access“的缩写,表示存取外部程序代码之意,低电平动作,也就是说当此引脚接低电平后,系统会取用外部的程序代码(存于外部EPROM中)来执行程序。 因此在8031及8032中,EA引脚必须接低电平,因为其内部无程序存储器空间。 如果是使用 8751 内部程序空间时,此引脚要接成高电平。 此外,在将程序代码烧录至8751内部EPROM时,可以利用此引脚来输入21V的烧录高压(Vpp)。 ALE/PROG:
15、ALE是英文“Address Latch Enable“的缩写,表示地址锁存器启用信号。 AT89S52可以利用这支引脚来触发外部的8位锁存器(如74LS373),将端口0的地址总线(A0A7)锁进锁存器中,因为AT89S52是以多工的方式送出地址及数据。 平时在程序执行时ALE引脚的输出频率约是系统工作频率的1/6,因此可以用来驱动其他周边晶片的时基输入。 此外在烧录8751程序代码时,此引脚会被当成程序规划的特殊功能来使用。 PSEN: 此为“Program Store Enable“的缩写,其意为程序储存启用,当8051被设成为读取外部程序代码工作模式时(EA=0),会送出此信号以便取得
16、程序代码,通常这支脚是接到EPROM的OE脚。 AT89S52可以利用PSEN及RD引脚分别启用存在外部的RAM与EPROM,使得数据存储器与程序存储器可以合并在一起而共用64K的定址范围。 PORT0(P0.0P0.7): 端口0是一个8位宽的开路汲极(Open Drain)双向输出入端口,共有8个位,P0.0表示位0,P0.1表示位1,依此类推。 其他三个I/O端口(P1、P2、P3)则不具有此电路组态,而是内部有一提升电路,P0在当做I/O用时可以推动8个LS的TTL负载。 如果当EA引脚为低电平时(即取用外部程序代码或数据存储器),P0就以多工方式提供地址总线(A0A7)及数据总线(D
17、0D7)。 设计者必须外加一锁存器将端口0送出的地址栓锁住成为A0A7,再配合端口2所送出的A8A15合成一完整的16位地址总线,而定址到64K的外部存储器空间。 PORT2(P2.0P2.7): 端口2是具有内部提升电路的双向I/O端口,每一个引脚可以推动4个LS的TTL负载,若将端口2的输出设为高电平时,此端口便能当成输入端口来使用。 P2除了当做一般I/O端口使用外,若是在AT89S52扩充外接程序存储器或数据存储器时,也提供地址总线的高字节A8A15,这个时候P2便不能当做I/O来使用了。 PORT1(P1.0P1.7): 端口1也是具有内部提升电路的双向I/O端口,其输出缓冲器可以推
18、动4个LS TTL负载,同样地若将端口1的输出设为高电平,便是由此端口来输入数据。 如果是使用8052或是8032的话,P1.0又当做定时器2的外部脉冲输入脚,而P1.1可以有T2EX功能,可以做外部中断输入的触发脚位。 PORT3(P3.0P3.7): 端口3也具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个TTL负载,同时还多工具有其他的额外特殊功能,包括串行通信、外部中断控制、计时计数控制及外部数据存储器内容的读取或写入控制等功能。 其引脚分配如下: P3.0:RXD,串行通信输入。 P3.1:TXD,串行通信输出。 P3.2:INT0,外部中断0输入。 P3.3:INT1,外
19、部中断1输入。 P3.4:T0,计时计数器0输入。 P3.5:T1,计时计数器1输入。 P3.6:WR:外部数据存储器的写入信号。 P3.7:RD,外部数据存储器的读取信号。 RST:复位输入。 当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。 在FLASH编程期间,此引脚用于输入编程脉冲。 在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。 因此它可用作对外部输出的脉冲或用于定时目的。 然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。 如想禁止ALE的输
20、出可在SFR8EH地址上置0。 此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。 另外,该引脚被略微拉高。 如果微处理器在外部执行状态ALE禁止,置位无效。 /PSEN:外部程序存储器的选通信号。 在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。 但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 /EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。 注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。 在FLASH编程期间,此引脚也用于施加12V编程
21、电源(VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。 2.2滤波模块 该部分由一片LM324N,若干合适的电容和电阻组成。 系统框图如图2-3所示。 其原理是:输入信号VI 通过R1, R3进行衰减,考虑到AVF1=1.586,同时尽量要使运放同相输入端和反向输入端对地的直流电阻基本相等,可选取R5=82 k,R4=(AVF1-1)R5=48 k,由于没有买到48 k的电阻,故采用接近其阻值大小的47 k来代替,效果也不错。 其中U1A部分是低通滤波器,根据公式,可以得到其上限截至频率为30KHz,U1B部分是高通滤波器,根据公式,可
22、以得到其下限截至频率为19Hz,由于LM324N带宽增益积的限制,经过实际测量,其上限截至频率为20KHz,完全可以实现通带为20Hz20KHz的基本要求。 仿真结果如图2-4, 图2-5所示。 图2-3 带通滤波器 图2-4 上限截至频率 图2-5 下限截至频率 2.3控制显示电路 本系统采用AT89C51单片机最小控制系统,显示部分采用LCD1602液晶显示。 本节重点介绍LCD1602的基本用法。 1、LCD1602液晶简介及系统的硬件原理图 1602采用标准的16脚接口,各引脚功能图如表2-1所示。 表2-1 1602液晶引脚功能图 引脚号 引脚名称 功能说明 1 VSS 地电源 2
23、VDD 5V正电源 3 V0 液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度 4 RS 寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器 5 RW 读写信号线,高电平时进行读操作,低电平时进行写操作。 当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据 6 E 使能端,当E端由高电平跳变成低电平时,液晶模块执行命令 714 D0D7 8位双向数据线 1516 空脚 1602液晶模块内部的字符发生存储器(CGRO
24、M)已经存储了160个不同的点阵字符图形,如表3.3所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。 表2-2 CGROM和CGRAM中字符代码与字符图形对应关系 高 位 低 位 0000 0010 0011 0100 0101 0110 0111 1010 1011 1100 1101 1110 1111 0000 CG RAM (1) 0 P p 一 P 0001 (2) ! 1 A Q a q q 00
25、10 (3) “ 2 B R b r 川 0011 (4) # 3 C S c s 现的。 指令1:清显示,指令码01H,光标复位到地址00H位置 指令2:光标复位,光标返回到地址00H 指令3:光标和显示模式设置 1/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。 高电平表示有效,低电平则无效 指令4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。 指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光 R/
26、L:1向右移动;0向左移动。 指令6:功能设置命令 DL高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符 指令7:字符发生器RAM地址设置 指令8:DDRAM地址设置 指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。 指令10:写数据 指令11:读数据 表2-3 1602液晶模块的控制指令 液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。 要显示字符时要先输入显示字符地址
27、,也就是告诉模块在哪里显示字符,表2-4是DM-162的内部显示地址。 表2-4 DM-162的内部显示地址 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 00H 01H 02H 03H 04H 05H 06H 07H 08H 09H 0AH 0BH 0CH 0DH 0EH 0FH 40H 41H 42H 43H 44H 45H 46H 47H 48H 49H 4AH 4BH 4CH 4DH 4EH 4FH 比如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位D7恒定为高电平
28、1所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H)。 控制显示电路原理图如图2-6所示。 图2-6 单片机最小系统和液晶显示电路 2.3波形放大模块 该部分主要由一片DAC0832和一块LM324N运算放大器组成。 DAC0832属于8位倒T型电阻网络D/A转换器。 其内部结构如图2-7所示。 通过单片机的P1口向DAC0832发送数字编码,控制D/A内部S1S7共8个模拟开关的断与合,以此来调节内部的阻值,可以有256种状态,并且可以实现步进调节。 同时,模拟开关的电阻很小,这样可以减小放大倍数的误差。 DAC0832是电流输出型,示波器上显示波形,通常需要电压信号,电流信号到电压信号的转换可以由运算放大器LM324N实现。 系统电路连接如图2-8所示。 图2-7 DAC0832内部结构图 图2-8 DAC0832电路连接图 2.4双极型转单极性 通过单片机控制另一块DAC0832可以产生0到
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1