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

標(biāo)題: 由AT89C51單片機(jī)由L298控制的電機(jī)轉(zhuǎn)速控制思路(加減速和反轉(zhuǎn))(pwm控制) [打印本頁(yè)]

作者: wuqiu163    時(shí)間: 2019-10-21 14:59
標(biāo)題: 由AT89C51單片機(jī)由L298控制的電機(jī)轉(zhuǎn)速控制思路(加減速和反轉(zhuǎn))(pwm控制)
還有一些功能沒(méi)有實(shí)現(xiàn),目前只有加減速和反轉(zhuǎn),仿真是基于Proteus 和 Keil C做的,暫時(shí)不能放出代碼,不過(guò)可以說(shuō)下我的思路。
增大占空比實(shí)現(xiàn)加速

減小占空比實(shí)現(xiàn)減速

正反轉(zhuǎn)我是把IN1和IN2的值互換(L298)
L298參數(shù):

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


        TR0=1;
}




原理圖:



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

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

捕獲.PNG

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

捕獲1.PNG

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

捕獲2.PNG

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

捕獲4.PNG

作者: wuqiu163    時(shí)間: 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;     //反轉(zhuǎn)
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);//計(jì)時(shí),以毫秒為單位
void display(uint bai,uint shi,uint ge);//顯示轉(zhuǎn)速
void main()
{
        Init_time();
        while(1)
        {
                display(bai,shi,ge);//顯示電機(jī)速度

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

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

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

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

        TR0=1;
}
//定時(shí)器計(jì)數(shù)50ms,采集速度
void T1_time()interrupt 3       
{       
        TR1=0;
        TH1=(65536-50000)/256;
        TL1=(65536-50000)%256;
        num++;
        if(num==20)                          //每1秒測(cè)速一次
                {       
                        num=0;
                        EX0=0;                         //關(guān)外部中斷
                        zs=60*count/24;         //求出速度
                        bai=zs/100;
                        shi=zs%100/10;
                        ge=zs%10;
                        count=0;                         //脈沖計(jì)數(shù)歸零
                        EX0=1;
                }
        TR1=1;
}
//外部中斷函數(shù)
void INT0_jishu() interrupt 0  using 1           //外部脈沖計(jì)數(shù)
{
        count++ ;
}
//延時(shí)函數(shù)
void delay(uint jishi)
{
  uint i,j;
  for(i=jishi;i>0;i--)
    for(j=110;j>0;j--);
}
//數(shù)碼管顯示函數(shù)
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;                        //個(gè)位顯示
        P0=table[ge];
        duan=0;
        delay(1);
  P0=0x0;
        wei=1;
        P0=weima[7];
        wei=0;
        delay(1);
  P0=0x0;
}
作者: 653247108    時(shí)間: 2019-12-10 22:36
P0=0X0啥意思




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 日韩在线免费 | 999精品视频 | 黄色片亚洲 | 久久精品国产一区二区电影 | 成人在线视频网站 | 国产成人精品久久二区二区 | 一区二区三区不卡视频 | 在线观看视频91 | 亚洲色综合 | 国产亚洲精品综合一区 | 2018天天干天天操 | 成人免费在线观看视频 | 欧美三级在线 | 性高湖久久久久久久久 | 高清黄色网址 | 亚洲精品一区二区冲田杏梨 | 粉嫩av| 国产精品777一区二区 | a级片www| 欧美日韩亚洲一区 | 国产成人精品午夜视频免费 | 欧美激情99 | 成人日韩| 丝袜 亚洲 欧美 日韩 综合 | 国产精品视频一二三区 | 一级毛片在线播放 | 色吧综合| 91就要激情 | 亚洲一区二区三区视频免费观看 | 精品中文在线 | 91丨九色丨国产在线 | 欧美精品在线免费 | 久草视频在线播放 | 91麻豆蜜桃一区二区三区 | 国产精品视频久久 | 四虎永久在线精品免费一区二 | 成人国产在线视频 | 福利网站在线观看 | 亚洲va欧美va人人爽午夜 | 五月天国产 | 自拍偷拍精品 |