久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5011|回復: 2
打印 上一主題 下一主題
收起左側

由AT89C51單片機由L298控制的電機轉速控制思路(加減速和反轉)(pwm控制)

[復制鏈接]
跳轉到指定樓層
樓主
還有一些功能沒有實現,目前只有加減速和反轉,仿真是基于Proteus 和 Keil C做的,暫時不能放出代碼,不過可以說下我的思路。
增大占空比實現加速

減小占空比實現減速

正反轉我是把IN1和IN2的值互換(L298)
L298參數:

PWM波是由定時器產生,送到L298的使能端EA,通過in1和in2的值來控制正反轉
產生PWM的部分代碼:
void T0_time()interrupt 1         //計時0中斷,每0.1毫秒一次
{        
        TR0=0;//防止還沒跑完又進入下一次中斷
        TH0=(65536-100)/256;
        TL0=(65536-100)%256;
        
        num1++;
        if(num1>=100)//PWM波完整周期為10ms
        {
                num1=0;
        }
        
        if(num1<=num3)//設置占空比        
        {                                
                pmw1=1;
        }
        else
        {
                pmw1=0;
        }


        TR0=1;
}




原理圖:



仿真文件下載: 基于單片機的電機轉速控制.zip (23.25 KB, 下載次數: 40)

捕獲.PNG (570.72 KB, 下載次數: 37)

捕獲.PNG

捕獲1.PNG (624.14 KB, 下載次數: 27)

捕獲1.PNG

捕獲2.PNG (621.29 KB, 下載次數: 39)

捕獲2.PNG

捕獲4.PNG (587.91 KB, 下載次數: 43)

