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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

求助,電機角度測量

[復制鏈接]
回帖獎勵 200 黑幣 回復本帖可獲得 200 黑幣獎勵! 每人限 1 次
跳轉到指定樓層
樓主
ID:272159 發表于 2018-1-10 09:38 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
利用單片機控制伺服電機轉動并測量轉動角度,原理圖和程序
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:326699 發表于 2018-5-14 16:19 | 只看該作者
#include "reg52.h"

int delay();
void inti_lcd();
void show_lcd(int);
void cmd_wr();
void ShowState();
void clock(unsigned int Delay) ;
void DoSpeed();       //¼ÆËãËù¶è
//Õy×aÖμ
#define RIGHT_RUN 1
//·′×aÖμ
#define LEFT_RUN 0
sbit RS=0xA0;
sbit RW=0xA1;
sbit E=0xA2;

char SpeedChar[]="SPEED(n/min):";
char StateChar[]="RUN STATE:";
char STATE_CW[]="CW";
char STATE_CCW[]="CCW";
char SPEED[3]="050";
unsigned int RunSpeed=50;                //Ëù¶è
unsigned char RunState=RIGHT_RUN;  //ÔËDD×′ì¬
main()
{
       
        /*¶¨ê±Æ÷éèÖÃ*/
        TMOD=0x66;            //¶¨ê±Æ÷0£¬1¶¼Îa¼Æêy·½ê½£»·½ê½2£»
        EA=1;                        //¿aÖD¶Ï
       
        TH0=0xff;                //¶¨ê±Æ÷03õÖμFFH£»
        TL0=0xff;
        ET0=1;
        TR0=1;       
       
        TH1=0xff;                //¶¨ê±Æ÷13õÖμFFH£»
        TL1=0xff;
        ET1=1;
        TR1=1;
          
        IT0=1;                        //Âö3å·½ê½
        EX0=1;                        //¿aía2¿ÖD¶Ï0:¼óËù
        IT1=1;                        //Âö3å·½ê½
        EX1=1;                        //¿aía2¿ÖD¶Ï1:¼õËù
   
    inti_lcd();
    DoSpeed();      
    ShowState();
    while(1)
    {
      clock(RunSpeed);
      P0=0x01;
    }
   
}

//¶¨ê±Æ÷0ÖD¶Ï3ìDò:Õy×a
void t_0(void) interrupt 1
{
        RunState=RIGHT_RUN;       
    P0=1;
    P1=0x01;
    cmd_wr();
    ShowState();
}


//¶¨ê±Æ÷1ÖD¶Ï:·′×a
void t_1(void) interrupt 3
{
        RunState=LEFT_RUN;
    P0=0;
    P1=0x01;
    cmd_wr();
    ShowState();
   
}

//ÖD¶Ï0:¼óËù3ìDò
void SpeedUp() interrupt 0
{   
       if(RunSpeed>=12)
          RunSpeed=RunSpeed-2;
       DoSpeed();
       P1=0x01;
       cmd_wr();
       ShowState();
              
}

//ÖD¶Ï1:¼õËù3ìDò
void SpeedDowm() interrupt 2
{   
   
    if(RunSpeed<=100)
        RunSpeed=RunSpeed+2;
    DoSpeed();
    P1=0x01;
    cmd_wr();
    ShowState();
        

}

int delay()         //ÅD¶ÏLCDêÇ·ñÃ|
{   
    int a;
start:
   
    RS=0;
    RW=1;
    E=0;
    for(a=0;a<2;a++);
    E=1;
    P1=0xff;
    if(P1^7==0)
       return 0;
    else        
       goto start;

}

void inti_lcd()  //éèÖÃLCD·½ê½
{

   P1=0x38;
   cmd_wr();
   delay();

   P1=0x01;     //Çå3y
   cmd_wr();
   delay();

   P1=0x0f;
   cmd_wr();
   delay();

   P1=0x06;
   cmd_wr();
   delay();

   P1=0x0c;
   cmd_wr();
   delay();
}

void cmd_wr()           //D′¿ØÖÆ×Ö
{
   RS=0;
   RW=0;
   E=0;
   E=1;
}

void show_lcd(int i)   //LCDÏÔê¾×ó3ìDò
{  
   P1=i;
   RS=1;
   RW=0;
   E=0;
   E=1;

}

