proteus仿真 仿真Timer_A的话,输出模块需要用到什么元器件

版权声明:本文为博主原创文章未经博主允许不得转载。 /u/article/details/

几个寄存器其中最主要的是TAxCTL寄存器,它决定Timer_A的输入时钟信号Timer_A的工作模式,Timer_A的开启与停止中断的申请等。Φ断可以来自定时器溢出或者任意的捕获/比较寄存器Timer_A的特征包括:

  • 具有4种工作模式的异步定时/计数器
  • 可配置的PWM输出功能

2. 时钟源的选择和分頻

置位时定时器时钟源分频器被复位。

  • 在 MC > {0} 同时时钟源被激活的情况下定时器开始计数
  • 在定时器工作在增计数模式或者增/减计数模式时,对 TAxCCR0 写 0 可以停止定时器定时器可以通过对 TAxCCR0 写入一个非零值来重新启动计数。在这种情况下定时器从零开始计数。

定时器重复地从0计数箌TAxCCR0

定时器重复地从0计数到0FFFFh

定时器重复地从0计数到TAxCCR0然后减计数到0

输入分配器这些位和 IDEXx 位一起选择输入时钟的分频值

Timer_A 清除位。置位该位将复位 TAxRTACLK 分频和计数方向。该位会自动复位且读出的值通常总为0

Timer_A 中断允许位。该位使能TAIFG中断请求(0中断禁止1 中断使能)

Timer_A 中断标志位(0 无中斷请求1 有中断请求)

捕获比较输入。所选择的输入信号可以通过该位读取

单片机定时/计数器T1定时100ms在P1.0引脚仩产生周期为100ms的方波信号,晶振频率为12MHZ,请编写程序 [问题点数:100分]

单片机定时/计数器T1定时100ms,在P1.0引脚上产生周期为100ms的方波信号晶振频率为12MHZ,請编写程序。  大家帮个忙谢谢、


这里的50000是怎么计算出来了呢?


65536减去要定的时间就是定时器应该设定的时间

假定是标准的80C5112MHz的时钟,一个周期是1uS50毫秒要50000个周期。至于右移8位是因为要把高8位送给寄存器

上面程序是用T0,如果用T1可以像这样

用带有比较匹配功能的单片机吧,如:c,配置好就行了,连中断都不用进

用的是51那不是很简单,看书上都有写啊

至于为什么要设那个计数初值,有两种办法:一个是上网下┅个单片机小精灵直接给程序,想都不用想另一个是通过晶振自己算

我觉得这样写中断函数更加容易理解!


51单片机是12分频的,12M的晶振则說明一个机器周期是12/12即1us。所以定时从到65536总共花了50000个机器周期即50000us = 50ms。这样应该明白了吧!

100ms定时器能产生200ms方波这个不假产生100ms方波表示怀疑。

你这个题目无解的先不说100ms定时,产生100ms方波不现实

还有,51单片机貌似一般的最小系统12Mhz的晶振最多出65.536ms的延时


定时是定在100ms这个倒底能不能做到。

那就算一下定时100ms需要多少个时钟周期。

如果不多次累积咱的小51是做不到的。

楼主若要周期为100ms的方波信号定时50ms取反即可:

若偠定时100ms,楼上说的是真理。

100ms定时取反是产生200ms周期方波

可以用多个短的定时周期累加!你可以把100ms分为两个50ms来定时!

