基于单片机的步进电机调速系统毕业设计 联系客服

发布时间 : 星期一 文章基于单片机的步进电机调速系统毕业设计更新完毕开始阅读25e6e4705901020207409c7d

毕业论文

口,分别连接N1的SDAS(18脚)和SCLS(19脚)端口,12 脚、27 脚及28 脚定义为握手信号功能端口,连接主板CPU 的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。

P0 口,P0 口是一组8 位漏极开路型双向I/O 口, 也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8 个TTL逻辑门电路,对端口P0 写“1”时,可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8 位)和数据总线复用,在访问期间激活内部上拉电阻。在Flash 编程时,P0 口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。

P1 口,P1 是一个带内部上拉电阻的8 位双向I/O 口, P1 的输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。与AT89C51 不同之处是,P1.0 和P1.1 还可分别作为定时/计数器2 的外部计数输入(P1.0/T2)和输入(P1.1/T2EX),参见表1。Flash 编程和程序校验期间,P1 接收低8 位地址。

引脚号 功能特性 P1.0 T2,时钟输出 P1.1 T2EX(定时/计数器2) 表2-1 P1.0和P1.1的第二功能 P2 口,P2 是一个带有内部上拉电阻的8 位双向I/O 口,P2 的输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑门电路。对端口P2 写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。在访问外部程序存储器或16 位地址的外部数据存储器(例如执行MOVX @DPTR 指令)时,P2 口送出高8 位地址数据。在访问8 位地址的外部数据存储器(如执行MOVX @RI 指令)时,P2 口输出P2 锁存器的内容。Flash 编程或校验时,P2亦接收高位地址和一些控制信号。

P3 口,P3 口是一组带有内部上拉电阻的8 位双向I/O 口。P3 口输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑门电路。对P3 口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的P3 口将用上拉电阻输出电流(IIL)。P3 口除了作为一般的I/O 口线外,更重要的用途是它的第二功能,P3 口还接收一些用于Flash 闪速存储器编程和程序校验的控制信号。

RST,复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。

12

毕业论文

ALE/PROG,当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8 位字节。一般情况下,ALE 仍以时钟振荡频率的1/6 输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE 脉冲。对Flash 存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH 单元的D0 位置位,可禁止ALE 操作。该位置位后,只有一条MOVX 和MOVC指令才能将ALE 激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE 禁止位无效。

PSEN,程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C52 由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN 有效,即输出两个脉冲。在此期间,当访问外部数据存储器,将跳过两次PSEN信号。

EA/VPP,外部访问允许。欲使CPU 仅访问外部程序存储器(地址为0000H—FFFFH),EA 端必须保持低电平(接地)。需注意的是:如果加密位LB1 被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU 则执行内部程序存储器中的指令。Flash 存储器编程时,该引脚加上+12V 的编程允许电源Vpp,当然这必须是该器件是使用12V 编程电压Vpp。

XTAL1,振荡器反相放大器的及内部时钟发生器的输入端。 XTAL2,振荡器反相放大器的输出端。

特殊功能寄存器,在AT89C52 片内存储器中,80H-FFH 共128 个单元为特殊功能寄存器(SFE),SFR 的地址空间映象如表2 所示。并非所有的地址都被定义,从80H—FFH 共128 个字节只有一部分被定义,还有相当一部分没有定义。对没有定义的单元读写将是无效的,读出的数值将不确定,而写入的数据也将丢失。不应将数据“1”写入未定义的单元,由于这些单元在将来的产品中可能赋予新的功能,在这种情况下,复位后这些单元数值总是“0”。AT89C52除了与AT89C51所有的定时/计数器0 和定时/计数器1 外,还增加了一个定时/计数器2。定时/计数器2 的控制和状态位位于T2CON和T2MOD,寄存器对(RCAO2H、RCAP2L)是定时器2 在16 位捕获方式或16 位自动重装载方式下的捕获/自动重装载寄存器。

数据存储器AT89C52 有256 个字节的内部RAM,80H-FFH 高128 个字节与特殊功能寄存器,(SFR)地址是重叠的,也就是高128字节的RAM 和特殊功能寄存器的地址是相同的,但物理上它们是分开的。当一条指令访问7FH 以上的内部地址单元时,指令中使用的寻址方式是不同的,也即寻址方式决定是访问高128 字节RAM 还是访问特殊功能寄存器。如果指令是直接寻址方式则为访问特殊功能寄存器。

