基于AT89S51直流电机的转速测试系统的毕业论文_第1页
基于AT89S51直流电机的转速测试系统的毕业论文_第2页
基于AT89S51直流电机的转速测试系统的毕业论文_第3页
基于AT89S51直流电机的转速测试系统的毕业论文_第4页
基于AT89S51直流电机的转速测试系统的毕业论文_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、毕业设计(论文)基于AT89S51直流电机的速度测试系统基于AT89S51的直流电机转速测试系统目录第 1 章 引言. 4第二章本系统芯片功能介绍5第三章 本系统的设计思想 153.1 系统设计要求 . 153.2 系统设计思路153.3 系统控制电路153.4 控制电路说明 163.5 系统控制程序流程图173.6 控制程序 . . 183.7 控制程序说明 .总结. . 25致 26参考文献. 27附录 A . 28附录 B . 29基于AT89S51直流电机的速度测试系统专业课:电子学w0摘要:本设计主要完成以AT89S51单片机为核心的直流电机测速系统。系统包括速度设定、速度显示、速度

2、测量和速度控制。用小磁铁固定直流电机,在相应位置加霍尔传感器测量显示直流电机的转速,用8279专用芯片显示转速,可连续测量。关键词:直流电机;单片机;速度测量第一章引言单片机是指 HYPERLINK %20%20%20%20:/baike.baidu%20%20%20%20/view/26651.htm t _blank 集成在单个芯片上的完整计算机系统 HYPERLINK %20%20%20%20:/baike.baidu%20%20%20%20/view/25302.htm t _blank 。虽然它的大部分功能都集成在一个小芯片上,但它拥有一台完整计算机所需的大部分组件: CPU、 HY

3、PERLINK %20%20%20%20:/baike.baidu%20%20%20%20/view/1082.htm t _blank 内存、外部总线系统,而且目前大部分还具有外部存储器。同时集成了通讯接口、定时器、实时时钟等外围设备。而现在最强大的单片机系统甚至可以将声音、图像、网络、复杂的输入输出系统集成在一个芯片上。单片机比专用处理器更适合嵌入式系统,因此应用最多。事实上,微控制器是世界上数量最多的计算机。现代人类生活中使用的几乎所有电子和机械产品都集成了微控制器。手机、计算器、家用电器、电子玩具、掌上电脑及鼠标等电脑配件均配备1-2台单片机。在个人计算机中,也会有大量的单片机在工作。

4、单片机的数量不仅远远超过PC与其他计算的结合,甚至超过了人类的数量。由于单片机的结构及其采用的半导体技术,它具有许多显着的特点,因此在各个领域得到了迅速的发展。微控制器的主要特点如下:(1)具有优良的性价比。 (2) 集成度高、体积小、可靠性高。(3) 强大的控制功能。为了满足工业控制的要求,一般单片机的指令系统具有极其丰富的传输指令、I/O口的逻辑运算、位处理功能。单片机的逻辑控制功能和运行速度均高于同档次的单片机。 (4)低功耗、低电压、易于生产便携产品。 (5)外部总线增加了IC(Inter-Integrated Circuit)和SPI(Serial Peripheral Interf

5、ace)等串行总线方式,进一步减小了体积,简化了结构。 (6)单片机的系统扩展和系统配置更加典型和标准化,易于形成各种规模的应用系统。第二章本系统芯片功能介绍AT89S51 是一款低功耗、高性能的 CMOS 8 位单片机,具有 4k Bytes ISP(在系统可编程)Flash 只读程序存储器,可反复擦写 1000 次。该器件采用ATMEL的高密度、非易失性独立存储器技术制造,兼容标准MCS-51指令系统和80C51引脚结构,芯片集成通用8位中央处理器和ISP Flash存储器单元,功能强大的微机AT89S51可以为许多嵌入式控制应用系统提供高性能。具有成本效益的解决方案。 AT89S51 具

6、有以下特性:40 个引脚、4k 字节闪存程序存储器、128 字节随机存取数据存储器(RAM)、32 个外部双向输入/输出(I/O)端口、5 个中断优先级、2 个中断嵌套中断、2 个 16-位可编程定时器计数器,2个全双工串行通信端口,看门狗(WDT)电路,芯片时钟振荡器。此外,AT89S51 设计配置了 0Hz 的振荡频率和可通过软件设置的省电模式。在空闲模式下,CPU 暂停工作,而 RAM 定时器计数器、串口和外部中断系统可以继续工作。在掉电模式下,振荡器冻结并保存 RAM 数据,芯片的其他功能停止,直到外部中断激活或硬件复位。同时,该芯片还具有PDIP、TQFP、PLCC三种封装形式,以满

