您现在的位置: 范文先生网 >> 理工论文 >> 电子通信论文 >> 正文

用89C51和8254-2实际步进式PWM输出

时间:2007-1-20栏目:电子通信论文

且不需要外部的信号源输入,硬件电路简化;通过软件的处理可以实现连续(1Hz~3kHz)PWM波的输出。本设计中将要输出的PWM波分为3段,分别由8254-2中的3个定时/计数器输出,门控由P2.2、P2.3、P2.4分别加以控制。在1~20Hz的输出时,采用定时器0,计数频率为104Hz,最大计数为104,最小计数为500符合要求,21~200Hz的输出中,采用定时器1,计数频率为105Hz,最大计数为4762,最小计数为500;在201Hz~3kHz的输出中,采有定时器2,计数频率为107Hz,最大计数为49751,满足二进制计数的范围,最小计数为3333。这些计数值可由单片机89C51[2]送给8254-2的数据输入端,通过除法运算来得到这些计数值,由除法运算得到商。所得到的商去程序指令占用的时间即为所需要的计数值。采用8254-2的3个定时器的输出经过1个或门作为CD4046锁相环的输入,同时经过1个非门进入89C51的INT1口,申请下降沿中断;CD4046锁相环输出所需的PWM。
  
  为了防止程序进入死循环,增加了外部的硬件看门狗定时器IMP813L[3],其内部的看门狗定时器监控UP/UC的工作。如果在1.6s内未检测到其工作,内部的定时器将使看门狗输出WDO处于低电平状态,WDO将保持低电平直到在WDI检测到UP/UC的工作。将WR和WDO连接可使看门狗超时产生复位。
  
  具体硬件电路如图3所示。
  
  2软件设计
  
  软件主要由3部分组成:主程序、键盘扫描程序、中断处理程序。主程序流程如图4所示。
  
  主要地址分配如表1所列。
  
  表1地址分配
  
  30H~31H显示频率的高、低8位32H~34H计数时钟频率的高、中、低8位35H~36H8254-2所需计数值的高、低8位37H~38H缓存显示频率的高、低8位(十六进制)40H~43H显示缓存区地址(BCD数)
  (1)中断处理过程
  
  当89C51检测到有INT1中断时,进入中断处理程序中,首先检测30H和31H中的内容是否大于20;若不大于20,则门控为P2.2,选中8254-2,选择计数器0、方式3、16位二进计数,送上次计算出来的这次所需要的计数值给8254-2,将104送入32H、33H中作为除法运算中的被除数,而30H、31H的内容作为除法运算中的除数,调用除法运算子程序将所得的商送入32H、33H,余数放在35H、36H中。比较余数是否大于除数的一半,若大于除数的一半则所得的商加1,否则商不变放在32H、33H中。假设程序指令所占用的时间为X/200(其中X为中断程序中单指令周期的个数),将32H、33H中的内容减去X/200,即为下次所要送入8254-2的计数值,放在35H、36H中,返回中断;若大于20,则门控为P2.3,选中8254-2,选择计数器1、方式3,送上次计算出来的这次所需的计数值给8254-2,将105送入32H、33H、34H中作为除法运算中的被除数,而30H、31H中的内容作为除法运算中的除数,调用除法运算子程序,将所得的商送入32H、33H中,余数放在35H、36H中。比较余数是否大于除数的一半,若大于除的一半则所得的商加1,否则商不变。假设程序指令所占用的时间为X/20,将32H、33H中的内容减去X/20即为下次所要送入825

上一页  [1] [2] [3] 下一页

下页更精彩:1 2 3 4 下一页