ImageVerifierCode 换一换
格式:DOCX , 页数:34 ,大小:235.06KB ,
资源ID:16557023      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/16557023.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于单片机的电机测速及显示课程设计Word下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于单片机的电机测速及显示课程设计Word下载.docx

1、 4)第四阶段(1990):微控制器的全面发展阶段。随着单片机在各个领域全面深入地发展和应用,出现了高速、大寻址范围、强运算能力的8位/16位/32位通用型单片机,以及小型廉价的专用型单片机1.2 AT89C51的主要特性与MCS-51 兼容 4K字节可编程闪烁存储器 寿命:1000写/擦循环数据保留时间:10年全静态工作:0Hz-24Hz三级程序存储器锁定128*8位内部RAM32可编程I/O线两个16位定时器/计数器5个中断源 可编程串行通道低功耗的闲置和掉电模式片内振荡器和时钟电路1.3管脚说明VCC:供电电压。GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TT

2、L门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”

3、时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P

4、3口也可作为AT89C51的一些特殊功能口,如下表所示: P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断0) P3.3 /INT1(外部中断1) P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输入) P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通) P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程

5、脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0

6、000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。1.4振荡器特性XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。1.5芯片

7、擦除整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。 此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。二、硬件电路的设计2.1 AT89C51下载器部分SP-51Pro(即Easy51pro)编程器可以烧录Atmel公司系列单片机

8、芯片,具有性能稳定,烧录速度快,性价比高等优点。产品性能介绍如下:支持的芯片支持目前最为经典和市场占有量最大的ATMEL公司生产的AT89C51、C52、C55和最新的S51、S52;AT89C1051、2051、4051等芯片。产品特点1.使用串口通讯,芯片自动判别,编程过程中的擦除、烧写、校验各种操作完全由编程器上的监控芯片89C51控制,不受PC配置及其主频的影响,因此烧写成功率高可以达到100,烧写速度很快并且烧写速度和微机的档次无关。2.采用57600高速波特率进行数据传送,编程速度可以和一般并行编程器相媲美,经测试,烧写一片4K ROM的AT89C51仅需要9.5S,而读取和校验仅

9、需要3.5S。3.体积小巧,省去笨重的外接电源适配器,直接使用USB端口5V电源, 携带方便,非常初学者学习51单片机的要求。4.软件界面友好,菜单、工具栏、快捷键齐全,全中文操作,提供加密功能,可以保护您的创作产权。可以说是麻雀虽小,五脏俱全!5.功能完善,具有编程、读取、校验、空检查、擦除、加密等系列功能;6.40pin和20pin锁紧插座,所有器件全部以第一脚对齐,无附加跳线,对于DIP封装芯片无需任何适配器;7.采用优质万用锁紧插座,和接触不良等问题彻底说再见,可烧写40脚单片机芯片和20脚单片机芯片8.改进的烧写深度确保每一片C51系列芯片的反复烧写次数都能达到1000以上!内部数据

10、至少保存10年。9.因为采用了9针传口通讯,这样一来就不会再和打印机抢一个打印口,随时随地想烧就烧,让芯片编程成为一种快乐!(3)硬件连接 1.通讯电缆与编程器连接好,2.将串口插头插入电脑串口,3.USB插头插入电脑任一个USB口,此时编程器上LED点亮,表明电源接通。4.接着安装软件,本软件支持Win9x/me/2000/NT,标准Window操作界面。本软件属于绿色软件,不需要安装,直接把相关的软件拷贝到硬盘中,运行其中的Easy 51Pro 2_0程序即可。软件使用 程序启动后,会自动检测硬件及连接,状态框中显示“就绪”字样,表示编程器连接和设置均正常。否则请检查硬件连接和端口设置。

11、把单片机芯片正确地放到编程器的相应插座上,注意,芯片的缺口要朝向插座的把手方向。芯片放好后,就可以对芯片进行读写操作了,读写操作按下面的步骤进行: 1、程序运行,请先选择器件(点下选框)2、用“打开文件”选择打开要编写的.HEX 和 .BIN 文件3、用“保存文件”可以保存读出来的文件4、用“擦除器件”擦除芯片5、用“写器件”编程6、用“读器件”读取芯片中的程序,加密的读不出来7、用“校验数据”检查编程的正确与否8、用“自动完成”自动执行以上各步骤9、用“加密”选择加密的级数2.12电机驱动部分2.2电机驱动部分图4-3中所示为一个典型的直流电机控制电路。电路得名于“H桥驱动电路”是因为它的形