7、足不同产品的需求。主要特点: 兼容 MCS-51 命令系统 4k 可重写(1000 次)ISP Flash ROM 32 个双向 I/O 端口 4.5-5.5V 工作电压 2 个 16 位可编程定时器/计数器 时钟频率 0- 33MHz 全双工 UART 串行中断线 128x8bit RAM 2 个外部中断源 低功耗空闲和省电模式 中断唤醒省电模式 3 级加密位 看门狗 (WDT) 电路 软件设置空闲和电源保存功能 灵活的 ISP 字节和页面编程 双数据寄存器指针AT89S51结构图:图1-1图 1-2AT89S51/S52单片机实际有效管脚为40个,常用的封装有2种。管脚示意图如图 1-3

8、所示: (a) DIP(双列直插式封装)封装,是一种常见的 40 管脚封装。塑封双列直插式; (b) PLCC(Plastic Chip Carrier)封装形式,此形式为方形芯片,有44个“ J ”形管脚(其中4个为空管脚),需要插入到与之匹配的方形插座中。图 1-340 个引脚大致可分为 4 类:电源、时钟、控制和 I/O 引脚。其逻辑图如图1-4所示。图1-4 _ _1、8155各引脚功能说明如下:RST :复位信号输入端,高电平有效。复位后,三个I/O口全部输入。AD 0到AD 7 :三态地址/数据总线。它与微控制器的低 8 位地址/数据总线(P0 端口)相连。 MCU与8155之间的

9、地址、数据、命令和状态信息都是通过这个总线端口传输的。:读选通信号,控制8155的读操作,低电平有效。:写选通信号,控制对8155的写操作,低电平有效。:片选信号线,低电平有效。IO/ : 8155的RAM内存或I/O端口选择线。当IO/ = 0时,选择8155的片内RAM, AD 0 AD 7上的地址为8155中RAM单元的地址(00HFFH);当IO/ = 1时,选择 8155 的 I/O 口, AD 0到AD 7上的地址为8155 I/O口的地址。ALE :地址锁存信号。 8155带有地址锁存器,单片机P0口输出的低8位地址信息和IO /状态在ALE下降沿锁存到8155锁存器中。因此,端

10、口 P0 输出的低 8 位地址信号不需要外部锁存器。PA 0 PA 7 : 8 位通用 I/O 口,输入输出的流向可由程序控制。PB 0 PB 7 : 8 位通用 I/O 端口,功能与端口 A 相同。PC 0 PC 5 :有两个功能,可以作为通用I/O口,也可以作为PA口和PB口的控制信号线,可以通过程序控制.TIMER IN :定时/计数器脉冲输入。TIMER OUT :定时器/计数器输出。V CC : + 5V电源。二、8155地址编码及工作方法在单片机应用系统中,8155根据外部数据存储器统一寻址,为16位地址,其高8位由片选线提供, =0,选择芯片。当=0, IO/ =0时,选择815

11、5块RAM,则8155只能作为片外RAM使用,其RAM的低8位寻址从00H到FFH;当= 0, IO/ = 1 时,选择 8155 的 I/O 端口,端口地址的低 8 位由 AD 7 AD 0决定,如表 1-5 所示。此时,端口A、B、C的端口地址低8位分别为01H、02H、03H(地址无关位设置为0)。表1-5 8155芯片I/O口地址公元7至公元0选择 I/O 端口A7A6A5A4A3A2A1A0000011001100010101命令/状态寄存器端口 A端口 BC口定时器低 8 位定时器高6位及方法8155的A口和B口可以工作在基本I/O模式或选通I/O模式。 C口可以工作在基本I/O模

