




已阅读5页,还剩68页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于 AVR 的移动小车通信与控制软件设计 毕业论文 目 录 1 绪 论 1 1 1 AVR 单片机的发展过程及现状 1 1 2 基于 AVR 的移动小车设计原则 1 1 3 课题背景及意义 2 1 4 论文结构 2 2 AVR 单片机简介 4 2 1 AVR 单片机的主要特征 4 2 2 AVR 单片机的选型 6 2 3 AVR 单片机的型号标识解析 7 3 移动小车硬件与编程环境 9 3 1 硬件电路原理图 9 3 2 主要元器件的工作原理 10 3 3 软件开发工具 11 3 3 1 C 编译器 11 3 3 2 集成开发环境 16 4 PS 2 简介 17 4 1 PS 2 键盘协议 17 4 1 1 概述 17 4 1 2 设备到主机的通讯 17 4 1 3 主机到设备的通讯 20 4 2 PS 2 键盘接口 22 4 2 1 PS 2 接口简介 22 4 2 2 扫描码 23 4 2 2 通码 断码和机打重复率 23 4 2 3 命令集 24 5 程序设计 26 5 1 移动小车的结构框图 26 I 5 2 单片机 C 语言的主要特点 26 5 3 主流程图 27 6 运行结果 29 6 1 程序下载方法 29 6 2 系统运行结果 32 结 论 34 致 谢 35 参考文献 36 附录 A 英文原文 37 附录 B 中文翻译 49 附录 C 程序代码 58 0 1 绪 论 1 1 AVR单片机的发展过程及现状 早期单片机主要由于工艺及设计水平不高 功耗高和抗干扰性能差等原因 所以 采取稳妥方案 即采用较高的分频系数对时钟分频 使得指令周期长 执行速度慢 以后的 CMOS 单片机虽然采用提高时钟频率和缩小分频系数等措施 但这种状态并未 被彻底改观 此间虽有某些精简指令集单片机 RISC 问世 但依然沿袭对时钟分频 的做法 ATMEL 公司是世界上著名的高性能 低功耗 非易失性存储器和数字集成电路的 一流半导体制造公司 20 世纪 90 年代初 ATMEL 率先把 MCS 51 内核与其擅长的 Flash 技术相结合 推出轰动世界的 AT89 系列单片机 1997 年 ATMEL 挪威设计中 心出于市场需求考虑 充分发挥其 Flash 技术优势 推出全新配置的精简指令集 RISC 单片机 简称 AVR 几年来 AVR 单片机已形成系列产品 其 Attiny AT90 Atmega 分别对应为低 中 高档产品 电子技术如今迅猛发展 尤其是单片机已广泛地应用于军事 工业 家用电器 智能玩具 便携式智能仪表 机器人制作等领域 使产品功能 精度和质量大幅度提 高 且电路简单 故障率低 可靠性高 成本低廉 AVR 单片机价格低廉 可擦除 1000 次以上 不再有报废品产生 且对掉电后数据的保存带来方便 来电时能记住掉 电时的工作状态 给用户带来极高的可靠性 受到一致好评 1 2 基于AVR的移动小车设计原则 可靠性 系统应保证长期安全地进行 系统中的硬软件及信息资源应满足可靠性 的设计要求 安全性 系统应具有必要的安全保护和保密措施 抗干扰性 系统应具有较强的抗干扰性 对各类用户的误操作应有提示或自动消 除的能力 适应性 系统应对不断发展和完善的统计核算方法 调查方法和指标体系具有广 泛的适应性 1 可扩充性 系统的硬件应具有扩充升级的余地 不可因硬软件扩充 升级或改型 而使原有的系统失去作用 实用性 注重采用成熟实用的技术 使系统建设的投入产出比最高 能产生良好 的社会效益和经济效益 先进性 在实用的前提下 应尽可能跟踪国内外最先进的计算机硬软件技术 信 息技术及网络通信技术 使系统具有较高的性能指标 易操作性 贯彻面向最终用户的原则 使用户操作简单直观 易于掌握 1 3 课题背景及意义 近十几年来 随着移动通信技术飞速发展 越来越多的信息采集和远程控制系统 采用了无线数据传送技术 它与有线数传相比主要有布线成本低 安装简便 便于移 动的优点 而且随着互联网技术的迅猛发展和快速普及 越来越多的基于单片机为微 控制器的的测控设备或智能仪器仪表都需要通过互联网上进行数据交换或传输数据 随着技术的飞速发展 单片机的应用范围日益广泛 已远远超出了计算机科学的 领域 小道玩具 信用卡 大到航天器 机器人 从实现数据采集 过程控制 模糊 控制等智能系统到人类的日常生活 到处离不开单片机 而 AVR 的应用目前占主导地 位 研究它的发展和应用具有现实意义 移动小车的设计也是对移动机器人技术的延伸 移动机器人是近年来发展起来的 一门综合学科 集中了机械 电子 计算机 自动控制以及人工智能等多学科最新研 究成果 代表了机电一体化的最高成就 移动机器人在工业生产中常用来完成运输和 上下科等任务 同时也被广泛用于农业 医疗 军事等不同行业 虽然移动机器人的概念和工作硬件已经出现了几十年 但是近年又不断发生的自 然灾害和持续的军事冲突 促使世界各国工程师以新的眼光去重视机器人技术 移动 机器人技术的范围广泛 从带摄像头的独轮车 到携有军事装备的无人驾驶飞机 它 可以挽救无数人的生命 因此成为最有希望的开发项目 本设计就是在 Atmega32 单片机的基础上将小车的通信与控制智能化 便于人们使 用和改进 并能在此基础上做进一步的开发 1 4 论文结构 本论文主要介绍了基于 AVR 单片机的移动小车控制与通信软件设计 共从以下六 2 部分进行了介绍 第一部分介绍了 AVR 单片机的发展过程及现状 设计原则以及课题相关的背景和 意义 第二部分对于 AVR 单片机的主要特征 选型和型号标识做了介绍 第三部分介绍了小车的部分硬件和开发环境 第四部分对 PS 2 键盘协议和接口进行了说明 第五部分是程序设计部分 介绍了移动小车的结构框图 单片机 C 语言编程的主 要特点和程序的主流程图 第六部分介绍了移动小车的程序下载方法和系统运行结果 3 2 AVR 单片机简介 2 1 AVR单片机的主要特征 高可靠性 功能强 高速度 低功耗和低价位 一直是衡量单片机性能的重要指 标 也是单片机占领市场 赖以生存的必要条件 AVR 单片机废除了机器周期 抛弃复杂指令计算机 CISC 追求指令完备的做法 采用精简指令集 以字作为指令长度单位 将内容丰富的操作数与操作码安排在一字 之中 指令集中占大多数的单周期指令都是如此 取指周期短 又可预取指令 实 现流水作业 故可高速执行指令 当然这种速度上的升跃 是以高可靠性为其后盾的 AVR 单片机硬件结构采取 8 位机与 16 位机的折中策略 即采用局部寄存器存堆 32 个寄存器文件 和单体高速输入 输出的方案 即输入捕获寄存器 输出比较匹配 寄存器及相应控制逻辑 提高了指令执行速度 1Mips MHz 克服了瓶颈现象 增强了功能 同时又减少了对外设管理的开销 相对简化了硬件结构 降低了成本 故 AVR 单片机在软 硬件开销 速度 性能和成本诸多方面取得了优化平衡 是高性 价比的单片机 AVR 单片机内嵌高质量的 Flash 程序存储器 擦写方便 支持 ISP 和 IAP 便于 产品的调试 开发 生产 更新 内嵌长寿命的 EEProm 可长期保存关键数据 避免 断电丢失 片内大容量的 RAM 不仅能满足一般场合的使用 同时也更有效的支持使用 高级语言开发系统程序 并可像 MCS 51 单片机那样扩展外部 RAM AVR 单片机的 I O 线全部带可设置的上拉电阻 可单独设定为输入 输出 可设定 初始 高阻输入 驱动能力强 可省去功率驱动器件 等特性 使的得 I O 口资源 灵活 功能强大 可充分利用 AVR 单片机片内具备多种独立的时钟分频器 分别供 URAT I2C SPI 使用 其 中与 8 16 位定时器配合的具有多达 10 位的预分频器 可通过软件设定分频系数提供 多种档次的定时时间 AVR 单片机独有的 以定时器 计数器 单 双向计数形成三 角波 再与输出比较匹配寄存器配合 生成占空比可变 频率可变 相位可变方波的 设计方法 即脉宽调制输出 PWM 更是令人耳目一新 增强性的高速同 异步串口 具有硬件产生校验码 硬件检测和校验侦错 两级接 4 收缓冲 波特率自动调整定位 接收时 屏蔽数据帧等功能 提高了通信的可靠性 方便程序编写 更便于组成分布式网络和实现多机通信系统的复杂应用 串口功能大 大超过 MCS 51 96 单片机的串口 加之 AVR 单片机高速 中断服务时间短 故可实 现高波特率通讯 面向字节的高速硬件串行接口 TWI SPI TWI 与 I2C 接口兼容 具备 ACK 信号 硬件发送与识别 地址识别 总线仲裁等功能 能实现主 从机的收 发全部 4 种组合 的多机通信 SPI 支持主 从机等 4 种组合的多机通信 AVR 单片机有自动上电复位电路 独立的看门狗电路 低电压检测电路 BOD 多 个复位源 自动上下电复位 外部复位 看门狗复位 BOD 复位 可设置的启动后 延时运行程序 增强了嵌入式系统的可靠性 AVR 单片机具有多种省电休眠模式 且可宽电压运行 5 2 7V 抗干扰能力强 可降低一般 8 位机中的软件抗干扰设计工作量和硬件的使用量 AVR 单片机技术体 现了单片机集多种器件 包括 FLASH 程序存储器 看门狗 EEPROM 同 异步串行 口 TWI SPI A D 模数转换器 定时器 计数器等 和多种功能 增强可靠性的复 位系统 降低功耗抗干扰的休眠模式 品种多门类全的中断系统 具输入捕获和比较 匹配输出等多样化功能的定时器 计数器 具替换功能的 I O 端口 于一身 充分 体现了单片机技术的从 片自为战 向 片上系统 SoC 过渡的发展方向 单片机已广泛地应用于军事 工业 家用电器 智能玩具 便携式智能仪表和机 器人制作等领域 使产品功能 精度和质量大幅度提升 且电路简单 故障率低 可 靠性高 成本低廉 单片机种类很多 在简易机器人制作和创新中 为什么选用 AVR 单片机呢 1 简便易学 费用低廉 首先 对于非专业人员来说 选择 AVR 单片机的最主要原因 是进入 AVR 单片 机开发的门槛非常低 只要会操作电脑就可以学习 AVR 单片机的开发 单片机初学者 只需一条 ISP 下载线 把编辑 调试通过的软件程序直接在线写入 AVR 单片机 即可 以开发 AVR 单片机系列中的各种封装的器件 AVR 单片机因此在业界号称 一线打天 下 其次 AVR 单片机便于升级 AVR 程序写入是直接在电路板上进行程序修改 烧 录等操作 这样便于产品升级 2 高速 低耗 保密 5 首先 AVR 单片机是高速嵌入式单片机 1 AVR 单片机具有预取指令功能 即在执行一条指令时 预先把下一条指令 取进来 使得指令可以在一个时钟周期内执行 2 多累加器型 数据处理速度快 AVR 单片机具有 32 个通用工作寄存器 相 当于有 32 条立交桥 可以快速通行 3 中断响应速度快 AVR 单片机有多个固定中断向量入口地址 可快速响应 中断 其次 AVR 单片机耗能低 对于典型功耗情况 WDT 关闭时为 100na 更适用于 电池供电的应用设备 有的器件最低 1 8 V 即可工作 再次 AVR 单片机保密性能好 它具有不可破解的位加密锁 Lock Bit 技术 保密 位单元深藏于芯片内部 无法用电子显微镜看到 3 I O 口功能强 具有 A D 转换等电路 1 AVR 单片机的 I O 口是真正的 I O 口 能正确反映 I O 口输入 输出的真实 情况 工业级产品 具有大电流 灌电流 10 40 am 可直接驱动可控硅 SCR 或继电器 节省了外围驱动器件 2 AVR 单片机内带模拟比较器 I O 口可用作 A D 转换 可组成廉价的 A D 转换器 ATMega48 8 16 等器件具有 8 路 10 位 A D 3 部分 AVR 单片机可组成零外设元件单片机系统 使该类单片机无外加元器 件即可工作 简单方便 成本又低 4 AVR 单片机可重设启动复位 以提高单片机工作的可靠性 有看门狗定时器 实行安全保护 可防止程序走乱 飞 提高了产品的抗干扰能力 4 有功能强大的定时器 计数器及通讯接口 定时 计数器 T C 有 8 位和 16 位 可用作比较器 计数器外部中断和 PWM 也可用 作 D A 用于控制输出 某些型号的 AVR 单片机有 3 4 个 PWM 是作电机无级调速 的理想器件 AVR 单片机有串行异步通讯 UART 接口 不占用定时器和 SPI 同步传输功能 因其 具有高速特性 故可以工作在一般标准整数频率下 而波特率可达 576K 2 2 AVR 单片机的选型 6 单片机是硬件系统的核心 它直接决定了整个系统的功能和性能 同时 不同封 装形式的单片机芯片也会影响到系统的物理尺寸和重量 因此单片机的选型主要考虑 两个因素 从 Atmel 公司于 1997 年首次推出 AVR 单片机到现在 AVR 单片机已经形成了 一系列产品 其中 Tiny AT90 Atmega 系列单片机分别对应低 中 高档产品 根 据不同的要求 有 30 多种型号可供用户选择 1 低档的 Tiny 系列 该系列是专门为需要小型微控制器的简单应用而优化设 计的 有很高的性价比 主要有 8 个引脚的 Tiny11 12 13 15 20 个引脚的 Tiny26 和 28 个引脚的 Tiny28 其中 Tiny15 和 Tiny26 有 10 位的 A D 转化器 Tiny26 还有 128 字节的 RAM Tiny11 和 Tiny28 具有流水线特征 该系列的产品适用于家用电器和简 单的控制 如空调 冰箱 微波炉 烟雾报警器等 2 中档的 AT90S 系列 自 2002 年以来 Atmel 公司对 AVR 单片机产品线进行 了调整 逐步停止了该系列产品的生产 主要有 AT90S1200 2313 8515 8535 等 3 高档的 ATmega 系列 该系列是目前 Atmel 公司的主流产品 它不仅性能优 越 同时也有非常好的性价比 该系列主要有 ATmega8 16 32 64 128 存储容量为 8 16 32 64 128 KB 以及 ATmega8515 8535 等 近年来 随着电子产业的发展和市场需求的变化 Atmel 公司不断调整生产线 在 上述三个系列之外又相继退出了 LCD AVR USB AVR CAN AVR 等系列产品 2 3 AVR单片机的型号标识解析 1 型号紧跟的字母 表示电压工作范围 带 V 1 8 5 5V 若缺省 不带 V 2 7 5 5V 其中带 L 与不带 L 的区别 L 是 Low 的缩写 L 表示它可以支持低电压 它支持的电压范围为 2 7 5 5V 不带 L 的则表 示支持电压范围为 4 5 5 5V 例 ATmega48 20AU 不带 V 表示工作电压为 2 7 5 5V 2 后缀的数字部分 表示支持的最高系统时钟 例 ATmega48 20AU 20 表示可支持最高为 20MHZ 的系统时钟 3 后缀第一 第二 个字母 表示封装 P DIP 封装 A TQFP 封 7 装 M MLF 封装 例 ATmega48 20AU A 表示 TQFP 封装 4 后缀最后一个字母 表示应用级别 C 商业级 I 工业级 有铅 U 工业级 无铅 例 ATmega48 20AU U 表示无铅工业级 ATmega48 20AI I 表示有铅工 业级 8 3 移动小车硬件与编程环境 3 1 硬件电路原理图 电路原理图包括主芯片部分和驱动电路模块 如图 3 1 所示 图 3 1 移动小车通信与控制电路原理图 9 3 2 主要元器件的工作原理 1 AVR 单片机 采用 ATmega 系列的 ATmega32 作为控制系统的核心芯片 ATmega32是基于增强的 AVR RISC结构的低功耗 8位CMOS微控制器 由于其 先进的指令集以及单时钟周期指令执行时间 ATmega32的数据吞吐率高达 1 MIPS MHz 从而可以缓减系统在功耗和处理速度之间的矛盾 ATmega32的片内集成了32KB的系统内可编程Flash 具有同时读 写的能力 即 RWW 1KB EEPROM 2KB SRAM 32个通用I O口线 32个通用工作寄存器 具 有用于边界扫描的JTAG接口 支持片内调试与编程 3个具有比较模式的灵活的定时 器 计数器 T C 片内 外中断 可编程串行USART 面向字节的两线串行接口 8 路10位具有可选差分输入级可编程增益 TQFP封装 的ADC 具有片内振荡器的可编 程看门狗定时器以及1个SPI串行端口 2 电机驱动模块 选用 SGS 公司的 L298N 内部包含 4 通道逻辑驱动电路 是一种二相和四相电机 的专用驱动器 即内含二个 H 桥的高电压大电流双全桥式驱动器 接收标准 TTL 逻辑 电平信号 芯片 L298 属于 H 桥集成电路 其输出电流为 2000mA 最高电流 4A 最高工作 电压 36V 可以驱动感性负载 比如 中性直流电机 驱动器 布进电机和开关电源 晶体管 特别是其输入端可以与单片机直接相连 从而很方便地受单片机控制 当驱 动小型直流电机时 可以直接控制两路电机 并可以实现电机正转与反转 实现此功 能只需改变输入端的逻辑电平 本模块加入多级驱动 超高输入阻抗 对输入信号没有驱动要求 适合各类 I O 口 应用广泛 并且具有体积小 控制方便的特点 3 调试与编程工具 选用 Atmel 公司日前宣布推出针对 AVR R 微控制器的 AVR Dragon TM 开发工具 AVR Dragon 为 30 多种不同的 AVR Flash 微控制器提供了一种完备的片上调试与编程 10 工具 售价仅为 49 美元 是业界最完善的低成本开发工具 Atmel 凭借 AVR Dragon 为低成本开发工具树立了新的标准 AVR Dragon 支持 所有 AVR 微控制器的各种编程模式 还支持高达 32 Kb 的 Flash 程序存储器的片上调 试 AVR Dragon 的售价远低于同类全功能工具的价格 却能满足各种编程和调试需求 AVR Dragon 与外部目标板以及板上原型区共同使用 可在不添加任何硬件的情况下 进行编程和调试 通过对质量的关注 让一个工具套件囊括整个 AVR 微控制器系列 工程人员只需 运用几项平价工具 就可获得完整的开发环境 Atmel 的 AVR 开发工具总监 Dag Arne Braend 表示 低成本 应用广泛和优质 一直是我们 AVR 开发工具的宗旨 AVR Dragon 是又一个低成本工具 但功能强大 足以应付开发环境的日常需要 它支持 30 多种不同的 AVR 微控制器 所支持的 AVR 编程和调试协议 1 在系统编程 ISP 3 线 AVR 编程协议 2 符合 JTAG 编程 4 线 IEEE R 1149 1 的 JTAG 接口 3 高压串行编程 4 平行编程 5 可对高达 32 Kb Flash 的设备进行 JTAG 调试 6 debugWIRE 单线 AVR 调试协议 AVR Dragon 由 USB 线驱动 也可由高达 300 mA 的外部目标驱动 进行编程或 调试 如果该目标已由外部电源驱动 AVR Dragon 会对目标和 AVR Dragon 之间的所 有信号进行调适和电平转换 3 3 软件开发工具 3 3 1 C 编译器 1 ICC AVR 简介 AVR 系列单片机的集成开发环境有 Image Craft 公司的 ICC AVR 和 Atmel 公 司的 AVR Studio 等 其中 ICC AVR 因支持标准 C 语言对 AVR 系列单片机的编 程而得到了广泛的应用 ICC AVR 严格来说只是支持 AVR 单片机程序设计的一 11 个 C 编译器 它并不提供对程序的软件仿真功能 然而ICC AVR 对源程序编译输 出的 cof 映像文件可以与 AVR Studio 无缝地连接 通过 AVR Studio 调试器来对 程序进行软件仿真 自 ATMEL 公司的 AT90 系列单片机诞生以来有很多第三方厂商为AT90 系列 开发了用于程序开发的 C 语言工具 ICCAVR 就是 ATMEL 公司推荐的第三方 C 编译器之一 图 3 2 是 ICC AVR7 0 版本的窗口设置 分为 5 大区 图 3 2 ICC AVR7 0 的窗口设置 1 菜单项 包括文件 编辑 搜索 视图 工程菜单 工具菜单 电脑终端 帮助 2 快捷菜单图标 从左到右依次为 新建 打开 保存 打印 剪切 复制 粘贴 查找 编译 停止 工程属性 到第一个错误 下一个错误 应用向导程序Application Builder ISP 对话框 3 程序编辑区 所有的程序编辑工作在这里完成 12 4 编译状态显示栏 显示编译状态 查看报错情况进行相应修改 5 文件列表框 文件分类管理查看 这里的分类只是为了方便管理 并没有实际的分开 文件分为 c 程序文件 h 头文件 说明文档 ICCAVR 是一种符合 ANSI 标准的 C 语言来开发 MCU 单片机 程序的一个 工具 功能合适 使用方便 技术支持好 它主要有以下几个特点 1 ICCAVR 是一个综合了编辑器和工程管理器的集成工作环境 IDE 2 源文件全部被组织到工程之中 文件的编辑和工程的构筑也在这个环境 中完成 错误显示在状态窗口中 并且当你点击编译错误时 光标自动跳转到错误 的那一行 3 该工程管理器还能直接产生 INTEL HEX 格式文件的烧写文件 该格式 的文件可被大多数编程器所支持 可以直接下载到芯片中使用 和符合 AVRStudio 的调试文件 COFF 格式 4 ICCAVR 是一个 32 位的程序 支持长文件名 5 ICCAVR 是一个综合了编辑器和工程管理器的集成开发环境 IDE 是一个纯 32 位的程序 Win 2000 Win XP 和 Win 7 环境下运行 2 ICCAVR 中的文件类型及其扩展名 文件类型是由它们的扩展名决定的IDE 和编译器可以使用以下几种类型的文 件 1 输入文件 c 扩展名 表示是 C 语言源文件 s 扩展名 表示是汇编语言源文件 h 扩展名 表示是 C 语言的头文件 prj 扩展名 表示是工程文件 这个文件保存由 IDE 所创建和修改的一个工 程的有关信息 a 扩展名 库文件 它可以由几个库封装在一起 libcavr a 是一个包含了标 准 C 的库和 AVR 特殊程序调用的基本库 如果库被引用 链接器会将其链接到您 13 的模块或文件中 您也可以创建或修改一个符合你需要的库 2 输出文件 s 对应每个 C 语言源文件 由编译器在编译时产生的汇编输出文件 o 由汇编文件汇编产生的目标文件 多个目标文件可以链接成一个可执行文 件 hex INTEL HEX 格式文件 其中包含了程序的机器代码 eep INTEL HEX 格式文件 包含了 EEPROM 的初始化数据 cof COFF 格式输出文件 用于在 ATMEL 的 AVR Studio 环境下进行程序调 试 lst 列表文件 在这个文件中列举出了目标代码对应的最终地址 mp 内存映象文件 它包含了您程序中有关 符号及其所占内存大小的信息 cmd NoICE 2 xx 调试命令文件 noi NoICE 3 xx 调试命令文件 dbg ImageCraft 调试命令文件 3 ICCAVR 硬件访问的 C 编程 1 访问 AVR 的低层硬件 AVR 系列使用高级语言编程时有很高的 C 语言密度 它允许你对访问目标 MCU 的底层硬件进行访问 由于 AVR 性能 除了要最大程序地优化代码外很少使用 汇编 偶然情况下目标 MCU 的硬件特点在 C 语言中不能很好地使用 很显然使用在 线汇编和预处理宏能访问这些特点 头文件 io h 如 io8515 h iom603 h 等定义了指定 AVR MCU 的 IO 寄存器细 节 这些文件是从 ATMEL 官方发布的文件经过修改 以匹配这个编译器的语法要求 文件 macros h 定义了许多有用的宏 例如宏 UART TRANSMIT ON 能使 UART 开始工作 这个编译器的效率很高 当访问由 IO 寄存器映射的内存时能产生单周期指令象 in out sbis sbi 等 参考 IO 寄存器 注意 老的头文件 avr h 定义 IO 寄存器的 bit 有一些模糊 尽管 io h 定义了它 14 们的 bit 的位置 因此使用 io h 和 IO 寄存器的 bit 很多时候你将需要使用定义在 macros h 文件中的 BIT 宏 例如 avr h define SRE 0 x80 外部 RAM 使能 你的 C 程序 MCUCR SRE io8515 h define SRE 7 你的 C 程序 include MCUCR BIT SRE 2 位操作 一个共同的任务是编程微控制器 MCU 打开或关闭 IO 寄存器的一些位 bit 很幸运 标准 C 有较好的和适用的位操作功能 而没有借助于汇编指令或其它非标 准 C 结构 C 定义了一些按位进行的运算是很有用的 a b 按位或 这个表达式指示中 a 被表达式中的 b 按位进行或运算 这惯用于 打开某些位 尤其常用 的形式 例如 PORTA 0 x80 打开位 7 最高位 a 整型变量声明部份 Function1 功能函数说明部份 C 语言具有很强的功能性和结构性 可以缩短单片机控制系统的开发周期 而且 易于调试和维护 已经成为目前单片机语言中最流行的编程语言 汇编语言是一种用文字助记符来表示机器指令的符号语言 是最接近机器码的一 种语言 其主要优点是占用资源少 程序执行效率高 但是不同的 CPU 其汇编语言 可能有所差异 所以不易移植 对于目前普遍使用的 RISC 架构的 8bit MCU 来说 其内部 ROM RAM STACK 等资源都有限 如果使用 C 语言编写 一条 C 语言指令编译后 会变成很多条机器码 很容易出现 ROM 空间不够 堆栈溢出等问题 而且一些单片机厂家也不一定能提供 C 编译器 而汇编语言 一条指令就对应一个机器码 每一步执行什么动作都很清楚 并且程序大小和堆栈调用情况都容易控制 调试起来也比较方便 所以在资源较少单 片机开发中 我们还是建议采用汇编语言比较好 而 C 语言是一种编译型程序设计语言 它兼顾了多种高级语言的特点 并具备汇 编语言的功能 C 语言有功能丰富的库函数 运算速度快 编译效率高 有良好的可 移植性 而且可以直接实现对系统硬件的控制 C 语言是一种结构化程序设计语言 它支持当前程序设计中广泛采用的由顶向下结构化程序设计技术 此外 C 语言程序 具有完善的模块程序结构 从而为软件开发中采用模块化程序设计方法提供了有力的 保障 因此 使用 C 语言进行程序设计已成为软件开发的一个主流 用 C 语言来编写 目标系统软件 会大大缩短开发周期 且明显地增加软件的可读性 便于改进和扩充 从而研制出规模更大 性能更完备的系统 综上所述 用 C 语言进行单片机程序设计是单片机开发与应用的必然趋势 所以 作为一个技术全面并涉足较大规模的软件系统开发的单片机开发人员最好能够掌握基 本的 C 语言编程 5 3 主流程图 27 开始 初始化 开机自检 键盘控制 显示数据 图 5 2 主流程图 28 6 运行结果 6 1 程序下载方法 1 首先通过 C 语言编译器 ICC AVR 将程序进行编译 1 运行 ICCAVR 运行 project new 创建一个新的工程 保存为 AVRCAR prj 2 新建一个 C 文件 将程序复制粘贴进去 运行 file save 保存为 car c 3 在当前编辑窗口中单击鼠标右键选择 Add to Project 将文件加入已打开的工程列 表中 4 点击 Project options 将 Device configuration 改为 Atmega32 其他不变 点 击 ok 如图 6 1 所示 图 6 1 编译器环境配置 5 Project rebuild all 或者直接使用快捷键 shift f9 编译工程 编译完成后 29 在状态区看到这样的代码 C iccv7avr bin imakew f AVRCAR mak iccavr c e D ICC VERSION 722 DATMega32 l g MLongJump MHasMul MEnhanced car c iccavr o AVRCAR g e 0 x8000 ucrtatmega o bfunc lit 0 x54 0 x8000 dram end 0 x85f bdata 0 x60 0 x85f dhwstk size 30 beeprom 0 1024 fihx coff S2 AVRCAR lk lcatmeg Device 4 full Done Wed Jun 08 13 12 07 2011 6 此时打开建立工程的文件夹 可以看到如图 6 2 所示的文件 图 6 2 编译工程后的文件列表 2 AVR jtag 在线仿真调试 1 硬件连接 2 运行 AVR Studio 打开 AVRCAR cof 文件 3 工程文件保存为 AVRCAR cof aps 文件 方便下次打开 4 选择相关硬件配置 选择目标板接口为 AVR Dragon 芯片类型为 Atmega32 5 硬件配置完成后 程序自动运行 点击停止按钮 程序停止运行后 点击显示 30 连接 对话框 如图 6 3 所示 图 6 3 选择 AVR 设计的平台和端口 6 连接到选择好的平台 设置芯片类型为 Atmega32 目标板接口为 JTAG 选择 Flash 模式下载程序 输入 AVRCAR hex 文件 点击 Program 按钮 程序下载成功 如图 6 4 所示 31 图 6 4 程序成功下载到硬件 6 2 系统运行结果 程序下载完成后 打开小车供电电源 将小车连接到台式机后 开机 完成自检 在桌面上新建一个文本文档 使用自制的键盘随意按下 m n 和 空格 键 在记事本上显示出相应的小写字母 如下图所示 图 6 5 自制键盘的字母按键能在 PC 机上正确显示 键盘功能实现后 断开键盘接口 分别按下自制键盘上的 上 下 左 右 键 小车会按照键盘的指示 前进 后退 左转 右转 同时电路板上的八个 LED 灯会按照表 6 1 的规律闪烁 代表灯亮 代表灯灭 表 6 1 LED 灯的闪烁规律 没有任何键按下 按下 UP 键 上 按下 DOWN 键 下 按下 LEFT 键 左 按下 RIGHT 键 右 小车的车轮部分由 3 个车轮组成 前面 1 个 后面 2 个 左轮和右轮 左轮和 32 Motor L 相连 右轮和 Motor R 相连 小车根据键盘的指示 前进 后退 左转 右转 时 左轮和右轮的转动方式如表 6 2 所示 表 6 2 小车移动时的车轮转动方式 小车右轮左轮 前进正转正转 后退反转反转 左转正转反转 右转反转正转 33 结 论 单片机的出现是计算机技术发展史上的一个重要的里程碑 它让计算机从海量的 数值计算进入到智能化控制领域 随着技术的发展 单片机作为小型智能化控制设备 得到了越来越多的用途 特别是以单片机为核心的控制设备得到了实用性的发展 越 来越用于社会和大众生活 本文主要论述了基于 AVR 的移动小车通信与控制软件设计 首先对 AVR 系列的 单片机的概念进行了了解 明确了 AVR 单片机的发展过程及现状 阐述了移动小车的 设计原则 并分析出课题的研究背景及意义 在 PS 2 键盘协议和接口方面的知识进行 了介绍 并对 AVR 单片机的开发软件进行了详细的描述 讲解了用 C 语言编写单片机 程序的优缺点 其中 PS 2 键盘协议和接口中的内容是整个系统完成通信与控制的关键 设计在 PC 机上主要完成自制键盘的编程 编译 将编译好的程序写入硬件 并作 为一个终端接收和显示数据 完成自检和显示 其中在 PC 机上 主要是用 ICC AVR 编译器进行整个程序的开发 在 AVR STUDIO 开发平台上将程序下载到单片机中 这 两个集成开发环境都有很强的易用性 并且增强了程序的可读性 如上所述 PS 2 键盘协议和接口的内容是编写程序的关键 但是 PS 2 接口也有它 自身的缺点 如何优化和升级整个系统 是我们下一步要深入的研究课题 34 致 谢 伴随着毕业设计的即将结束 我的大学生活也已经进入尾声 在完成毕业设计的 三个月时间里 我首先要感谢我的导师王洪源老师 在我设计过程中遇到瓶颈的时候 给了我很大的帮助 尤其是王老师严谨的教学精神 宽广的专业知识以及不失幽默的 生活态度 给了我很大的鼓舞 从一开始选题的确定 到开题报告的完成 初稿的修 改 定稿的调整 以及论文格式方面的问题 直至终稿 王老师都为我们提供了良好 的设计条件 并且很细心的指出设计中出现的错误 给予了大量的关心与帮助 使我 在完成论文的过程中受益匪浅 此次毕业设计既是对我大学四年所学知识的总结与运用 也是对我即将步入社会 走向工作岗位前的一次考验与检查 在这三个月里 我得到了巨大的收获 从对 AVR 单片机编程非常陌生 到现在了解很多相关知识 从不知何从下手 到现在能够流畅 的使用软件工具 从一知半解的名词解释 到现在了解并且能够运用到实践中去 我 都感到了很大的提升 体会到了创造的乐趣 也体会到了学习的意义 并且会在今后 的生活中熟练运用 为将来的工作打下了良好的基础和极大的便利 光阴似箭 日月如棱 四年的时间 我们的自学能力在这里得提升 感谢所有的 恩师 是您赋予我们最有意义的收获 带领我们走进知识殿堂 我要感谢我的指导老 师以及任课老师 感谢他们的教诲 让我知道在社会上懂得怎样去做好自己 端正自 己的位置 为社会贡献出我自己的力量 最后再次感谢王老师对我的帮助 感谢帮助过我的同学 感谢所有的老师的悉心 教诲 祝愿所有的老师生活一帆风顺 事业蒸蒸日上 35 参考文献 1 朱飞 杨平 AVR 单片机 C 语言开发入门与典型实例 北京 人民邮电出版社 2009 02 2 张军 宋涛 AVR 单片机 C 语言程序设计实例精粹 北京 电子工业出版社 2009 3 于正林 AVR 单片机原理及应用 北京 国防工业出版社 2009 1 4 杨正忠 耿德根 AVR 单片机应用开发指南及实例精解 北京 中国电力出版社 2008 5 周兴华 AVR 单片机 C 语言高级程序设计 北京 中国电力出版社 2008 6 江志红 AVR 单片机系统开发实用案例精选 北京 北京航空航天大学出版社 2010 4 8 ATMEL Atmega32 Data Sheet OL 2008 9 ATMEL AVR Studio USER MANUAL OL 2009 36 附录 A 英文原文 8 bit Microcontroller with 32K Bytes In System Programmable Flash ATmega32 ATmega32L Features High performance Low power AVR 8 bit Microcontroller Advanced RISC Architecture 131 Powerful Instructions Most Single clock Cycle Execution 32 x 8 General Purpose Working Registers Fully Static Operation Up to 16 MIPS Throughput at 16 MHz On chip 2 cycle Multiplier Nonvolatile Program and Data Memories 32K Bytes of In System Self Programmable Flash Endurance 10 000 Write Erase Cycles Optional Boot Code Section with Independent Lock Bits In System Programming by On chip Boot Program True Read While Write Operation 1024 Bytes EEPROM Endurance 100 000 Write Erase Cycles 2K Byte Internal SRAM Programming Lock for Software Security JTAG IEEE std 1149 1 Compliant Interface Boundary scan Capabilities According to the JTAG Standard Extensive On chip Debug Support Programming of Flash EEPROM Fuses and Lock Bits through the JTAG Interface Peripheral Features Two 8 bit Timer Counters with Separate Prescalers and Compare Modes One 16 bit Timer Counter with Separate Prescaler Compare Mode and Capture Mode 37 Real Time Counter with Separate Oscillator Four PWM Channels 8 channel 10 bit ADC 8 Single ended Channels 7 Differential Channels in TQFP Package Only 2 Differential Channels with Programmable Gain at 1x 10 x or 200 x Byte oriented Two wire Serial Interface Programmable Serial USART Master Slave SPI Serial Interface Programmable Watchdog Timer with Separate On chip Oscillator On chip Analog Comparator Special Microcontroller Features Power on Reset and Programmable Brown out Detection Internal Calibrated RC Oscillator External and Internal Interrupt Sources Six Sleep Modes Idle ADC Noise Reduction Power save Power down Standby and Extended Standby I O and Packages 32 Programmable I O Lines 40 pin PDIP 44 lead TQFP and 44 pad MLF Operating Voltages 2 7 5 5V for ATmega32L 4 5 5 5V for ATmega32 Speed Grades 0 8 MHz for ATmega32L 0 16 MHz for ATmega32 Power Consumption at 1 MHz 3V 25 C for ATmega32L Active 1 1 mA Idle Mode 0 35 mA Power down Mode 1 A 38 Overview The ATmega32 is a low power CMOS 8 bit microcontroller based on the AVR enhanced RISC architecture By executing powerful instructions in a single clock cycle the ATmega32 achieves throughputs approaching 1 MIPS per MHz allowing the system designer to optimize power consumption versus processing speed The AVR core combines a rich instruction set with 32 general purpose working registers All the 32 registers are directly connected to the Arithmetic Logic Unit ALU allowing two independent registers to be accessed in one single instruction executed in one clock cycle The resulting architecture is more code efficient while achieving throughputs up to ten times faster than conventional CISC microcontrollers The ATmega32 provides the following features 32K bytes of In System Programmable Flash Program memory with Read While Write capabilities 1024 bytes EEPROM 2K byte SRAM 32 general purpose I O lines 32 general purpose working registers a JTAG interface for Boundary scan On chip Debugging support and programming three flexible Timer Counters with compare modes Internal and External Interrupts a serial programmable USART a byte oriented Two wire Serial Interface an 8 channel 10 bit ADC with optional differential input stage with programmable gain TQFP package only a programmable Watchdog Timer with Internal Oscillator an SPI serial port and six software selectable power saving modes The Idle mode stops the CPU
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中国平面磨床行业发展潜力分析及投资方向研究报告
- 洗衣箩行业深度研究分析报告(2024-2030版)
- 中国航行数据记录仪市场竞争格局及投资战略规划报告
- 压缩空气系统风险评估报告
- 2025年中国木架太阳伞行业市场发展前景及发展趋势与投资战略研究报告
- 2025年中国化学建材行业市场发展前景及发展趋势与投资战略研究报告
- 铁路电子票教学课件
- 2025年中国打车软件移动应用市场运营趋势分析及投资潜力研究报告
- 中国扇型卡具项目投资可行性研究报告
- 中国火锅连锁行业发展趋势预测及投资战略咨询报告
- Unit 1 Animal Friends Reading Plus教学设计-2024-2025学年人教版英语七年级下册
- 腹膜透析患者随访的管理
- 职业技术学院《园艺产品及农资营销》课程标准
- 金氏五行升降中医方集
- 上海市黄浦区2024-2025学年八年级上学期期末物理试题(原卷版+解析版)
- 2、2024广西专业技术人员继续教育公需科目参考答案(97分)
- 结节性多动脉炎的早期诊断方法-深度研究
- 《水利工程建设项目法人工作手册2023版》知识培训
- 超星尔雅学习通《形势与政策》2025春章节测试附答案
- 广东省广州市越秀区2025年中考一模历史模拟试题(含答案)
- 有效咳嗽训练操作流程
评论
0/150
提交评论