OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5184|回复: 2

51单片机 怎么用定时器输出方波从宽到窄

[复制链接]

7

主题

81

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
288
金钱
288
注册时间
2017-7-19
在线时间
85 小时
发表于 2021-7-30 09:20:09 | 显示全部楼层 |阅读模式
5金钱
51单片机 怎么用定时器输出方波从宽到窄,单片机用定时器输出,不借助按键调速。  用来控制步进电机转速,给定高速脉冲时无法启动,必须有一个加速的过程。

#include<reg52.h>

//宏定义
//***************************************************************
#define uchar unsigned char
#define uint unsigned int
#define TERM 10//周期为10
//***************************************************************

//管脚定义
//***************************************************************



sbit ZHENGKEY = P2^4;//正转

sbit KUAIZHENGKEY = P2^5;//快正转

sbit FANKEY = P2^6; //反转

sbit DIR = P0^1; //方向
sbit EN = P0^2;  //使能
sbit CP = P0^3; // 脉冲

//***************************************************************

//变量定义
//***************************************************************


//***************************************************************





//函数定义
//***************************************************************
void sysinit(void);//初始化
void delayms(unsigned int Num);//延时函数
void T0_time(void);


//***************************************************************

//主函数
//***************************************************************
void main()
{
    static bit temp;
    ZHENGKEY = 1;
    FANKEY = 1;

    sysinit();
    temp = 0;
    CP = 1;

     while(1)
    {   
        jianshu();
        
        if (ZHENGKEY == 0) //正转
        {
            delayms(10);
            if (ZHENGKEY == 0)
            {
                EN = 1;
              TR0=1;
                DIR = 1;
            }
               
        }
      else if (KUAIZHENGKEY == 0)    //快正转
        {
            delayms(10);
            if (KUAIZHENGKEY == 0)
            {
                EN = 1;
                TR0=1;
                DIR = 1;               
            }
        }        
        else if (FANKEY == 0)    //反转
        {
            delayms(10);
            if (FANKEY == 0)
            {
                EN = 1;
                TR0=1;
                DIR = 02;
            }
        }
        else
            {
             EN = 0;
             TR0=0;
            }
    }
}

void sysinit(void)
{
    TMOD = 0x02;
  TH0=(65536-80)/256;         
    TL0=(65536-80)%256;

    EA=1;
    ET0=1;
    TR0=0;   
}
void T0_time()interrupt 1
{   

    TH0=(65536-80)/256;         
    TL0=(65536-80)%256;

   

         

}
void jianshu()
{   

      
}

void delayms(unsigned int Num)
{
    unsigned int i,j;
    for(i=0;i<Num;i++)
    {
     for(j=0;j<300;j++);
    };
}


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2021-7-31 02:33:04 | 显示全部楼层
回复

使用道具 举报

7

主题

81

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
288
金钱
288
注册时间
2017-7-19
在线时间
85 小时
 楼主| 发表于 2021-8-3 11:45:12 | 显示全部楼层
本帖最后由 tianxiazone 于 2021-8-3 11:51 编辑

步进电机波形图
捕获.PNG
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 02:00

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表