资源简介

使用方法含在代码的注释内,只要有基础的单片机知识即可了解,及其详尽

资源截图

代码片段和文件信息

/*****************************************************************************
 ** 文件 : main.c
 ** 作者 : Zheng23
 ** 日期 : 
 ** 功能 : 
/*****************************************************************************/
//#include 
//#include“STC89C5xRC.H“


//一定要用12M的晶振
//一定要用12M的晶振
//一定要用12M的晶振
//一定要用12M的晶振
//一定要用12M的晶振
//一定要用12M的晶振

#include “reg51.h“

#define uint8 unsigned char    
#define uint16 unsigned short int
#define uint32 unsigned long 

sbit SERVO0=P0^0; //控制舵机的PWM输出口

uint16 Servo0PwmDuty=1500; //PWM脉冲宽度

/***********************************************************
* 名    称: DelayMs(uint16 ms) 
* 功    能: 延时ms毫秒
* 入口参数: ms 毫秒
* 出口参数: 无
* 说    明:   
/**********************************************************/
void DelayMs(uint16 ms)
{
uint16 ij;
for(i=0;i<85;i++) //89单片机用8512系列单片机用800
for(j=0;j}
/***********************************************************
* 名    称:InitTimer0()
* 功    能:时钟0初始化
* 入口参数:无
* 出口参数:无
* 说    明:12M晶振,12分频,所以计数器每递增一个数就是1微秒,完全满足舵机控制的精度要求
因为定时器是TH0,TL0都要全部计数到0xFF后在计1个数就会产生中断,所以要想产生
x毫秒的中断,那么TH0,TL0就应该赋值(0xFFFF-x) 从这个值开始计数产生定时中断  
/**********************************************************/ 
void InitTimer0(void)
{
TMOD &= 0xF0; //设置定时器模式
TMOD |= 0x01; //设置定时器模式
TL0 = 0x00; //设置定时初值
TH0 = 0x00; //设置定时初值
TF0 = 0; //清除TF0标志
TR0 = 1; //定时器0开始计时
ET0 = 1; //开定时器0中断
}
/***********************************************************
* 名    称:Timer0Value(uint16 pwm)  
* 功    能:给定时器0计数器赋值产生定时中断 
* 入口参数:pwm 控制舵机的PWM脉冲宽度值(范围:500~2500)
* 出口参数:无
* 说    明:12M晶振,12分频,所以计数器每递增一个数就是1微秒,完全满足舵机控制的精度要求
因为定时器是TH0,TL0都要全部计数到0xFF后在计1个数就会产生中断,所以要想产生
pwm毫秒的中断,那么TH0,TL0就应该赋值(0xFFFF-pwm) 从这个值开始计数产生定时中断   
/**********************************************************/ 
void Timer0Value(uint16 pwm)
{
uint16 value;
value=0xffff-pwm;
TR0 = 0;
TL0=value; //16位数据给8位数据赋值默认将16位数据的低八位直接赋给八位数据
    TH0=value>>8; //将16位数据右移8位,也就是将高8位移到低八位,再赋值给8位数据
TR0 = 1;
}
/***********************************************************
* 名    称: main()
* 功    能: 入口函数
* 入口参数: 无
* 出口参数: 无
* 说    明:   
/**********************************************************/ 
void main(void)
{

InitTimer0(); //定时器0初始化
EA = 1; //开总中断
while(1) //大循环
{
Servo0PwmDuty = 500; //脉冲宽度在500微秒,对应-90°
DelayMs(1000); //延时1秒
Servo0PwmDuty = 1000; //脉冲宽度在1000微秒,对应-45°
DelayMs(1000);
Servo0PwmDuty = 1500;
DelayMs(1000);
Servo0PwmDuty = 2000;
DelayMs(1000);
Servo0PwmDuty = 2500;
DelayMs(1000);
Servo0PwmDuty = 2000;
DelayMs(1000);
Servo0PwmDuty = 1500;
DelayMs(1000);
Servo0PwmDuty = 1000;
DelayMs(1000);
}
}

/***********************************************************
* 名    称: Timer0_isr() interrupt 1 using 1
* 功    能: 时钟0中断处理
* 入口参数: 无
* 出口参数: 无
* 说    明:   
/**********************************************************/ 
void Timer0_isr(void) interrupt 1 using

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件          0  2016-06-18 15:36  STC单片机舵机PWM控制教程\一定要用12M的晶振.txt

     文件       4113  2016-06-18 15:34  STC单片机舵机PWM控制教程\单个舵机控制\main.c

     文件       8110  2016-06-18 15:33  STC单片机舵机PWM控制教程\单个舵机控制\main.LST

     文件       4659  2016-06-18 15:33  STC单片机舵机PWM控制教程\单个舵机控制\main.OBJ

     文件         34  2016-06-18 15:33  STC单片机舵机PWM控制教程\单个舵机控制\main.__i

     文件       4680  2016-06-18 15:33  STC单片机舵机PWM控制教程\单个舵机控制\Project1

     文件       1153  2016-06-18 15:33  STC单片机舵机PWM控制教程\单个舵机控制\Project1.hex

     文件         82  2016-06-18 15:33  STC单片机舵机PWM控制教程\单个舵机控制\Project1.lnp

     文件       7822  2016-06-18 15:33  STC单片机舵机PWM控制教程\单个舵机控制\Project1.M51

     文件        178  2015-06-16 17:42  STC单片机舵机PWM控制教程\单个舵机控制\Project1.plg

     文件      85271  2019-08-07 14:19  STC单片机舵机PWM控制教程\单个舵机控制\Project1.uvgui.10707

     文件      72597  2015-06-23 19:16  STC单片机舵机PWM控制教程\单个舵机控制\Project1.uvgui.Administrator

     文件     138889  2016-06-18 15:36  STC单片机舵机PWM控制教程\单个舵机控制\Project1.uvgui.Xia

     文件      72563  2015-06-21 21:12  STC单片机舵机PWM控制教程\单个舵机控制\Project1.uvgui_Administrator.bak

     文件     138886  2016-06-18 15:33  STC单片机舵机PWM控制教程\单个舵机控制\Project1.uvgui_Xia.bak

     文件       5443  2019-08-07 14:19  STC单片机舵机PWM控制教程\单个舵机控制\Project1.uvopt

     文件      14041  2019-08-07 14:19  STC单片机舵机PWM控制教程\单个舵机控制\Project1.uvproj

     文件       5869  2016-06-18 15:33  STC单片机舵机PWM控制教程\单个舵机控制\Project1_uvopt.bak

     文件      13456  2015-06-14 14:03  STC单片机舵机PWM控制教程\单个舵机控制\Project1_uvproj.bak

     文件       6376  2010-09-03 17:12  STC单片机舵机PWM控制教程\单个舵机控制\STARTUP.A51

     文件      14049  2015-06-14 12:00  STC单片机舵机PWM控制教程\单个舵机控制\STARTUP.LST

     文件        749  2015-06-14 12:00  STC单片机舵机PWM控制教程\单个舵机控制\STARTUP.OBJ

     文件         42  2015-06-14 12:06  STC单片机舵机PWM控制教程\单个舵机控制\说明.txt

     文件       8861  2015-06-14 12:07  STC单片机舵机PWM控制教程\单个舵机控制\__Previews\main.cPreview

     文件       5649  2016-06-18 15:35  STC单片机舵机PWM控制教程\单个舵机速度控制\main.c

     文件      11607  2016-06-18 15:35  STC单片机舵机PWM控制教程\单个舵机速度控制\main.LST

     文件       7248  2016-06-18 15:35  STC单片机舵机PWM控制教程\单个舵机速度控制\main.OBJ

     文件         53  2016-06-18 15:35  STC单片机舵机PWM控制教程\单个舵机速度控制\main.__i

     文件       7479  2016-06-18 15:35  STC单片机舵机PWM控制教程\单个舵机速度控制\Project1

     文件       3947  2016-06-18 15:35  STC单片机舵机PWM控制教程\单个舵机速度控制\Project1.hex

............此处省略86个文件信息

评论

共有 条评论