捕獲4.PNG
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:624978 發表于 2019-11-23 23:28 | 只看該作者
#include"reg51.h"
#define uchar unsigned char
#define uint unsigned int
sbit duan=P2^0;
sbit wei=P2^1;
sbit mc=P3^2; //外部脈沖
sbit pmw1=P2^2;                //EA
sbit pmw2=P2^3;                //IN1
sbit pmw3=P2^4;                //IN2
sbit Speed_high=P1^0;        //加速
sbit Speed_low=P1^1;        //減速
sbit Fan_turn=P1^2;     //反轉
uint count,num,num1,num3=50;
uint bai,shi,ge,zs;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x27,0x7f,0x6f,0x40,0x7c,0x39,0x5e,0x79,0x71};//段碼
uchar code weima[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//位碼
void Init_time();
void T0_time();
void T1_time();
void INT0_jishu();
void delay(uint jishi);//計時,以毫秒為單位
void display(uint bai,uint shi,uint ge);//顯示轉速
void main()
{
        Init_time();
        while(1)
        {
                display(bai,shi,ge);//顯示電機速度

                if(Speed_high==0)        //檢測加速按鈕
                {
                        delay(5);
                        if(Speed_high==0)
                        {
                                if(num3 >= 100)
                                        num3 = 100;
                                else
                                        num3=num3+10;                               
                                while(!Speed_high);//連續按鍵加速

                        }
                }
                 if(Speed_low==0) //檢測減速按鈕
                {
                        delay(5);
                        if(Speed_low==0)
                        {
                                if(num3 < 10)
                                        num3 = 0;
                                else
                                        num3=num3-10;
                                while(!Speed_low);//連續按鍵檢測
                        }
                }
                if(Fan_turn==0)        //檢測加速按鈕
                {
                        delay(5);
                        if(Fan_turn==0)
                        {
                                          pmw2=!pmw2;
                                          pmw3=!pmw3;
                                                               
                                while(!Fan_turn);//連續按鍵加速

                        }
                }
        }
}
//初始化設置
void Init_time()
{
        TMOD=0x11;
        pmw2=0;
        pmw3=1;
        TH1=(65536-50000)/256;
        TL1=(65536-50000)%256; //每50ms計數
        TH0=(65536-100)/256;
        TL0=(65536-100)%256;         //定時間隔為0.1ms,PWM
       
        ET0=1;
        TR0=1;                                //開定時器0       
        ET1=1;
        TR1=1;                                //開定時器1
       
        EX0=1;                    //外部中斷允許
        IT0=1;                                //設置下降觸發中斷
       
        EA=1;                             //全局中斷允許

}
//定時器0設置產生pwm波
void T0_time()interrupt 1         //計時0中斷,每0.1毫秒一次
{       
        TR0=0;
        TH0=(65536-100)/256;
        TL0=(65536-100)%256;
       
        num1++;
        if(num1>=100)//PWM波完整周期為10ms
        {
                num1=0;
        }
       
        if(num1<=num3)//設置占空比       
        {                               
                pmw1=1;
        }
        else
        {
                pmw1=0;
        }
        //pmw2=0;

        TR0=1;
}
//定時器計數50ms,采集速度
void T1_time()interrupt 3       
{       
        TR1=0;
        TH1=(65536-50000)/256;
        TL1=(65536-50000)%256;
        num++;
        if(num==20)                          //每1秒測速一次
                {       
                        num=0;
                        EX0=0;                         //關外部中斷
                        zs=60*count/24;         //求出速度
                        bai=zs/100;
                        shi=zs%100/10;
                        ge=zs%10;
                        count=0;                         //脈沖計數歸零
                        EX0=1;
                }
        TR1=1;
}
//外部中斷函數
void INT0_jishu() interrupt 0  using 1           //外部脈沖計數
{
        count++ ;
}
//延時函數
void delay(uint jishi)
{
  uint i,j;
  for(i=jishi;i>0;i--)
    for(j=110;j>0;j--);
}
//數碼管顯示函數
void display(uint bai,uint shi,uint ge)
{
        duan=0;
        wei=0;

        duan=1;                        //百位顯示
        P0=table[bai];
        duan=0;
        delay(1);
        P0=0x0;
        wei=1;
        P0=weima[5];
        wei=0;
        delay(1);
        P0=0x0;

        duan=1;                  //十位顯示
        P0=table[shi];
        duan=0;
        delay(1);
                P0=0x0;
        wei=1;
        P0=weima[6];
        wei=0;
        delay(1);
        P0=0x0;

        duan=1;                        //個位顯示
        P0=table[ge];
        duan=0;
        delay(1);
  P0=0x0;
        wei=1;
        P0=weima[7];
        wei=0;
        delay(1);
  P0=0x0;
}
回復

使用道具 舉報

板凳
ID:656893 發表于 2019-12-10 22:36 | 只看該作者
P0=0X0啥意思
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 黄网站色大毛片 | 伊人网在线综合 | 国产日韩欧美综合 | 一二三在线视频 | 久久久久久精 | 国产精品国产三级国产a | 久久久久久国产精品免费免费狐狸 | 日韩精品国产精品 | 在线观看国产三级 | 久久9热 | 亚洲午夜电影 | 久久精品aaa | 久久久蜜桃 | 免费能直接在线观看黄的视频 | 精品国产黄a∨片高清在线 成人区精品一区二区婷婷 日本一区二区视频 | 日韩网站免费观看 | 国产精品视频一 | 精品国产女人 | 美女国产 | 日本电影韩国电影免费观看 | 日韩av电影院| 高清一区二区三区 | 久久久www成人免费无遮挡大片 | 成人在线亚洲 | 福利影院在线看 | 三级视频国产 | 亚洲另类视频 | 久久成人精品视频 | 天天综合干 | 一区二区成人 | 亚洲一区二区三区免费视频 | av网址在线 | 一级毛片视频在线 | 国产色婷婷精品综合在线播放 | 久久久视 | 日韩毛片视频 | 久久国产精品偷 | 超碰av在线 | 亚洲高清在线 | 精品国模一区二区三区欧美 | 久久久激情 |