基于AT89C51的PWM信号发生器设计报告 下载本文

2.设计原理和方法

2.1单片机的基本组成

时钟源T0T1时钟电路SFR和RAMROM定时/计数器CPU系统总线并行端口串行端口中断系统P0P1P2P3TXDRXDINT0INT1

图1 51单片机框图

2.2方案的设计与选择

在电子技术领域中,实现函数信号发生器的方法有很多种,可以采用不同的原理及器件构成不同的电路,但是可以实现相同的功能。 (1)方案的比较:

方案一:采用单片函数发生器如8038,8038可同时产生正弦波,方波等,而且方法简单易行。用D/A转换器的输出来改变调制电压,也可以实现数控的调频进而改变周期,但是产生的频率稳定度不高。

方案二:采用锁相式频率合成器,利用锁相环,降压控振荡器(VOC)的输出,频率锁定在所需的频率上,该方案性能良好,但是难以达到输出频率覆盖系数的要求,其电路复杂。

方案三:采用单片机编程的方法实现。该方法可以通过编程,来控制方波信号输出的周期和占空比,并且只要改变程序的相关参数,便可以改变输出波形的周期和占空

- 9 -

比。由于编程的方法产生的是数字信号,所以信号的精度可以做到很高。并且电路简单。

鉴于方案一的信号频率不够稳定和方案二的电路复杂,频率覆盖系数难以达标等缺点,所以决定采用方案三的设计方法。方案三不仅仅是软硬件结合,而且它使用的元器件,容易得到,且价格便宜,使得硬件的开销达到最省。

在此次设计中,利用AT89C51单片机,软硬件结合,实现占空比和周期可调。案件的操作是通过数字电路跟外部中断0来控制的。可以输出占空比在1%到99%可调,精度为1%,周期在5ms到60ms可调,精度为5ms的方波。

本设计用到一个AT89C51微处理器,4个按键,一个四输入与门。AT89C51用到两个定时器,定时器0和定时器1。其中定时器0工作在方式1下,决定输出信号的周期,定时器1工作在方式1下,决定输出信号的占空比。按键PERIOD+和PERIOD-改变信号的周期,按键PERIOD+用于增大信号的周期,按一下就增大5ms,当增大到60ms后,就归为5ms。按键PERIOD-用于减小输出信号的周期,按一次键,输出信号的周期增大5ms,当增大到60ms后,周期就归于5ms。按键ZKB+和ZKB-改变信号的占空比,按键ZKB+用于增加信号的占空比,按下一次键,占空比就增加1,上限值为99,当再次按键时,就让占空比归1。按键ZKB-用于减小信号的占空比,按下一次键,占空比就减1,下限值为1,当再次按键时,就让占空比回归到99。通过上面的步骤,可以实现占空比和周期的可调。

同时,设计中采用了上电或开关复位电路用以应对其他可能事件。开关闭合复位后回复初值:占空比50%,周期35ms。

2.3定时器、的工作原理

定时/计数器实质上是一个加1计数器,它可以工作于定时方式,也可以工作于计数方式,两种工作方式实际是对脉冲计数,只不过是所计脉冲来源不同。定时/计数器的内部结构和控制信号如下图2所示:

C/T当其工作于定时方式时, =0,开关S打向上,计数器,的计数脉冲来自振荡器

的12分频后的脉冲(即fosc/12),即对系统的机器周期计数。档开关K受控合上时,每过一个周期,计数器,加1;当记满了预设的个数,回零,置位定时/计数器溢出中断标志位,产生溢出中断。

- 10 -

图2 定时器/计数器内部结构和控制信号

2.3.1工作方式寄存器TMOD

工作方式寄存器TMOD(地址:89H)为8位寄存器,8位分为两组,高四位控制T1,低四位控制T0。用于设置定时/计数器的工作方式。其格式如下表2.3.1所示。

表2.3.1 定时/计数器方式控制寄存器TMOD

D7 GATE D6

C/T D5 M1 D4 M0 D3 GATE D2

C/T D1 D0 M1 M0 | ← T1方式字段 → | ← T0方式字段 →| 下面对TMOD的各位作以说明: (1)GATE:门控位。

GATE=0时,仅有运行控制位TR0(或TR1)=1,就可以启动定时/计数器工作; GATA=1时,由TR0(或TR1)=1和外部中断引脚(INT0或INT1)上的高电平共 同启动定时/计数器工作。

(2) C/T——定时/计数模式选择位。

C/T为定时模式; =0

C/T为计数模式。 =1

(3)M1,M0—工作方式选择位。

- 11 -

定时/计数器工作方式选择如下表2.3.2所示。

表2.3.2 定时/计数器工作方式设置表

M1 M0 0 0 0 1 1 0 1 1

工作方式 方式0 方式1 方式2 方式3 说明 13位定时/计数器 16位定时/计数器 8位初值自动重装入的8位定时/计数器 仅适用于T0,分成两个8位定时/计数器;T1停止计数 2.3.2定时/计数器控制寄存器TCON

TCON的字节地址为88H,可进行位寻址,位地址为88H—8Fh。 格式如下表2.3.3所示。

表2.3.3 定时/计数器控制寄存器TCON

D7 TF1 D6 TR1

D5 TF0 D4 TR0

D3 IE1 D2 IT1

D1 IE0 D0 IT0 在TCON寄存器中,定时/计数器的控制仅用了其中的高四位。 (1)TF1,TF0——T1,T0溢出中断请求标志位。

当计数溢出时该位由硬件自动置为1。CPU响应中断后由硬件自动清0。工作时,CPU可随时查询TF的状态。所以,可用作查询测试的标志。也可以用软件置1或清0,同硬件置1或清0的效果一样。 (2)TR1,TR0——运行控制位。

置1时,启动定时/计数器工作;还与GATE位的状态有关。

置0时,停止定时/计数器工作。

由软件置1或清0。所以,用软件可控制定时/计数器的启动与停止。

2.4定时/计数器的工作方式

(1)方式0为13位计数,由TL0的低5位(高3位未用)和TH0的8位组成,最大计数值为(8192个脉冲)。启动后计数器加1计数。TL0的低5位计数满回零后向进位,当13位计数满回零时,中断溢出位置1,产生中断请求。

- 12 -