0 卖盘信息
BOM询价
您现在的位置: 首页 > 电子资讯 >技术信息 > 使用51单片机驱动舵机程序分析

使用51单片机驱动舵机程序分析

2018-06-21
类别:技术信息
eye 996
文章创建人 拍明


舵机,又称伺服马达,是一种具有闭环控制系统的机电结构。舵机主要是由外 壳、电路板、无核心马达、齿轮与位置检测器所构成。其工作原理是由控制器发出PWM(脉冲宽度调制)信号给舵机,经电路板上的IC处理后计算出转动方向, 再驱动无核心马达转动,透过减速齿轮将动力传至摆臂,同时由位置检测器(电位器)返回位置信号,判断是否已经到达设定位置,一般舵机只能旋转180度。舵机有3根线,棕色为地,红色为电源正,橙色为信号线,但不同牌子的舵机,线的颜色可能不同,需要注意。

舵机的转动位置是靠控制PWM(脉冲宽度调制)信号的占空比来实现的,标准PWM(脉冲宽度调制)信号的周期固定为20ms,占空比0.5~2.5ms 的正脉冲宽度和舵机的转角-90°~90°(即0~180度)相对应。注意,由于舵机牌子不同,其控制器解析出的脉冲宽度也不同,所以对于同一信号,不同牌子的舵机旋转的角度也不同。其原理是:它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号, 控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。

0.5ms------------0度;

1.0ms------------45度;

1.5ms------------90度;

2.0ms-----------135度;

2.5ms-----------180度;

采用11.0592MHZ的51单片机驱动舵机转动程序如下:

//上电自动转动

#include

unsigned char count; //0.5ms次数标识

sbit pwm =P1^0 ; //PWM信号输出

sbit jia =P2^4; //角度增加按键检测IO口

sbit jian =P2^5; //角度减少按键检测IO口

unsigned char jd; //角度标识

sbit pwm1 =P0^0 ; //PWM信号输出给示波器,检测PWM波用

void delay(unsigned char i)//延时

{

unsigned char j,k;

for(j=i;j>0;j--)

for(k=125;k>0;k--);

}

void Time0_Init() //定时器0初始化

{

//定时器0装初值 用示波器检测后,11.0592MHZ晶振 定时0.5ms进入中断 装初值如下

TH0 = (65536-445)/256;

TL0 = (65536-445)%256;

TMOD = 0x01; //定时器0工作在方式1

IE = 0x82; //IE=0x82=1000 0010 等价于 EA=1 开总中断 ET0=1 开定时器0中断

TR0=1; //开定时器0

}

void Time0_Int() interrupt 1 //中断程序

