电子开发网

电子开发网电子设计 | 电子开发网Rss 2.0 会员中心 会员注册
搜索: 您现在的位置: 电子开发网 >> 电子开发 >> 单片机 >> 正文

51单片机输出PWM的两种方法

作者:佚名    文章来源:本站原创    点击数:    更新时间:2008-10-31

51系列单片机无PWM输出功能,可以采用定时器配合软件的方法输出。对精度要求不高的场合,非常实用。电路图见图一,采用了高速光隔(6N137)输出,并将PWM的信号倒相。

一、原理图
 
图一

二、固定脉宽PWM输出
用T0定时器完成PWM输出,脉宽固定:65536微妙。T0定时器设置成:16位定时器
PWM:
 
程序清单:(12MHz)
                     PwmData0     ;T0定时t1所需的定时初值(字)
PwmData1     ;T0定时t2所需的定时初值(字)
                     PwmF            ;PWM输出标志
;*********************************************************
                     setb tro  ;启动T0
                     。。。。。。
T0Int:;T0中断服务程序
                     JB  PwmF ,PwmOutH ;PWM输出未完成返回
                     Mov TH0,High(PwmData0)
Mov TL0,Low(PwmData0)
                     Setb tr0
                     Setb PwmF
Clr  p1.0  ;PWM输出脚
reti
    PwmOutH:
                            Setb p1.0
                            Clr tr0
                            Mov TH0,High(PwmData1)
Mov TL0,Low(PwmData1)
Setb tr0
Clr PwmF
reti
说明:在主程序中计算PwmData0、PwmData1的值。  

三、可变脉宽PWM输出
用T0定时器控制PWM的占空比,T1定时器控制脉宽(最大:65536微妙)。
T0、T1定时器设置成:16位定时器。
 
程序清单:(12MHz)
                     PwmData0     ;T0定时t1所需的定时初值(字)
PwmData1     ;T1定时T所需的定时初值(字)
;*********************************************************
                     setb tro  ;启动T0
                     setb tr1
                     。。。。。。
T0Int:;T0中断服务程序
                     Clr  tr0
                     setb  p1.0  ;PWM输出脚
reti
    T1Int:;T1中断服务程序
                            Clr  p1.0
                            Clr tr0
                            Clr tr1
Mov TH0,High(PwmData0)
Mov TL0,Low(PwmData0)
Mov TH1,High(PwmData1)
Mov TL1,Low(PwmData1)
Setb tr1
Setb tr0
reti
说明:在主程序中计算PwmData0、PwmData1的值。 

Tags:单片机编程,输出PWM,方法  
责任编辑:admin
  • 上一篇文章:
  • 下一篇文章:
  • 相关文章列表
    没有相关文章
    请文明参与讨论,禁止漫骂攻击,不要恶意评论、违禁词语。 昵称:
    1分 2分 3分 4分 5分

    还可以输入 200 个字
    [ 查看全部 ] 网友评论
    关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 在线帮助 - 文章列表
    返回顶部
    刷新页面
    下到页底
    晶体管查询