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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3702|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

根據(jù)轉(zhuǎn)速大小來改變舵機(jī)轉(zhuǎn)多少度,求老鐵幫助

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:191403 發(fā)表于 2017-8-2 15:45 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
#include <reg51.H>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char         //宏定義
/*-----------------------端口命名------------------------*/
sbit rs=P1^2;       //LCD的數(shù)據(jù)/命令選擇端
sbit rw=P1^1;       //LCD的讀寫選擇端
sbit e=P1^0;      //LCD的使能信號(hào)端  
sbit c=P3^2;       //c測(cè)速電機(jī)信號(hào)端
//舵機(jī)參數(shù)
unsigned char count,count1;
sbit pwm=P3^0;
sbit jia =P3^7;           //角度增加按鍵檢測(cè)IO口
sbit jan =P3^6;           //角度減少按鍵檢測(cè)IO口
uchar jd;
/*-------------------------------------------------------*/
/*-----------------------定義參數(shù)------------------------*/
uint i,z,zhuan,msec;     //定義參數(shù)
uchar display[]={" speed=    r/min "};     //定義顯示參數(shù)
/*-------------------------------------------------------*/
/*-----------------------毫秒延時(shí)------------------------*/
void delay(uint ms)
{  
uint i,j;      //為延時(shí)引入i,j兩參數(shù)  
for (j=0;j<ms;j++)     //延時(shí)第一循環(huán)   
for (i=0;i<120;i++);    //延時(shí)第二循環(huán)  
}
/*-------------------------------------------------------*/
/*--------------------向LCD1602寫命令--------------------*/
void write_command(uchar command)
{
rs=0;       //數(shù)據(jù)、命令選擇端0為命令
rw=0;       //讀、寫選擇端0為寫
P2=command;      //向LCD寫命令
delay(5);      //稍做延遲,代替檢測(cè)忙狀態(tài)  
e=1;      //信號(hào)使能端高電平
delay(5);      //稍做延遲,代替檢測(cè)忙狀態(tài)  
e=0;      //信號(hào)使能端低電平
}
/*-------------------------------------------------------*/
/*--------------------向LCD1602寫數(shù)據(jù)--------------------*/
void write_data(uchar data0)
{
rs=1;       //數(shù)據(jù)、命令選擇端 1為數(shù)據(jù)
rw=0;       //讀、寫選擇端0為寫
P2=data0;      //向LCD寫數(shù)據(jù)
delay(5);      //稍做延遲,代替檢測(cè)忙狀態(tài)
e=1;      //信號(hào)使能端高電平
delay(5);     //稍做延遲,代替檢測(cè)忙狀態(tài)
e=0;      //信號(hào)使能端低電平
}
/*-------------------------------------------------------*/
/*-------------------外部中斷0計(jì)數(shù)程序-------------------*/
void counter(void) interrupt 0
{   
EX1=0;       //關(guān)外部中斷1  
count1++;  
if(count1==2)      //2次循環(huán)為發(fā)動(dòng)機(jī)轉(zhuǎn)一圈  
{   
count1=1;     //初始化計(jì)數(shù)   
     z++;      //轉(zhuǎn)圈計(jì)數(shù)加1
  }      //計(jì)數(shù)+1  
  EX1=1;       //開外部中斷1  
     return;
}
/*-------------------------------------------------------*/
/*------------------------LCD顯示------------------------*/
void displaytolcd()
{  
  write_command(0x80);     //向LCD1602寫命令80H  
  for (i=0;i<sizeof(display)-1;i++)   //循環(huán)要傳輸?shù)淖址麄(gè)數(shù)次,每一次傳一個(gè)字符  
{   
    write_data(display[i]);   
      delay(5);  
  }
} /*-------------------------------------------------------*/  
/*-----------------內(nèi)部中斷0計(jì)時(shí)計(jì)數(shù)程序-----------------*/
void Timer_0(void) interrupt 1
{  
   TH0=0x65;      //50ms定時(shí)  
   TL0=0xF3;  
   msec++;  
   if(msec==20)      //50*20=1S  
{   
     displaytolcd();   
     msec=0;   
     zhuan=30*z;   
     z=0;  
}
}
/*-------------------------------------------------------*/
/*----------------------端口初始化-----------------------*/
void int_all()
{  
z=0;       //初始化z的值  
count=0;      //初始化count的值
count1=0;
zhuan=0;      //初始化轉(zhuǎn)的值  
rw=0;       //選擇LCD寫數(shù)據(jù)指令  
delay(15);      //延時(shí)15ms  
write_command(0x38);     //向LCD1602寫命令38H  
delay(5);      //延時(shí)5ms  
write_command(0x0e);     //向LCD1602寫命令0EH  
delay(5);      //延時(shí)5ms  
write_command(0x06);     //向LCD1602寫命令06H
TMOD=0x11;      //內(nèi)部中斷定時(shí)器選擇  
TH0=0x66;      //50ms定時(shí)  
TL0=0x50;
TH1=0xfc;
TL1=0x99;   
EA=1;       //開中斷總開關(guān)  
ET0=1;       //開內(nèi)部中斷0
TR0=1;       //計(jì)時(shí)器0開始工作
ET1=1;       //開內(nèi)部中斷1
TR1=1;       //計(jì)時(shí)器1開始工作
IT0=1;       //外部中斷0為下降沿觸發(fā)  
EX0=1;       //開外部中斷0
}
/*-------------------------------------------------------*/
/*-----------------------數(shù)據(jù)處理------------------------*/
void  disp_count()
{  
display[7]=(zhuan/1000+'0');    //轉(zhuǎn)換轉(zhuǎn)速的千位  
display[8]=(zhuan/100%10+'0');    //轉(zhuǎn)換轉(zhuǎn)速的百位  
display[9]=(zhuan/10%10+'0');    //轉(zhuǎn)換轉(zhuǎn)速的十位   
display[10]=(zhuan%10+'0');    //轉(zhuǎn)換轉(zhuǎn)速的個(gè)位
}
void Time1_Int() interrupt 3
{
        TH1=0xfe;
        TL1=0x33;
        if(count<jd)
                pwm=1;
        else
        pwm=0;
        count=(count+1);
        count=count%40;
}
void keyscan()              //按鍵掃描
{
if(zhuan>1500)
   {jia=0;  
      jd++;                 //角度標(biāo)識(shí)加1
      count=0;              //按鍵按下 則20ms周期從新開始
      if(jd==6)jd=5; //已經(jīng)是180度,則保持
     // while(jia==0);        //等待按鍵放開
     }

else if(zhuan<1000)
  {
      jan=0;  
      jd--;                 //角度標(biāo)識(shí)減1
      count=0;
      if(jd==0)jd=1;  //已經(jīng)是0度,則保持
     // while(jan==0);
     }

}
/*-------------------------------------------------------*/
/*------------------------主函數(shù)-------------------------*/
void main()
{  
       
   int_all();     //全局初始化  

   while(1)  
  {
   keyscan();
   disp_count();     //數(shù)據(jù)處理
   displaytolcd();     //LCD顯示  

  }
}

