一,主程序
#include "reg52.h" unsigned char count; //0.5ms´ÎÊý±êʶ sbit pwm =P2^7 ; //PWMÐźÅÊä³ö sbit jia =P2^4; //½Ç¶ÈÔö¼Ó°´¼ü¼ì²âIO¿Ú sbit jan =P2^5; //½Ç¶È¼õÉÙ°´¼ü¼ì²âIO¿Ú unsigned char jd; //½Ç¶È±êʶ void delay(unsigned char i)//ÑÓʱ { unsigned char j,k; for(j=i;j>0;j--) for(k=125;k>0;k--); } void Time0_Init() //¶¨Ê±Æ÷³õʼ»¯ { TMOD = 0x01; //¶¨Ê±Æ÷0¹¤×÷ÔÚ·½Ê½1 IE = 0x82; TH0 = 0xfe; TL0 = 0x33; //11.0592MZ¾§Õñ£¬0.5ms TR0=1; //¶¨Ê±Æ÷¿ªÊ¼ } void Time0_Int() interrupt 1 //ÖжϳÌÐò { TH0 = 0xfe; //ÖØи³Öµ TL0 = 0x33; if(count< jd) //ÅжÏ0.5ms´ÎÊýÊÇ·ñСÓڽǶȱêʶ pwm=1; //ȷʵСÓÚ£¬PWMÊä³ö¸ßµçƽ else pwm=0; //´óÓÚÔòÊä³öµÍµçƽ count=(count+1); //0.5ms´ÎÊý¼Ó1 count=count%40; //´ÎÊýʼÖÕ±£³ÖΪ40 ¼´±£³ÖÖÜÆÚΪ20ms } void keyscan() //°´¼üɨÃè { if(jia==0) //½Ç¶ÈÔö¼Ó°´¼üÊÇ·ñ°´Ï { delay(10); //°´ÏÂÑÓʱ£¬Ïû¶¶ if(jia==0) //ȷʵ°´Ï { jd++; //½Ç¶È±êʶ¼Ó1 count=0; //°´¼ü°´Ï Ôò20msÖÜÆÚ´ÓпªÊ¼ if(jd==6) jd=5; //ÒѾÊÇ180¶È£¬Ôò±£³Ö while(jia==0); //µÈ´ý°´¼ü·Å¿ª } } if(jan==0) //½Ç¶È¼õС°´¼üÊÇ·ñ°´Ï { delay(10); if(jan==0) { jd--; //½Ç¶È±êʶ¼õ1 count=0; if(jd==0) jd=1; //ÒѾÊÇ0¶È£¬Ôò±£³Ö while(jan==0); } } } void main() { jd=1; count=0; Time0_Init(); while(1) { keyscan(); //°´¼üɨÃè } }
二,开发板与外设相连
三,相关资料
关于舵机的资料请看这两篇文章:
舵机的相关原理与控制原理
http://www.mcustudio.com.cn/showcourse.asp?id=51
利用单片机PWM信号进行舵机控制
http://www.mcustudio.com.cn/showcourse.asp?id=52
舵机有三条线定义:
暗灰: GND
红色: VCC 4.8-7.2V
橙黄线: 脉冲输入
网赚58:网赚58首码网:专注互联网冷门首码项目,紧跟最新最热创业信息,分享活动线报,揭秘套路,是找首码项目,找上级,找推荐码,推广找下级的好地方。👍
本文来自网络,不代表58首码网立场,详见免责声明,如有侵权,请联系站长删除
本文来自网络,不代表58首码网立场,详见免责声明,如有侵权,请联系站长删除