void ShowState()    //ÏÔê¾×′ì¬óëËù¶è
{
    int i=0;
    while(SpeedChar[i]!='\0')
    {
       delay();
       show_lcd(SpeedChar[i]);
       i++;
    }
   
    delay();
    P1=0x80 | 0x0d;
    cmd_wr();

    i=0;
    while(SPEED[i]!='\0')
    {
       delay();
       show_lcd(SPEED[i]);
       i++;
    }

    delay();
    P1=0xC0;
    cmd_wr();

    i=0;
    while(StateChar[i]!='\0')
    {
       delay();
       show_lcd(StateChar[i]);
       i++;
    }

    delay();
    P1=0xC0 | 0x0A;
    cmd_wr();

    i=0;
    if(RunState==RIGHT_RUN)
        while(STATE_CW[i]!='\0')
        {
          delay();
          show_lcd(STATE_CW[i]);
          i++;
        }
    else
       while(STATE_CCW[i]!='\0')
        {
          delay();
          show_lcd(STATE_CCW[i]);
          i++;
        }

}
void clock(unsigned int Delay)   //1msÑóê±3ìDò
{  unsigned int i;
   for(;Delay>0;Delay--)
    for(i=0;i<124;i++);
     
}

void DoSpeed()
{
    SPEED[0]=(1000*6/RunSpeed/100)+48;
    SPEED[1]=1000*6/RunSpeed%100/10+48;
    SPEED[2]=1000*6/RunSpeed%10+48;
}


這是程序
回復

使用道具 舉報

板凳
ID:326699 發表于 2018-5-14 16:22 | 只看該作者
#include "reg52.h"

int delay();
void inti_lcd();
void show_lcd(int);
void cmd_wr();
void ShowState();
void clock(unsigned int Delay) ;
void DoSpeed();       //¼ÆËãËù¶è
//Õy×aÖμ
#define RIGHT_RUN 1
//·′×aÖμ
#define LEFT_RUN 0
sbit RS=0xA0;
sbit RW=0xA1;
sbit E=0xA2;

char SpeedChar[]="SPEED(n/min):";
char StateChar[]="RUN STATE:";
char STATE_CW[]="CW";
char STATE_CCW[]="CCW";
char SPEED[3]="050";
unsigned int RunSpeed=50;                //Ëù¶è
unsigned char RunState=RIGHT_RUN;  //ÔËDD×′ì¬
main()
{
       
        /*¶¨ê±Æ÷éèÖÃ*/
        TMOD=0x66;            //¶¨ê±Æ÷0£¬1¶¼Îa¼Æêy·½ê½£»·½ê½2£»
        EA=1;                        //¿aÖD¶Ï
       
        TH0=0xff;                //¶¨ê±Æ÷03õÖμFFH£»
        TL0=0xff;
        ET0=1;
        TR0=1;       
       
        TH1=0xff;                //¶¨ê±Æ÷13õÖμFFH£»
        TL1=0xff;
        ET1=1;
        TR1=1;
          
        IT0=1;                        //Âö3å·½ê½
        EX0=1;                        //¿aía2¿ÖD¶Ï0:¼óËù
        IT1=1;                        //Âö3å·½ê½
        EX1=1;                        //¿aía2¿ÖD¶Ï1:¼õËù
   
    inti_lcd();
    DoSpeed();      
    ShowState();
    while(1)
    {
      clock(RunSpeed);
      P0=0x01;
    }
   
}

//¶¨ê±Æ÷0ÖD¶Ï3ìDò:Õy×a
void t_0(void) interrupt 1
{
        RunState=RIGHT_RUN;       
    P0=1;
    P1=0x01;
    cmd_wr();
    ShowState();
}


//¶¨ê±Æ÷1ÖD¶Ï:·′×a
void t_1(void) interrupt 3
{
        RunState=LEFT_RUN;
    P0=0;
    P1=0x01;
    cmd_wr();
    ShowState();
   
}

//ÖD¶Ï0:¼óËù3ìDò
void SpeedUp() interrupt 0
{   
       if(RunSpeed>=12)
          RunSpeed=RunSpeed-2;
       DoSpeed();
       P1=0x01;
       cmd_wr();
       ShowState();
              
}

