基于at89s51低频信号发生器的设计与实现(编辑修改稿)内容摘要:

的数据读入到内部总线。 89C51的 P0、 P P P3口作为输入时都是准双向口。 除了 P1口外 P0、 P P3口都还有其他的功能。 ※ RST:复位输入。 当振荡器 工作 时,要保持 RST 脚两个机器周期的高电平时间。 ※ ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低 位字节。 在 FLASH 编程期间,此引脚用于输入编程脉冲。 在平时, ALE 端以不变的频率 和 周期输出正脉冲信号,此频率为振荡器频率的 1/6。 因此它可用作对外部输出的脉冲或用于定时。 然而要注意的是:每当用作外部数据存储器时,将跳过一个 ALE脉冲。 如想禁止 ALE 的输出可在 SFR8EH 地址上置 0。 此时, ALE 只有在执行 MOVX,MOVC 指令是 ALE 才起作用。 另外,该引脚被略微拉高。 如果微处理器在外部执行状态 ALE 禁止,置位无效。 ※ /PSEN:外部程序存储器的选通信号 ,低电平有效。 在从片外程序存储器 取指期间,在每个机器周期中,当 /PSEN 有效时,程序存储器的内容被送上 P0 口 (数据总线 )。 /PSEN 可以驱动 8 个 TTL 负载。 ※ /EA/VPP:当 /EA 保持低电平时,则在此期间外部程序存储器( 0000HFFFFH),不管是否有内部程序存储器。 注意加密方式 1 时, /EA 将内部锁定为 RESET;当 /EA端保持高电平时,此间内部程序存储器。 在 FLASH 编程期间,此引脚也用于施加 12V端口引脚 第二功能 RXD(串行输入口 ) TXD(串行输出口 ) /INT0(外中断 0 的请求 ) /INT1(外中断 1 的请求 ) T0 (定时 /计数器 0 外部计数脉冲输入 ) T1(定时 /计数器外部计数脉冲输入) /WR(外部数据存储器写选通 ) /RD(外部数据存储器读选通) 9 编程电源( VPP)。 ※ XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 ※ XTAL2:来自反向振荡器的输出。 ( 3) AT89S51 的晶振及其连接方法 CPU 工作时都必须有一个时钟脉冲。 有两种方式可以向 89S51 提供时钟脉冲:一是外部时钟方式,即使用外部电路向 89S51 提供始终脉冲,见图 33(a);二是内部时钟方式,即使用晶振由 89S51 内部电路产生时钟脉冲。 一般常用第二种方法,其电路见图 (b)。 图 89S51 的时钟脉冲 图 (b)中: J 一般为石英晶体,其频率由系统需要和器件决定,在频率稳定度要求不高时也可以使用陶瓷滤波器。 C C2:使用石英晶体时, C1=C2=30( 177。 10) pF 使用陶瓷滤波器时, C1=C2=40( 177。 10) pF ( 4) AT89S51 的复位 使 CPU 开始工作的方法就是给 CPU 一个复位信号, CPU 收到复位信号后将内部特殊功能寄存器设置为规定值,并将程序计数器设置为 “0000H”。 复位信号结束后, CPU 从程序存储器 “0000H”处开始执行程序。 89S51 为高电平复位,一般有 3 种复位方法。 ⅰ 上电复位。 通过外部复位电路的电 容充电来实现的。 ⅱ 手动复位。 设置一个复位按钮,当操作者按下按钮时产生一个复位信号。 ⅲ 自动复位。 设计一个复位电路,当系统满足某一条件时自动产生一个复位信号。 图 为最简单的上电复位和手动复位方法。 10 图 89S51 的复位电路 ( 5) 芯片擦除 整个 PEROM 阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持 ALE 管脚处于低电平 10ms 来完成。 在芯片擦操作中,代码阵列全被写 “1”且在任何非空存储字节被重复编程以前,该操作必须被执行。 此外, AT89S51 设有稳态逻辑,可 以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。 在闲置模式下, CPU 停止工作。 但 RAM,定时器,计数器,串口和中断系统仍在工作。 在掉电模式下,保存 RAM 的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。 各部分电路原理 DAC0832 芯片原理 ( 1) 管脚功能介绍 如图 所示 89S51 11 图 DAC0832 管脚图 ※ DI7~ DI0: 8 位的数据输入端, DI7 为最高位。 ※ IOUT1: DAC 电流输出端 1。 ※ IOUT2: DAC 电流输出端 2,当 DAC 寄 存器中数据 全为 1 时,输出电流最大,当 DAC寄存器中数据 全为 0 时,输出电流 最小 , IOUT2与 IOUT1的和为一个常数,即 IOUT1+ IOUT2=常数。 ※ bfR :反馈电阻 ,固化在芯片中,作为运算放大器分路反馈电阻为 DAC 提供电压输出。 ※ refV :参考电压输入 ,此端可接一个正电压,也可接一个负电压,它决定 0 至 255的数字量转化出来的模拟量电压值的幅度, refV 范围 为 (+10~ 10)V。 refV 端与 D/A 内部 T形电阻网络相连。 ※ VCC: 数字电路电源 ,范围为 (+5~ 15)V。 ※ AGND( 3 脚):模拟量地,即模拟电路接地端。 ※ DGND( 10 脚):数字量地。 当 WR2 和 XFER 同时有效时, 8 位 DAC 寄存器端为高电平 “1”,此时 DAC 寄存器的输出端 Q 跟随输入端 D 也就是输入寄存器 Q 端的电平变化;反之,当端为低电平 “0”时,第一级 8 位输入寄存器 Q 端的状态则锁存到第二级 8 位 DAC 寄存器中,以便第三级 8 位DAC 转换器进行 D/A 转换。 一般情况下为了简化接口电路,可以把输入端和输出端直接接地,使第二级 8 位 DAC 12 寄存器的输入端到输出端直通,只有第一级 8 位输入寄存器置成可选通、可锁存的单缓冲输入方式。 特殊情况下可采用双缓冲输入方式,即把两个寄存器都分别接成受控方式。 制作低频信号发生器有许多方案:主要有单缓冲方式,双缓冲方式和直通方式。 单缓冲方式具有适用于只有一路模拟信号输出或几路模拟信号非同步输出的情形的优点, 而且 电路线路连接比较简单。 而双缓冲方式适用于在需要同时输出几路模拟信号的场合,每一路模拟量输出需一片 DAC0832 芯 片,构成多个 DAC0832 同步输出电路,程序简单化,但是电路线路连接比较复杂。 根据以上分析,我们的课题选择了单缓冲方式使用方便,程序简单,易操作。 (2) 工作原理 DAC0832 主要由 8 位输入寄存器、 8 位 DAC 寄存器、 8 位 D/A 转换器以及输入控制电路四部分组成。 8 位 输入寄存器用于存放主机送来的数字量,使输入数字量得到缓冲和锁存 ; 8 位 DAC 寄存器用于存放待转换的数字量 ; 8 位 D/A 转换器输出与数字量成正比的模拟电流;由与门、 与 非门组成的输入控制电路来控制 2 个寄存器的选通或锁存状态。 DAC0832 与反相比例 放大器相连,实现电流到电压的转换,因此输出模拟信号的极性与参考电压的极性相反,数字量与模拟量的转换关系为 Vout1=Vref(数字码 /256) 若 D/A 转换器输出为双极性,如图 所示。 图 D/A 转换器双极性输出电路 图 中,运算放大器 A2的作用是把运算放大器 A1的单向输出电压转换成双向输出电压。 其原理是将 A2的输入端 Σ 通过电阻 R1与参考电压 VREF相连, VREF经 R1向 A2提供一Iout1 Iout2 Vfb DAC0832 U1 5 6 7 B 10 9 8 C R2=R R1=2R R3=2R R Vout2 A2 Vref +5V A1 Vout1 I1 I2 13 个偏流 I1,其电流方向与 I2相反,因此运算放大器 A2的输入电流为 I I2之代数和。 则 D/A转换器的总输出电压为: VOUT2= [(R3/R2) VOUT1+(R3/R1)] VREF () 设 R1=R3=2R R2=R,则 VOUT2= (2VOUT1+VREF) () DAC0832 主要是用于波形的数据的传送,是本题目电路中的主要芯片。 LM324 工作原理 图 LM324 原理图 管脚图 LM324 是 四运放集成电路 ,它采用 14 脚双列直插塑料封袋,外形上图所示。 它的内部包含四组形式完全相同的运算放大器,除电源共用外,四组运放相互独立。 每一组运算放大器可用图中所示的符号来表示,它有 5 个引出脚,其中 “+”、 “”为两个信号输入端, “V+”、“V”为正、负电源端, “ 0V ”为输出端。 两个信号输入端中, “”为反相输入端,表示运放输出端 0V 的信号与该输入端的为相反; “+”为同相输入 端,表示运放输出端 0V 的信号与输入端的相位相同。 LM324 的引脚排列见图。 由于 LM324 四运放电路具有电源电压范围宽,静态功耗小,可作 电源使用,价格低廉等优点,因此被广泛应用在各种电路中。 14 电路原理 图 电路原理图 当分别每按下按键一次就会分别出现方波、锯齿波、正弦波,并且有数码管会指示是那种波形的序号。 另外 ,发光二极管发光说明系统处于工作状态。 4 软 件设计 软件设计上,根据功能分了几个模块编程。 模块主要有:主程序模块、方波模块、 锯齿波模块、正弦波模块、延时子程序模块等。 显示波形模块是利用 DAC0832 的 8 位特点,把波形的数据以 8 位数据的形势送进 CPU中,只要一按键就能显示波形。 15 主 程序流程图 图 主程序流程图 本软件设计过程中主要实现利用按键来控制不同波形的输出,当按键 KEY1 按下 1 次时,信号 发生器就输出 方波 ;当按键 KEY1 按下 2 次时,信号 发生器就输出锯齿波;当按键 KEY1 按下 3 次时,信号 发生器就输出正弦波。 通过按键可以以任意循环方式输出不同波形,数 码管上显示的数字分别对应相应的波形。 按键 KEY2 按下时复位。 K1 按 1 次 输出方波 K1 按 2 次 输出 锯齿 波 K1 按 3 次 输出 正弦 波 开 始 Y Y Y N N N 16 方 波程序流程图 图 方波程序流程图 方 波产生首先将 DAC0832 口地址至为 4000H,当 A 中的内容为 0 时,输出对应模拟量,然后延时,当 A 中的内容为 0FFH 时,同样输出对应模拟量,再延时,从而得到 方 波。 开 始 置 DAC0832 口地址 4000H 00H→ A 输出对应模拟量 延时 0FFH→ A 输出对应模拟量 延时 17 锯齿波程序流程图 开始0H→A(A)→0832输出(A)=F0H。 A+1→A置DAC0832口地址40HNY 图 锯齿波程序流程 图 锯齿波产生首先将 DAC0832口地址至为 4000H,然后将 00H送入寄存器 A中, DAC0832输出 A 中的内容,当 A 中的内容等于 F0H 返回开始,当 A 中的内容不为 0FH 时, A 中的内容累加,从而输出波形。 正弦波程序流程图 开始置DAC0832口地址40查表格取数送0832R1+1→R1取表格初值R1←0H 图 正弦波程序流程图 18 5 仿真结果 ( 1) 系统工作 状态电路图 如 下 图 : 图 按键状态图形 ( 2) 方波波形 如 下 图 : 图 方波仿真波形 19 ( 3) 锯齿波波形 如 下 图 : 图 锯齿波仿真波形 ( 4) 正弦波波形 如 下 图 : 图 正弦波仿真波形 20 6 测试结论 ( 1) 产生各种波形电压输出范围及频率如下 : 方 波: VPP min= T= F= VPP max= 锯齿波: VPP min= T= F=。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。