单片机原理b与接口技术(第15章).pptVIP

  • 3
  • 0
  • 约 57页
  • 2016-11-29 发布于湖南
  • 举报
单片机原理b与接口技术(第15章)

第15章: C语言程序的设计实例 步进电机的控制问题可总结为以下两点 ①产生工作方式需要的时序脉冲; ②控制步进电机的速度,使它始终遵循加速一匀速一减速的规律工作。 第15章: C语言程序的设计实例 15.2频率量的测量 单片机对频率量有两种测量方法: 测量频率法和测量周期法。 测量频率法是在单位定时时间内,对被测信号脉冲进行计数;测量周期法是在被测信号周期时间内,对某一基准脉冲进行计数。 第15章: C语言程序的设计实例 15.2.1 测量频率法 在测量频率法的最简单的接口电路中,可将频率脉冲直接连接到8051的T1端,将8051的T0用做定时器,T1用做计数器。在T0定时时间里,对频率脉冲进行计数。T1的计数值便是单位定时时间里的脉冲个数。 第15章: C语言程序的设计实例 测量频率法脉冲波形 第15章: C语言程序的设计实例 说明 在计数时会出现如图15-7所示的丢失脉冲的情况。第一个丢失的脉冲是由于开始检测时脉冲宽度已小于机器周期T;第二个丢失的脉冲是由于脉冲的负跳变在定时之外。定时时间内出现脉冲丢失,将引起测量精度降低。脉冲频率越低,这种误差越大。显然对于较低频率的脉冲测量不适合采用测量频率法。 第15章: C语言程序的设计实例 15.2.2 带同步控制的频率测量 为解决第一个脉冲的丢失,可用门电路实现计数开始与脉冲上升沿的同步控制。图15-8是用8051的T0作定时器,T1作计数器,对频率fx小的脉冲用频率测量法的接口电路。 第15章: C语言程序的设计实例 说明 控制时,首先P1.0发一个清零负脉冲,使U1,U2两个D触发器复位,其输出封锁与门G1和G2。接着由P1.1发一个启动正脉冲,其有效上升沿使U1=1,门G1被开放。被测脉冲上升沿通过G2送T1计数;同时U2输出的高电平使·INT0·=1,定时器0的门控GATE有效,启动T0开始定时。直到定时结束时,从P1.0发一负脉冲,清零U2,封锁G2,停止T1计数,完成一次频率采样过程。 第15章: C语言程序的设计实例 说明 测量T/C定时时间为500ms,这样长的时间定时,先由T0定时100ms,之后软件5次中断后的时间即为5×100 ms=500 ms。中断次数的计数值在msn中。 第15章: C语言程序的设计实例 频率测量电路 第15章: C语言程序的设计实例 应用程序 #include reg51.h #define uchar unsigned char #define uint unsigned int #define A 5 sbit P1_0=p1^0; sbit P1_1=p1^1; uchar msn=A; bit idata tf=0; 第15章: C语言程序的设计实例 unit count (void) {P1_0=0; P1_0=1; TMOD=0x59; TH0=0x3c; TL0=0xb0; TH1=0x00; TL1=0x00; TR0=1; TR1=1; PT0=1; ET0=1;ET1=1; EA=1; P1_0=0; P1_0=1; While(tf!=1); P1_0=0; P1_0=1; TR0=0; TR1=0; Return(TH1*256+TL1); } 第15章: C语言程序的设计实例 void timer0(void) interrupt 1 using 1 { TH0=0x3c; TL0=0xb0; msn--; if (msn = =0) {msn=A; tf=1; } 第15章: C语言程序的设计实例 void timer0(void) interrupt 3 { } void main (void) { float rate; rate=(10/A)*count(); } 第15章: C语言程序的设计实例 15.3频率脉冲的测量周期法 测量周期法的基本原理是在被测信号周期T内,对某一基准时间进行计数,基准时间与计数值的乘积便是周期T。如图15-9所示。周期测量法适用于对较低频率的脉冲进行测量。 第15章: C语言程序的设计实例 周期测量波形 第15章: C语言程序的设计实例 说明 用805l的定时器/计数器对频率为fx的脉冲进行周期测量的接口电路如图15-10所示。 图中的D触发器74LS74实现脉冲频率到周期的转换。其Q端输出作8051的

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档