登录  | 立即注册

游客您好!登录后享受更多精彩

扫一扫,访问微社区

QQ登录

只需一步,快速开始

开启左侧

[寒假笔记] 基于stc89c52rc(stx12c5a60s2)单片机智能小车的舵机归中实验

[复制链接]
发表于 2019-2-7 15:39:26 | 显示全部楼层 |阅读模式
学习笔记
学习科目: 51单片机智能小车
学习安排: 上午进行舵机的理论学习,下午进行程序的编写与调试。
开始时间: 2019-02-06
结束时间: 2019-02-07
同样,舵机的归中实验亦不需要电路图,只需要三个IO口即可,下面是有关舵机的一些资料。
20190207151602.png 20190207151723.png 20190207151837.png
SG90舵机有红、棕、橙,三种颜色,分别对应单片机的VCC、GND,PWM输出端,其中PWM端口可以任意定义一个,根据自己的单片机的端口状况,只要使其能够输出PWM信号即可。下面是一段舵机归中函数。
#include<reg52.h>//头文件
#include<intrins.h>

sbit Sevro_moto_pwm = P2^3;//定义PWM输出端口

unsigned char pwm_val_left = 0;//变量定义
unsigned char push_val_left = 14;//舵机归中,产生约1.5ms信号

void main()//主函数
{
        TMOD &= 0xF0;//定时器0 工作模式1
  TMOD |= 0x01;
        TH0 = (65536-100)/256;//100us定时
        TL0 = (65536-100)%256;
        TR0 = 1;//打开定时器0
        ET0 = 1;//打开定时器0的中断
        EA = 1;//打开总中断
        push_val_left = 13;//舵机归中
        while(1);
}       
void pwm_Servomoto()//调节push_val_left的值改变电机位置,占空比  
{
         if(pwm_val_left<=push_val_left)
               Sevro_moto_pwm=1;
        else
               Sevro_moto_pwm=0;
        if(pwm_val_left>=200)
        pwm_val_left=0;
}       
void InterruptTimer0() interrupt 1//中断服务函数产生PWM信号
{
        TH0 = (65536-100)/256;
        TL0 = (65536-100)%256;
  pwm_val_left++;
  pwm_Servomoto();
}       


好懒~~不想说~~~
发表于 2019-2-7 17:41:23 | 显示全部楼层
大佬能不能留个联系方式
好懒~~不想说~~~
 楼主| 发表于 2019-2-8 20:10:12 | 显示全部楼层
林雨 发表于 2019-2-7 17:41
大佬能不能留个联系方式

QQ:418694586(威严猎人)网名    兄弟,这是我的qq
好懒~~不想说~~~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表