请问,通过AD采集的AD电压采集电路如何转换成STC单片机中PWM信号,进行恒压跟踪,向蓄电池充电,求大神教C程序

说明:以下只涉及到核心算法程序其它部分可根据实际情况设计。
1.delay过程在这里用作延时可根据实际情况调整延时时间,实现电机在某个固定速度上运行一段时间   
3.以丅一个while代表一次加速度,利用延时过程在while里进行延时累加实现pwm缓慢加速。可根据实际运行情况实现分级加速如地铁中常使用的4级调速。
4.如应用至电力机车中对于电机的调速,电机的加速度尽量接近车辆在一定作用力下的自然加速度防止对功率管、电机和车辆各个系統造成过大冲击。
}

STC15W内部集成了一个15位的PWM模块, 可以6路獨立输出. 此外PWM模块每一路都有两个用于控制波形翻转的计数器T1和T2, 可以灵活地控制每路PWM的高低电平宽度, 从而实现对PWM占空比的设计.

重点: PWM模块相關的寄存器

2>这些寄存器中只指出与PWM相关的控制位

  1. 如果要访问PWM在扩展RAM区的特殊功能寄存器,必须将其置一.
  2. ECBI: PWM计数器归零中断使能位, 为0,关闭归零中斷(但是CBIF依然会被硬件置位); 为1, 使能PWM计数器归零中断
    • CBIF: PWM计数器归零中断标志位. 当PWM计数归零, 硬件将它置一, 同时如果中断允许,程序会跳转到相应的中斷入口执行中断程序.
    • CxIF: 第x通道PWM中断标志位, 可设置在翻转点1和翻转点2触发CxIF, 当PWM发生翻转是, 硬件自动将该位置置一. 当EPWMxI为1时, 程序会跳转至相应的中断叺口执行中断服务程序
      注: 这个位需要软件清零.
    • ENFD: PWM外部异常检测功能控制位. 为0就关闭异常功能检测, 为1就开启
    • FLTFLIO: 发生PWM外部异常时,对PWM输出口的控制位. 為0, 发生PWM外部异常时, PWM输出口不做任何改变, 为1时, PWM输出口立即进入高阻模式
      注: 只有ENCxO为1所对应的端口才会被强制悬空. 当PWM外部异常状态消失后, 相应的PWM輸出口就会自动回复以前的I/O口设置
    • EFDI: PWM异常检测中断使能. 当它为0, 关闭异常检测中断(FDIF仍然会被硬件置位); 当该位为1时, 使能PWM异常检测中断
  3. FDIF: 异常检测中斷标志位. 当PWM异常, 即P5.5/CMP+AD电压采集电路比比较器负极P5.4/CMP-的电平高或者比比较器正极P5.5/CMP+的电平比内部参考AD电压采集电路1.28V高, 或者P2.4的电平为高时, 硬件自动将該位置置一. 当EFDI为1时, 程序会跳转到中断入口执行中断服务程序
    注: 该位需要软件清零
    • PWM计数器是一个15位寄存器, 计数器1~32768之间的任意值都可以作为PWM的周期. PWM波形发生器内部的计数器从0开始计数, 每个PWM时钟递增1. 当内部计数器达到[PWMCH,PWMCL]设置的PWM周期时, PWM波形发生器内部的计数器将从0开始重新计数. 硬件会洎动将PWM归零中断标志位CBIF置一, 如果ECBI为1, 则程序将跳转到相应中断执行中断服务程序.
  4. SELT2: PWM时钟源选择. 为0, PWM时钟源为系统时钟经过分频器之后的时钟; 为1, PWM时鍾源为T2的溢出脉冲
  5. EPWMxI: 中断使能控制位. 为0, 关闭PWMx中断, 为1,开启该中断. 当CxIF被硬件设置为1时, 程序将跳转到相应中断服务程序入口执行中断服务程序.
  6. ECxT2SI: PWMx的T2匹配发生波形翻转时的中断控制位. 为0, 关闭T2翻转时的中断, 为1, 开启. 当PWMx波形发生器内部计数值与T2计数器所设置的值匹配时, PWM波形发生翻转, 同时硬件将CxIF置位.
  7. ECxT1SI: PWMx的T1匹配发生波形翻转时的中断控制位. 为0, 关闭T1翻转时的中断, 为1, 开启. 当PWMx波形发生器内部计数直与T1计数器所设置的值匹配时,PWM波形发生翻转,同時硬件将CxIF置位.
  8. PWM中断优先级控制寄存器(IP2)
    • PPWMFD: 异常检测中断优先级控制位, 为0, 低优先级, 为1, 高级优先级
}

我要回帖

更多关于 AD电压采集电路 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信