{

//重装初值

TH0 = (65536-445)/256;

TL0 = (65536-445)%256;

if(count< jd)

{

pwm=1; //确实小于,PWM输出高电平

pwm1=pwm; //接示波器用的io口,观测PWM波形用 } //判断0.5ms次数是否小于角度标识

//pwm=1; //确实小于,PWM输出高电平

else

{

pwm=0; //确实小于,PWM输出高电平

pwm1=pwm; //接示波器用的io口,观测PWM波形用 }

// pwm=0; //大于则输出低电平

count=(count+1); //0.5ms次数加1

count=count%40; //次数始终保持为40 即保持周期为20ms

}

//此注销掉部分为通过按键控制舵机转动的程序,功能为通过jia按键控制正转,

//通过jian按键控制反转

/*void keyscan() //按键扫描

{

if(jia==0) //角度增加按键是否按下

{

delay(10); //按下延时,消抖

if(jia==0) //确实按下

{

jd++; //角度标识加1

count=0; //按键按下 则20ms周期从新开始

if(jd==6)

jd=5; //已经是180度,则保持

while(jia==0); //等待按键放开

}

}

if(jian==0) //角度减小按键是否按下

{

delay(10);

if(jian==0)

{

jd--; //角度标识减1

count=0;

if(jd==0)

jd=1; //已经是0度,则保持

while(jan==0);

}

}

}*/

void main()

{

//上电,舵机自动正反转

//应注意每次步进是延时函数delay参数的设置,此处延时函数参数设置的并不理想

while(1)

{

for(jd=1;jd<6;jd++)

{

count=0;

Time0_Init();

delay(50000000);

}

delay(50000000);

for(jd=6;jd>0;jd--)

{

count=0;

Time0_Init();

delay(50000000);

}

}


【相关阅读】

51单片机时钟电路图

51单片机时钟电路图(一)

在MCS-51单片机片内有一个高增益的反相放大器,反相放大器的输入端为XTAL1,输出端为XTAL2,由该放大器构成的振动电路和时钟电路一同构成了单片机的时钟方法。依据硬件电路的不同,单片机的时钟衔接方法可分为内部时钟方法和外部时钟方法,如图1所示。


51单片机时钟电路图.png


图1时钟电路(a)内部方法时钟电路(b)外接时钟电路


51单片机时钟电路图.png


在内部方法时钟电路中,必须在XTAL1和XTAL2引脚两头跨接石英晶体振动器和两个微调电容构成振动电路,通常C1和C2一般取30pF,晶振的频率取值在1.2MHz~12MHz之间。关于外接时钟电路,要求XTAL1接地,XTAL2脚接外部时钟,关于外部时钟信号并无特殊要求,只需确保必定的脉冲宽度,时钟频率低于12MHz即可。晶体振动器的振动信号从XTAL2端送入内部时钟电路,它将该振动信号二分频,产生一个两相时钟信号P1和P2供单片机运用。时钟信号的周期称为状况时刻S,它是振动周期的2倍,P1信号在每个状况的前半周期有用,在每个状况的后半周期P2信号有用。CPU就是以两相时钟P1和P2为根本节拍和谐单片机各部分有用作业的。

51单片机时钟电路图(二)


51单片机时钟电路图.png


MCS-51片内有一个高增益反相放大器,其输入端(XTAL1)和输出端(XTAL2)用于外接石英晶体和微调电容,构成振动器,如图所示。电容C2和C3对频率有微调效果,电容容量的挑选规模一般为30pF士10pF。振动频率的挑选规模为1.2~12MHz。

在运用外部时钟时,8051XTAL2用来输入外时钟信号,而XTAL1则接地。

51单片机时钟电路图(三)


51单片机时钟电路图.png


如图4-1为时钟电路总的原理图。分为最小单片机体系、单片机复位电路、按键电路、数码管位选电路、数码管段选电路、数码管显现电路、蜂鸣器电路、温度收集电路。运用单片机的P2口进行数模的输出,P1^4、P1^5、P1^6与74HC138衔接完成数码管位选,按键电路接入P1^0、P1^1、P1^2、P1^3四个IO口,经过程序操控,扫描该四个引脚的信号完成时刻的调理。蜂鸣器经过与三极管8550衔接,终究接入P1^7,时刻设定发动使其发声。温度传感器接入P3^7,将收集到的模拟信号转化为数字信号后传到单片机。

51单片机时钟电路图(四)


51单片机时钟电路图.png


51单片机时钟电路图(五)

ATmega16单片机的时钟电路和输出I/O电路


图片.png


51单片机时钟电路图(六)

按键处理设置为:当有没键按下时,时钟正常运转;当按一次K1,时钟中止走动,按K2对秒进行调整;当K1按2次时,按K2对分进行调整;当K1按下3次时,按K2对小时进行调整,当按下4次K1时,校时结束,时钟按设定的时刻进行正常走时。当按1次K3进入闹钟设置界面,时钟继续进行走时,按K2对秒进行设置;当按2次K3,按K2对分进行设置;当按3次K3,按K2对秒进行设置;当按下4次K3时,闹钟设置结束进入时钟显现界面。电路图如下图

51单片机时钟电路图(七)

单片机使用外部12MHZ晶振构成振动电路作为时钟源,时钟电路的原理如下图


51单片机时钟电路图.png


51单片机时钟电路图(八)


51单片机时钟电路图.png


P10操控调时分秒的哪一一位,P11调时分秒的加,P12按下显现时刻,P13按下显现闹铃,P14按下显现秒表,而且P14仍是秒表的暂停和复位开关。


51单片机

51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8004单片机,后来随着Flash rom技术的发展,8004单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是51系列的单片机一般不具备自编程能力。

主要产品

*Intel(英特尔)的:80C31、80C51、87C51,80C32、80C52、87C52等;

*ATMEL(艾德梅尔)的:89C51、89C52、89C2051,89S51(RC),89S52(RC)等;

*Philips(飞利浦)、华邦、Dallas(达拉斯)、Siemens(西门子)等公司的许多产品;

STC(国产宏晶)单片机:89c51、89c52、89c516、90c516等众多品牌。



89c51



功能

·8位CPU·4kbytes程序存储器(ROM) (52为8K)

·128bytes的数据存储器(RAM) (52有256bytes的RAM)

·32条I/O口线·111条指令,大部分为单字节指令



51单片机时钟电路图



·21个专用寄存器

·2个可编程定时/计数器·5个中断源,2个优先级(52有6个)

·一个全双工串行通信口

·外部数据存储器寻址空间为64kB

·外部程序存储器寻址空间为64kB

·逻辑操作位寻址功能·双列直插40PinDIP封装

·单一+5V电源供电

CPU:由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器;

RAM:用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据;

ROM:用以存放程序、一些原始数据和表格;

I/O口:四个8位并行I/O口,既可用作输入,也可用作输出

T/C:两个定时/记数器,既可以工作在定时模式,也可以工作在记数模式;

五个中断源的中断控制系统;

一个全双工UART(通用异步接收发送器)的串行I/O口,用于实现单片机之间或单片机与微机之间的串行通信;

片内振荡器和时钟产生电路,石英晶体和微调电容需要外接。最佳振荡频率为6M—12M。

学习

作为一个初学者,如何单片机入门?



51单片机时钟电路图



实际上,其实不需要多少东西,会简单的C语言,知道51单片机的基本结构就可以了。一般的大学毕业生都可以了,自学过这2门课程的高中生也够条件。设备上,一般是建议购买一个仿真器,例如,的“双功能下载线”就具有良好的稳定性和较快的下载速度,上位机可扩展,可以下载更多的单片机及嵌入式芯片。通过实验,这样才可以进行实际的,全面的学习。日后在工作上,仿真器也大有用处。还有,一般光有仿真器是不行,还得有一个实际的电路,即学习板,如图,即为,单片机最小系统。

学习板以强大的接口为主,单片机的学习分两方面,一方面是单片机的原理及内部结构,另一方面是单片机的接口技术。这些都是需要平时多积累,多动手,多思考,这样才能学好单片机技术。

注:“双功能下载线”在百度文库里有详细的使用说明,并且上位机会定期更新以支持更多的单片机。

单片机学习的4个阶段

一、整体了解

要知道 单片机是什么?单片机有何用?如何系统学习单片机?单片机系统设计的流程是怎样的,需要掌握哪些辅助软件?

了解这些之后,我们的学习就有了目标和方向。

二、揭秘 单片机很难学,是因为其内部结构、编程语言抽象,且实际应用中与其他电子技术和元器件知识相互关联,需结合起来一起设计开发产品。所以,第二阶段要了解单片机的内部结构是怎样的?单片机开发经常会用到哪些电子技术和元器件知识?如何将一条条编程指令组合成一段段有效的程序?

三、解密 之所以单片机能成为控制核心,设计出包罗万象的应用系统来,是因为开发者利用了单片机提供的种种功能及各种外设。所以,第三阶段我们要掌握单片机的各种功能,再加上诸如传感器、模数转换、扫描显示、串行、中断的应用思维,结合更多的元器件、电子电路知识,逐个学习、体会实际的单片机系统的秘密。

四、远航 通过以上三个阶段,读者基本就可掌握单片机的应用了。但要设计出丰富的单片机系统,解决复杂的实际问题,还需要了解更多的外设知识及其与单片机的联系(如电动机、各类

存储器、继电器、红外管等)。这些需要不断的学习和积累。有时候,接到一些开发任务,就需要你针对这个任务自觉地去搜集、学习相关知识,在实践中不断学习和提高。

最后推荐几本经典图书:

《实例解读51单片机完全学习与应用(配教学视频)》,杨欣编著(他写过多本很有口碑的电子读物,风格独特),电子工业出版社出版。

《爱上单片机》,杜洋著,全新风格,使用面包板入门,人民邮电出版社。

《手把手教你学51单片机》,宋雪松编著(很经典),清华大学出版社出版。

仿真

电脑仿真

Proteus 自从有了单片机也就有了开发系统,随着单片机的发展开发系统也在不断发展。 keil是一种先进的单片机集成开发系统。它代表着汇编语言单片机开发系统的最新发展,首创多项便利技术,将开发的编程/仿真/调试/写入/加密等所有过程一气呵成,中间不须任何编译或汇编。



51单片机时钟电路图



功能特性

1,可以仿真63K程序空间,接近64K 的16位地址空间;

2,可以仿真64Kxdata 空间,全部64K 的16位地址空间;

3,可以真实仿真全部32 条IO脚;

4,完全兼容keilC51 UV2 调试环境,可以通过UV2 环境进行单步,断点, 全速等操作;

5,可以使用C51语言或者ASM汇编语言进行调试 ;

6,可以非常方便地进行所有变量观察,包括鼠标取值观察,即鼠标放在某 变量上就会立即显示出它此的值;

7,可选 使用用户晶振,支持0-40MHZ晶振频率;

8,片上带有768字节的xdata,您可以在仿真时选 使用他们,进行xdata 的仿真;

9,可以仿真双DPTR 指针;

10,可以仿真去除ALE 信号输出. ;

11,自适应300-38400bps 的所有波特率通讯;

12,体积非常细小,非常方便插入到用户板中.插入时紧贴用户板,没有连接电缆,这样可以有效地减少运行中的干扰,避免仿真时出现莫名其妙的故障;

13,仿真插针采用优质镀金插针,可以有效地防止日久生锈,选择优质园脚IC插座,保护仿真插针,同时不会损坏目标板上的插座. ;

14,仿真时监控和用户代码分离,不可能产生不能仿真的软故障;

15,RS-232接口不计成本采用MAX202集成电路,串行通讯稳定可靠,绝非一般三极管的简易电路可比。

功能限制

仿真器占用单片机串口及定时器2,与Keil C(PC)通讯,故不支持串口及定时器2 的仿真功能。全速运行时单片机串口及定时器2 可供用户使用。

使用方法

1.将仿真器插入需仿真的用户板的CPU插座中,仿真器由用户板供电;

2.将仿真器的串行电缆和PC机接好,打开用户板电源;

3.通过Keil C 的IDE 开发仿真环境UV2 下载用户程序进行仿真、调试。

硬件说明

1、使用用户板的晶振:仿真器晶振旁有两组跳线用来切换内部晶振和用户板晶振,当两个短路块位于仿真器晶振一侧时,默认使用仿真板上的晶振(11.0592MHz), 当两个短路块位于电容一侧时,使用用户板的晶振。

2、为便于调试带看门狗的用户板,仿真器的复位端未与用户板复位端相连;故仿真器的复位按钮只复位仿真器,不复位用户板;若要复位用户板,请使用用户板复位按钮。

区别

同样的一段程序,在各个单片机厂家的硬件上运行的结果都是一样的,如ATMEL的89C51(已经停产)、89S51, PHILIPS,和WINBOND等,我们常说的已经停产的89C51指的是ATMEL公司的 AT89C51单片机,同时是在原基础上增强了许多特性,如时钟,更优秀的是由Flash(程序存储器的内容至少可以改写1000次)存储器取代了原来的ROM(一次性写入),AT89C51的性能相对于8051已经算是非常优越的了。

不过在市场化方面,89C51受到了PIC单片机阵营的挑战,89C51最致命的缺陷在于不支持ISP(在线更新程序)功能,必须加上ISP功能等新功能才能更好延续MCS-51的传奇。89S51就是在这样的背景下取代89C51的,89S51已经成为了实际应用市场上新的宠儿,作为市场占有率第一的Atmel公司已经停产AT89C51,将用AT89S51代替。89S51在工艺上进行了改进,89S51采用0.35新工艺,成本降低,而且将功能提升,增加了竞争力。89SXX可以向下兼容89CXX等51系列芯片。同时,Atmel不再接受89CXX的定单,大家在市场上见到的89C51实际都是Atmel前期生产的巨量库存而以。如果市场需要,Atmel当然也可以再恢复生产AT89C51。

89S51相对于89C51增加的新功能包括:

-- 新增加很多功能,性能有了较大提升,价格基本不变,甚至比89C51更低!

-- ISP在线编程功能,这个功能的优势在于改写单片机存储器内的程序不需要把芯片从工作环境中剥离。是一个强大易用的功能。

-- 最高工作频率为33MHz,大家都知道89C51的极限工作频率是24M,就是说S51具有更高工作频率,从而具有了更快的计算速度。

-- 具有双工UART串行通道。

-- 内部集成看门狗计时器,不再需要像89C51那样外接看门狗计时器单元电路。

-- 双数据指示器。

-- 电源关闭标识。

-- 全新的加密算法,这使得对于89S51的盗版变为不可能,程序的保密性大大加强,这样就可以有效的保护知识产权不被侵犯。

-- 兼容性方面:向下完全兼容51全部字系列产品。比如8051、89C51等等早期MCS-51兼容产品。也就是说所有教科书、网络教程上的程序(不论教科书上采用的单片机是8051还是89C51还是MCS-51等等),在89S51上一样可以照常运行,这就是所谓的向下兼容。

比较结果:就如同INTEL的P3向P4升级一样,虽然都可以跑Windows98,不过速度是不同的。从AT89C51升级到AT89S51 ,也是同理。和S51比起来,C51就要逊色一些,实际应用市场方面技术的进步是永远向前的。





责任编辑:Davia

【免责声明】

1、本文内容、数据、图表等来源于网络引用或其他公开资料,版权归属原作者、原发表出处。若版权所有方对本文的引用持有异议,请联系拍明芯城(marketing@iczoom.com),本方将及时处理。

2、本文的引用仅供读者交流学习使用,不涉及商业目的。

3、本文内容仅代表作者观点,拍明芯城不对内容的准确性、可靠性或完整性提供明示或暗示的保证。读者阅读本文后做出的决定或行为,是基于自主意愿和独立判断做出的,请读者明确相关结果。

4、如需转载本方拥有版权的文章,请联系拍明芯城(marketing@iczoom.com)注明“转载原因”。未经允许私自转载拍明芯城将保留追究其法律责任的权利。

拍明芯城拥有对此声明的最终解释权。

相关资讯