12、状酷似字母H。4个三极管组成H的4条垂直腿,而电机就是H中的横杠(注意:图4.12及随后的两个图都只是示意图,而不是完整的电路图,其中三极管的驱动电路没有画出来)。如图所示,H桥式电机驱动电路包括4个三极管和一个电机。要使电机运转,必须导通对角线上的一对三极管。根据不同三极管对的导通情况,电流可能会从左至右或从右至左流过电机,从而控制电机的转向。图4-3 H桥简易驱动电路要使电机运转,必须使对角线上的一对三极管导通。例如,如图4-4所示,当Q1管和Q4管导通时,电流就从电源正极经Q1从左至右穿过电机,然后再经Q4回到电源负极。按图中电流箭头所示,该流向的电流将驱动电机顺时针转动。当三极管Q1和

13、Q4导通时,电流将从左至右流过电机,从而驱动电机按特定方向转动(电机周围的箭头指示为顺时针方向)。图4-4 H桥电路驱动电机顺时针转动图4-5所示为另一对三极管Q2和Q3导通的情况,电流将从右至左流过电机。当三极管Q2和Q3导通时,电流将从右至左流过电机,从而驱动电机沿另一方向转动(电机周围的箭头表示为逆时针方向)。图4-5 H桥驱动电机逆时针转动 驱动电机时,保证H桥上两个同侧的三极管不会同时导通非常重要。如果三极管Q1和Q2同时导通,那么电流就会从正极穿过两个三极管直接回到负极。此时,电路中除了三极管外没有其他任何负载,因此电路上的电流就可能达到最大值(该电流仅受电源性能限制),甚至烧坏三

14、极管。基于上述原因,在实际驱动电路中通常要用硬件电路方便地控制三极管的开关。图4-6 所示就是基于这种考虑的改进电路,它在基本H桥电路的基础上增加了4个与门和2个非门。4个与门同一个“使能”导通信号相接,这样,用这一个信号就能控制整个电路的开关。而2个非门通过提供一种方向输人,可以保证任何时候在H桥的同侧腿上都只有一个三极管能导通。(与本节前面的示意图一样,图4.15所示也不是一个完整的电路图,特别是图中与门和三极管直接连接是不能正常工作的。)图4-6 具有使能控制和方向逻辑的H桥电路采用以上方法,电机的运转就只需要用三个信号控制:两个方向信号和一个使能信号。如果DIRL信号为0,DIRR信号

15、为1,并且使能信号是1,那么三极管Q1和Q4导通,电流从左至右流经电机(如图4.-7所示);如果DIRL信号变为1,而DIRR信号变为0,那么Q2和Q3将导通,电流则反向流过电机。图4-7 使能信号与方向信号的使用 实际使用的时候,用分立元件制作H桥是很麻烦的,好在现在市面上有很多封装好的H桥集成电路,接上电源、电机和控制信号就可以使用了,在额定的电压和电流内使用非常方便可靠。比如常用的L293D、L298N、TA7257P、SN754410等。三、程序设计3.1 下载器程序#include BYTE ComBuf18;/串口通讯数据缓存,发送和接收都使用UINT nAddress;/ROM中

16、地址计数UINT nTimeOut;/超时计数ProWork pw;/编程器一般操作void Delay_us(BYTE nUs)/微秒级延时255us TH0=0; TL0=0; TR0=1; while(TL0nUs)/利用T0做定时计数器,循环采样,直到达到定时值 TR0=0;void Delay_ms(UINT nMs)/豪秒级的延时65535ms UINT n=0; while(nnMs)/利用T0做定时计数器,循环采样,直到达到定时值 TH0=0; TL0=20; while(TH04) n+; BOOL WaitComm()/等待上位机的命令,18字节 BYTE n=0; RI=