12、式,也可以作为工作模式选择时A口和B口的状态控制信号线。当C口作为状态控制信号时,各线的作用如下:PC0:AINTR(A端口中断请求线)PC1:ABF(A端口缓冲器满信号)PC2: (A口选通信号)PC3:BINTR(B口中断请求线)PC4:BBF(B口缓冲器满信号)PC5: (B口选通信号)8155的I/O工作模式选择是通过将控制字设置到8155命令寄存器来实现的。命令寄存器只能写,不能读。命令寄存器的格式如图 1-6 所示。在ALT1ALT4的不同模式下,端口A、端口B和端口C的工作模式如下:ALT1:A口,B口为基本输入/输出,C口为输入模式。ALT2:A口,B口为基本输入/输出,C口为

13、输出模式。ALT3:端口 A 为选通输入/输出,端口 B 为基本输入/输出。 PC0 是 AINTR,PC1 是 ABF,PC2 是,PC3 到 PC5 是输出。ALT4:端口 A 和端口 B 为选通输入/输出。 PC0 是AINTR,PC1 是ABF,PC2 是,PC3 是BINTR,PC4 是BBF,PC5 是。图 1-6 8155 命令寄存器格式8155还有一个状态寄存器,用来锁存输入/输出端口和定时器/计数器的当前状态,供CPU查询。状态寄存器的端口地址与命令寄存器的端口地址相同,低8位也是00H。状态寄存器的容量只能读不能写。因此,可以认为8155的I/O口地址00H为命令/状态寄存

14、器,写入时作为命令寄存器使用;当它被读取时,它被用作状态寄存器。状态寄存器的格式如图 1-7 所示。图 1-7 8155 状态寄存器格式3. 8155定时器/计数器8155的定时器/计数器实际上是一个14位减法计数器,对TIMER IN端的输入脉冲进行减1计数。当计数结束(即减1 0”)时,TIMER OUT端输出一个方波或脉冲。 。 TIMER IN定时器/计数器由两个 8 位寄存器组成,其中低 14 位构成计数器,其余两个高位(M2、M1)用于定义输出模式。其格式如下:第三章 系统设计思想3.1 系统设计要求开始点击测试他的转速,然后随时在数显上显示测试结果,进行连续测试。3.2 系统设计

15、思路直流电机的轴上固定有一个小圆盘,圆盘外侧靠近圆周处贴有小磁铁。在圆盘的外侧旁边,与小磁铁的位置相对,放置了一个霍尔传感器芯片。当电机转动一圈时,圆盘上的小磁铁与霍尔芯片相遇,霍尔元件就会产生负跳脉冲信号。负跳脉冲的个数可以完全代表电机的转数。该脉冲信号通过定时器/计数器 1 的外部输入引脚 T1 输入到定时器/计数器 1 并进行计数。因此,定时器/计数器 1 必须用作计数器。另外,使用timer/counter 0作为定时器,计时1s。两个定时器/计数器同时启动后,定时器/计数器1从0开始记录电机的转数。当计数到1s时,定时器/计数器0将关闭定时器/计数器1此时,定时器/计数器1的当前计数

16、值正好是电机每秒的转数。将其转换为每分钟转数并致到数字显示器进行显示。3.3 系统控制电路直流电机转速测试电路图(见附录A)3.4 控制电路说明当系统启动开关S打开时,P1.0引脚输入高电平。此时P1.1管脚会在程序的控制下输出高电平。然后打开两个晶体管以使电机旋转。由于电机的转动需要足够的电流,因此采用了两个晶体管进行电流放大。当开关S关断时,P1.0引脚输入低电平。此时,P1.1 脚将输出低电平。所以两个晶体管同时关闭,电机停止转动。由于电机是电感元件,当它突然从开到关时,会产生很大的反电动势,会击穿晶体。为了保护三极管,在电机两端跨接一个续流二极管,通过它释放反电动势。一个小圆盘安装在电

17、机轴上,与电机同步旋转。当圆盘上的小磁铁遇到霍尔传感器时,由霍尔传感器提供的定时器/计数器 1 的外部输入引脚 T1 提供一个脉冲信号,该信号提供负跳变。霍尔传感器的工作机理是:当外加磁场作用于有电流流动的半导体材料时,会在与电流垂直的方向上产生感应电动势。单片机与外部设备的连接是通过寻址访问外部接口来实现的。由于外部接口使用的是外部数据存储器的地址,所以其地址必须由单片机的P0和P2端口致。其中,P0端口发出接口地址的低8位,P2端口发出接口地址的高8位。图中P0口的P0.0位地址锁存后与8155芯片的A0引脚相连;而P2端口的P2.7位地址连接到8155芯片的片选引脚CS。因此,8155接