匿名用户不能发表回复!

  舵机最早出现在航模运动中在航空模型中,飞行机的飞行姿态是通过调节发动机和各个控制舵面来实现的举个简单的四通飞机来说,飞机上有以下几个地方需要控制:

  1.发动机进气量来控制发动机的拉力(或推力);

  2.副翼舵面(安装在飞机机翼后缘),用来控制飞机的横滚运动;

  3.水平尾舵面用来控制飞机的俯仰角;

  4.垂直尾舵面,用来控制飞机的偏航角;

  遥控器有四个通道分别对应四个舵机,而舵机又通过连杆等傳动元件带动舵面的转动从而改变飞机的运动状态。舵机因此得名:控制舵面的伺服电机

  不仅在航模飞机中,在其他的模型运动Φ都可以看到它的应用:船模上用来控制尾舵车模中用来转向等等。由此可见凡是需要操作性动作时都可以用舵机来实现。

  一般來讲舵机主要由以下几个部分组成, 舵盘、减速齿轮组、位置反馈电位计5k、直流电机、控制电路板等

  工作原理:控制电路板接受來自信号线的控制信号(具体信号待会再讲),控制电机转动电机带动一系列齿轮组,减速后传动至输出舵盘舵机的输出轴和位置反饋电位计是相连的,舵盘转动的同时带动位置反馈电位计,电位计将输出一个电压信号到控制电路板进行反馈,然后控制电路板根据所在位置决定电机的转动方向和速度从而达到目标停止。

  舵机的基本结构是这样但实现起来有很多种。例如电机就有有刷和无刷の分齿轮有塑料和金属之分,输出轴有滑动和滚动之分壳体有塑料和铝合金之分,速度有快速和慢速之分体积有大中小三种之分等等,组合不同价格也千差万别。例如其中小舵机一般称作微舵,同种材料的条件下是中型的一倍多金属齿轮是塑料齿轮的一倍多。需要根据需要选用不同类型

  1.PWM信号的定义

  PWM信号为脉宽调制信号,其特点在于他的上升沿与下降沿之间的时间宽度具体的时间寬窄协议参考下列讲述。我们目前使用的舵机主要依赖于模型行业的标准协议随着机器人行业的渐渐独立,有些厂商已经推出全新的舵機协议这些舵机只能应用于机器人行业,已经不能够应用于传统的模型上面了目前舵机可能是这个过渡时期的产物,它采用传统的PWM协議优缺点一目了然。优点是已经产业化成本低,旋转角度大(目前所生产的都可达到185度);缺点是控制比较复杂毕竟采用PWM格式。但昰它是一款数字型的舵机其对PWM信号的要求较低:(1)不用随时接收指令,减少CPU的疲劳程度;(2)可以位置自锁、位置跟踪这方面超越叻普通的步进电机。

  其PWM格式注意的几个要点:(1)上升沿最少为0.5mS为0.5mS---2.5mS之间;(2)HG14-M数字舵机下降沿时间没要求,目前采用0.5Ms就行;也就是說PWM波形可以是一个周期1mS的标准方波;(3)HG0680为塑料齿轮模拟舵机其要求连续供给PWM信号;它也可以输入一个周期为1mS的标准方波,这时表现出來的跟随性能很好、很紧密

  2.PWM信号控制精度制定

  如果采用的是8位单片机AT89C52CPU,其数据分辨率为256那么经过舵机极限参数实验,得到應该将其划分为250份那么0.5mS---2.5Ms的宽度为2mS=2000uS。2000uS÷250=8uS则:PWM的控制精度为8us。我们可以以8uS为单位递增控制舵机转动与定位舵机可以转动185度,那么185度÷250=0.74度则:舵机的控制精度为0.74度。

  单片机控制舵机及程序

  正是舵机的控制信号是一个脉宽调制信号所以很方便和数字系统进行接口。只要能产生标准的控制信号的数字设备都可以用来控制舵机比方PLC、单片机等。这里介绍利用51系列单片机产生舵机的控制信号来进行控淛的方法编程语言为C51。之所以介绍这种方法只是因为笔者用2051实现过本着负责的态度,所以敢在这里写出来程序用的是我的四足步行機器人,有删改单片机并不是控制舵机的最好的方法,希望在此能起到抛砖引玉的作用

  2051有两个16位的内部计数器,我们就用它来产苼周期20ms的脉冲信号根据需要,改变输出脉宽基本思路如下(请对照下面的程序):

  我用的晶振频率为12M,2051一个时钟周期为12个晶振周期正好是1/1000ms,计数器每隔1/1000ms计一次数以计数器1为例,先设定脉宽的初始值程序中初始为1.5ms,在for循环中可以随时通过改变a值来改变然后设萣计数器计数初始值为a,并置输出p12为高位当计数结束时,触发计数器溢出中断函数就是voidtimer0(void)interrupt1using1,在子函数中改变输出p12为反相(此时跳為低位),在用20000(代表20ms周期)减去高位用的时间a就是本周期中低位的时间,c=20000-a并设定此时的计数器初值为c,直到定时器再次产生溢出中斷重复上一过程。

  因为在脉冲信号的输出是靠定时器的溢出中断函数来处理时间很短,因此在精度要求不高的场合可以忽略因此如果忽略中断时间,从另一个角度来讲就是主程序和脉冲输出是并行的因此,只需要在主程序中按你的要求改变a值例如让a从500变化到2500,就可以让舵机从0度变化到180度另外要记住一点,舵机的转动需要时间的因此,程序中a值的变化不能太快不然舵机跟不上程序。根据需要选择合适的延时,用一个a递增循环可以让舵机很流畅的转动,而不会产生像步进电机一样的脉动这些还需要实践中具体体会。

  舵机的速度决定于你给它的信号脉宽的变化速度举个例子,t=0试脉宽为0.5ms,t=1s时脉宽为1.0ms,那么舵机就会从0.5ms对应的位置转到1.0ms对应嘚位置,那么转动速度如何呢一般来讲,3003的最大转动速度在4.8V时为0.23s/60度也就是说,如果你要求的速度比这个快的话舵机就反应不过来了;如果要求速度比这个慢,可以将脉宽变化值线性到你要求的时间内做一个循环,一点一点的增加脉宽值就可以控制舵机的速度了。當然具体这一点一点到底是多少,就需要做试验了不然的话,不合适的话舵机就会向步进电机一样一跳一跳的转动了,尝试改变这“一点”使你的舵机运动更平滑。还有一点很重要就是舵机在每一次脉宽值改变的时候总会有一个转速由零增加再减速为零的过程,這就是舵机会产生像步进电机一样运动的原因

我要回帖

更多关于 proteus仿真 的文章

 

随机推荐