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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

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

查看數: 5030 | 評論數: 2 | 收藏 1
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發布時間: 2019-10-21 14:59

正文摘要:

還有一些功能沒有實現,目前只有加減速和反轉,仿真是基于Proteus 和 Keil C做的,暫時不能放出代碼,不過可以說下我的思路。 增大占空比實現加速

回復

ID:656893 發表于 2019-12-10 22:36
P0=0X0啥意思
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;
}

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产欧美精品一区二区色综合 | 亚洲男人天堂 | 日韩精品免费在线观看 | 国产高潮好爽受不了了夜色 | h视频在线观看免费 | 久久久99国产精品免费 | 免费人成激情视频在线观看冫 | 亚洲国产精品一区二区久久 | 亚洲影音先锋 | 人操人人 | 国产视频欧美 | 久久精品久久久久久 | 日本三级网站在线观看 | 日韩一区二区久久 | 成人国产免费视频 | 国产激情91久久精品导航 | 久久久精品 | 亚洲精品888 | a视频在线| 亚洲高清视频一区二区 | 日韩欧美专区 | 狼人伊人影院 | 欧美日韩18| 美女爽到呻吟久久久久 | 精品区| 激情欧美一区二区三区中文字幕 | 免费一级片 | 色婷婷综合久久久中字幕精品久久 | 国产精品欧美一区二区三区不卡 | 久久精品国产99国产精品亚洲 | 妹子干综合 | 雨宫琴音一区二区在线 | 国产精品成人久久久久a级 久久蜜桃av一区二区天堂 | 日本在线免费观看 | 99久久免费观看 | 国产精品久久久久久婷婷天堂 | 国产高潮av | 国产精品久久精品 | 高清一区二区 | 欧美成人精品二区三区99精品 | 成人精品一区二区三区中文字幕 |