欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载  

    单片机课程设计-基于单片机的电机测速系统.doc

    • 资源ID:3262620       资源大小:371.52KB        全文页数:30页
    • 资源格式: DOC        下载积分:6
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要6
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    单片机课程设计-基于单片机的电机测速系统.doc

    I 单片机课程设计单片机课程设计 基于单片机的电机测速系统基于单片机的电机测速系统 姓姓 名名: 专业专业班班级级: 08 级电级电信信 2 班班 学学 号号: 指指导导老老师师: 目录目录 II 1 1 前言前言1 1 2 2总体方案设计总体方案设计2 2 2.1 方案论证 2 2.2 方案比较 2 2.3 方案选择 3 3.3.硬件部分设计硬件部分设计4 4 3.1 速度检测电路 4 3.1.1 开关型霍尔传感器介绍.4 3.1.2 传感检测电路 5 3.2 单片机最小系统电路 6 3.2.1 主控器 STC89C52 的介绍 .7 3.2.2 时钟电路 8 3.2.3 复位电路 9 3.3 数码显示电路 .10 3.4 RS-232 串行通信接口电路.11 3.4.1 MAX232 介绍.11 3.4.2 串行通信接口电路12 4.4. 软件设计软件设计1414 4.1 主程序设计 .14 4.2 T0 定时中断程序设计.15 心得体会心得体会1717 附录附录1818 附录 1:电机测速系统总电路图 .18 附录 2:电机测速系统总程序代码 .19 1 1 前言前言 随着科技的飞速发展,计算机应用技术日益渗透到社会生产生活的各个领 域,而单片机的应用则起到了举足轻重的作用。单片机又称单片微控制器,就 是把一个计算机系统集成到一个芯片上。它完整地包含了计算机内部的 CPU(运算器、控制器)、程序存储器(相当于计算机的硬盘)、数据存储器(相 当于计算机的内存)、输入输出端口等。虽然它的运算速度无法和计算机相比, 但在一些实际的控制应用场合已经足够使用了。对于高等院校电子类和计算机 类的学生,学习单片机是很重要的,而进行应用单片机的课程设计更是重中之 重,将所学理论知识应用到实际,使更加全面的了解和掌握单片机的应用。 在工程实践中,经常会遇到各种需要测量转速的场合,例如在发动机、电 动机、机床主轴等旋转设备的试验运转和控制中,常需要分时或连续测量、显 示其转速及瞬时速度。为了能精确地测量转速,还要保证测量的实时性,要求 能测得瞬时转速。本文提出一种基于STC89C52单片机实施电机转速测量的方法, 利用霍尔传感器采集脉冲信号,通过定时计数算法程序,将转速结果实时显示 出来。 在本次设计中也用到了一些常用的数字电子单元元件,如霍尔传感器,霍 尔器件作为一种转速测量系统的传感器,具有结构牢固、体积小、重量轻、寿 命长、安装方便等优点,。在实际的使用中,一般需要一个铁质的测速齿轮, 齿厚大于2 mm即可,将之固定在待测转速的轴上。 2 2总体方案设计总体方案设计 2.12.1 方案论证方案论证 在工程实践中,经常会遇到各种需要测量转速的场合,例如在发动机、电 动机、机床主轴等旋转设备的试验运转和控制中,常需要分时或连续测量、显 示其转速及瞬时速度。为了能精确地测量转速,还要保证测量的实时性,要求 能测得瞬时转速。本次课程设计主要是利用 STC89C52 单片机和传感器来设计电 机电机测速系统。利用传感器采集脉冲信号,通过定时计数算法程序,将转速 结果实时显示出来。在本次设计中是利用单片机进行信号处理,信号的采集是 使用传感器。对于选择何种传感器来采集信号是对测量的精度是有很大影响的。 所以在本次方案比较中主要讨论传感器的选择。 2.22.2 方案比较方案比较 电机 光敏 三极 管 信 号 转 换 L E D 显 示 单片机处理 光 敏 二 极 管 图 2.1 方案一方框图 方案一包括传感器、处理器和显示 3 个部分。其方框图如图 2.1 所示。 在该方案中传感器是由红外发光二极管,和红外光敏三极管构成。测速的 过程为:在电机的转轴上安装一个圆盘,并在圆盘的边缘处开一个孔让二极管 发出的红外光刚好可以通过。在圆盘的上下方分别安装好发光二极管和光敏三 极管,当电机转动时就可以通过圆盘来改变光敏三极管接收的光线,从而产生 点位信号的变化,这样就构成了一个收发检测系统,可以检测电机的转速。运 用的原理和光电耦合器是相同的。 3 电机 霍 尔传 感器 信 号 转 换 LED 显 示 单片机处理 图 2.2 方案二方框图 方案二也由传感器、处理器和显示 3 个部分几部分组成,但所选择的传感 器类型不同,其方框图如图 2.2 所示。 此方案的测速系统主要是由开关型霍尔传感器 A3144E 以及磁钢构成,由它 们来检测电机的转速。工作方式为:将磁钢安装在电机的转轴上,而霍尔传感 器则放在转轴的旁边,霍尔传感器连接在电路中,当磁钢随转轴经过霍尔传感 器时,由开关型霍尔传感器的工作原理知,此时将输出一个低电平信号;而当 磁钢离开霍尔传感器后,又将输出一个高电平。这样通过高低电平的转换,将 其送入单片机后就可以测量它的转速。 2.32.3 方案选择方案选择 两个方案的主体电路相同,只是传感的的选择不同。而选择开关型霍尔传 感器则具有多种优点:精度高:在工作温度区内精度优于 1%。过载能力强: 当原边电流超负荷,模块达到饱和,可自动保护,即使过载电流是额定值的 20 倍时,模块也不会损坏。模块的高灵敏度,使之能够区分在“高分量”上的 弱信号,例如:在几百安的直流分量上区分出几毫安的交流分量。还可以通 过使用多块磁钢来倍频,以增加测量的精度。 鉴于以上考虑,最终选定方案二为本次课程设计方案。 4 3.硬件部分设计硬件部分设计 3.13.1 速度检测速度检测电路电路 3.1.13.1.1 开关型霍尔传感器介绍开关型霍尔传感器介绍 霍尔传感器是利用霍尔效应原理制成的一种磁敏传感器。它是近年来为适 应信息采集的需要而迅速发展起来的一种新型传感器,这类传感器具有工作频 带宽,响应快、面积小、灵敏度高、无缺点、便于集成化、多功能化等优点, 且易与计算机和其它数字仪表接口,因此被广泛用于自动监测、自动测量、自 动报警、自动控制、信息传递、生物医学等各个领域。此处主要介绍开关型霍 尔传感器。 开关型霍尔传感器由稳压器A、硅霍尔片B、差分放大器C、施密特触发器D 和OC门输出E五部分组成,如图3.11所示从输入端1输入电压Vcc,经稳压器A 稳压后加在硅霍尔片B的两端,以提供恒定不变的工作电流在垂直于霍尔片的 感应面方向施加磁场,产生霍尔电势差Vw,该n信号经差分放大器c放大后送至 施密特触发器D整形当磁场达到“工作点”(即B。)时,触发器D输出高电压 (相对于地电位),使三极管E导通,输出端V。输出低电位,此状态称为“开”。 当施加的磁场达到“释放点”(即B。)时,触发器D输出低电压,使三极管E截止, 输出端y。输出高电位,此状态称为“关”。这样2次高低电位变换,使霍尔传 感器完成了1次开关动作。开关型霍尔传感器构成图如图3.1所示: 图3.1 开关型霍尔传感器构成图 开关型霍尔集成传感器(以下简称开关型霍尔传感器)主要被应用于周期和 频率的测量、转速的测量、液位控制等方面。常用的开关型霍尔传感器有美国 sPRAG1 公司的UGN3000系列如UGN3020、UGN3O3O等。它没有输入端,因磁场是 由空间输入的。规定用磁铁的S极接近开关型霍尔传感器正面时形成的B为正值, 从图4.2曲线看:当B =0时, 0为高;B=Bop时, 0立即变低,这点称为“工作 5 点”。继续升高B, 0不变。降低B到BRp时,Vo又回升。这点称为“释放点”。 如图3.2所示,B 一 B 称为磁滞。在此差值内,输出电位 。保持高电位或 低电位不变,因而输出稳定可靠。 图 3.2 开关型霍尔传感器输出电压与外加磁感应强度关系 3.1.23.1.2 传感检测传感检测电路电路 速度检测电路是由开关型霍尔传感器和磁钢组成。其电路图如图 3.3 所示。 测量电机转速的第一步就是要将电机地转速表示为单片机可以识别的脉冲 信号,从而进行脉冲计数。霍尔器件作为一种转速测量系统的传感器,具有结 构牢固、体积小、重量轻、寿命长、安装方便等优点,当电机转动时,带动传 感器,产生对应频率的脉冲信号,经过信号处理后输出到计数器或其他的脉冲 计数装置,进行转速的测量。在实际的使用中,一般需要一个铁质的测速齿轮, 齿厚大于 2 mm 即可,将之固定在待测转速的轴上。 所谓磁钢,就是磁钢就是一种有磁性的钢铁。 在传感检测电路中将磁钢安装在电机的转轴上,而霍尔传感器则放在转轴 的旁边,霍尔传感器连接在电路中,当磁钢随转轴经过霍尔传感器时,由开关 型霍尔传感器的工作原理知,此时将输出一个低电平信号;而当磁钢离开霍尔 传感器后,又将输出一个高电平。这样通过高低电平的转换,将其送入单片机 后就可以测量它的转速。其电路如图 3.3 所示。 6 +5V 1 J2 CON2 1 OUT 2 GND 3 VCC R17 传传传传传 GND A - +MG1 MOTOR SERVO 图 3.3 传感器部分 3.3.2 2 单片机最小系统单片机最小系统电路电路 单片机最小系统电路如图 3.4 所示,由主控器 STC89C52、时钟电路和复位 电路三部分组成。单片机 STC89C52 作为核心控制器控制着整个系统的工作,而 时钟电路负责产生单片机工作所必需的时钟信号,复位电路使得单片机能够正 常、有序、稳定地工作。 图 3.4 单片机最小系统 7 3.2.13.2.1 主控器主控器 STC89C52STC89C52 的介绍的介绍 本系统采用单片机 STC8952 作为主控制器,使用霍尔传感器测量电机的转 速,最终在 LED 上显示测试结果。此外,还可以根据需要调整制电机的转速, 硬件组成由图 3.5 所示。 单片机(Micro Controller Unit),又称为微控制器,是指在一块芯片上集 成了中央处理器 CPU、随机存储器 RAM、程序存储器 ROM、定时器/计数器、中 断控制器以及串行和并行 I/0 接口等部件,构成一个完整的微型计算机。目前, 新型单片机内还有 A/D(D/A)转换器、高速输入输出部件、DMA 通道、浮点运算 等特殊功能部件。由于它的结构和指令功能都是按工业控制要求设计的,特别 适用于工业控制及其数据处理场合。 STC89C52 是拥有 256 字节的 RAM,8K 的片内 ROM,3 个 16 位定时器,6 个 中断源的微处理器,也就是俗称的单片机。 89系列单片机的内核是8031,所以其指令与Intel 8051 系列单片机完全兼 容,并且具有以下优点: (1)内部含有Flash 存储器(STC89C52 有8k)。因此在系统的开发过程 中可以十分容易进行程序的修改,这就大大缩短了系统的开发周期。同时,在 系统工作过程中,能有效地保存一些数据信息,即使外界电源损坏也不影响到 信息的保存。 (2)插座与80C51兼容。89系列单片机的引脚和80C51是一样的,当用89系 列单片机取代80C51时,可以直接进行代换。 (3)静态时钟方式。89系列单片机采用静态时钟方式,可以节省电能,这 对于降低便携式产品的功耗十分有用。 (4)错误编程亦无废品产生。因为89系列单片机内部采用了Flash 存储器, 所以,错误编程之后仍可以重新编程,直到正确为止,故不存在废品。 (5)可反复进行系统试验。用89系列单片机设计的系统,可以反复进行系 统试验,每次试验可以编入不同的程序,这样可以保证用户的系统设计达到最 优。而且随着用户的需要和发展,还可以进行修改,使系统不断能追随用户的 最新要求。 8 图 3.5 STC89C52 单片机引脚图 STC8952 引脚图如图 3.5 所示,此芯片共 40 引脚,每个引脚的功能如下: 18 脚: 通用 I/O 接口 p1.0p1.7 9 脚: rst 复位键 10 .11 脚:RXD 串口输入 TXD 串口输出 1219:I/O p3 接口 (12,13 脚 INT0 中断 0;INT1 中断 1;14,15 : 计数脉 冲 T0 T1;16,17: WR 写控制 RD 读控制输出端) 18,19: 晶振谐振器 20: 地线 2128:p2 接口 高 8 位地址总线 29: psen 片外 rom 选通端 单片机对片外 rom 操作时 29 脚(psen)输出 低电平 30:ALE/PROG 地址锁存器 31:EA rom 取指令控制器 高电平片内取 低电平片外取 3239:p0.0p0.7(注意此接口的顺序与其他 I/O 接口不同 与引脚号的排列 顺序相反) 40:电源+5V 3.2.23.2.2 时钟电路时钟电路 STC89C52 单片机芯片内部设有一个由反向放大器所构成的振荡器。19 脚 (XTAL1)为振荡器。 反相放大器和内部时钟发生电路的输入端,18 脚(XTAL2)为振荡器反相放 大器的输出端。在 XTAL1 和 XTAL2 引脚上外接定时元器件,内部振荡电路就会 产生自激振荡。本系统采用的定时元器件为石英晶体(晶振)和电容组成的并 9 联谐振回路。晶振频率为 6MHz,电容大小为 1530pF,电容的大小可以起到频 率微调的作用,时钟电路如图 3.6 所示。 图 3.6 时钟电路(晶振) 3.2.33.2.3 复位电路复位电路 STC89C52 的复位是由外部的复位电路来实现的,复位电路通常采用上电复 位和按钮复位两种方式,本设计采用的是最简单的上电自动复位电路,其电路图 如图 3.7 所示。上电自动复位是通过外部复位电路的电容充电实现的,当电源 接通时只要 VCC 的上升时间不超过 1 毫秒,就可以实现自动上电复位。本设计时 钟频率选用 6MHZ,电容取 22 微法,电阻取 1 千欧。 图 3.7 复位电路 10 3.33.3 数码显示数码显示电路电路 LED 又称为数码管,它主要由 8 段发光二极管组成的不同组合,可以显示 ag 为数字和字符显示段,h 段为小数点显示,通过 ag 为 7 个发光段的不同 组合,可以显示 09 和 AF 共 16 个数字和字母。LED 可以分为共阴极和共阳 极两种结构。共阴极结构即把 8 个发光二极管阴极连在一起。这种装入数码管 中显示字形的数据称字形码,又称段选码。 点亮 LED 显示器有两种方式:一是静态显示:二是动态显示。 所谓静态显示,就是当显示器显示某一个字符时,相应的发光二极管恒定 的导通或截止。如图 3.8 所示为 4 位静态 LED 显示电路。该电路每一位可单独 显示。只要在要显示的那位段选线上保持段选电平,该位就能保持显示相应的 显示字符。这种电路的优点是:在同一瞬间可以显示不同的字符;但缺点就是 占用端口资源较多。从下图可以看出,每位 LED 显示器需要单独占用 8 根端口 线,因而,在数据较多时不采用此中设计,而是采用动态显示方式。本设计采 用静态显示。 图 3.8 静态显示电路 所谓动态显示,就是将要显示的多位 LED 显示器采用一个 8 位的段选端口, 然后采用动态扫描方式一位一位地轮流点亮各位显示器。如下图 3.9 所示为 4 位 LED 动态显示电路。 +5V P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 P2.0 P2.1 P2.2 AT89C51 P2.3 图 3.9 4 位动态 LED 显示器电路 11 本设计用到的是 LED 显示器静态显示方式,其电路如图 3.10 所示是发光二 极管显示器(LED)的结构、工作原理及接口电路。 图 3.10 LED 显示部分 3.43.4 RS-232RS-232 串行通信接口电路串行通信接口电路 单片机的串行口是非常有用的,通过它我们可以把单片机系统的数据传回 电脑处理或者接受电脑传过来的数据而进行相应的动作。 微控制器有许多标准的通信方法,但在主/从嵌入式系统中,最常用的是 RS23 2 串行接口、SPI 和 I2C。52 单片机有一个全双工的串行通信口,非常适 合与电脑进行通信,本次课程设计,采用的是 RS232 出行接口方式。 3.4.13.4.1 MAX232MAX232 介绍介绍 MAX232 是由德州仪器公司(TI)推出的一款兼容 RS232 标准的芯片。由于 电脑串口 rs232 电平是-10v +10v,而一般的单片机应用系统的信号电压是 TTL 电平 0 +5v,max232 就是用来进行电平转换的,该器件包含 2 驱动器、2 接收器 和一个电压发生器电路提供 TIA/EIA-232-F 电平。MAX232 引脚图如图 3.11 所 示。 该器件符合 TIA/EIA-232-F 标准,每一个接收器将 TIA/EIA-232-F 电平转 换成 5-V TTL/CMOS 电平。每一个发送器将 TTL/CMOS 电平转换成 TIA/EIA-232- F 电平。 12 其主要特点为: 1、单 5V 电源工作 2、LinBiCMOSTM 工艺技术 3、两个驱动器及两个接收器 4、±30V 输入电平 5、低电源电流:典型值是 8mA 6、符合甚至优于 ANSI 标准 EIA/TIA-232-E 及 ITU 推荐标准 V.28 7、ESD 保护大于 MIL-STD-883(方 法 3015)标准的 2000V 图 3.11 MAX232 引脚图 3.4.23.4.2 串行通信接口电路串行通信接口电路 串行端口的本质功能是作为 CPU 和串行设备间的编码转换器。当数据从 CPU 经过串行端口发送出去时,字节数据转换为串行的位。在接收数据时,串 行的位被转换为字节数据。 在 Windows 环境(Windows NT、Win98、Windows2000)下,串口是系统资 源的一部分。 应用程序要使用串口进行通信,必须在使用之前向操作系统提出 资源申请要求(打开串口),通信完成后必须释放资源(关闭串口)。 本次课程设计串行通信接口电路如图 3.12 所示。 13 图 3.12 串行通信接口电路 14 4. 软件设计软件设计 对于电机转速的测定,一般有两种方法:一种是测频率,就是在给定时间 内测电机转了几圈,这种方法适合于高速旋转的电机;另一种则是测周期,就 是测电机转一圈的时间,这种方法适合于测低速的电机。而我们这次使用的电 机是一个高速的直流电机,所以就选用测频法来编程。 4.14.1 主程序设计主程序设计 本系统采用 STC89C52 中的 T0 定时器和 T1 计数器配合使用对转速脉冲定时 计数。计数器 T1 工作于计数状态对外部脉冲进行计数;T0 工作为定时器方式 每次定时 10ms。本设计程序编程的思想就是在给定的 10ms 之内,用单片机自 带的计数器 T1 对外部脉冲进行计数。主程序的流程图如图 4.1 所示。 Y 平 显示数据 关闭计数器 T1 处理 TH1,TH0 数 据 buf_min=100 等待 50ms 开启计数器 T1 开启定时 T0 N 平 初始化 T0,T1 开始 图 4.1 主程序流程图 主程序部分程序如下: #include 15 #define uint unsigned int sbit CNPN0=P00; sbit CNPN1=P01; sbit CNPN2=P02; sbit CNPN3=P03; uint buf_min=0x1,flag; void delay(uint x)/x=1000 表示 4ms while(-x); void main() uint num10=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; uint i,j,temp; uint sum=0x0,disnum4=0; TMOD=0x51; /TO 工作为定时方式,T1 工作为计数方式 TH0=-10236/256; TL0=-10236%256; TH1=0; TL1=0; EA=1; /启动外部中断 0 4.24.2 T0T0 定时中断程序设计定时中断程序设计 T0 定时中断程序主要是完成 10ms 的定时任务,并且对变量 buf_min 进行 加一处理,其中在对 T0 进行赋初值时,选择为 10236 而不是 10000。主要是 c 语言在经过反汇编后,一条 c 语句将会编译成几条语句,这样就增加了指令执 行的时间,使定时产生误差,而在经过多次调试后,选择 10236 为 T0 初值是最 接近 10ms 的。 16 Y 进入定时中断 关闭定时器T0 开启定时器 T0 buf_min 加 1 TH0,TL0 赋值 退出中断 图 4.2 T0 定时中断流程图 T0 定时中断部分程序: void time0() interrupt 1 /定时 10ms EA=0; ET0=0; TR0=0; TH0=-10236/256; TL0=-10236%256; buf_min+; EA=1; ET0=1; TR0=1; 17 心得体会心得体会 在本次课程设计中,介绍了一种基于 STC89C52 单片机的电机测速系统,该 测速系统采用集成霍尔传感器敏感速率信号,具有频率响应快、抗干扰能力强 等特点。霍尔传感器的输出信号经信号调理后,通过单片机对连续脉冲记数来 实现转速测控,并且充分利用了单片机的内部资源,有很高的性价比。经过测 试并对误差进行分析发现,该系统的测量误差在 5以内,并且在测量范围内 转速越高测量精度越高。所以该系统在一般的转速检测和控制中均可应用。 通过本次课程设计,我对单片机的工作原理和应用有了深入的理解,掌握了 单片机系统软硬件设计的基本方法,对一个课题如何画流程图,编写程序等有 了一定的认识。使我深刻体会到单片机技术应用领域的广泛,也让我了解到单 片机技术对当今人们生活的重要性。 虽然本次课程设计不要求做出实物,而且只是针对微机控制的一个领域进 行研究和查找有关的单片机控制的资料。但是已经让我了解到了做一个课程设 计不仅要全面的分析和解决在设计时出现的问题。也通过查阅资料了解到微机 控制的重要性和其应用的广泛性。在这不断发展的社会,微机控制的自动化已 经占据了很大的地位,而且其发展的速度是很快的,所以对于我们学习这个专 业的学生来说,就要求我们应该不断的去了解最新的设计和理论知识,那样才 能让我们在本领域有一立足之地。 18 附录附录 附录附录 1 1:电机测速系统总电路图:电机测速系统总电路图 EA/VP 31 X1 19 X2 18 RESET 9 RD/P3.7 17 WR/P3.6 16 INT0/P3.2 12 INT1/P3.3 13 T0/P3.4 14 T1/P3.5 15 P1.0 1 P1.1 2 P1.2 3 P1.3 4 P1.4 5 P1.5 6 P1.6 7 P1.7 8 P0.0 39 P0.1 38 P0.2 37 P0.3 36 P0.4 35 P0.5 34 P0.6 33 P0.7 32 P2.0 21 P2.1 22 P2.2 23 P2.3 24 P2.4 25 P2.5 26 P2.6 27 P2.7 28 PSEN 29 ALE/P 30 TXD/P3.1 11 RXD/P3.0 10 VCC 20 GND 40 IC1 89C51 a 7 b 6 c 4 d 1 e 3 f 8 g 9 dp 2 G1 10 G2 5 LED2 2LED-CC a 7 b 6 c 4 d 1 e 3 f 8 g 9 dp 2 G1 10 G2 5 LED1 2LED-CC dpabcdefggabcdefdp C1 22uF C2 22uF Y1 12M T1 PNP T2 PNP T3 PNP T4 PNP +5V +5V R2 1k R1 200 C3 22u +5V S1 R3 200 R4 200 R5 200 R6 200 R7 200 R8 200 R9 200 R10 200 R1 IN 13 R2 IN 8 T1 IN 11 T2 IN 10 V+ 2 V- 6 R1 OUT 12 R2 OUT 9 T1 OUT 14 T2 OUT 7 C1+ 1 C1 - 3 C2+ 4 C2 - 5 U1 MAX232AEPE(16) 1 6 2 7 3 8 4 9 5 J3 DB9 C4 0.1u C8 0.1u C5 0.1u C7 0.1u C6 0.1u +5V 1 J2 CON2 R11 1K R12 1K R13 1K R14 1K 1 J1 CON1 1 OUT 2 GND 3 VCC R17 传传传传传 GND A - +MG1 MOTOR SERVO 19 附录附录 2 2:电机测速系统总程序代码:电机测速系统总程序代码 include #define uchar unsigned char #define uint unsigned int sbit G=P16; sbit ENB=P11; sbit IN3=P12; sbit IN4=P10; sbit wela=P27; sbit dula=P26; int rate; unsigned char dat_buf10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7c,0x07,0x7f,0x67; uint ttt=0; void delay(uint z) uint x,y; for(x=z;x0;x-) for(y=110;y0;y-); void display(uchar shi,uchar ge) dula=1; P0=dat_bufshi; dula=0; P0=0xff; wela=1; P0=0xfe; wela=0; delay(1); dula=1; P0=dat_bufge; dula=0; P0=0xff; wela=1; P0=0xfd; wela=0; delay(1); 20 dula=1; P0=dat_bufshi; dula=0; P0=0xff; wela=1; P0=0xfb; wela=0; delay(1); dula=1; P0=dat_bufge; dula=0; P0=0xff; wela=1; P0=0xf7; wela=0; delay(1); void ISR0(void) interrupt 0/外部中断 0 服务例程 rate+; void T0ISR(void) interrupt 1/定时器 T0 中断响应 unsigned char ge,shi; TL0=0x0c; TH0=0xf0; ttt+; if(ttt500) ttt=0; shi=rate/10; ge=rate%10; rate=0; main() TMOD=0x00; TL0=0x0c; TH0=0xf0; PT0=0; 21 TR0=1; ET0=1; IT0=1;/外部中断 0 为下降沿触发 EX0=1;/开 EX0 中断 EA=1; while(1) uchar shi,ge; G=0; ENB=0; IN3=1; IN4=0; display(shi,ge); #include #define uchar unsigned char #define uint unsigned int sbit G=P16; sbit ENB=P11; sbit IN3=P12; sbit IN4=P10; sbit wela=P27; sbit dula=P26; int rate; unsigned char dat_buf10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7c,0x07,0x7f,0x67; uint ttt=0; void delay(uint z) uint x,y; for(x=z;x0;x-) for(y=110;y0;y-); void display(uchar shi,uchar ge) dula=1; P0=dat_bufshi; dula=0; P0=0xff; wela=1; P0=0xfe; 22 wela=0; delay(1); dula=1; P0=dat_bufge; dula=0; P0=0xff; wela=1; P0=0xfd; wela=0; delay(1); dula=1; P0=dat_bufshi; dula=0; P0=0xff; wela=1; P0=0xfb; wela=0; delay(1); dula=1; P0=dat_bufge; dula=0; P0=0xff; wela=1; P0=0xf7; wela=0; delay(1); void ISR0(void) interrupt 0/外部中断 0 服务例程 rate+; void T0ISR(void) interrupt 1/定时器 T0 中断响应 unsigned char ge,shi; TL0=0x0c; TH0=0xf0; ttt+; if(ttt500) 23 ttt=0; shi=rate/10; ge=rate%10; rate=0; main() TMOD=0x00; TL0=0x0c; TH0=0xf0; PT0=0; TR0=1; ET0=1; IT0=1;/外部中断 0 为下降沿触发 EX0=1;/开 EX0 中断 EA=1; while(1) uchar shi,ge; G=0; ENB=0; IN3=1; IN4=0; display(shi,ge); #include #define uchar unsigned char #define uint unsigned int sbit G=P16; sbit ENB=P11; sbit IN3=P12; sbit IN4=P10; sbit wela=P27; sbit dula=P26; int rate; unsigned char dat_buf10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7c,0x07,0x7f,0x67; uint ttt=0; void delay(uint z) 24 uint x,y; for(x=z;x0;x-) for(y=110;y0;y-); void display(uchar shi,uchar ge) dula=1; P0=dat_bufshi; dula=0; P0=0xff; wela=1; P0=0xfe; wela=0; delay(1); dula=1; P0=dat_bufge; dula=0; P0=0xff; wela=1; P0=0xfd; wela=0; delay(1); dula=1; P0=dat_bufshi; dula=0; P0=0xff; wela=1; P0=0xfb; wela=0; delay(1); dula=1; P0=dat_bufge; dula=0; P0=0xff; wela=1; P0=0xf7; wela=0; delay(1); void ISR0(void) interrupt 0/外部中断 0 服务例程 25 rate+; void T0ISR(void) interrupt 1/定时器 T0 中断响应 unsigned char ge,shi; TL0=0x0c; TH0=0xf0; ttt+; if(ttt500) ttt=0; shi=rate/10; ge=rate%10; rate=0; main() TMOD=0x00; TL0=0x0c; TH0=0xf0; PT0=0; TR0=1; ET0=1; IT0=1;/外部中断 0 为下降沿触发 EX0=1;/开 EX0 中断 EA=1; while(1) uchar shi,ge; G=0; ENB=0; IN3=1; IN4=0; display(shi,ge); #include #define uchar unsigned char #define uint unsigned int 26 sbit G=P16; sbit ENB=P11; sbit IN3=P12; sbit IN4=P10; sbit wela=P27; sbit dula=P26; int rate; unsigned char dat_buf10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7c,0x07,0x7f,0x67; uint ttt=0; void delay(uint z) uint x,y; for(x=z;x0;x-) for(y=110;y0;y-); void display(uchar shi,uchar ge) dula=1; P0=dat_bufshi; dula=0; P0=0xff; wela=1; P0=0xfe; wela=0; delay(1); dula=1; P0=dat_bufge; dula=0; P0=0xff; wela=1; P0=0xfd; wela=0; delay(1); dula=1; P0=dat_bufshi; dula=0; P0=0xff; wela=1; P0=0xfb; wela=0; delay(1); 27 dula=1; P0=dat_bufge; dula=0; P0=0xff; wela=1; P0=0xf7; wela=0; delay(1); void ISR0(void) interrupt 0/外部中断 0 服务例程 rate+; void T0ISR(void) interrupt 1/定时器 T0 中断响应 unsigned char ge,shi; TL0=0x0c; TH0=0xf0; ttt+; if(ttt500) ttt=0; shi=rate/10; ge=rate%10; rate=0; main() TMOD=0x00; TL0=0x0c; TH0=0xf0; PT0=0; TR0=1; ET0=1; IT0=1;/外部中断 0 为下降沿触发 EX0=1;/开 EX0 中断 EA=1; while(1) 28 uchar shi,ge; G=0; ENB=1; IN3=1; IN4=0; display(shi,ge);

    注意事项

    本文(单片机课程设计-基于单片机的电机测速系统.doc)为本站会员(李主任)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开