18、口芯片地址有以下两种:0 xxxxxxxxxxxxxxx 1 致命令或读取状态时的地址0 xxxxxxxxxxxxxxx 0 读写数据时的地址其中,x可以任意取,所以在控制程序中,这两个地址简单地采用如下形式:0111 1111 1111 1111 (7FFFH)0111 1111 1111 1110 (7FFEH)当8155接口芯片指定为7FFEH地址时,通过单片机的P0口读取转速数据的8个显示段码。8155的复位管脚接上电复位电路。由于控制程序存储在8155单片机的程序存储器中,因此必须将单片机的EA引脚设置为高电平。由于显示器将采用编码扫描方式,8155的扫描信号CSoSC2必须在外部解

19、码(74LS138)。存储在 8155 RAM 中的转速数据的 8 位显示断码通过 OUTAoOUTA3 和 OUTBoOUTB3 引脚输出到数显。图中75451和7404分别是显示扫描和破码信号的驱动芯片。AT89S51引脚图3.5 系统控制程序流程图系统控制程序流程图(见附录B)3.6 控制程序系统控制程序如下:组织结构 0000H ;程序从地址 0 开始AJMP 主要;转移到主程序ORG 000BH ;定时器/计数器 0 中断向量AJMP TSEV ;转到定时器/计数器 0 中断服务程序组织机构 0050H ;主程序起始地址主:LCALL CLR0;调用子程序清除速度数据缓冲区LCALL

20、 CLR1 ;调用子程序清除速度段代码缓冲区LCALL SHSV ;调用显示初始化子程序LACLL TISV ;调用定时器/计数器初始化子程序SETB P1.0 ; P1.0口读引脚准备WRUN: MOV C, P1.0 ;读取启动开关的状态JNC WRUN ;等待启动SETB P1.1 ;启动马达SETB TR0 ;启动定时器/计数器 0SETB TR1;启动定时器/计数器 1这里:JNB F0,这里;等待中断MOV A,TL1 ;测试结束后,将每秒转数致给 A移动 B, #3CH ;在 60 秒内致 B穆尔 AB ;计算每分钟转数MOV R2,A ;每分钟转数的低 8 位数据致到 R2MO

21、V R3,B ;每分钟转数的高8位数据送到R3C1000:CLR C;计算每分钟转数的千位小数MOV A, R2 ;反复从每分钟转数中减去 1000 来计算千位数(双字节减法)SUBB A,#0E8HMOV R2,AMOV A,R3SUBB A,#03HMOV R3,AJC RST0 ;旋转不够INC 40H ;每分钟转数的千进制数以 40H 为单位存储SJMP C1000 ;减足,继续减1000RSY0:MOV A,R2 ;如果减去不够,加1000恢复余数添加 A,#0E8HMOV R2,AMOV A,R3ADDC A,#03HMOV R3,AC100:CLR C;以百为单位计算每分钟转数的

22、十进制数移动 A,R2 ;余数重复减100计算百位(双字节减法)SUBB A,#64HMOV R2,AMOV A,R3SUBB A,#00HMOV R3,AJC RST1 ;旋转不够公司 41H ;每分钟转数的百进制数以 41H 为单位存储SJMP C100 ;足够减少旋转,继续减少100RST1:MOV A,R2;减去不够,加100恢复余数添加 A,#64HMOV R2,AC10:CLR C;十进制数字用于计算每分钟转数MOV A,R2:余数反复减10计算十位(单字节减法)SUBB A,#0AHMOV R2,AJC RST2 ;不能减少旋转INC 42H ;每分钟转数十位十进制数以 42H

23、为单位存储SJMP MOTS;足够减少旋转,继续减少10RST2:MOV A,R2;如果减去不够,加10恢复余数添加 A,#0AH移动 43H,A ;每分钟转数的十进制数存储在单元 43H 中移动 DPTR, #TAB ;显示段码表首地址致到DPTRMOV R0,#30H ;每分钟转数段码表的首地址致到R0移动 R1,#40H ;每分钟转数的十进制数的第一个地址致到 R1MOV R7,#04H ;每分钟转数的十进制数字致到 R7STAB:MOV A,R1;每分钟转数的 4 位十进制数显示段码区域MOVC A,DPTR+A ;从段码表中找到单个数字对应的显示段码移动 R0,A ;将每一位的段码致

