历史上的今天

今天是:2024年10月15日(星期二)

正在发生

2019年10月15日 | 51单片机按键控制舵机

发布者:CelestialSoul 来源: eefocus关键字:51单片机  按键控制  舵机 手机看文章 扫描二维码
随时随地手机看文章

#include

#define Stop 0    //宏定义,停止

#define Left 1      //宏定义,左转

#define Right 2      //宏定义,右转



sbit ControlPort = P1^0;  //舵机信号端口

sbit KeyLeft = P1^1;      //左转按键端口

sbit KeyRight = P1^2;      //右转按键端口

sbit KeyStop = P1^3;      //归位按键端口


unsigned char TimeOutCounter = 0,LeftOrRight = 0;  //TimeOutCounter:定时器溢出计数      LeftOrRight:舵机左右旋转标志


void InitialTimer ( void )     

{

    TMOD=0x10;   //定时/计数器1工作于方式1

    TH1 = ( 65535 - 500 ) / 256;      //0.25ms

    TL1 = ( 65535 - 500 ) % 256;

    EA=1;        //开总中断

    ET1=1;       //允许定时/计数器1 中断

    TR1=1;       //启动定时/计数器1 中断

}


void ControlLeftOrRight ( void )   //控制舵机函数

{

    if( KeyStop == 0 )

    {

        while ( !KeyStop );       //使标志等于Stop(0),在中断函数中将用到

        LeftOrRight = Stop;

    }


    if( KeyLeft == 0 )

    {

        while ( !KeyLeft );       //使标志等于Left(1),在中断函数中将用到

        LeftOrRight = Left;

    }


    if( KeyRight == 0 )

    {

        while ( !KeyRight );   //使标志等于Right(2),在中断函数中将用到

        LeftOrRight = Right;

    }


}


void main ( void )     //主函数

{

    InitialTimer();

    for(;;)

    {

        ControlLeftOrRight();

    }

}


void Timer1 ( void ) interrupt 3  //定时器中断函数

{

    TH1 = ( 65535 - 500 ) / 256;

    TL1 = ( 65535 - 500 ) % 256;

    TimeOutCounter ++;


    switch ( LeftOrRight )

    {

        case 0 :      //为0时,舵机归位,脉宽1.5ms

        {

            if( TimeOutCounter <= 6 )

            {

                ControlPort = 1;

            }

            else 

            {

                ControlPort = 0;

            }

            break;

        }

        case 1 :     //为1时,舵机左转,脉宽1ms(理论值),实际可以调试得出

        {

            if( TimeOutCounter <= 2 )

            {

                ControlPort = 1;

            }

            else 

            {

                ControlPort = 0;

            }

            break;

        }

        case 2 :   //为2时,舵机右转,脉宽2ms(理论值),实际可以调试得出

        {

            if( TimeOutCounter <= 10 )

            {

                ControlPort = 1;

            }

            else 

            {

                ControlPort = 0;

            }

            break;

        }

        default : break;

    }

    

    if( TimeOutCounter == 80 )     //周期20ms(理论值),比较可靠,最好不要修改

    {

        TimeOutCounter = 0;

    }

}


关键字:51单片机  按键控制  舵机 引用地址:51单片机按键控制舵机

上一篇:单片机国旗自动升降系统仿真及程序
下一篇:51单片机+74HC138驱动16*96点阵显示汉字的Proteus仿真+源代码

推荐阅读

据外媒报道,Cabot公司被美国能源部选中,该公司参与了一项先进车用技术的研发项目,获得了部分资金支持。卡博特将利用其创新加工技术,致力于研发新一代锂离子电池低钴活性阴极的配方。钴是价格昂贵的关键性材料,主要从美国境外进口,随着电动车的蓬勃发展,未来存在一定的供货风险。Cabot的研发项目旨在探索更加可持续性、可负担的替代性材料,最终改善...
楼层数可选,硬件可删除。16层内任意设置最大楼层数,用不到的楼层硬件可以删除,不影响程序。提供串口通讯,波特率可在main初使化里设置。更新了详细注释版本,需要学习的朋友请关注银穗之家回复:16层电梯源码。即可下获取详细注释版。电梯仿真原理图如下(proteus仿真工程文件可到本帖附件中下载) /*Uart串口发送函数示例:1.USART_SendByte(u8 dat)...
10月14日晚间,苹果正式发布了全新iPhone 12系列,包括iPhone 12 mini、iPhone 12、iPhone 12 Pro和iPhone 12 Pro Max四款新机。该系列新机不仅采用了全新的外观设计,而且全系还支持5G网络,是首款支持5G网络的iPhone手机。而每年新iPhone的发布会都被誉为手机界的“春晚”,受到了很多媒体朋友、消费者以及其他手机界大佬的关注,今年iPhone 1...
新机型发布为了满足市场对于低电压大电流线性电源的需求,普源精电(RIGOL)DP800系列线性直流电源精心推出了高性能新机型:DP813A和DP822A。DP813A是单通道双量程电源:8V*20A或20V*10A,DP822A则是双通道电源:5V*16A || 20V*5A。新机型为光通讯模块测试、芯片和集成电路测试、半导体测试和工业ATE测试等多个行业及应用提供了大电流、低纹波、高精度的...

史海拾趣

问答坊 | AI 解惑

微型红外追踪及无线遥控车设计

微型红外追踪及无线遥控车设计…

查看全部问答∨

关于cc1100设计的问题

本人要设计一个CC1100与内置pcb天线433MHZ相连,到现在没有什么头绪,看了很多的文章,不知道到底需要用什么软件进行设计!!!…

查看全部问答∨

急求数码管万年历

最近一直想做一个数码管万年历,可是还没找到资料 要求能显示年,月,日,时,分,秒,星期,气温,并且具有掉电保护功能的 哪位朋友能帮我这个忙,提供C程序和原理图好吗?本人将不胜感激,谢谢!!…

查看全部问答∨

请大家都来分享一下怎么解决wince实时性问题的方法,看到的请进!

   现在实习的公司是做数控产品的,对实时性要求很高。我刚刚在EP9315+wince5.0这个方案上实现了用内部时钟中断来触发执行某些需要周期执行,但又要求有比较高地实时性的一些动作。但是不知道这样做行不行,以及这样会产生一些什么样的问 ...…

查看全部问答∨

单片机如何找到PC写入SD卡的数据?

小弟现在要用SD卡存储数据,供单片机(或者是FPGA处理),这些数据是由pc机事先写入的,那单片机如何知道PC将数据写入到哪个地址空间里了呢? 谢谢!…

查看全部问答∨

M3各模块的应用程序

本帖最后由 paulhyde 于 2014-9-15 09:13 编辑 使用LM3S811的各个模块程序。使用Keil uVision4 打开。  …

查看全部问答∨

学习5529没法实验有什么用呀?

学习5529没法实验有什么用呀? 还不如弄两个奖带芯片或者开发工具的…

查看全部问答∨

利用一个三极管,二极管,电阻,如何搭出一个恒流器电路呢?

请教各位老师,如何利用一个三极管,二极管,电阻,如何搭出一个恒流器电路呢?(恒流什么,试题没写) 因为今天主考官问了这个问题,我画出来的电路是: 难道是我画错了吗? [ 本帖最后由 benny512 于 2013-11-28 16:01 编辑 ]…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved