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

代码片段和文件信息
/*****************************************************************************
** 文件 : 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个文件信息
相关资源
- 51单片机PWM程序,占空比、周期可调整
- SG3525频率PWM控制均可调模块
- 适用于STC单片机和51单片机的SX1262驱动
- 基于ARM7 PWM定时器的图像传感器时序信
- AT89C2051多路舵机控制电路详解
- 电力电子技术(第4版)_王兆安_带目
- 基于FAN6754A的PWM反激式开关电源的设计
- 采用双闭环控制提高PWM的电源纹波抑
- FPGA实现单极性SPWM调制
- LCL滤波器在三相PWM整流器中的应用
- CPS―SPWM调制方法在H桥多电平变流器中
- 基于FPGA的多电平载波移相SPWM方法实现
- 正弦波逆变器正弦波逆变器的工作原
- 基于DSP的SVPWM变频调速系统
- 采用单片机SPWM的控制应急电源逆变电
- PWM脉宽调制的原理
- 说说PWM脉宽调制原理
- 以单片机AT89S52、光电脉宽调制器芯片
- STM32F103系列PWM输出应用之纸短情长音
- 基于FPGA的SVPWM实现方法
- pwm控制驱动直流电机 可调速 可调转的
- 可控硅调光,PWM调光,0-10V调光哪个更
- 一种基于SG3525A的PWM型开关稳压电源设
- 基于PIC单片机产生SPWM信号控制逆变桥
- 三相PWM整流器电压环H_∞鲁棒控制
- SVPWM的原理及法则推导和控制算法详解
- 132kW双PWM变频器电力电缆选型设计
- 32F103 8路PWM输出实验
- Keil5下的STM32F407程序
- PWM控制电机
评论
共有 条评论