中国IEEE
关于我们 | 会员登陆 | 收藏本站 | 留 言 薄
 

 | 网站首页 | 电子知识 | 单片机知识 | 电路设计 | 微电子技术 | SCADA系统 | 资源下载 | 给我留言 | 视频教程 | ieee | 
热门搜索关键字: 单片机教程 | 三极管微电子 |  C语言汇编语言SCADA元器件IEEE |
cnieee.com baidu
栏目导航  
栏目更新推荐  
·一个51产生PWM的演示程序
·Keil C 编译器常见警告与错误信息的…
·巧妙用Delphi做数制转换(二进制/十…
·一些值得我们学习的单片机编程经验
·C51与汇编混合编程
·经典的防抖动键C51源程序
·51单片机实用子程序库
·8051系列单片机BASIC语言开发
点击TOP(10)  
  • 此栏目下没有热点文章
  • 图片文章  

    用单片机控制步进电…

    Project0502-单片机…

    也谈LED驱动(转载)

    基于单片机AT89C51的…
     
    您现在的位置: 中国IEEE中国电气电子工程师网 >> 单片机知识 >> 学习心得 >> 正文

    一个51产生PWM的演示程序
    文章来源:中国IEEE整理 点击数: 更新时间:2008-7-10 【字体:
    (欢迎光临中国IEEE,希望本文能对您有所帮助http://www.cnieee.com)


    相关文章:

    51单片机485总线应用中易出现的问题
    红外遥控及C语言51红外遥控解码程序
    LCD驱动芯片1335控制器C51源程序
    Keil C51和 标准C语言的异同…

  • 上一个文章:

  • 下一个文章: 没有了
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
     
    关于〖一个51产生PWM的演示程序〗的最新评论:

    这是一个51产生PWM的演示程序

    其中P1.3 P1.4是两个输出,这个程序比较匆忙,没有严格验证,可能有错,如有错误请指正。


    /*****************************************************************************
    * 程序名称:PWM占空比调整演示程序                                            *
    * 编写时间:2005.9.15 23:30分                                                *
    * 程序版本:1.0                                                              *
           *
    *                                                                            *
    ******************************************************************************
    *程序思路说明:                                                              *
    *                                                                            *
    *关于频率和占空比的确定,对于12M晶振,假定PWM输出频率为1KHZ,这样定时中断次数 *
    *设定为C=10,即0.01MS中断一次,则TH0=FF,TL0=F6;由于设定中断时间为0.01ms,这样*
    *可以设定占空比可从1-100变化。即0.01ms*100=1ms                               *
    ******************************************************************************/
    #i nclude <REGX51.H>

    #define uchar unsigned char     
    /*****************************************************************************
    * TH0和TL0是计数器0的高8位和低8位计数器,计算办法:TL0=(65536-C)%256;         *
    * TH0=(65536-C)/256,其中C为所要计数的次数即多长时间产生一次中断;TMOD是计数器*
    * 工作模式选择,0X01表示选用模式1,它有16位计数器,最大计数脉冲为65536,最长时 *
    * 间为1ms*65536=65.536ms                                                     *
    ******************************************************************************/
    #define V_TH0  0XFF                 
    #define V_TL0  0XF6                 
    #define V_TMOD 0X01                 

    void init_sys(void);            /*系统初始化函数*/
    void Delay5Ms(void);

    unsigned char ZKB1,ZKB2;

    void main (void)
    {
    init_sys();
      ZKB1=40;            /*占空比初始值设定*/
      ZKB2=70;            /*占空比初始值设定*/
      while(1)
      {
           if (!P1_1) //如果按了+键,增加占空比
          {
           Delay5Ms();
           if (!P1_1)
             {
             ZKB1++;
             ZKB2=100-ZKB1;
             }
          }

           if (!P1_2) //如果按了-键,减少占空比
          {
           Delay5Ms();
           if (!P1_2)
             {
             ZKB1--;
             ZKB2=100-ZKB1;
             }
          }
    /*对占空比值限定范围*/
    if (ZKB1>99) ZKB1=1;
    if (ZKB1<1) ZKB1=99;
      }
    }


    /******************************************************
    *函数功能:对系统进行初始化,包括定时器初始化和变量初始化*/
    void init_sys(void)            /*系统初始化函数*/
    {
      /*定时器初始化*/
      TMOD="V"_TMOD;
      TH0=V_TH0;
      TL0=V_TL0;
      TR0=1;
      ET0=1;
      EA="1";
    }


    //延时
    void Delay5Ms(void)
    {
    unsigned int TempCyc = 1000;
    while(TempCyc--);
    }

    /*中断函数*/
    void timer0(void) interrupt 1 using 2
    {
    static uchar click="0";                  /*中断次数计数器变量*/
    TH0=V_TH0;                                    /*恢复定时器初始值*/
    TL0=V_TL0;
    ++click;
    if (click>=100) click="0";

    if (click<=ZKB1)      /*当小于占空比值时输出低电平,高于时是高电平,从而实现占空比的调整*/
      P1_3=0;
    else
      P1_3=1;

    if (click<=ZKB2)                       
      P1_4=0;
    else
      P1_4=1;

    }

    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明网站地图 | 名站导航 | 管理登录 | 
    本站资源部分来自互联网,如侵权,将予以删除; 欢迎同类网站做友情链接,QQ留言单片机交流群:14084521(满)59905828,2786387

    中国IEEE 中国电气电子工程师网 版权所有 鲁ICP备08006092号