當(dāng)轉(zhuǎn)速大于1500,舵機(jī)左轉(zhuǎn)90度;轉(zhuǎn)速在1000-1500之間,舵機(jī)歸中;當(dāng)轉(zhuǎn)速小于1000,舵機(jī)右轉(zhuǎn)90度
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 成人在线欧美 | 亚洲欧洲国产视频 | 综合久 | 网页av| 日本一区二区高清不卡 | 亚洲欧洲成人av每日更新 | 久久噜噜噜精品国产亚洲综合 | 亚洲乱码国产乱码精品精的特点 | 国产精品一区在线播放 | 中文字幕精品一区二区三区在线 | 国产激情片在线观看 | 久久久一二三 | 人干人人 | 黄色在线观看网址 | 在线观看av不卡 | 国产中文字幕亚洲 | 久久高清精品 | 国外成人在线视频网站 | 亚洲一区二区三区在线播放 | 国产高潮好爽受不了了夜色 | 色婷婷综合久久久中字幕精品久久 | 日韩一区二区三区四区五区六区 | 欧美激情视频网站 | 国产精品毛片av | 久久av资源网 | 久久久久久国产精品免费免费 | 免费黄色大片 | 性高湖久久久久久久久3小时 | 国产日韩亚洲欧美 | 国产免费拔擦拔擦8x高清 | 精品无码三级在线观看视频 | 一本色道精品久久一区二区三区 | 国产三级大片 | 九色国产 | 夜夜夜夜夜夜曰天天天 | 国产精品日韩欧美一区二区三区 | 91精品国产91久久久久久吃药 | 日本一区二区高清不卡 | 国产美女视频 | 久久国产精品一区二区三区 | 一区二区视频在线 |