17、0; while(!RI)/等待第一个字节 ComBufn=SBUF; n+; for(n;n10000)/后17个字节都有超时限制 return 0; ComBufn=SBUF; RI=0; return 1;BOOL WaitResp()/等待上位机回应,1字节,有超时限制 nTimeOut=0; nTimeOut+; if(nTimeOut50000) return 0; ComBuf0=SBUF;BOOL WaitData()/写器件时等待上位机数据,18字节,有超时限制 BYTE n; for(n=0;10000) void SendData()/发送数据或回应操作完成,18字节 T

18、I=0; SBUF=ComBufn;TI)void SendResp()/回应上位机1个字节,在写器件函数中使用 TI=0; SBUF=ComBuf0;void SetVpp5V()/设置Vpp为5v P3_4=0; P3_3=0;void SetVpp0V()/设置Vpp为0v P3_4=1;void SetVpp12V()/设置Vpp为12v P3_3=1;void RstPro()/编程器复位 pw.fpProOver();/直接编程结束 SendData();/通知上位机,表示编程器就绪,可以直接用此函数因为协议号(ComBuf0)还没被修改,下同void ReadSign()/读特征

19、字 pw.fpReadSign();/通知上位机,送出读出器件特征字void Erase()/擦除器件 pw.fpErase();/通知上位机,擦除了器件void Write()/写器件 pw.fpInitPro();/编程前的准备工作/回应上位机表示进入写器件状态,可以发来数据 while(1) if(WaitData()/如果等待数据成功 if(ComBuf0=0x07)/判断是否继续写 for(n=2;n+)/ComBuf217为待写入数据块 if(!pw.fpWrite(ComBufn)/调用写该器件一个单元的函数 pw.fpProOver();/出错了就结束编程 ComBuf0=0x

20、ff; SendResp();/回应上位机一个字节,表示写数据出错了 WaitData();/等待上位机的回应后就结束 return; nAddress+;/下一个单元 ComBuf0=1;/回应上位机一个字节,表示数据块顺利完成,请求继续 SendResp(); else if(ComBuf0=0x00)/写器件结束 break; else/可能是通讯出错了 pw.fpProOver(); return; else/等待数据失败 pw.fpProOver(); return;/编程结束后的工作 Delay_ms(50);/延时等待上位机写线程结束 ComBuf0=0;/通知上位机编程器进入就

21、绪状态void Read()/读器件/先设置成编程状态/回应上位机表示进入读状态 if(WaitResp()/等待上位机回应1个字节 if(ComBuf0=0)/ComBuf0=0表示读结束 else if(ComBuf0=0xff)/0xff表示重发 nAddress=nAddress-0x0010; for(n=2;n+)/ComBuf217保存读出的数据块 ComBufn=pw.fpRead();/ nAddress+; ComBuf0=6;/向上位机发送读出的数据块 SendData(); else break;/等待回应失败 /操作结束设置为运行状态void Lock()/写锁定位

22、pw.fpLock();所支持的FID,请在这里继续添加extern void PreparePro00();/FID=00:AT89C51编程器extern void PreparePro01();/FID=01:AT89C2051编程器extern void PreparePro02();/FID=02:AT89S51编程器void main() SP=0x60; SetVpp5V();/先初始化Vpp为5v SCON=0x00; TCON=0x00; /PCON=0x00;/波特率*2 IE=0x00; /TMOD: GATE|C/!T|M1|M0|GATE|C/!T|M1|M0 / 0

23、 0 1 0 0 0 0 1 TMOD=0x21;/T0用于延时程序 TH1=0xff; TL1=0xff;/波特率28800*2,注意PCON /SCON: SM0|SM1|SM2|REN|TB8|RB8|TI|RI / 0 1 0 1 0 0 0 0 SCON=0x50; TR1=1; Delay_ms(1000);/延时1秒后编程器自举 while(1)/串口通讯采用查询方式 if(!WaitComm()/如果超时,通讯出错 Delay_ms(500); ComBuf0=0;/让编程器复位,使编程器就绪 switch(ComBuf1)/根据FID设置(ProWork)pw中的函数指针 case 0:/at89c51编程器 PreparePro00(); case 1:/at89c2051编程器 PreparePro01(); case 2:/at89s51编程器 PreparePro02(); /case 3:支持新器件时,请继续向下添加 / break; /case 4: default: ComBuf0=0xff; ComBuf1=0xff;/表示无效的操作

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1