//ÖD¶Ï1:¼õËù3ìDò
void SpeedDowm() interrupt 2
{   
   
    if(RunSpeed<=100)
        RunSpeed=RunSpeed+2;
    DoSpeed();
    P1=0x01;
    cmd_wr();
    ShowState();
        

}

int delay()         //ÅD¶ÏLCDêÇ·ñÃ|
{   
    int a;
start:
   
    RS=0;
    RW=1;
    E=0;
    for(a=0;a<2;a++);
    E=1;
    P1=0xff;
    if(P1^7==0)
       return 0;
    else        
       goto start;

}

void inti_lcd()  //éèÖÃLCD·½ê½
{

   P1=0x38;
   cmd_wr();
   delay();

   P1=0x01;     //Çå3y
   cmd_wr();
   delay();

   P1=0x0f;
   cmd_wr();
   delay();

   P1=0x06;
   cmd_wr();
   delay();

   P1=0x0c;
   cmd_wr();
   delay();
}

void cmd_wr()           //D′¿ØÖÆ×Ö
{
   RS=0;
   RW=0;
   E=0;
   E=1;
}

void show_lcd(int i)   //LCDÏÔê¾×ó3ìDò
{  
   P1=i;
   RS=1;
   RW=0;
   E=0;
   E=1;

}

void ShowState()    //ÏÔê¾×′ì¬óëËù¶è
{
    int i=0;
    while(SpeedChar[i]!='\0')
    {
       delay();
       show_lcd(SpeedChar[i]);
       i++;
    }
   
    delay();
    P1=0x80 | 0x0d;
    cmd_wr();

    i=0;
    while(SPEED[i]!='\0')
    {
       delay();
       show_lcd(SPEED[i]);
       i++;
    }

    delay();
    P1=0xC0;
    cmd_wr();

    i=0;
    while(StateChar[i]!='\0')
    {
       delay();
       show_lcd(StateChar[i]);
       i++;
    }

    delay();
    P1=0xC0 | 0x0A;
    cmd_wr();

    i=0;
    if(RunState==RIGHT_RUN)
        while(STATE_CW[i]!='\0')
        {
          delay();
          show_lcd(STATE_CW[i]);
          i++;
        }
    else
       while(STATE_CCW[i]!='\0')
        {
          delay();
          show_lcd(STATE_CCW[i]);
          i++;
        }

}
void clock(unsigned int Delay)   //1msÑóê±3ìDò
{  unsigned int i;
   for(;Delay>0;Delay--)
    for(i=0;i<124;i++);
     
}

void DoSpeed()
{
    SPEED[0]=(1000*6/RunSpeed/100)+48;
    SPEED[1]=1000*6/RunSpeed%100/10+48;
    SPEED[2]=1000*6/RunSpeed%10+48;
}

忘了說了,這個是控制轉速的
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕亚洲精品 | 欧美亚洲在线 | 久久人操| 伊人伊成久久人综合网站 | 精品久久久久久国产 | 国产aⅴ爽av久久久久久久 | 久久久久九九九女人毛片 | 狠狠久久 | 伊人免费在线观看高清 | 精品国产一区二区在线 | 国产精品久久久久久久久图文区 | 精品欧美一区二区在线观看欧美熟 | 久久精品91久久久久久再现 | 久久精品这里精品 | av影音资源 | 欧美亚洲视频在线观看 | 999免费观看视频 | 国产精品成人在线播放 | 色婷婷在线视频 | 久久这里只有精品首页 | 午夜三级在线观看 | 91.com视频 | 日本精品一区二区三区四区 | 人人干天天干 | 亚洲综合色视频在线观看 | 日日夜夜天天 | 日韩电影免费在线观看中文字幕 | 青青操av | 亚洲国产aⅴ成人精品无吗 欧美激情欧美激情在线五月 | 欧美人妖网站 | 国产亚洲一区二区三区在线观看 | 亚洲综合视频 | 国产成人免费视频网站视频社区 | 一本在线 | 91视频88av| 国产91在线 | 欧美 | 免费久久99精品国产婷婷六月 | 日韩视频在线播放 | 偷拍自拍网站 | 久久精品一区二区视频 | 亚洲欧美中文日韩在线v日本 |