
51单片机驱动16路PWM舵机模块。
5星
- 浏览量: 0
- 大小:None
- 文件类型:None
简介:
淘宝平台上销售的16路PWM舵机驱动模块,其基于51单片机的程序部分如下:
#include #include #include #include typedef unsigned char uchar; typedef unsigned int uint; sbit scl=P1^3; //时钟输入线 sbit sda=P1^4; //数据输入/输出端 sbit KEY1=P2^0; sbit KEY2=P2^1; #define PCA9685_adrr 0x80// 1+A5+A4+A3+A2+A1+A0+w/r //片选地址,通过改变焊接点上的电平来修改地址,当IIC总线存在多片PCA9685或相同地址时才需要焊接// #define PCA9685_SUBADR1 0x2// #define PCA9685_SUBADR2 0x3// #define PCA9685_SUBADR3 0x4#define PCA9685_MODE1 0x0#define PCA9685_PRESCALE 0xFE#define LED0_ON_L 0x6#define LED0_ON_H 0x7#define LED0_OFF_L 0x8#define LED0_OFF_H 0x9// #define ALLLED_ON_L 0xFA// #define ALLLED_ON_H 0xFB// #define ALLLED_OFF_L 0xFC// #define ALLLED_OFF_H 0xFD#define SERVOMIN 115 // this is the minimum pulse length count (out of 4096)#define SERVOMAX 590 // this is the maximum pulse length count (out of 4096)#define SERVO000 130 //对应4度角对应的脉宽计数值(单位:4K)#define SERVO180 520 //对应18度角对应的脉宽计数值(单位:4K),可以根据不同舵机调整这些值/**********************函数的声明*********************************//*---------------------------------------------------------------毫秒延时函数----------------------------------------------------------------*/void delayms(uint z);/*--------------------------------------------------------------- IIC总线所需的通用函数----------------------------------------------------------------*//*--------------------------------------------------------------- 微妙级别延时函数,延时时间大于4.7us----------------------------------------------------------------*/void delayus();/*--------------------------------------------------------------- IIC总线初始化函数 设置SDA和SCL为高电平状态。--*/void init();/*----*//*----*//*----*//*----*//*----*//*----*/ /*----*/ /*----- */ /*----- */ /*----- */ /*----- */ /*----- */ /*----- */ /*----- */ /*----- */ /*-------------IIC总线启动信号函数-------------*/void start(); /*-------------IIC总线停止信号函数-------------*/void stop(); /*-------------IIC总线应答信号函数-------------*/void ACK(); /*-------------写一个字节的函数,无返回值,需要传入一个字节值--------------*/void write_byte(uchar byte); /*-------------读一个字节的函数,有返回值--------------*/uchar read_byte(); /*-----------PCA9685模块相关函数的声明-----------*/ /*-----------向PCA9685里写地址和数据的函数--------------*/void PCA9685\_write(uchar address,uchar date); /*-----------从PCA9685读取数据的函数--------------*/uchar PCA9685\_read(uchar address);
全部评论 (0)
还没有任何评论哟~


