




已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机创新设计报告单片机创新设计报告 设计题目 设计题目 基于单片机的电机测速及显示基于单片机的电机测速及显示 学学 院 院 机电工程学院机电工程学院 专专 业 业 测控技术与仪器测控技术与仪器 班级学号 班级学号 071071 姓姓 名 名 董新彬董新彬 同组人员 同组人员 李爽 朱浩波李爽 朱浩波 指导教师 指导教师 王军王军 冯梅林冯梅林 设计时间 设计时间 20102010 1010 10 201010 2010 1010 3030 单片机简介单片机简介 2 1 1 单片机历史单片机历史 2 1 2 AT89C51 的主要特性的主要特性 3 1 3 管脚说明管脚说明 4 1 4 振荡器特性振荡器特性 7 1 5 芯片擦除芯片擦除 7 二 硬件电路的设计二 硬件电路的设计 8 2 1 AT89C51 下载器部分下载器部分 8 2 2 电机驱动部分电机驱动部分 11 三 程序设计三 程序设计 16 3 1 下载器程序下载器程序 16 3 2 电机测速程序电机测速程序 24 四 总结四 总结 37 五 参考文献五 参考文献 38 单片机简介单片机简介 单片机又称单片微控制器单片机又称单片微控制器 它不是完成某一个逻辑功能的芯片它不是完成某一个逻辑功能的芯片 而而 是把一个计算机系统集成到一个芯片上 概括的讲 一块芯片就成是把一个计算机系统集成到一个芯片上 概括的讲 一块芯片就成 了一台计算机 它的体积小 质量轻 价格便宜 为学习 应用和了一台计算机 它的体积小 质量轻 价格便宜 为学习 应用和 开发提供了便利条件 同时 学习使用单片机了解计算机原理与结开发提供了便利条件 同时 学习使用单片机了解计算机原理与结 构的最佳选择 构的最佳选择 1 1 单片机历史单片机历史 1 第一阶段 第一阶段 1976 1978 单片机的控索阶段 以 单片机的控索阶段 以 Intel 公司公司 的的 MCS 48 为代表 为代表 MCS 48 的推出是在工控领域的控索 参与的推出是在工控领域的控索 参与 这一控索的公司还有这一控索的公司还有 Motorola Zilog 等 都取得了满意的效果 等 都取得了满意的效果 这就是这就是 SCM 的诞生年代 的诞生年代 单机片单机片 一词即由此而来 一词即由此而来 2 第二阶段 第二阶段 1978 1982 单片机的完善阶段 单片机的完善阶段 Intel 公司在公司在 MCS 48 基础上推出了完善的 典型的单片机系列基础上推出了完善的 典型的单片机系列 MCS 51 它 它 在以下几个方面奠定了典型的通用总线型单片机体系结构 在以下几个方面奠定了典型的通用总线型单片机体系结构 完善的外部总线 完善的外部总线 MCS 51 设置了经典的设置了经典的 8 位单片机的总线位单片机的总线 结构 包括结构 包括 8 位数据总线 位数据总线 16 位地址总线 控制总线及具有很多机位地址总线 控制总线及具有很多机 通信功能的串行通信接口 通信功能的串行通信接口 CPU 外围功能单元的集中管理模式 外围功能单元的集中管理模式 体现工控特性的位地址空间及位操作方式 体现工控特性的位地址空间及位操作方式 指令系统趋于丰富和完善 并且增加了许多突出控制功能的指令系统趋于丰富和完善 并且增加了许多突出控制功能的 指令 指令 3 第三阶段 第三阶段 1982 1990 8 位单片机的巩固发展及位单片机的巩固发展及 16 位位 单片机的推出阶段 也是单片机向微控制器发展的阶段 单片机的推出阶段 也是单片机向微控制器发展的阶段 Intel 公司公司 推出的推出的 MCS 96 系列单片机 将一些用于测控系统的模数转换器 系列单片机 将一些用于测控系统的模数转换器 程序运行监视器 脉宽调制器等纳入片中 体现了单片机的微控制程序运行监视器 脉宽调制器等纳入片中 体现了单片机的微控制 器特征 随着器特征 随着 MCS 51 系列的广应用 许多电气厂商竞相使用系列的广应用 许多电气厂商竞相使用 80C51 为内核 将许多测控系统中使用的电路技术 接口技术 多为内核 将许多测控系统中使用的电路技术 接口技术 多 通道通道 A D 转换部件 可靠性技术等应用到单片机中 增强了外围电转换部件 可靠性技术等应用到单片机中 增强了外围电 路路功能 强化了智能控制的特征 路路功能 强化了智能控制的特征 4 第四阶段 第四阶段 1990 微控制器的全面发展阶段 微控制器的全面发展阶段 随着单片机在各个领域全面深入地发展和应用 出现了高随着单片机在各个领域全面深入地发展和应用 出现了高 速 大寻址范围 强运算能力的速 大寻址范围 强运算能力的 8 位位 16 位位 32 位通用型单位通用型单 片机 以及小型廉价的专用型单片机片机 以及小型廉价的专用型单片机 1 2 AT89C51 的主要特性的主要特性 与与 MCS 51MCS 51 兼容兼容 4K 4K 字节可编程闪烁存储器字节可编程闪烁存储器 寿命 寿命 10001000 写写 擦循环擦循环 数据保留时间 数据保留时间 1010 年年 全静态工作 全静态工作 0Hz 24Hz0Hz 24Hz 三级程序存储器锁定三级程序存储器锁定 128 8 128 8 位内部位内部 RAMRAM 32 32 可编程可编程 I OI O 线线 两个两个 1616 位定时器位定时器 计数器计数器 5 5 个中断源个中断源 可编程串行通道可编程串行通道 低功耗的闲置和掉电模式低功耗的闲置和掉电模式 片内振荡器和时钟电路片内振荡器和时钟电路 1 3 管脚说明管脚说明 VCCVCC 供电电压 供电电压 GNDGND 接地 接地 P0P0 口 口 P0P0 口为一个口为一个 8 8 位漏级开路双向位漏级开路双向 I OI O 口 每脚可吸收口 每脚可吸收 8TTL8TTL 门电流 当门电流 当 P1P1 口的管脚第一次写口的管脚第一次写 1 1 时 被定义为高阻输入 时 被定义为高阻输入 P0P0 能够用于外部程序数据存储器 它可以被定义为数据能够用于外部程序数据存储器 它可以被定义为数据 地址的第地址的第 八位 在八位 在 FIASHFIASH 编程时 编程时 P0P0 口作为原码输入口 当口作为原码输入口 当 FIASHFIASH 进行校验进行校验 时 时 P0P0 输出原码 此时输出原码 此时 P0P0 外部必须被拉高 外部必须被拉高 P1P1 口 口 P1P1 口是一个内部提供上拉电阻的口是一个内部提供上拉电阻的 8 8 位双向位双向 I OI O 口 口 P1P1 口缓冲器能接收输出口缓冲器能接收输出 4TTL4TTL 门电流 门电流 P1P1 口管脚写入口管脚写入 1 1 后 被内部上后 被内部上 拉为高 可用作输入 拉为高 可用作输入 P1P1 口被外部下拉为低电平时 将输出电流 口被外部下拉为低电平时 将输出电流 这是由于内部上拉的缘故 在这是由于内部上拉的缘故 在 FLASHFLASH 编程和校验时 编程和校验时 P1P1 口作为第八口作为第八 位地址接收 位地址接收 P2P2 口 口 P2P2 口为一个内部上拉电阻的口为一个内部上拉电阻的 8 8 位双向位双向 I OI O 口 口 P2P2 口缓口缓 冲器可接收 输出冲器可接收 输出 4 4 个个 TTLTTL 门电流 当门电流 当 P2P2 口被写口被写 1 1 时 其管脚时 其管脚 被内部上拉电阻拉高 且作为输入 并因此作为输入时 被内部上拉电阻拉高 且作为输入 并因此作为输入时 P2P2 口的管口的管 脚被外部拉低 将输出电流 这是由于内部上拉的缘故 脚被外部拉低 将输出电流 这是由于内部上拉的缘故 P2P2 口当用口当用 于外部程序存储器或于外部程序存储器或 1616 位地址外部数据存储器进行存取时 位地址外部数据存储器进行存取时 P2P2 口口 输出地址的高八位 在给出地址输出地址的高八位 在给出地址 1 1 时 它利用内部上拉优势 当时 它利用内部上拉优势 当 对外部八位地址数据存储器进行读写时 对外部八位地址数据存储器进行读写时 P2P2 口输出其特殊功能寄存口输出其特殊功能寄存 器的内容 器的内容 P2P2 口在口在 FLASHFLASH 编程和校验时接收高八位地址信号和控制编程和校验时接收高八位地址信号和控制 信号 信号 P3P3 口 口 P3P3 口管脚是口管脚是 8 8 个带内部上拉电阻的双向个带内部上拉电阻的双向 I OI O 口 可接收口 可接收 输出输出 4 4 个个 TTLTTL 门电流 当门电流 当 P3P3 口写入口写入 1 1 后 它们被内部上拉为高后 它们被内部上拉为高 电平 并用作输入 作为输入 由于外部下拉为低电平 电平 并用作输入 作为输入 由于外部下拉为低电平 P3P3 口将输口将输 出电流 出电流 ILLILL 这是由于上拉的缘故 这是由于上拉的缘故 P3P3 口也可作为口也可作为 AT89C51AT89C51 的一些特殊功能口 如下表所示 的一些特殊功能口 如下表所示 P3 0P3 0 RXDRXD 串行输入口 串行输入口 P3 1P3 1 TXDTXD 串行输出口 串行输出口 P3 2P3 2 INT0 INT0 外部中断 外部中断 0 0 P3 3P3 3 INT1 INT1 外部中断 外部中断 1 1 P3 4P3 4 T0T0 记时器 记时器 0 0 外部输入 外部输入 P3 5P3 5 T1T1 记时器 记时器 1 1 外部输入 外部输入 P3 6P3 6 WR WR 外部数据存储器写选通 外部数据存储器写选通 P3 7P3 7 RD RD 外部数据存储器读选通 外部数据存储器读选通 P3P3 口同时为闪烁编程和编程校验接收一些控制信号 口同时为闪烁编程和编程校验接收一些控制信号 RSTRST 复位输入 当振荡器复位器件时 要保持 复位输入 当振荡器复位器件时 要保持 RSTRST 脚两个机器脚两个机器 周期的高电平时间 周期的高电平时间 ALE PROGALE PROG 当访问外部存储器时 地址锁存允许的输出电平用于锁 当访问外部存储器时 地址锁存允许的输出电平用于锁 存地址的地位字节 在存地址的地位字节 在 FLASHFLASH 编程期间 此引脚用于输入编程脉冲 编程期间 此引脚用于输入编程脉冲 在平时 在平时 ALEALE 端以不变的频率周期输出正脉冲信号 此频率为振荡端以不变的频率周期输出正脉冲信号 此频率为振荡 器频率的器频率的 1 61 6 因此它可用作对外部输出的脉冲或用于定时目的 因此它可用作对外部输出的脉冲或用于定时目的 然而要注意的是 每当用作外部数据存储器时 将跳过一个然而要注意的是 每当用作外部数据存储器时 将跳过一个 ALEALE 脉脉 冲 如想禁止冲 如想禁止 ALEALE 的输出可在的输出可在 SFR8EHSFR8EH 地址上置地址上置 0 0 此时 此时 ALEALE 只有只有 在执行在执行 MOVXMOVX MOVCMOVC 指令是指令是 ALEALE 才起作用 另外 该引脚被略微拉高 才起作用 另外 该引脚被略微拉高 如果微处理器在外部执行状态如果微处理器在外部执行状态 ALEALE 禁止 置位无效 禁止 置位无效 PSEN PSEN 外部程序存储器的选通信号 在由外部程序存储器取指 外部程序存储器的选通信号 在由外部程序存储器取指 期间 每个机器周期两次期间 每个机器周期两次 PSEN PSEN 有效 但在访问外部数据存储器时 有效 但在访问外部数据存储器时 这两次有效的这两次有效的 PSEN PSEN 信号将不出现 信号将不出现 EA VPP EA VPP 当 当 EA EA 保持低电平时 则在此期间外部程序存储器保持低电平时 则在此期间外部程序存储器 0000H FFFFH0000H FFFFH 不管是否有内部程序存储器 注意加密方式 不管是否有内部程序存储器 注意加密方式 1 1 时 时 EA EA 将内部锁定为将内部锁定为 RESETRESET 当 当 EA EA 端保持高电平时 此间内部程序存端保持高电平时 此间内部程序存 储器 在储器 在 FLASHFLASH 编程期间 此引脚也用于施加编程期间 此引脚也用于施加 12V12V 编程电源 编程电源 VPPVPP XTAL1XTAL1 反向振荡放大器的输入及内部时钟工作电路的输入 反向振荡放大器的输入及内部时钟工作电路的输入 XTAL2XTAL2 来自反向振荡器的输出 来自反向振荡器的输出 1 4 振荡器特性振荡器特性 XTAL1XTAL1 和和 XTAL2XTAL2 分别为反向放大器的输入和输出 该反向放大器可分别为反向放大器的输入和输出 该反向放大器可 以配置为片内振荡器 石晶振荡和陶瓷振荡均可采用 如采用外部以配置为片内振荡器 石晶振荡和陶瓷振荡均可采用 如采用外部 时钟源驱动器件 时钟源驱动器件 XTAL2XTAL2 应不接 有余输入至内部时钟信号要通过应不接 有余输入至内部时钟信号要通过 一个二分频触发器 因此对外部时钟信号的脉宽无任何要求 但必一个二分频触发器 因此对外部时钟信号的脉宽无任何要求 但必 须保证脉冲的高低电平要求的宽度 须保证脉冲的高低电平要求的宽度 1 5 芯片擦除芯片擦除 整个整个 PEROMPEROM 阵列和三个锁定位的电擦除可通过正确的控制信号阵列和三个锁定位的电擦除可通过正确的控制信号 组合 并保持组合 并保持 ALEALE 管脚处于低电平管脚处于低电平 10ms10ms 来完成 在芯片擦操作中 来完成 在芯片擦操作中 代码阵列全被写代码阵列全被写 1 1 且在任何非空存储字节被重复编程以前 该操且在任何非空存储字节被重复编程以前 该操 作必须被执行 作必须被执行 此外 此外 AT89C51AT89C51 设有稳态逻辑 可以在低到零频率的条件下静设有稳态逻辑 可以在低到零频率的条件下静 态逻辑 支持两种软件可选的掉电模式 在闲置模式下 态逻辑 支持两种软件可选的掉电模式 在闲置模式下 CPUCPU 停止停止 工作 但工作 但 RAMRAM 定时器 计数器 串口和中断系统仍在工作 在掉 定时器 计数器 串口和中断系统仍在工作 在掉 电模式下 保存电模式下 保存 RAMRAM 的内容并且冻结振荡器 禁止所用其他芯片功的内容并且冻结振荡器 禁止所用其他芯片功 能 直到下一个硬件复位为止 能 直到下一个硬件复位为止 二 硬件电路的设计二 硬件电路的设计 2 1 AT89C51 下载器部分下载器部分 SP 51ProSP 51Pro 即 即 Easy51proEasy51pro 编程器可以烧录 编程器可以烧录 AtmelAtmel 公司系列单公司系列单 片机芯片 具有性能稳定片机芯片 具有性能稳定 烧录速度快烧录速度快 性价比高等优点 产品性能性价比高等优点 产品性能 介绍如下介绍如下 支持的芯片支持的芯片 支持目前最为经典和市场占有量最大的支持目前最为经典和市场占有量最大的 ATMELATMEL 公司生产的公司生产的 AT89C51AT89C51 C52C52 C55C55 和最新的和最新的 S51S51 S52S52 AT89C1051AT89C1051 20512051 40514051 等芯片 等芯片 产品特点产品特点 1 1 使用串口通讯使用串口通讯 芯片自动判别 编程过程中的擦除 烧写 校验各芯片自动判别 编程过程中的擦除 烧写 校验各 种操作完全由编程器上的监控芯片种操作完全由编程器上的监控芯片 89C5189C51 控制控制 不受不受 PCPC 配置及其主配置及其主 频的影响频的影响 因此烧写成功率高可以达到因此烧写成功率高可以达到 100100 烧写速度很快并且烧 烧写速度很快并且烧 写速度和微机的档次无关 写速度和微机的档次无关 2 2 采用采用 5760057600 高速波特率进行数据传送高速波特率进行数据传送 编程速度可以和一般并行编编程速度可以和一般并行编 程器相媲美程器相媲美 经测试经测试 烧写一片烧写一片 4K4K ROMROM 的的 AT89C51AT89C51 仅需要仅需要 9 5S 9 5S 而读而读 取和校验仅需要取和校验仅需要 3 5S3 5S 3 3 体积小巧体积小巧 省去笨重的外接电源适配器省去笨重的外接电源适配器 直接使用直接使用 USBUSB 端口端口 5V5V 电源电源 携带方便 非常初学者学习携带方便 非常初学者学习 5151 单片机的要求 单片机的要求 4 4 软件界面友好软件界面友好 菜单 工具栏 快捷键齐全菜单 工具栏 快捷键齐全 全中文操作 提供加全中文操作 提供加 密功能 可以保护您的创作产权 可以说是麻雀虽小 五脏俱全 密功能 可以保护您的创作产权 可以说是麻雀虽小 五脏俱全 5 5 功能完善功能完善 具有编程 读取 校验 空检查 擦除 加密等系列功具有编程 读取 校验 空检查 擦除 加密等系列功 能能 6 40pin6 40pin 和和 20pin20pin 锁紧插座锁紧插座 所有器件全部以第一脚对齐所有器件全部以第一脚对齐 无附加跳无附加跳 线线 对于对于 DIPDIP 封装芯片无需任何适配器封装芯片无需任何适配器 7 7 采用优质万用锁紧插座 和接触不良等问题彻底说再见 可烧写采用优质万用锁紧插座 和接触不良等问题彻底说再见 可烧写 4040 脚单片机芯片和脚单片机芯片和 2020 脚单片机芯片脚单片机芯片 8 8 改进的烧写深度确保每一片改进的烧写深度确保每一片 C51C51 系列芯片的反复烧写次数都能达系列芯片的反复烧写次数都能达 到到 10001000 以上 内部数据至少保存以上 内部数据至少保存 1010 年 年 9 9 因为采用了因为采用了 9 9 针传口通讯 这样一来就不会再和打印机抢一个打针传口通讯 这样一来就不会再和打印机抢一个打 印口 随时随地想烧就烧 让芯片编程成为一种快乐 印口 随时随地想烧就烧 让芯片编程成为一种快乐 3 3 硬件连接硬件连接 1 1 通讯电缆与编程器连接好 通讯电缆与编程器连接好 2 2 将串口插头插入电脑串口 将串口插头插入电脑串口 3 USB3 USB 插头插入电脑任一个插头插入电脑任一个 USBUSB 口 此时编程器上口 此时编程器上 LEDLED 点亮 表明点亮 表明 电源接通 电源接通 4 4 接着安装软件 本软件支持接着安装软件 本软件支持 Win9x me 2000 NT Win9x me 2000 NT 标准标准 WindowWindow 操作操作 界面 本软件属于绿色软件 不需要安装 直接把相关的软件拷贝界面 本软件属于绿色软件 不需要安装 直接把相关的软件拷贝 到硬盘中 运行其中的到硬盘中 运行其中的 EasyEasy 51Pro51Pro 2 02 0 程序即可 程序即可 软件使用软件使用 程序启动后 会自动检测硬件及连接 状态框中显示程序启动后 会自动检测硬件及连接 状态框中显示 就绪就绪 字样 表示编程器连接和设置均正常 否则请检查硬件连接和端口字样 表示编程器连接和设置均正常 否则请检查硬件连接和端口 设置 设置 把单片机芯片正确地放到编程器的相应插座上 注意 芯片的缺把单片机芯片正确地放到编程器的相应插座上 注意 芯片的缺 口要朝向插座的把手方向 口要朝向插座的把手方向 芯片放好后 就可以对芯片进行读写操作了 读写操作按下面的芯片放好后 就可以对芯片进行读写操作了 读写操作按下面的 步骤进行 步骤进行 1 1 程序运行 请先选择器件 点下选框 程序运行 请先选择器件 点下选框 2 2 用 用 打开文件打开文件 选择打开要编写的选择打开要编写的 HEX HEX 和和 BIN BIN 文件文件 3 3 用 用 保存文件保存文件 可以保存读出来的文件可以保存读出来的文件 4 4 用 用 擦除器件擦除器件 擦除芯片擦除芯片 5 5 用 用 写器件写器件 编程编程 6 6 用 用 读器件读器件 读取芯片中的程序 加密的读不出来读取芯片中的程序 加密的读不出来 7 7 用 用 校验数据校验数据 检查编程的正确与否检查编程的正确与否 8 8 用 用 自动完成自动完成 自动执行以上各步骤自动执行以上各步骤 9 9 用 用 加密加密 选择加密的级数选择加密的级数 2 122 12 电机驱动部分电机驱动部分 2 2 电机驱动部分电机驱动部分 图图 4 34 3 中所示为一个典型的直流电机控制电路 电路得名于中所示为一个典型的直流电机控制电路 电路得名于 H H 桥驱动电路桥驱动电路 是因为它的形状酷似字母是因为它的形状酷似字母 H H 4 4 个三极管组成个三极管组成 H H 的的 4 4 条条 垂直腿 而电机就是垂直腿 而电机就是 H H 中的横杠 注意 图中的横杠 注意 图 4 124 12 及随后的两个图都及随后的两个图都 只是示意图 而不是完整的电路图 其中三极管的驱动电路没有画只是示意图 而不是完整的电路图 其中三极管的驱动电路没有画 出来 出来 如图所示 如图所示 H H 桥式电机驱动电路包括桥式电机驱动电路包括 4 4 个三极管和一个电机 要使个三极管和一个电机 要使 电机运转 必须导通对角线上的一对三极管 根据不同三极管对的电机运转 必须导通对角线上的一对三极管 根据不同三极管对的 导通情况 电流可能会从左至右或从右至左流过电机 从而控制电导通情况 电流可能会从左至右或从右至左流过电机 从而控制电 机的转向 机的转向 图图 4 34 3 H H 桥简易驱动电路桥简易驱动电路 要使电机运转 必须使对角线上的一对三极管导通 例如 如要使电机运转 必须使对角线上的一对三极管导通 例如 如 图图 4 44 4 所示 当所示 当 Q1Q1 管和管和 Q4Q4 管导通时 电流就从电源正极经管导通时 电流就从电源正极经 Q1Q1 从左从左 至右穿过电机 然后再经至右穿过电机 然后再经 Q4Q4 回到电源负极 按图中电流箭头所示 回到电源负极 按图中电流箭头所示 该流向的电流将驱动电机顺时针转动 当三极管该流向的电流将驱动电机顺时针转动 当三极管 Q1Q1 和和 Q4Q4 导通时 导通时 电流将从左至右流过电机 从而驱动电机按特定方向转动 电机周电流将从左至右流过电机 从而驱动电机按特定方向转动 电机周 围的箭头指示为顺时针方向 围的箭头指示为顺时针方向 图图 4 44 4 H H 桥电路驱动电机顺时针转动桥电路驱动电机顺时针转动 图图 4 54 5 所示为另一对三极管所示为另一对三极管 Q2Q2 和和 Q3Q3 导通的情况 电流将从右导通的情况 电流将从右 至左流过电机 当三极管至左流过电机 当三极管 Q2Q2 和和 Q3Q3 导通时 电流将从右至左流过电导通时 电流将从右至左流过电 机 从而驱动电机沿另一方向转动 电机周围的箭头表示为逆时针机 从而驱动电机沿另一方向转动 电机周围的箭头表示为逆时针 方向 方向 图图 4 54 5 H H 桥驱动电机逆时针转动桥驱动电机逆时针转动 驱动电机时 保证驱动电机时 保证 H H 桥上两个同侧的三极管不会同时导通非常桥上两个同侧的三极管不会同时导通非常 重要 如果三极管重要 如果三极管 Q1Q1 和和 Q2Q2 同时导通 那么电流就会从正极穿过两同时导通 那么电流就会从正极穿过两 个三极管直接回到负极 此时 电路中除了三极管外没有其他任何个三极管直接回到负极 此时 电路中除了三极管外没有其他任何 负载 因此电路上的电流就可能达到最大值 该电流仅受电源性能负载 因此电路上的电流就可能达到最大值 该电流仅受电源性能 限制 限制 甚至烧坏三极管 基于上述原因 在实际驱动电路中通常要 甚至烧坏三极管 基于上述原因 在实际驱动电路中通常要 用硬件电路方便地控制三极管的开关 用硬件电路方便地控制三极管的开关 图图 4 64 6 所示就是基于这种考虑的改进电路 它在基本所示就是基于这种考虑的改进电路 它在基本 H H 桥电路桥电路 的基础上增加了的基础上增加了 4 4 个与门和个与门和 2 2 个非门 个非门 4 4 个与门同一个个与门同一个 使能使能 导导 通信号相接 这样 用这一个信号就能控制整个电路的开关 而通信号相接 这样 用这一个信号就能控制整个电路的开关 而 2 2 个非门通过提供一种方向输人 可以保证任何时候在个非门通过提供一种方向输人 可以保证任何时候在 H H 桥的同侧腿桥的同侧腿 上都只有一个三极管能导通 上都只有一个三极管能导通 与本节前面的示意图一样 图 与本节前面的示意图一样 图 4 154 15 所示也不是一个完整的电路图 特别是图中与门和三极管直接连接所示也不是一个完整的电路图 特别是图中与门和三极管直接连接 是不能正常工作的 是不能正常工作的 图图 4 64 6 具有使能控制和方向逻辑的具有使能控制和方向逻辑的 H H 桥电路桥电路 采用以上方法 电机的运转就只需要用三个信号控制 两个方向采用以上方法 电机的运转就只需要用三个信号控制 两个方向 信号和一个使能信号 如果信号和一个使能信号 如果 DIRDIR L L 信号为信号为 0 0 DIRDIR R R 信号为信号为 1 1 并 并 且使能信号是且使能信号是 1 1 那么三极管 那么三极管 Q1Q1 和和 Q4Q4 导通 电流从左至右流经电导通 电流从左至右流经电 机 如图机 如图 4 74 7 所示 所示 如果 如果 DIRDIR L L 信号变为信号变为 1 1 而 而 DIRDIR R R 信号变信号变 为为 0 0 那么 那么 Q2Q2 和和 Q3Q3 将导通 电流则反向流过电机 将导通 电流则反向流过电机 图图 4 74 7 使能信号与方向信号的使用使能信号与方向信号的使用 实际使用的时候 用分立元件制作实际使用的时候 用分立元件制作 H H 桥是很麻烦的 好在现在桥是很麻烦的 好在现在 市面上有很多封装好的市面上有很多封装好的 H H 桥集成电路 接上电源 电机和控制信号桥集成电路 接上电源 电机和控制信号 就可以使用了 在额定的电压和电流内使用非常方便可靠 比如常就可以使用了 在额定的电压和电流内使用非常方便可靠 比如常 用的用的 L293DL293D L298NL298N TA7257PTA7257P SN754410SN754410 等 等 三 程序设计三 程序设计 3 1 下载器程序下载器程序 include include BYTEBYTE ComBuf 18 ComBuf 18 串口通讯数据缓存 发送和接收都使用串口通讯数据缓存 发送和接收都使用 UINTUINT nAddress ROMnAddress ROM 中地址计数中地址计数 UINTUINT nTimeOut nTimeOut 超时计数超时计数 ProWorkProWork pw pw 编程器一般操作编程器一般操作 voidvoid Delay us BYTEDelay us BYTE nUs nUs 微秒级延时微秒级延时 255us 255us TH0 0 TH0 0 TL0 0 TL0 0 TR0 1 TR0 1 while TL0 nUs while TL0 nUs 利用利用 T0T0 做定时计数器 循环采样 直到达到做定时计数器 循环采样 直到达到 定时值定时值 TR0 0 TR0 0 void void Delay ms UINTDelay ms UINT nMs nMs 豪秒级的延时豪秒级的延时 65535ms 65535ms UINTUINT n 0 n 0 TR0 1 TR0 1 while n nMs while n nMs 利用利用 T0T0 做定时计数器 循环采样 直到达到做定时计数器 循环采样 直到达到 定时值定时值 TH0 0 TH0 0 TL0 20 TL0 20 while TH0 4 while TH0 4 n n TR0 0 TR0 0 BOOLBOOL WaitComm WaitComm 等待上位机的命令等待上位机的命令 18 18 字节字节 BYTEBYTE n 0 n 0 RI 0 RI 0 while RI while RI 等待第一个字节等待第一个字节 ComBuf n SBUF ComBuf n SBUF RI 0 RI 0 n n for n n 17 n for n n10000 if nTimeOut 10000 后后 1717 个字节都有超时限制个字节都有超时限制 returnreturn 0 0 ComBuf n SBUF ComBuf n SBUF RI 0 RI 0 returnreturn 1 1 BOOLBOOL WaitResp WaitResp 等待上位机回应等待上位机回应 1 1 字节字节 有超时限制有超时限制 nTimeOut 0 nTimeOut 0 RI 0 RI 0 while RI while RI nTimeOut nTimeOut if nTimeOut 50000 if nTimeOut 50000 returnreturn 0 0 RI 0 RI 0 ComBuf 0 SBUF ComBuf 0 SBUF returnreturn 1 1 BOOLBOOL WaitData WaitData 写器件时等待上位机数据 写器件时等待上位机数据 1818 字节 有超时限字节 有超时限 制制 BYTEBYTE n n RI 0 RI 0 for n 0 n 17 n for n 0 n10000 if nTimeOut 10000 returnreturn 0 0 RI 0 RI 0 ComBuf n SBUF ComBuf n SBUF returnreturn 1 1 voidvoid SendData SendData 发送数据或回应操作完成发送数据或回应操作完成 18 18 字节字节 BYTEBYTE n 0 n 0 for n n 17 n for n n 17 n TI 0 TI 0 SBUF ComBuf n SBUF ComBuf n while TI while TI TI 0 TI 0 voidvoid SendResp SendResp 回应上位机回应上位机 1 1 个字节个字节 在写器件函数中使用在写器件函数中使用 TI 0 TI 0 SBUF ComBuf 0 SBUF ComBuf 0 while TI while TI TI 0 TI 0 voidvoid SetVpp5V SetVpp5V 设置设置 VppVpp 为为 5v5v P3 4 0 P3 4 0 P3 3 0 P3 3 0 voidvoid SetVpp0V SetVpp0V 设置设置 VppVpp 为为 0v0v P3 3 0 P3 3 0 P3 4 1 P3 4 1 voidvoid SetVpp12V SetVpp12V 设置设置 VppVpp 为为 12v12v P3 4 0 P3 4 0 P3 3 1 P3 3 1 voidvoid RstPro RstPro 编程器复位编程器复位 pw fpProOver pw fpProOver 直接编程结束直接编程结束 SendData SendData 通知上位机 表示编程器就绪 可以直接用此函通知上位机 表示编程器就绪 可以直接用此函 数因为协议号 数因为协议号 ComBuf 0 ComBuf 0 还没被修改 下同 还没被修改 下同 voidvoid ReadSign ReadSign 读特征字读特征字 pw fpReadSign pw fpReadSign SendData SendData 通知上位机 送出读出器件特征字通知上位机 送出读出器件特征字 voidvoid Erase Erase 擦除器件擦除器件 pw fpErase pw fpErase SendData SendData 通知上位机 擦除了器件通知上位机 擦除了器件 voidvoid Write Write 写器件写器件 BYTEBYTE n n pw fpInitPro pw fpInitPro 编程前的准备工作编程前的准备工作 SendData SendData 回应上位机表示进入写器件状态 可以发来数据回应上位机表示进入写器件状态 可以发来数据 while 1 while 1 if WaitData if WaitData 如果等待数据成功如果等待数据成功 if ComBuf 0 0 x07 if ComBuf 0 0 x07 判断是否继续写判断是否继续写 for n 2 n 17 n ComBuf 2 17 for n 2 n 17 n ComBuf 2 17 为待写入数据块为待写入数据块 if pw fpWrite ComBuf n if pw fpWrite ComBuf n 调用写该调用写该 器件一个单元的函数器件一个单元的函数 pw fpProOver pw fpProOver 出错了就结束编程出错了就结束编程 ComBuf 0 0 xff ComBuf 0 0 xff SendResp SendResp 回应上位机一个字节 表示写数回应上位机一个字节 表示写数 据出错了据出错了 WaitData WaitData 等待上位机的回应后就结束等待上位机的回应后就结束 return return nAddress nAddress 下一个单元下一个单元 ComBuf 0 1 ComBuf 0 1 回应上位机一个字节 表示数据块顺回应上位机一个字节 表示数据块顺 利完成 请求继续利完成 请求继续 SendResp SendResp elseelse if ComBuf 0 0 x00 if ComBuf 0 0 x00 写器件结束写器件结束 break break else else 可能是通讯出错了可能是通讯出错了 pw fpProOver pw fpProOver return return else else 等待数据失败等待数据失败 pw fpProOver pw fpProOver return return pw fpProOver pw fpProOver 编程结束后的工作编程结束后的工作 Delay ms 50 Delay ms 50 延时等待上位机写线程结束延时等待上位机写线程结束 ComBuf 0 0 ComBuf 0 0 通知上位机编程器进入就绪状态通知上位机编程器进入就绪状态 SendData SendData voidvoid Read Read 读器件读器件 BYTEBYTE n n pw fpInitPro pw fpInitPro 先设置成编程状态先设置成编程状态 SendData SendData 回应上位机表示进入读状态回应上位机表示进入读状态 while 1 while 1 if WaitResp if WaitResp 等待上位机回应等待上位机回应 1 1 个字节个字节 if ComBuf 0 0 ComBuf 0 0if ComBuf 0 0 ComBuf 0 0 表示读结束表示读结束 break break elseelse if ComBuf 0 0 xff 0 xffif ComBuf 0 0 xff 0 xff 表示重发表示重发 nAddress nAddress 0 x0010 nAddress nAddress 0 x0010 for n 2 n 17 n ComBuf 2 17 for n 2 n 17 n ComBuf 2 17 保存读出的数据块保存读出的数据块 ComBuf n pw fpRead ComBuf n pw fpRead 调用调用 写该器件一个单元的函数写该器件一个单元的函数 nAddress nAddress 下一个单元下一个单元 ComBuf 0 6 ComBuf 0 6 向上位机发送读出的数据块向上位机发送读出的数据块 SendData SendData elseelse break break 等待回应失败等待回应失败 pw fpProOver pw fpProOver 操作结束设置为运行状态操作结束设置为运行状态 ComBuf 0 0 ComBuf 0 0 通知上位机编程器进入就绪状态通知上位机编程器进入就绪状态 SendData SendData voidvoid Lock Lock 写锁定位写锁定位 pw fpLock pw fpLock SendData SendData 所支持的所支持的 FID FID 请在这里继续添加请在这里继续添加 externextern voidvoid PreparePro00 FID 00 AT89C51PreparePro00 FID 00 AT89C51 编程器编程器 externextern voidvoid PreparePro01 FID 01 AT89C2051PreparePro01 FID 01 AT89C2051 编程器编程器 externextern voidvoid PreparePro02 FID 02 AT89S51PreparePro02 FID 02 AT89S51 编程器编程器 voidvoid main main SP 0 x60 SP 0 x60 SetVpp5V SetVpp5V 先初始化先初始化 VppVpp 为为 5v5v SCON 0 x00 SCON 0 x00 TCON 0 x00 TCON 0 x00 PCON 0 x00 PCON 0 x00 波特率波特率 2 2 IE 0 x00 IE 0 x00 TMOD TMOD GATE C T M1 M0 GATE C T M1 M0GATE C T M1 M0 GATE C T M1 M0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 TMOD 0 x21 T0TMOD 0 x21 T0 用于延时程序用于延时程序 TH1 0 xff TH1 0 xff TL1 0 xff TL1 0 xff 波特率波特率 28800 2 28800 2 注意注意 PCONPCON SCON SCON SM0 SM1 SM2 REN TB8 RB8 TI RISM0 SM1 SM2 REN TB8 RB8 TI RI 0 0 1 1 0 0 1 1 0 0 0 0 0 0 0 0 SCON 0 x50 SCON 0 x50 TR1 1 TR1 1 Delay ms 1000 Delay ms 1000 延时延时 1 1 秒后编程器自举秒后编程器自举 ComBuf 0 0 ComBuf 0 0 SendData SendData while 1 while 1 串口通讯采用查询方式串口通讯采用查询方式 if WaitComm if WaitComm 如果超时如果超时 通讯出错通讯出错 Delay ms 500 Delay ms 500 ComBuf 0 0 ComBuf 0 0 让编程器复位让编程器复位 使编程器就绪使编程器就绪 switch ComBuf 1 switch ComBuf 1 根据根据 FIDFID 设置设置 ProWork pw ProWork pw 中的函数指中的函数指 针针 casecase 0 at89c510 at89c51 编程器编程器 PreparePro00 PreparePro00 break break casecase 1 at89c20511 at89c2051 编程器编程器 PreparePro01 PreparePro01 break break casecase 2 at89s512 at89s51 编程器编程器 PreparePro02 PreparePro02 break break case case 3 3 支持新器件时 请继续向下添加支持新器件时 请继续向下添加 break break case case 4 4 break break default default ComBuf 0 0 xff ComBuf 0 0 xff ComBuf 1 0 xff ComBuf 1 0 xff 表示无效的操作表示无效的操作 break break switch ComBuf 0 switch ComBuf 0 根据操作根据操作 IDID 跳到不同的操作函数跳到不同的操作函数 casecase 0 x00 0 x00 RstPro RstPro 编程器复位编程器复位 break break casecase 0 x01 0 x01 ReadSign ReadSign 读特征字读特征字 break break casecase 0 x02 0 x02 Erase Erase 擦除器件擦除器件 break break casecase 0 x03 0 x03 Write Write 写器件写器件 break break casecase 0 x04 0 x04 Read Read 读器件读器件 break break casecase 0 x05 0 x05 Lock Lock 写锁定位写锁定位 break break default default SendData SendData break break 3 2 电机测速程序电机测速程序 LED CLED C 128 64128 64 LEDLED 驱动程序头文件驱动程序头文件 ifndef ifndef LED H LED H define define LED H LED H include include 定义背光控制信号定义背光控制信号 sbitsbit LED BL P1 4 LED BL P1 4 点亮背光灯点亮背光灯 voidvoid LEDLightOn LEDLightOn 熄灭背光灯熄灭背光灯 voidvoid LEDLightOff LEDLightOff 清屏清屏 voidvoid LEDClear LEDClear 初始化初始化 voidvoid LEDInit LEDInit 显示显示 ASC ASC 码码 voidvoid LEDPutChar unsignedLEDPutChar unsigned charchar c c 显示字符串显示字符串 voidvoid LEDPuts unsignedLEDPuts unsigned char s char s endif endif LED H LED H LED CLED C 128 64128 64 LEDLED 驱动程序驱动程序 include include include include include include LED H LED H 定义屏幕光标 取值定义屏幕光标 取值 0 0 6363 光标本身不可见 光标本身不可见 unsignedunsigned charchar LEDCursor LEDCursor intint i j i j 函数 函数 LEDLightOn LEDLightOn 功能 点亮背光灯功能 点亮背光灯 voidvoid LEDLightOn LEDLightOn LED BLLED BL 1 1 函数 函数 LEDLightOff LEDLightOff 功能 熄灭背光灯功能 熄灭背光灯 vo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高考基础题试题及答案
- 焊丝生产制造项目施工方案
- 300MW风力发电项目投资计划书
- 离婚赔偿协议及财产分割及子女抚养权法律文书范本
- 离婚协议书样本:夫妻共同财产分割与子女抚养权安排
- 山场租赁投资合同范本:林业资源投资合作框架协议
- 储能基地建设项目招商引资报告
- 幼儿园快乐教育教案:食塔食物分类与金字塔搭建
- 红砖建筑垃圾清运方案设计
- 校园设计口罩活动策划方案
- 2024年辽宁省地矿集团招聘真题
- 【《基于哈佛分析框架的爱尔眼科公司财务分析(数据图表论文)》13000字】
- 榆林市无人机管理办法
- 建筑公司安全管理制度范本
- 医保飞检培训
- 物流供应链融资方案计划书范文
- 2025年教学设计与评估能力考试试题及答案
- 亚朵酒店培训
- 医院医疗服务培训
- 农田植物养护方案(3篇)
- 破产清算审计管理制度
评论
0/150
提交评论