例如,下面的直接寻址指令访问特殊功能寄存器0A0H(即P2 口)地址单元。 MOV 0A0H,#data,间接寻址指令访问高128 字节RAM,例如,下面的间接寻址指令中,R0 的内容为0A0H,则访问数据字节地址为0A0H,而不是P2 口(0A0H)。

MOV @R0,#data,堆栈操作也是间接寻址方式,所以,高128 位数据RAM 亦可作为堆栈区使用。

定时器0和定时器1,AT89C52的定时器0和定时器1 的工作方式与AT89C51 相同。

13

毕业论文

定时器2, 是一个16 位定时/计数器。它既可当定时器使用,也可作为外部事件计数器使用,其工作方式由特殊功能寄存器T2CON(如表3)的C/T2 位选择。定时器2 有三种工作方式:捕获方式,自动重装载(向上或向下计数)方式和波特率发生器方式,工作方式由T2CON 的控制位来选择。定时器2 由两个8 位寄存器TH2 和TL2 组成,在定时器工作方式中,每个机器周期TL2 寄存器的值加1,由于一个机器周期由12 个振荡时钟构成,因此,计数速率为振荡频率的1/12。在计数工作方式时,当T2 引脚上外部输入信号产生由1 至0 的下降沿时,寄存器的值加1,在这种工作方式下,每个机器周期的5SP2 期间,对外部输入进行采样。若在第一个机器周期中采到的值为1,而在下一个机器周期中采到的值为0,则在紧跟着的下一个周期的S3P1 期间寄存器加1。由于识别1 至0 的跳变需要2 个机器周期(24 个振荡周期),因此,最高计数速率为振荡频率的1/24。为确保采样的正确性,要求输入的电平在变化前至少保持一个完整周期的时间,以保证输入信号至少被采样一次。

捕获方式,在捕获方式下,通过T2CON 控制位EXEN2 来选择两种方式。如果EXEN2=0,定时器2 是一个16位定时器或计数器,计数溢出时,对T2CON 的溢出标志TF2 置位,同时激活中断。如果EXEN2=1,定时器2 完成相同的操作,而当T2EX 引脚外部输入信号发生1 至0 负跳变时,也出现TH2 和TL2 中的值分别被捕获到RCAP2H 和RCAP2L 中。另外,T2EX 引脚信号的跳变使得T2CON 中的EXF2 置位,与TF2 相仿,EXF2 也会激活中断。

自动重装载(向上或向下计数器)方式,当定时器2工作于16位自动重装载方式时,能对其编程为向上或向下计数方式,这个功能可通过特殊功能寄存器T2CON的DCEN 位(允许向下计数)来选择的。复位时,DCEN 位置“0”,定时器2 默认设置为向上计数。当DCEN置位时,定时器2 既可向上计数也可向下计数,这取决于T2EX 引脚的值,参见图5,当DCEN=0 时,定时器2 自动设置为向上计数,在这种方式下,T2CON 中的EXEN2 控制位有两种选择,若EXEN2=0,定时器2 为向上计数至0FFFFH 溢出,置位TF2 激活中断,同时把16 位计数寄存器RCAP2H 和RCAP2L重装载,RCAP2H 和RCAP2L 的值可由软件预置。若EXEN2=1,定时器2 的16 位重装载由溢出或外部输入端T2EX 从1 至0 的下降沿触发。这个脉冲使EXF2 置位,如果中断允许,同样产生中断。定时器2 的中断入口地址是:002BH ——0032H 。当DCEN=1 时,允许定时器2 向上或向下计数,这种方式下,T2EX 引脚控制计数器方向。T2EX 引脚为逻辑“1”时,定时器向上计数,当计数0FFFFH 向上溢出时,置位TF2,同时把16 位计数寄存器RCAP2H 和RCAP2L 重装载到TH2 和TL2 中。 T2EX 引脚为逻辑“0”时,定时器2 向下计数,当TH2 和TL2 中的数值等于RCAP2H 和RCAP2L中的值时,计数溢出,置位TF2,同时将0FFFFH 数值重新装入定时寄存器中。当定时/计数器2 向上溢出或向下溢出时,置位EXF2 位。

