搜索

直流电机的变速测速

[复制链接]
2236|9
手机看帖
扫描二维码
随时随地手机跟帖
wangzsa|  楼主 | 2021-9-12 14:43 | 显示全部楼层 |阅读模式
要求:(1)直流电机能正转、反转控制;
             (2)可进行转速控制(至少10档);
           (3)对转速测量和显示;并能进行转速的设定;   
             (4)每2人一组,自由选择搭档;
本人学生,自己初学习51单片机,上网求助,如能解决,不胜感谢

使用特权

评论回复
llljh| | 2021-9-12 14:44 | 显示全部楼层
你自己一点都没试下吗

使用特权

评论回复
renyaq| | 2021-9-12 14:47 | 显示全部楼层

写了如下代码,可以正反转,可以调速,不知怎么测速,而且调

#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
void delay (uchar);
sbit pwm1=P2^0;               //通道1                反转控制                        
sbit pwm2=P2^1;                         //通道2                正转控制                                
sbit jia_key=P3^6;                 //加速s4
sbit jian_key=P3^7;                 //减速s5
sbit trun_key=P3^5;                 //转向s3
sbit dula=P2^6;
sbit wela=P2^7;
uchar num=50,flag=1,time=0,temp=0;
/*uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void dispaly()
{



        dula=0;
        P0=table[show_num];
        dula=1;
        dula=0;        
        wela=0;
        P0=0xfe;
        wela=1;
        wela=0;
        delay(5);



        P0=table[0];
        dula=1;
        dula=0;
        P0=0xfd;
        wela=1;
        wela=0;        
        delay(5);

        P0=table[0];
        dula=1;
        dula=0;
        P0=0xfb;
        wela=1;
        wela=0;        
        delay(5);

        P0=table[0];
        dula=1;
        dula=0;
        P0=0xf7;
        wela=1;
        wela=0;        
        delay(5);
        
                 
        
}         */
void biansu()
{
        if(jia_key==0)
        {
                delay(2);
                if(jia_key==0)
                {
                         num+=10;
                        if(num>=100)
                        {
                                num=100;
                        }        
                }
                while(!jia_key);                //松开,就跳出
        }


        if(jian_key==0)
        {
                 delay(2);
                if(jian_key==0)
                {
                        num-=10;
                        if(num<=0)
                        {
                                num=0;
                        }
                        
                }
                while(!jian_key);                         //松开,就跳出
        }
}
void zhuangxiang ()
{
        if(trun_key==0)
        {
                delay(2);
                if(trun_key==0)
                {
                         flag=~flag;
//                        temp=~temp;
                }
                while(!trun_key);                 //松开按键,条件满足,跳出
        }        
        
}
void main()
{                  
                TMOD=0x01;
                TH0=(65536-10)/256;
                TL0=(65536-10)%256;            //10微秒中断一次
                EA=1;                                        //打开总中断
                 ET0=1;                                        //打开定时器 0
                TR0=1;                                        //启动定时器0
        while(1)                                        //等待中断发生
        {

                zhuangxiang ();                                
                biansu();
        }
}
void delay(uchar m)                //延时m毫秒
{
        uint i,j;
        for(i=m;i>0;i--)
                for(j=110;j>0;j--);
}
void T0_time()interrupt 1        //10微秒中断一次
{
        TR0=0;                          //关闭定时器0
        TH0=(65536-10)/256;
        TL0=(65536-10)%256;
        TR0=1;                                        //打开定时器0
        if(flag==1)                                //电机正转
        {
                 pwm1=0;
//                pwm2=1;           
                time++;        
        if(time>=100)
                 time=0;
        if(time<num)
                pwm2=1;
        else
                pwm2=0;
        }

        
//        else
        if(flag==0xfe)                                                                        //电机反转
        {                                                                                
                pwm2=0;        
//                pwm1=1;                                                                                                         
                time++;               
                if(time>=100)
                         time=0;
                if(time<num)
                         pwm1=1;        
                else
                        pwm1=0;
        }
        
         
}

使用特权

评论回复
jiajs| | 2021-9-12 14:48 | 显示全部楼层
用8051 ISP 编程器U2 对MA803进行烧写,为什么硬件选项是不可选的,那应该是选用外部晶振还是内部晶振。

使用特权

评论回复
zhanghqi| | 2021-9-12 14:50 | 显示全部楼层
用MA803内部PWM能否产生38K的红外波?

使用特权

评论回复
zwll| | 2021-9-12 14:51 | 显示全部楼层
单片机外振多少

使用特权

评论回复
ousj| | 2021-9-12 14:52 | 显示全部楼层
8M

使用特权

评论回复
dingy| | 2021-9-12 14:54 | 显示全部楼层
不能

使用特权

评论回复
xxrs| | 2021-9-12 14:54 | 显示全部楼层
对,最多只能做到31.25K

使用特权

评论回复
wangzsa|  楼主 | 2021-9-12 14:56 | 显示全部楼层
我知道了,结贴啦

使用特权

评论回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 我要提问 投诉建议 申请版主

本版活跃用户

优质原创写原创,赢大奖

编辑推荐

  • 21小跑堂 打赏20.00元   2天前

    打赏帖:#申请原创# @21小跑堂@21小跑堂@21小跑堂 大 ...

  • 21小跑堂 打赏10.00元   2天前

    打赏帖:得到打赏,

  • 21小跑堂 打赏10.00元   2天前

    打赏帖:希望我的问题都能回答

  • 21小跑堂 打赏4.00元   2天前

    打赏帖:得到打赏,

  • 21小跑堂 打赏10.00元   2天前

    打赏帖:得到打赏,

  • 21小跑堂 打赏10.00元   2天前

    打赏帖:参加欧姆龙在线研讨会

  • 21小跑堂 打赏10.00元   2天前

    打赏帖:得到打赏,

  • 21小跑堂 打赏10.00元   2天前

    打赏帖:本次讲座问题截图

  • 21小跑堂 打赏10.00元   2天前

    打赏帖:学习学习再学习

  • 21小跑堂 打赏10.00元   2天前

    打赏帖:得到打赏,

  • 21小跑堂 打赏10.00元   2天前

    打赏帖:5

  • 21小跑堂 打赏10.00元   2天前

    打赏帖:得到打赏,

  • 1 火星国务卿 得到打赏 ¥425.00
  • 2 yanzhengxin1 得到打赏 ¥300.00
  • 3 gaoyang9992006 得到打赏 ¥265.00
  • 4 Gavin3389 得到打赏 ¥225.00
  • 5 13426257085 得到打赏 ¥200.00
  • 6 呐咯密密 得到打赏 ¥185.00
  • 7 两只袜子 得到打赏 ¥155.00
  • 8 yangjiaxu 得到打赏 ¥155.00
  • 9 cr315 得到打赏 ¥150.00
  • 10 elephant00 得到打赏 ¥150.00
在线客服 快速回复 返回顶部 返回列表