24、到段码缓冲区INC R0 ;段码缓冲区地址加1INC R1 ;速度数据区地址加1DJNZ R7,STAB; 4段码传输控制移动 DPIR,#7FFEH; 8155芯片A0位清0,准备写入数据MOV R0,#30HMOV R7,#08H显示:MOV A,R0 ;从段码缓冲区中获取段码MOVX DPTR,AINC R0DJNZ R7, DISP移动 TH0,#00HMOV C,P1.1JC CNTNCLR P1.1LJMPMAINCNTN:SETB TR1;启动定时器/计数器 0SETB TR0CLR F0调用 CLR0LJMP 在这里CLR0: MOV RO#40H ;清除速度数据的 4 位十进

25、制单位(40H43H)MOV R7,#04HCLR2: MOV R0,#00HDJNZ R7, CLR2RETCLR1: MOV R0,#30H ; 8位十进制单位,用于清除0速度数据(30H33H)MOV R7,#08HCLR3: MOV R0,#00HDJNZ R7, CLR3RETSHSV: 移动 DPTR, #7FFFH ;设置8155芯片的Ao位为1,准备位命令和读取状态MOV A, #0D1H ;清零显示等待:MOVX A,DPTR;读取显示清除0状态ACC.7,等待MOV A,#34HMOVX DPTR,AMOV A,#90HMOCX DPTR,ARETTISV:移动 TMOD,

26、#6H;将定时器/计数器0和1的工作模式分别设置为模式1和2MOV TL1,#00H移动 TH0,#0D8HMOV TL0,# 0F0HMOV R1,#64HCLR F0CLR P1.1SETB ET0SERTB EARETTSEV:移动 TH0,#0D8HMOV TL0,# 0F0H十二月 R1 ;中断计数减 1CJNE R1,#00H,END0SETB F0CLR TR0CLR TR1MOV R1,#64HEND0:RETI;从中断返回制表符:DB 3FH、06H、5BH、4FH、66H;断码表,0到9的段码按字节顺序排列DB 6DH、7DH、07H、7FH、6FH3.7 控制程序说明程序

27、中定时器/计数器0定时10ms;定时器/计数器 1 从 0 开始计数;单片机时钟频率为12MHz。为了实现1s的计时目的,在R1寄存器中预置了控制常数100。每次定时器/计数器0中断,中断服务程序将R1数据减1。当减为0时,1s时间已到,所以用户标志置1,两个定时器/计数器分别为同时关闭。返回主程序后,将定时器/计数器1的当前计数值(转/秒)乘以60,计算出电机的转/分,暂存于R3(高位)和R2(低位) ) 寄存器。然后,为了将每分钟转数的二进制数转换为4位十进制数,使用无符号数的双字节减法运算,将R2和R3寄存器中的数据重复减1000,直到时间减去是不够的。并且每次减去 1000,在 40H

28、 单位上加 1 作为转换后的千位。当R2和R3的余数不足以减去1000时,加1000恢复余数。减法不足的判断是根据借位位是否为1。同理,将R2和R3的余数继续减100,以41H为单位计算减法次数为转换后的百位。当余数小于 100 时,使用单字节减法运算。对于余数R2,继续减10,将减法次数统计到42H单位,作为转换后的十位数。当余数 R0 不足减 10 时,加 10 恢复余数,作为转换后的个位数送入 43H 单元。至此,每分钟转数的4位十进制数依次为40H43H单位。之后用查表命令查询每个十进制数的显示段码,致到30H33H单元保存。最后通过8155接口芯片送到数显显示器显示。整个测试到此结束。然后检查系统启动开关是否断开。如果已经断开,关闭电机,使程序回到主程序的起始位置,等待重启。如果仍有连接,则重启两个定时器,并将用户标志、定时器/计数器 1(TL1)和速度数据单元(40H43H)清零,继续下一轮测试过程。综上所述本系统主要采用单片机(AT89S51)作为主控计算芯片。当系统启动开关S打开时,P1.0引脚输入高电平。此时P1.1管脚会在程序的控制下输出高电平。然后打开两个晶体管以使电机旋转。由于电机的转动需要足够的电流,因此采用了两个晶

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论