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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

控制舵機的程序,不知為什么不對。

[復制鏈接]
跳轉到指定樓層
樓主
ID:63808 發表于 2014-7-9 21:03 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include <reg52.h>
unsigned int i,j;
void delay(unsigned char xms);
sbit LED1=P2^0;
sbit LED2=P2^1;
sbit LED3=P2^2;
sbit LED4=P2^3;  
//引腳定義:
sbit PWM1 = P2^0; //舵機的控制引腳(PWM輸出)

//引腳定義:
sbit SMG_q = P1^0; //定義數碼管陽級控制腳(千位)
sbit SMG_b = P1^1; //定義數碼管陽級控制腳(百位)
sbit SMG_s = P1^2; //定義數碼管陽級控制腳(十位)
sbit SMG_g = P1^3; //定義數碼管陽級控制腳(個位)
sbit key1 = P3^7; //定義按鍵1
sbit key2 = P3^6; //定義按鍵2
sbit key3 = P3^5; //定義按鍵3
sbit key4 = P3^4; //定義按鍵4
sbit key5 = P3^3; //定義按鍵5
sbit key6 = P3^2; //定義按鍵6
//變量定義:
unsigned char fe=100; //轉角變量,值控制在100-250

void delayMS(void)   //誤差 0us 延時1ms 此處可以修改高電平周期
//修改此處的延時可以更改舵機轉的角度 ,45度具體是多少 你可以試試
{
    unsigned char a,c;
c=fe;
    for(;c>0;c--){
  a++;
  a++;
}
}
//延時子函數
void delay(unsigned int time)
{
while(time--);
}
//初始化函數
void init()
{
TMOD=0X01;   //設置定時器0為模式一,即16位計算模式
    TH0 = 0x0B1;
    TL0 = 0x0E0;
EA=1;  //開啟總中斷
ET0=1;  //開啟定時器0中斷
TR0=1;  //啟動定時器0
}
//中斷函數,定地器0
void timer() interrupt 1
{
    //20ms中斷
    TH0 = 0x0B1;
    TL0 = 0x0E0;
//0.1ms中斷,200次中斷為一個周期20MS,轉角控制是0.5MS-2.5MS即5-25,180度分辨率20格為9度(CPU速度越快,分辨率可以做到更高)

    PWM1=1;
    delayMS();
    PWM1=0;
}
//主函數,C語言的入口函數
void main(void)  
{
unsigned char ldat;
init();     //初始化中斷控制寄存器
TMOD=0X20;    //設置定時器1為模式2,做為波特率發生器
TL1=0xF3;    //2400波特率的初值,板子使用12M晶振,初值=256-12000000/32/12/2400
TH1=0xF3;    //
TR1=1;     //啟動波特率發生
SCON=0x50;    //設置串口方式2
ES=1;
P0=0xc0;    //數碼管顯示0
SMG_g=0;    //使用數碼管個位來顯示鍵值

while(1)
{
    if(RI){    //查詢是否有數據接收
   ldat=SBUF;  //數據暫存于變量中
   RI=0;   //重新清0等待接收
   SBUF=ldat;  //將接收到的數據發送出去
   if(ldat==0x10)
   {       //PWM出1.0ms,燈亮
   LED1=0;
   P0=0xf9;  //數碼管顯示1
   fe=100;    //0.5MS,定0度位置
   delay(50000);  //延時
   delay(50000);
}
   else if(ldat==0x20)  //繼電器通電,鎖開啟,燈滅
   {
   LED2=0;
   P0=0xa4;  //數碼管顯示2
   fe=150;    //1.5MS,定90度位置
   delay(50000);
   delay(50000);
  
   }
   else if(ldat==0x30)
   {
   LED3=0;
   P0=0xb0;  //數碼管顯示3
   fe=200;    //2.0MS,定135度位置
   delay(50000);
   delay(50000);
   
   }
   else if(ldat==0x40)
   {
   LED4=0;
   P0=0x99;  //數碼管顯示4
   fe=250;    //2.0MS,定135度位置
   delay(50000);
   delay(50000);
   
   }
   
   
   
   while(!TI);  //等待發送完成
   TI=0;
  }
}
}


應該是控制一定角度 ,但通電后無窮循環轉動,不知哪里有錯、、求教大家了

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

使用道具 舉報

沙發
ID:1 發表于 2014-7-9 21:52 | 只看該作者
while(1)
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 超碰97免费在线 | 一区二区三区四区电影视频在线观看 | 亚洲一区二区av在线 | 欧美视频精品 | 美女久久久 | 久久三区 | 激情网站在线观看 | 亚洲精品乱码久久久久久蜜桃91 | 成人福利在线视频 | 亚洲福利在线观看 | 日韩精品无码一区二区三区 | 日韩一二区 | 欧美亚洲另类丝袜综合网动图 | www亚洲精品 | 九一视频在线播放 | 亚洲精品久久久久久久久久久 | 天天久 | 激情三区| 岛国毛片 | 日韩精品一区二区三区中文在线 | 特级黄一级播放 | 99视频在线免费观看 | 好婷婷网| 亚洲精彩视频在线观看 | 粉嫩一区二区三区国产精品 | hsck成人网 | 亚洲成人激情在线观看 | 色综合视频在线 | 成人精品视频在线观看 | 91在线精品一区二区 | 久草在线青青草 | 一区二区三| 国产成人免费网站 | 蜜桃视频在线观看免费视频网站www | 久久精品免费一区二区 | k8久久久一区二区三区 | 永久av | 国产精品久久久久久亚洲调教 | 日本中文字幕一区 | 久久精品国产免费一区二区三区 | 曰批视频在线观看 |