波特率发生器,当T2CON中的TCLK 和RCLK 置位时,定时/计数器2 作为波特率发生器使用。如果定时/计数器2 作为发送器或接收器,其发送和接收的波特率可以是不同的,定时器1 用于其它功能。若RCLK 和TCLK 置位,则定时器2工作于波特率发生器方式。波特率发生器的方式与自动重装载方式相仿,在此方式下,TH2 翻转使定时

14

毕业论文

器2 的寄存器用RCAP2H 和RCAP2L 中的16位数值重新装载,该数值由软件设置。

在方式1和方式3中,波特率由定时器2 的溢出速率根据下式确定:方式1和3的波特率=定时器的溢出率/16,定时器既能工作于定时方式也能工作于计数方式,在大多数的应用中,是工作在定时方式(C/T2=0)。定时器2 作为波特率发生器时,与作为定时器的操作是不同的,通常作为定时器时,在每个机器周期(1/12 振荡频率)寄存器的值加1,而作为波特率发生器使用时,在每个状态时间(1/2 振荡频率)寄存器的值加1。波特率的计算公式如下:

方式1和3的波特率=振荡频率/{32*[65536-(RCP2H,RCP2L)]} 式中(RCAP2H,RCAP2L)是RCAP2H 和RCAP2L中的16 位无符号数。

定时器2 作为波特率发生器使用时T2CON 中的RCLK 或TCLK=1 时,波特率工作方式才有效。在波特率发生器工作方式中,TH2 翻转不能使TF2 置位,故而不产生中断。但若EXEN2 置位,且T2EX 端产生由1 至0 的负跳变,则会使EXF2 置位,此时并不能将(RCAP2H,RCAP2L)的内容重新装入TH2 和TL2 中。所以,当定时器2 作为波特率发生器使用时,T2EX 可作为附加的外部中断源来使用。需要注意的是,当定时器2 工作于波特率器时,作为定时器运行(TR2=1)时,并不能访问TH2 和TL2。因为此时每个状态时间定时器都会加1,对其读写将得到一个不确定的数值。然而,对RCAP2 则可读而不可写,因为写入操作将是重新装载,写入操作可能令写和/或重装载出错。在访问定时器2或RCAP2 寄存器之前,应将定时器关闭(清除TR2)。

可编程时钟输出,定时器2 可通过编程从P1.0 输出一个占空比为50%的时钟信号。P1.0 引脚除了是一个标准的I/O 口外,还可以通过编程使其作为定时/计数器2 的外部时钟输入和输出占空比50%的时钟脉冲。当时钟振荡频率为16MHz 时,输出时钟频率范围为61Hz—4MHz。当设置定时/计数器2 为时钟发生器时,C/T2(T2CON .1)=0,T2OE (T2MOD.1) =1,必须由TR2(T2CON.2)启动或停止定时器。时钟输出频率取决于振荡频率和定时器2 捕获寄存器(RCAP2H,RCAP2L)的重新装载值,公式如下:

输出时钟频率=振荡器频率/{4*[65536-(RCP2H,RCP2L)]}

在时钟输出方式下,定时器2 的翻转不会产生中断,这个特性与作为波特率发生器使用时相仿。定时器2 作为波特率发生器使用时,还可作为时钟发生器使用,但需要注意的是波特率和时钟输出频率不能分开确定,这是因为它们同使用RCAP2L和RCAP2L。UART AT89C52的UART 工作方式与AT89C51 工作方式相同。

中断,AT89C52 共有6 个中断向量:两个外中断(INT0 和INT1),3 个定时器中断(定时器0、1、2)和串行口中断。这些中断源可通过分别设置专用寄存器IE 的置位或清0 来控制每一个中断的允许或禁止。IE 也有一个总禁止位EA,它能控制所有中断的允许或禁止。注意IE.6 为保留位,在AT89C51 中IE.5 也是保留位。程序员不应将“1”写入这些位,它们是将来AT89 系列产品作为扩展用的。定时器2 的中断是由T2CON 中的TF2 和EXF2 逻辑或产生的,当转向中断服务程序时,这些标志位不能被硬件清除,事实上,服务程序需确定是TF2 或EXF2 产生中断,而由软件清除中断标志位。

定时器0 和定时器1 的标志位TF0 和TF1 在定时器溢出那个机器周期的S5P2 状

15