基于单片机的恒流电源的设计与实现内容摘要:
口是一个具有内部上拉电阻的 8 位双向 I/O 口, P1 输出缓冲器能驱动个 TTL 逻辑电平。 对 P1 端口写 “1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。 作输为入使用时,被输入信号拉低的引脚由于内部上拉电阻的原因,将输出电流 IIL。 此外, 和 分别作定时器 /计数器 2 的外部计数输入( )和时器 /计数器 2 的触发输入( ),具体如表 31 所示。 在 flash 编 程和校验时, P1 口接收低 8 位地址字节。 表 31 P1 端口 第二功能 口线 第二功能 信号名称 T2 定时器 /计数器 T2 的外部计数输入,时钟输出 T2EX 定时器 /计数器 T2 的捕捉 /重载触发信号和方向控制 MOSI 在系统编程用 MISO 在系统编程用 SCK 在系统编程用 P2 端口: P2 口也是一个具有内部上拉电阻的 8 位双向 I/O 口, P2 输出缓冲器能驱动 4 个 TTL 逻辑平。 对 P2 端口写 “1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。 作为输入使用时,输入信号拉低的引脚由于内部上拉电阻的原因,将输出电流 IIL。 在访问外部程序存储器或用 16 位地读取外部数据存储器(例如执行MOVX@DPTR)时, P2 口送出高八位地址。 在这种应用中, P2 口使用强的内部上拉发送 1。 在使用 8 位地址(如 MOVX@RI)访问外部数据存储器时, P2 口输出 P2 锁存器内容。 在 flash 编程和校验时, P2 口也接收高 8 位地址字节和一些控制信号。 P3 端口: P3 口是一个具有内部上拉电阻的 8 位双向 I/O 口, P3 输出缓冲器能驱动 4 个 TTL 逻辑电基于单片机控制的直流恒流源的设计对 P3 端口写 “1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。 作为输入使用时,被输入信号拉低的引脚由于内部上拉电阻的原因,将输出电流 IIL。 P3 口亦作为 AT89S52 特殊功能(第二功能)使用,如表 32 所示。 在 flash 编程和校验时, P3 口也接收一些控制信号。 表 32 P3 端口 第二功能 口线 第二功能 信号名称 RXD 串行输入 TXD 串行输出 INT0 外部中断 0 INT1 外部中断 1 T0 定时器 0 外部输入 T1 定时器 1 外部输入 WR 外部数据存储器写选通 RD 外部数据存储器读选通 (3)控制信号引脚 RST:复位输入端。 晶振工作时, RST 引脚的输入高电平有 2 个机器周期就会对单片机复位。 看门狗计时完成后, RST 引脚输出 96 个晶振周期的高电平。 特殊寄存器 AUXR(地址 8EH)上的 DISRTO 位可以使此功能无效。 DISRTO 默认状态下,复位高电平有效。 ALE/ PROG :地址锁存控制信号。 存取外部程序存储器时,这个输出信号用于锁存低 8 位地址。 在对 flash 存储器编程时,此引脚也用作编程输入脉冲 PROG。 在一 般情况下, ALE 以晶振六分之一的固定频率输出脉冲,可用作外部定时器或时钟使用。 然而,特别强调,在每次访问外部数据存储器时,会跳过一个 ALE 脉冲。 在需要时,可以将地址为 8EH 的 SFR 寄存器的第 0 位置为 “1”,从而屏蔽 ALE 的工作。 而只有在 MOVX 或 MOVC 指令执行时 ALE 才被激活。 在单片机处于外部执行方式时,对ALE 屏 蔽位置 “1”并不起作用。 PSEN :外部程序存储器选通信号。 当 AT89S52 从外部程序存储器执行外部代码时, PSEN 在每个机器周期被激活两次,而在访问外部数据存储器时, PSEN 的两次激活会被跳过。 EA /VPP:访问外部程序存储器控制信号。 为使能从 0000H 到 FFFFH 的外部程序存储器读取指令, EA 必须接 GND。 为了执行内部程序指令, EA 应该接 VCC。 在flash 编程期间, EA 也接收 12 伏 VPP 电压。 (4)振荡器引脚 XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。 XTAL2:振荡器反相放大器的输出端。 AT89S52 中有一个构成内部振荡器的高增益反相放大器,引脚 XTAL1 和 XTAL2分别是该放大器的输入和输出端。 这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器,振荡电路 如图 左图所示 [7]。 外接石英晶体 (或陶瓷谐振器 )及电容 C1, C2 接在放大器的反馈回路中构成并联振荡电路。 对外电容 C1, C2 虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作稳定性、起振的难易程度及温度的稳定性。 如果使用石英晶体,电容使用 30pF 士 l0pF,如果使用陶瓷谐振器 , 电容使用 40pF 士 l0pF。 用户也可以使用外部时钟。 采用外部时钟的电路如图 32 右图所示。 在这种情况下,外部时钟脉接到 XTAL1 端,即内部时钟发生器的输入端, XTAL2 端悬空。 由于外部时钟信号是通过一 个 2 分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空没有特殊要求,但最小高电平持续时间和最大低电平持续时间应符合产品技术条件的额定要求。 本课题用到的晶振频率为 12MHz。 本课题所用的时钟电路如图 32 左图所示。 X T A L 2X T A L 1G N DX T A L 2X T A L 1NC外部振荡信号输入 a)内部振荡电路 b)外部振荡电路 图 32 AT89S52 振荡电路 复位是单片机的初始化操作。 其主要功能是将程序计数器 PC 初始化为 0000H,使单片机从 0000H 单元开始执行程序。 在运行中,外界干扰等因素可使单片机的程序陷入死循环状态或跑 飞。 为摆脱困境,可将单片机复位,以重新启动。 复位也使单片机退出低功耗工作方式而进入正常工作状态。 RST 引脚是复位信号的输入端,高电平有效。 其有效时间应持续 24 个振荡周期 (即两个机器周期 )以上。 振荡周期就是晶振的振荡周期。 C110 u FR E S 110kV C CR E S E TS1R E S 11kD1C122 u FV C CR E S E T a)传统复位电路 b)改进复位电路 图 33 复位电路图 从原理上讲,一般采用上电复位电路。 这种电路的工作原理是:通电时,电容两端相当于时短路,于是 RESET 引脚上为高电平,然后电源通过电阻对电容充电, RESET端电压慢慢 下降,降到一定程度,即为低电平,单片机开始止常工作。 图 33 左图为传统的复位电路。 本课题使用的复位电路是由 22uF 的电容,开关按键, 1 千欧的电阻及 IN4148 二极管组成。 在满足单片机可靠复位的前提下,该复位电路的优点在于降低复位引脚的对地阻抗,可以显著增强单片机复位电路的抗干扰能力。 二极管可以实现快速释放电容电量的功能,满足短时间复位的要求。 既可以手动按键复位,也可上电自动复位。 如图 33 右图所示。 单片机时序就是 CPU 在执行命令时所需要控制信号的时间顺序。 单片机在执行指令时, CPU 首先要 到程序存储器中取出需要执行指令的指令码,然后对指令码译码,并由时序部件产生一系列控制信号去完成指令的执行。 这些控制信号在时间上的相互关系就是 CPU 时序。 CPU 发出的时序信号有两类。 一类用于片内各功能部件的控制,这类信号很多,但与本课题关系不大,故不作专门介绍。 另一类用于片外存储器或 I/O 端口的控制,需要通过器件的控制引脚送到片外,这部分时序对于分析本课题硬件电路原理至关重要。 AT89S52 单片机专门有两类可以访问对外存储器的指令。 一类是读片外 ROM 指令,本课题硬件电路没有涉及到片外 ROM,所以在此不作介 绍。 另一类是访问片外RAM 指令,由于本课题主要功能模块都是作为外部 RAM 来访问,所以在此介绍一下CPU 的访问片外 RAM 指令时序。 图 34 片外 RAM 读 /写时序 CPU 先将数据指针中的低八位地址数据送到 P0 口上,高八位地址数据送到 P2 口上,在第一个 ALE 的下降沿时锁存 P0 口地址。 CPU 在第一个 ALE 和第二个 ALE 信号之间使 RD/WR 有效,选中片外 RAM 工作。 然后 CPU 把从外部 RAM 中读出的数据经 P0 口送到 CPU 的累加器中或者把累加器中的数据经 P0 口送到外部 RAM 中,最后终止指令的执行。 A/D 模块设计 AD7715 简介 AD7715 是美国 ADI 公司生产的 16 位模数转换器。 它具有 %的非线性、片内可编程增益放大器、差动输入、三线串行接口、缓冲输入、输出更新速度可编程等特点。 适用于单通道低速小信号的采样应用,其功能框图如图 36 所示 [14]。 图 36 AD7715 的功能框图 AD7715 的引脚排列如图 37 所示,各引脚的功能如下: SCLK:串行时钟、逻辑输入; MCLK IN:器件的主时钟信号。 可由晶振提供,也可由与 CMOS 兼容的时钟驱动,此时 MCLK OUT 引脚悬空。 无论采用哪一种时钟,其频率必须是 1MHz 或; MCLK OUT:当器件的主时钟信号由晶振提供时此引脚与 MCLK 1N 引脚和晶振两引脚相连。 如果 MCLK IN 为外部时钟引脚, MCLK OUT 引脚能提供一个反向的时钟信号,供外电路使用; CS :片选信号,逻辑低有效; RESET :逻辑输入,低电平有效。 有效时,可将片内的控制逻辑、接口逻辑、校准系数、数字滤波器以及模拟调制器复位到上电状 态; AVDD:模拟正电源, AD77153 为 3V, AD77155 为 5V; AIN+、 AIN:模拟输入,分别为片内可编程增益放大器差动模拟输入的正、负端; REF IN(+):参考输入, AD7715 参考差动输入的正端,该端电位必须大于 REF IN(), REF IN(+)可连接在 AVDD 与 AGND 之间; REF IN():参考输入, AD7715 参考差动输入的负端, REF IN()可连接在 AVDD和 AGND 之间,但 REF IN()必须小于 REFIN(+); AGND:模拟地,正确操作时,其它引脚的电压相对 AGND 应不低于 30mV; DRDY :逻辑输出。 低电平表明来自 AD7715 数据寄存器新的输出字是有效的。 当完成全部 16 位的读操作时,此引脚变成高电平。 在输出更新期间,如果没有数据被读出,此引脚将持续 500 倍 Tclkin 时钟周期,然后返回高电平。 当 DRDY 为高时,不能进行读操作,或者说,当数据正在更新时,应当避免从数据寄存器中读数。 数据更新结束后, DRDY 将再次返回低电平; DOUT:从片内输出移位寄存器中读出串行数据的串行输出端。 此输出移位寄存器可含有来自设定寄存器、通讯寄存器或数据寄存器的信息,具体是哪一个寄存器,取决于通讯寄存器中的寄存器设定位; DIN:写到片内输入移位寄存器串行数据的串行输入端。 此数据是移到设定寄存器还是通讯寄存器,取决于通讯寄存器中的寄存器设定位; DVDD:数字电源,正常情况是 +3V 或 +5V; DGND:数字地。 S C L K1M C L K I N2M C L K O U T3R E S T5A I N +7A I N 8A V D D6A G N D11R E F +9R E F 10CS4D O U T13D I N14D R D Y12D G N D16D V D D31 5 9A D 77 15 图 37 AD7715 引脚图 AD7715 片内有四 个寄存器:通信寄存器、设置寄存器、测试寄存器和数据寄存器 [15]。 (1) 通讯寄存器, 8 位,可读写,写入的命令字决定下次操作是对哪个寄存器,是读还是写,并设置程控放大器的增益。 命令字格式如下: 0/DRDY ZERO RS1 RS0 R/W STBY G1 G0 0/ DRDY :写操作时此位必须为 0,如果写为 1,此片内寄存器的后续位不能被记录。 当读操作时,此位的 状态与 DRDY 的引脚具有相同的电平。 ZERO:应为 0,否则器件操作不正确。 RS1 和 RS0:用于寄存器选择,其方式如表 33 所列。 R/ W : 1 为读操作, 0 为写操作。 STBY: 1 为节电方式, 0 为正常方式。 G1 和 G0:用于设定增益值,其方式如表 34 所列。 表 33 寄存器选择 RS1 RS0 被选寄存器 0 0 通讯寄存器( 8 位) 0 1 设定寄存器( 8 位) 1 0 测试寄存器( 8 位) 1 1 数据寄存器( 16 位) 表 34 增益设定 (2)设定寄存器 MD1 MD0 CLK FS1 FS0 B/U BUF FSYNC 表 35 MD1 和 MD0。基于单片机的恒流电源的设计与实现
相关推荐
出波形,而图 8 e 为 R、 Y 两相联系输出的信号的差,它代表了逆变器输出的线电压 UUV。 当输出频率超过最大值 fM 时,经双边调制后的脉冲已开始合并,输出电压波由 SPWM 波方向转换,因而输出电压不再随输出频率成线性变化,如图 8 所示。 图 9 不同分频数下 fr 与 f 关系 图 10 开关频率 fr 与输出频率 f 的关系 HEF4752 输出的 SPWM 波的输出频率 f
就驱动晶体管导通的时间越长,这样加到压频转换器的电压也 就越大,电压越大, 则压频转换器输出的计数脉冲再单位时间也就越多,这样就相当于电机的电压越大,其转速也就会越快,我们再用单片机对压频转换器的输 出 脉冲 计数, PID 调节器就把这个计数脉冲和预先设定的 值进行比较,比设定值小,这样就会得到一个偏差,再把这个偏差加到 AD 的给定电压,这样就相当于加大了 PWM的占空比,要是比设定值大
顺利完成各项功能。 上电或复位后显示“ P.”提示符,此时按 对应的键 S2 便可开始计时。 在计数状态下,按下 对应的键 S3 即可实现暂停,按下 键 S4 可继续计数,在计数状态下按下 对应的键 S5 实现计数停止,在停止状态下按下 对应的键 S6,可实现计数清零。 程序仿真与结果 我们是在 Keil 软件里编写程序并编译通过才能被硬件电路所应用。 Keil 的功能比较强大
econd3=0。 } else { for(i=0。 ikeycount。 i++) { if(getps[i]!=ps[i]) { i=keycount。 errorflag=1。 rightflag=0。 second3=0。 goto a。 } } errorflag=0。 rightflag=1。 a: i=keycount。 } } temp=temp amp。 0x0f。
项命令,此时可以选择 stepover 、step into 和 step out 命令执行程序 (可以用快捷键 F F11 和ctrl+F11),执行的效果是单 句执行、进入子程序执行和跳出子程序执行。 在执行了 start / restart debuging 命令后,在 debug 菜单基于单片机的室内电热水器控制系统设计 10 的下面要出现仿真中所涉及到的软件列表和单片机的系统资源等
,一般情况下它们大多工作在 5V 甚至更低。 驱动电流在 mA 级以下。 而要把它用于一些大功率场合,比如继电器驱动,显然是不行的。 所以就要有一个环节来衔接,这个环节就是所谓的“功率驱动”。 继电器驱动就是一个典型的、简单的功率驱动 环节。 图中三极管 8050 有两个作用:一个是起放大作用,一个是起开关作用(严格来讲开关作用是放大作用的极限情况)。 P1 处连接的是单片机的 口。