




已阅读5页,还剩62页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
分类号 密级 公开 UDC 注 1 毕业设计论文毕业设计论文 智能化汽车照明系统设计智能化汽车照明系统设计 指导教师姓名 申请学位级别 专业名称 论文提交日期 论文答辩日期 学位授予单位和日期 答辩委员会主席 评阅人 年 月 日 注 1 注明 国际十进分类法 UDC 的类号 毕业设计论文 智能化汽车照明系统 I 摘要摘要 传统的汽车照明系统主要由前照灯系统 信号照明系统 车内照明系统三大部 分组成 随着科技的进步 传统照明系统也经历了长足的发展 但是实际的使用中 传统的前照灯系统依然存在着诸多问题 在面对复杂的道路条件和行车状况时 交 通安全仍然存在巨大的隐患 因此 如何使传统汽车照明智能化 驾车更安全 更 舒适就成为一个十分紧迫而又有重大现实意义的课题 本文通过对现有汽车智能照明方案的分析 提出了一种能够实现照明和弯道随 动转向主要功能的汽车自适应照明方案 与各大汽车厂商的方案相比 本系统集成 了更多的智能照明设计 功能更为全面 而且本方案是基于 AT89S51 单片机开发的 低成本 低功耗系统 性价比更为出色 首先介绍了汽车自适应照明系统 ALS AdaptiveLightingSystem 的产生 发展和应用状况 分析了 ALS 的组成 功能 和工作原理 在详细分析了系统功能需求的基础上设计了基于 AT89S51 单片机的汽 车自适应照明系统 在文章的硬件部分 详细设计了主控制器及外围电路 电源模 块 执行器模块电路 在软件部分 设计了系统软件的整体流程 算法程序等软件 模块 实现了一个完整的整车照明系统 通过最后的系统调试 保证了车辆在各种 状态下总能为驾驶员提供最佳照明 并能够及时发现整车车灯的各种故障 表明了 本设计方案的可行性和正确性 关键词关键词 汽车照明 单片机 中断 控制 毕业设计论文 智能化汽车照明系统 II AbstractAbstract Traditional automotive lighring system is mainly composed of three parts Frontlighting System signal lighting In car lighting With the development of science and technology Traditional amomotive lighting system has developed a lot However there are still many problems in traditional automotive lighting system in actual use Traffic safety is still a big problem when the road surrounding and driving condition are complex Therefore how to make the traditional automotive lighting intelligent driving safer and more comfortable is becoming a very urgent issue with practical significance Through the analysis of the existing smart lighting program this subject brings forward avehicle adaptive lighting program which Can realize four main functions bad weather lighting move with the turn adjust with the auto body tilt and fault diagnosis Compared with theprograms of the maj or car manufacturers the system integrates more intelligent lighting designs and the function is more comprehensive The program is a low cost and low power system which is based on the single chipAT89S51 and it s more cost effective This paper introduced the beginning developing and application status of the vehicle adaptive lighting system ALS then analyzed the constitution function and work theory After the system requirements are analyzed in detail the vehicle adaptive lighting system based on the single chip AT89S5 1 Was designed The system includes the modules of data collection process fault diagnosis and the sensors In the section about hardware there are the detail designs of ALS master controller and peripheral circuits power module implementation module circuit In the section about software the overall system software processes and the software algorithm module Was designed both realizes a complete auto body lighting system After the ALS test result this system Can make sure to provide drivers the best lighting in many kinds of conditions And the system Can discover all kinds of faults of the vehicle lights At the end of the article there is summarize which haven t solved yet I think they could be future Keywords Keywords smart lighting scm interruptL control 毕业设计论文 智能化汽车照明系统 目录目录 1 1 绪论绪论 1 1 1 11 1 课题背景与意义课题背景与意义 1 1 21 2 课题内容课题内容 2 1 31 3 课题主要技术指标课题主要技术指标 3 1 41 4 设计的方案设计的方案 3 2 2软件介绍软件介绍 4 4 2 12 1 PROTEUSPROTEUS 介绍介绍 4 2 1 1PROTEUS2 1 1PROTEUS 功能和特点功能和特点 4 2 1 22 1 2 PROTEUSPROTEUS 功能模块功能模块 5 2 2keilC2 2keilC 介绍介绍 7 2 1 1Keil2 1 1Keil 工程的建立工程的建立 7 2 1 22 1 2 工程的详细设置工程的详细设置 10 2 1 42 1 4 KeilKeil 的调试命令 在线汇编与断点设置的调试命令 在线汇编与断点设置 13 2 1 52 1 5 KeilKeil 程序调试窗口程序调试窗口 17 2 1 62 1 6 KeilKeil 的辅助工具和部份高级技巧的辅助工具和部份高级技巧 23 3 3硬件系统设计硬件系统设计 3030 3 13 1AT89C51 模块 30 3 1 1AT89C513 1 1AT89C51 简介简介 30 3 1 23 1 2 单片机电路设计单片机电路设计 34 3 23 2 电源模块部分设计电源模块部分设计 36 3 33 3 亮灯控制模块亮灯控制模块 37 3 43 4 按键模块设计按键模块设计 39 3 53 5 电压比较器电压比较器 39 3 5 13 5 1 基本过零比较器基本过零比较器 39 3 5 23 5 2 任意电平比较器任意电平比较器 41 3 5 33 5 3 感光模拟电路感光模拟电路 41 3 3 系统软件设计系统软件设计 4343 3 13 1 系统软件流程设计系统软件流程设计 43 3 23 2 延时子程序延时子程序 43 3 33 3 消抖子程序消抖子程序 43 3 43 4 中断子程序中断子程序 45 4 4 系统联调系统联调 4848 4 14 1 PROTEUSPROTEUS 与与 KEILCKEILC 联调联调 48 4 24 2 系统硬件与软件联调系统硬件与软件联调 50 总结总结 5151 参考文献参考文献 5252 致谢致谢 5353 附录一附录一 系统总原理图系统总原理图 5454 附录二附录二 系统总程序系统总程序 5555 毕业设计论文 智能化汽车照明系统 1 1 1 绪论绪论 1 11 1 课题背景与意义课题背景与意义 随着社会的发展和人们生活水平的不断提高 人们对汽车的要求已不仅仅局限 于性能 成本 而是越来越多的要求现代汽车更加安全 更加环保 更加人性化 汽车生产商们也正在用更安全 更环保 设计更精美以及更省油料等优点来吸引用 户 而同时 新车款型也必须符合最新的规定 这就导致了新技术不断得到应用 作为汽车的三大安全件之一 汽车照明系统是最主要的主动式安全装置 对传统汽 车照明系统的改进和创新也日益成为全世界汽车厂商研究的热点问题 因此 如何 使汽车照明智能化 驾车更安全 更舒适就成为一个十分紧迫而又有重大现实意义 的课题 传统的汽车照明系统主要由前照灯系统 信号照明系统 车内照明系统三大部 分组成 随着科技的进步 传统照明系统也经历了长足的发展 相应的交通法规也 越来越健全 前照灯系统就经历了从最初的煤油灯到白炽灯 卤素灯到现在的气体 放电灯的发展过程 信号照明系统从最初的手提煤油灯发展到现在普遍应用的LED信 号灯 车内照明系统更是种类越来越多 越来越人性化 但是实际的使用中 传统 的前照灯系统存在着诸多问题 例如 现有近光灯在近距离上的照明效果很不好 特别是在交通状况比较复杂的市区 经常会有很多司机在晚上将近光灯 远光灯和 前雾灯统统打开 车辆在转弯的时候也存在照明的暗区 严重影响了司机对弯道上 障碍的判断 车辆在雨天行驶的时候 地面积水反射前灯的光线 产生反射眩光等 等 据统计 夜间事故中约有50 发生在没有照明设施的黑暗道路上 道路照明越 差 事故发生的可能性就越大 夜间事故占事故总数的33 1 虽然夜间出车率只 占白天的1 5 死亡人数则为50 左右 对比致死率 白天事故为12 4 而夜 间为33 7 夜间事故多发和高的致死率 其原因就是驾驶员的视力与白天相比约 降低1 2 此外雨和雾也会使视力下降 前窗玻璃脏得和水滴不仅使视力降低 还 会使距离感失真 必须引起驾驶员的注意 欧洲汽车照明研究机构曾经就此作过专 项调查 结果显示 欧洲司机们最希望改善的是阴雨天气积水路面的照明 排在第 二位的是乡村公路的照明 接下来依次是弯道照明 高速公路照明和市区照明 1 上述这些问题的存在 就使得研制一种具有多种照明功能的照明系统成为必要 并 且这些功能的切换 出于安全上的考虑 必须是自动实现的 由此 自适应照明系 统 ALS 也就应运而生了 毕业设计论文 智能化汽车照明系统 2 1 21 2 课题课题内容内容 本设计是关于汽车智能化汽车照明系统的设计开发 要求学生在毕业设计期间 完成汽车智能化汽车照明系统的理论设计 同时要求开发的汽车智能化汽车照明系 统有一定的实用性 能满足汽车弯道转向工况的性能需求 1 了解汽车智能化汽车照明系统的性能要求和设计步骤 2 掌握汽车智能化汽车照明系统设计的方法和流程 3 熟悉一种制图软件的操作 4 能够熟练地查阅有关参考文献及资料 5 熟悉毕业论文的格式和撰写软件的操作 毕业设计论文 智能化汽车照明系统 3 1 31 3 课题主要课题主要技术指标技术指标 1 设计方案要切实可行 设计的汽车智能化汽车照明系统要布置合理 安全可 靠 具有实用性 2 要有相关的设计图纸 电路图纸和相应的单片机仿真系统 3 要有合乎格式规定的书面和电子版的毕业设计论文 4 有一定的资料参考和查阅量 能翻译与课题有关的外文资料 1 41 4 设计的方案设计的方案 根据汽车功能需求 1 阴雨天气的照明 当自然光突然变暗喇 系统能够自动 打开车灯补充照明 2 随动转弯 车辆进入弯道时 前照灯产生随动的旋转光型 给予前方弯道足够的照明 3 启动 停车照明 4 雾霾天气及紧急照明等 图 1 1 系统实现的功能框图 上图是本设计要实现的功能 共有 5 个模块组成 按键开关模块 CPU 主控模 块 中断模块 灯模块 毕业设计论文 智能化汽车照明系统 4 2 2软件介绍软件介绍 2 12 1 PROTEUSPROTEUS 介绍介绍 Proteus 软件是英国 Labcenter electronics 公司出版的 EDA 工具软件 它不 仅具有其它 EDA 工具软件的仿真功能 还能仿真单片机及外围器件 它是目前最好 的仿真单片机及外围器件的工具 虽然目前国内推广刚起步 但已受到单片机爱好 者 从事单片机教学的教师 致力于单片机开发应用的科技工作者的青睐 Proteus 是世界上著名的 EDA 工具 仿真软件 从原理图布图 代码调试到单片机与外围电 路协同仿真 一键切换到 PCB 设计 真正实现了从概念到产品的完整设计 是目前 世界上唯一将电路仿真软件 PCB 设计软件和虚拟模型仿真软件三合一的设计平台 其处理器模型支持 8051 HC11 PIC10 12 16 18 24 30 DsPIC33 AVR ARM 8086 和 MSP430 等 Proteus 软件具有其它 EDA 工具软件 例 multisim 的功能 2 1 1PROTEUS2 1 1PROTEUS 功能和特点功能和特点 1 功能 1 原理布图 2 PCB 自动或人工布线 3 SPICE 电路仿真 2 2 革命性的特点革命性的特点 1 互动的电路仿真 用户甚至可以实时采用诸如 RAM ROM 键盘 马达 LED LCD AD DA 部分 SPI 器件 部分 IIC 器件 2 仿真处理器及其外围电路 可以仿真 51 系列 AVR PIC ARM 等常用主流单片机 还可以直接在基于原 理图的虚拟原型上编程 再配合显示及输出 能看到运行后输入输出的效果 配合 系统配置的虚拟逻辑分析仪 示波器等 Proteus 建立了完备的电子设计开发环境 毕业设计论文 智能化汽车照明系统 5 2 1 22 1 2 PROTEUSPROTEUS 功能模块功能模块 1 智能原理图设计 ISIS 丰富的器件库 超过 27000 种元器件 可方便地创建新元件 智能的器件搜索 通过模糊搜索可以快速定位所需要的器件 智能化的连线功能 自动连线功能使连接导线简单快捷 大大缩短绘图时间 支持总线结构 使用总线器件和总线布线使电路设计简明清晰 可输出高质量图纸 通过个性化设置 可以生成印刷质量的 BMP 图纸 可以方 便地供 WORD POWERPOINT 等多种文档使用 2 完善的电路仿真功能 Prospice ProSPICE 混合仿真 基于工业标准 SPICE3F5 实现数字 模拟电路的混合 仿真 超过 27000 个仿真器件 可以通过内部原型或使用厂家的 SPICE 文件自行 设计仿真器件 Labcenter 也在不断地发布新的仿真器件 还可导入第三方发布的 仿真器件 多样的激励源 包括直流 正弦 脉冲 分段线性脉冲 音频 使用 wav 文件 指数信号 单频 FM 数字时钟和码流 还支持文件形式的信号输入 丰富的虚拟仪器 13 种虚拟仪器 面板操作逼真 如示波器 逻辑分析仪 信号发生器 直流电压 电流表 交流电压 电流表 数字图案发生器 频率计 计数 器 逻辑探头 虚拟终端 SPI 调试器 I2C 调试器等 生动的仿真显示 用色点显示引脚的数字电平 导线以不同颜色表示其对 地电压大小 结合动态器件 如电机 显示器件 按钮 的使用可以使仿真更加直 观 生动 高级图形仿真功能 ASF 基于图标的分析可以精确分析电路的多项指标 包括工作点 瞬态特性 频率特性 传输特性 噪声 失真 傅立叶频谱分析等 还可以进行一致性分析 3 独特的单片机协同仿真功能 VSM 支持主流的 CPU 类型 如 ARM7 8051 52 AVR PIC10 12 PIC16 PIC18 PIC24 dsPIC33 HC11 BasicSt amp 8086 MSP430 等 CPU 类型随着版本升级还在继续增加 如即将支持 毕业设计论文 智能化汽车照明系统 6 CORTEX DSP 处理器 支持通用外设模型 如字符 LCD 模块 图形 LCD 模块 LED 点阵 LED 七段 显示模块 键盘 按键 直流 步进 伺服电机 RS232 虚拟终端 电子温度计等等 其 COMPIM COM 口物理接口模型 还可以使仿真电路通过 PC 机串口和外部电路实现 双向异步串行通信 实时仿真 支持 UART USART EUSARTs 仿真 中断仿真 SPI I2C 仿真 MSSP 仿真 PSP 仿真 RTC 仿真 ADC 仿真 CCP ECCP 仿真 编译及调试 支持单片机汇编语言的编辑 编译 源码级仿真 内带 8051 AVR PIC 的汇编编译器 也可以与第三方集成编译环境 如 IAR Keil 和 Hitech 结合 进行高级语言的源码级仿真和调试 4 实用的 PCB 设计平台 原理图到 PCB 的快速通道 原理图设计完成后 一键便可进入 ARES 的 PCB 设计环境 实现从概念到产品的完整设计 先进的自动布局 布线功能 支持器件的自动 人工布局 支持无网格自动 布线或人工布线 支持引脚交换 门交换功能使 PCB 设计更为合理 完整的 PCB 设计功能 最多可设计 16 个铜箔层 2 个丝印层 4 个机械层 含板边 灵活的布线策略供用户设置 自动设计规则检查 3D 可视化预览 多种输出格式的支持 可以输出多种格式文件 包括 Gerber 文件的导入或 导出 便利与其它 PCB 设计工具的互转 如 protel 和 PCB 板的设计和加工 在 PROTEUS 绘制好原理图后 调入已编译好的目标代码文件 HEX 可以在 PROTEUS 的原理图中看到模拟的实物运行状态和过程 PROTEUS 不仅可将许多单片机 实例功能形象化 也可将许多单片机实例运行过程形象化 前者可在相当程度上得 到实物演示实验的效果 后者则是实物演示实验难以达到的效果 它的元器件 连 接线路等却和传统的单片机实验硬件高度对应 这在相当程度上替代了传统的单片 机实验教学的功能 例 元器件选择 电路连接 电路检测 电路修改 软件调试 运行结果等 随着科技的发展 计算机仿真技术 已成为许多设计部门重要的前期设计手 段 它具有设计灵活 结果 过程的统一的特点 可使设计时间大为缩短 耗资大 为减少 也可降低工程制造的风险 相信在单片机开发应用中 PROTEUS 也能茯得愈 毕业设计论文 智能化汽车照明系统 7 来愈广泛的应用 2 2keilC2 2keilC 介绍介绍 单片机开发中除必要的硬件外 同样离不开软件 我们写的汇编语言源程序要 变为 CPU 可以执行的机器码有两种方法 一种是手工汇编 另一种是机器汇编 目 前已极少使用手工汇编的方法了 机器汇编是通过汇编软件将源程序变为机器码 用于 MCS 51 单片机的汇编软件有早期的 A51 随着单片机开发技术的不断发展 从 普遍使用汇编语言到逐渐使用高级语言开发 单片机的开发软件也在不断发展 Keil 软件是目前最流行开发 MCS 51 系列单片机的软件 这从近年来各仿真机厂商 纷纷宣布全面支持 Keil 即可看出 Keil 提供了包括 C 编译器 宏汇编 连接器 库管理和一个功能强大的仿真调试器等在内的完整开发方案 通过一个集成开发环 境 uVision 将这些部份组合在一起 运行 Keil 软件需要 Pentium 或以上的 CPU 16MB 或更多 RAM 20M 以上空闲的硬盘空间 WIN98 NT WIN2000 WINXP 等 操作系统 掌握这一软件的使用对于使用 51 系列单片机的爱好者来说是十分必要的 如果你使用 C 语言编程 那么 Keil 几乎就是你的不二之选 目前在国内你只能买到 该软件 而你买的仿真机也很可能只支持该软件 即使不使用 C 语言而仅用汇编语 言编程 其方便易用的集成环境 强大的软件仿真调试工具也会令你事半功倍 我们将通过一些实例来学习 Keil 软件的使用 在这一部份我们将学习如何输入 源程序 建立工程 对工程进行详细的设置 以及如何将源程序变为目标代码 图 1 所示电路图使用 89C51 单片机作为主芯片 这种单片机性属于 MCS 51 系列 其内 部有 4K 的 FLASH ROM 可以反复擦写 非常适于做实验 89C51 的 P1 引脚上接 8 个 发光二极管 P3 2 P3 4 引脚上接 4 个按钮开关 我们的第一个任务是让接在 P1 引 脚上的发光二极管依次循环点亮 2 1 1Keil2 1 1Keil 工程的建立工程的建立 首先启动 Keil 软件的集成开发环境 这里假设读者已正确安装了该软件 可以 从桌面上直接双击 uVision 的图标以启动该软件 UVison 启动后 程序窗口的左边有一个工程管理窗口 该窗口有 3 个标签 分 别是 Files Regs 和 Books 这三个标签页分别显示当前项目的文件结构 CPU 的 毕业设计论文 智能化汽车照明系统 8 寄存器及部份特殊功能寄存器的值 调试时才出现 和所选 CPU 的附加说明文件 如果是第一次启动 Keil 那么这三个标签页全是空的 1 源文件的建立 图 2 1 简单的键盘 显示板 使用菜单 File New 或者点击工具栏的新建文件按钮 即可在项目窗口的右 侧打开一个新的文本编缉窗口 在该窗口中输入以下汇编语言源程序 如 MOV A 0FEH MAIN MOV P1 A RL A LCALL DELAY AJMP MAIN DELAY MOV R7 255 D1 MOV R6 255 DJNZ R6 END DJNZ R7 D1 RET 保存该文件 注意必须加上扩展名 汇编语言源程序一般用 asm 或 a51 为扩展 名 这里假定将文件保存为 exam1 asm 需要说明的是 源文件就是一般的文本文 件 不一定使用 Keil 软件编写 可以使用任意文本编缉器编写 而且 Keil 的编 缉器对汉字的支持不好 建议使用 UltraEdit 之类的编缉软件进行源程序的输入 2 建立工程文件 毕业设计论文 智能化汽车照明系统 9 在项目开发中 并不是仅有一个源程序就行了 还要为这个项目选择 CPU Keil 支持数百种 CPU 而这些 CPU 的特性并不完全相同 确定编译 汇编 连接的参数 指定调试的方式 有一些项目还会有多个文件组成等 为管理和使用 方便 Keil 使用工程 Project 这一概念 将这些参数设置和所需的所有文件都 加在一个工程中 只能对工程而不能对单一的源程序进行编译 汇编 和连接等操 作 下面我们就一步一步地来建立工程 图 2 2 选择目标 CPU 点击 Project New Project 菜单 出现一个对话框 要求给将要建立的 工程起一个名字 你可以在编缉框中输入一个名字 设为 exam1 不需要扩展名 点击 保存 按钮 出现第二个对话框 如图 2 所示 这个对话框要求选择目标 CPU 即你所用芯片的型号 Keil 支持的 CPU 很多 我们选择 Atmel 公司的 89C51 芯片 点击 ATMEL 前面的 号 展开该层 点击其中的 89C51 然后再点击 确 定 按钮 回到主界面 此时 在工程窗口的文件页中 出现了 Target1 前面 有 号 点击 号展开 可以看到下一层的 Source Group1 这时的工程 还是一个空的工程 里面什么文件也没有 需要手动把刚才编写好的源程序加入 点击 Source Group1 使其反白显示 然后 点击鼠标右键 出现一个下拉菜单 如图 3 所示 选中其中的 Add file to Group Source Group1 出现一个对话框 要求寻找源文件 注意 该对话框下面的 文件类型 默认为 C source file c 也就是以 C 为扩展名的文件 而我们的文件是以 asm 为扩展名的 所以在列表框中 找不到 exam1 asm 要将文件类型改掉 点击对话框中 文件类型 后的下拉列表 找到并选中 Asm Source File a51 asm 这样 在列表框中就可以找到 exam1 asm 文件了 双击 exam1 asm 文件 将文件加入项目 注意 在文件加入项 目后 该对话框并不消失 等待继续加入其它文件 但初学时常会误认为操作没有 毕业设计论文 智能化汽车照明系统 10 成功而再次双击同一文件 这时会出现如图 4 所示的对话框 提示你所选文件已在 列表中 此时应点击 确定 返回前一对话框 然后点击 Close 即可返回主界 面 返回后 点击 Source Group 1 前的加号 会发现 exam1 asm 文件已在其中 双击文件名 即打开该源程序 图 2 3 加入文件 2 1 22 1 2 工程的详细设置工程的详细设置 图 2 4 重复加入文件的错误 工程建立好以后 还要对工程进行进一步的设置 以满足要求 首先点击左边 Project 窗口的 Target 1 然后使用菜单 Project Option for target target1 即出现对工程设置的对话框 这个对话框可谓非常复杂 共有 8 个页面 要全部搞清可不容易 好在绝大部份设置项取默认值就行了 图 2 5 对目标进行设置 设置对话框中的 Target 页面 如图 5 所示 Xtal 后面的数值是晶振频率值 默认值是所选目标 CPU 的最高可用频率值 对于我们所选的 AT89C51 而言是 24M 该数值与最终产生的目标代码无关 仅用于软件模拟调试时显示程序执行时间 正 确设置该数值可使显示时间与实际所用时间一致 一般将其设置成与你的硬件所用 毕业设计论文 智能化汽车照明系统 11 晶振频率相同 如果没必要了解程序执行的时间 也可以不设 这里设置为 12 Memory Model 用于设置 RAM 使用情况 有三个选择项 Small 是所有变量都在 单片机的内部 RAM 中 Compact 是可以使用一页外部扩展 RAM 而 Larget 则是可以 使用全部外部的扩展 RAM Code Model 用于设置 ROM 空间的使用 同样也有三个选 择项 即 Small 模式 只用低于 2K 的程序空间 Compact 模式 单个函数的代码量 不能超过 2K 整个程序可以使用 64K 程序空间 Larget 模式 可用全部 64K 空间 Use on chip ROM 选择项 确认是否仅使用片内 ROM 注意 选中该项并不会影响最 终生成的目标代码量 Operating 项是操作系统选择 Keil 提供了两种操作系统 Rtx tiny 和 Rtx full 关于操作系统是另外一个很大的话题了 通常我们不使用任 何操作系统 即使用该项的默认值 None 不使用任何操作系统 Off Chip Code memory 用以确定系统扩展 ROM 的地址范围 Off Chip xData memory 组用于确定系 统扩展 RAM 的地址范围 这些选择项必须根据所用硬件来决定 由于该例是单片应 用 未进行任何扩展 所以均不重新选择 按默认值设置 设置对话框中的 OutPut 页面 如图 6 所示 这里面也有多个选择项 其中 Creat Hex file 用于生成可执行代码文件 可以用编程器写入单片机芯片的 HEX 格 式文件 文件的扩展名为 HEX 默认情况下该项未被选中 如果要写片做硬件实验 就必须选中该项 这一点是初学者易疏忽的 在此特别提醒注意 选中 Debug information 将会产生调试信息 这些信息用于调试 如果需要对程序进行调试 应当选中该项 Browse information 是产生浏览信息 该信息可以用菜单 view Browse 来查看 这里取默认值 按钮 Select Folder for objects 是用来选择最 终的目标文件所在的文件夹 默认是与工程文件在同一个文件夹中 Name of Executable 用于指定最终生成的目标文件的名字 默认与工程的名字相同 这两项 一般不需要更改 工程设置对话框中的其它各页面与 C51 编译选项 A51 的汇编选项 BL51 连接 器的连接选项等用法有关 这里均取默认值 不作任何修改 以下仅对一些有关页 面中常用的选项作一个简单介绍 毕业设计论文 智能化汽车照明系统 12 图 2 6 对输出进行控制 Listing 标签页用于调整生成的列表文件选项 在汇编或编译完成后将产生 lst 的列表文件 在连接完成后也将产生 m51 的列表文件 该页用于对 列表文件的内容和形式进行细致的调节 其中比较常用的选项是 C Compile Listing 下的 Assamble Code 项 选中该项可以在列表文件中生成 C 语言源程 序所对应的汇编代码 图 2 7 代码生成控制 C51 标签页用于对 Keil 的 C51 编译器的编译过程进行控制 其中比较常用的是 Code Optimization 组 如图 7 所示 该组中 Level 是优化等级 C51 在对源程 序进行编译时 可以对代码多至 9 级优化 默认使用第 8 级 一般不必修改 如果 在编译中出现一些问题 可以降低优化级别试一试 Emphasis 是选择编译优先方式 第一项是代码量优化 最终生成的代码量小 第二项是速度优先 最终生成的代码 速度快 第三项是缺省 默认的是速度优先 可根据需要更改 设置完成后按确认 返回主界面 工程文件建立 设置完毕 三 编译 连接 图 2 8 有关编译 连接 项目设置的工具条 在设置好工程后 即可进行编译 连接 选择菜单 Project Build target 对当前工程进行连接 如果当前文件已修改 软件会先对该文件进行编译 然后再 连接以产生目标代码 如果选择 Rebuild All target files 将会对当前工程中的所 有文件重新进行编译然后再连接 确保最终生产的目标代码是最新的 而 Translate 项则仅对该文件进行编译 不进行连接 以上操作也可以通过工具栏 按钮直接进行 图 8 是有关编译 设置的工具栏按钮 从左到右分别是 编译 毕业设计论文 智能化汽车照明系统 13 编译连接 全部重建 停止编译和对工程进行设置 编译过程中的信息将出现在输出窗口中的 Build 页中 如果源程序中有语法错 误 会有错误报告出现 双击该行 可以定位到出错的位置 对源程序反复修改之 后 最终会得到如图 9 所示的结果 提示获得了名为 exam1 hex 的文件 该文件即 可被编程器读入并写到芯片中 同时还产生了一些其它相关的文件 可被用于 Keil 的仿真与调试 这时可以进入下一步调试的工作 图 2 9 正确编译 连接之后的结果 2 1 42 1 4 KeilKeil 的调试命令 在线汇编与断点设置的调试命令 在线汇编与断点设置 一 常用调试命令 在对工程成功地进行汇编 连接以后 按 Ctrl F5 或者使用菜单 Debug Start Stop Debug Session 即可进入调试状态 Keil 内建了一个仿真 CPU 用来模 拟执行程序 该仿真 CPU 功能强大 可以在没有硬件和仿真机的情况下进行程序的 调试 下面将要学的就是该模拟调试功能 不过在学习之前必须明确 模拟毕竟只 是模拟 与真实的硬件执行程序肯定还是有区别的 其中最明显的就是时序 软件 模拟是不可能和真实的硬件具有相同的时序的 具体的表现就是程序执行的速度和 各人使用的计算机有关 计算机性能越好 运行速度越快 进入调试状态后 界面与编缉状态相比有明显的变化 Debug 菜单项中原来不 能用的命令现在已可以使用了 工具栏会多出一个用于运行和调试的工具条 如图 1 所示 Debug 菜单上的大部份命令可以在此找到对应的快捷按钮 从左到右依次是 复位 运行 暂停 单步 过程单步 执行完当前子程序 运行到当前行 下一状 态 打开跟踪 观察跟踪 反汇编窗口 观察窗口 代码作用范围分析 1 串行窗 口 内存窗口 性能分析 工具按钮等命令 图 2 10 调试工具条 程序调试 必须明确两个重要的概念 即单步执行与全速运行 全速执行是指 毕业设计论文 智能化汽车照明系统 14 一行程序执行完以后紧接着执行下一行程序 中间不停止 这样程序执行的速度很 快 并可以看到该段程序执行的总体效果 即最终结果正确还是错误 但如果程序 有错 则难以确认错误出现在哪些程序行 单步执行是每次执行一行程序 执行完 该行程序以后即停止 等待命令执行下一行程序 此时可以观察该行程序执行完以 后得到的结果 是否与我们写该行程序所想要得到的结果相同 借此可以找到程序 中问题所在 程序调试中 这两种运行方式都要用到 使用菜单 STEP 或相应的命令按钮或使用快捷键 F11 可以单步执行程序 使用菜 单 STEP OVER 或功能键 F10 可以以过程单步形式执行命令 所谓过程单步 是指将 汇编语言中的子程序或高级语言中的函数作为一个语句来全速执行 图 2 11 调试窗口 按下 F11 键 可以看到源程序窗口的左边出现了一个黄色调试箭头 指向源程 序的第一行 如图 2 所示 每按一次 F11 即执行该箭头所指程序行 然后箭头指 向下一行 当箭头指向 LCALL DELAY 行时 再次按下 F11 会发现 箭头指向了延 时子程序 DELAY 的第一行 不断按 F11 键 即可逐步执行延时子程序 通过单步执行程序 可以找出一些问题的所在 但是仅依靠单步执行来查错有 时是困难的 或虽能查出错误但效率很低 为此必须辅之以其它的方法 如本例中 的延时程序是通过将 D2 DJNZ R6 D2 这一行程序执行六万多次来达到延时的目的 如果用按 F11 六万多次的方法来执行完该程序行 显然不合适 为此 可以采取以 下一些方法 第一 用鼠标在子程序的最后一行 ret 点一下 把光标定位于该行 然后用菜单 Debug Run to Cursor line 执行到光标所在行 即可全速执行完黄 色箭头与光标之间的程序行 第二 在进入该子程序后 使用菜单 Debug Step Out of Current Function 单步执行到该函数外 使用该命令后 即全速执行完 调试光标所在的子程序或子函数并指向主程序中的下一行程序 这里是 JMP LOOP 行 第三种方法 在开始调试的 按 F10 而非 F11 程序也将单步执行 不同的是 毕业设计论文 智能化汽车照明系统 15 执行到 lcall delay 行时 按下 F10 键 调试光标不进入子程序的内部 而是全速 执行完该子程序 然后直接指向下一行 JMP LOOP 灵活应用这几种方法 可以大 大提高查错的效率 二 在线汇编 图 2 12 在线汇编窗口 在进入 Keil 的调试环境以后 如果发现程序有错 可以直接对源程序进行修改 但是要使修改后的代码起作用 必须先退出调试环境 重新进行编译 连接后再次 进入调试 如果只是需要对某些程序行进行测试 或仅需对源程序进行临时的修改 这样的过程未免有些麻烦 为此 Keil 软件提供了在线汇编的能力 将光标定位于需 要修改的程序行上 用菜单 Debug Inline Assambly 即可出现如图 3 的对话框 在 Enter New 后面的编缉框内直接输入需更改的程序语句 输入完后键入回车将自 动指向下一条语句 可以继续修改 如果不再需要修改 可以点击右上角的关闭按 钮关闭窗口 三 断点设置 程序调试时 一些程序行必须满足一定的条件才能被执行到 如程序中某变量 达到一定的值 按键被按下 串口接收到数据 有中断产生等 这些条件往往是异 步发生或难以预先设定的 这类问题使用单步执行的方法是很难调试的 这时就要 使用到程序调试中的另一种非常重要的方法 断点设置 断点设置的方法有多种 常用的是在某一程序行设置断点 设置好断点后可以全速运行程序 一旦执行到该 程序行即停止 可在此观察有关变量值 以确定问题所在 在程序行设置 移除断点 的方法是将光标定位于需要设置断点的程序行 使用菜单 Debug Insert Remove BreakPoint 设置或移除断点 也可以用鼠标在该行双击实现同样的功能 Debug Enable D isable Breakpoint 是开启或暂停光标所在行的断点功能 Debug Disable All Breakpoint 暂停所有断点 Debug Kill All BreakPoint 清除所有 的断点设置 这些功能也可以用工具条上的快捷按钮进行设置 除了在某程序行设置断点这一基本方法以外 Keil 软件还提供了多种设置断点 毕业设计论文 智能化汽车照明系统 16 的方法 按 Debug Breakpoints 即出现一个对话框 该对话框用于对断点进行详 细的设置 如图 4 所示 图 4 中 Expression 后的编缉框内用于输入表达式 该表达式用于确定程序停止 运行的条件 这里表达式的定义功能非常强大 涉及到 Keil 内置的一套调试语法 这里不作详细说明 仅举若干实例 希望读者可以举一反三 1 在 Experssion 中键入 a 0 xf7 再点击 Define 即定义了一个断点 注意 a 后有两个等号 意即相等 该表达式的含义是 如果 a 的值到达 0 xf7 则停止程序 运行 除使用相等符号之外 还可以使用 Periodic Window Updata 周期更新 窗口 确认该项处于被选中状态 即可在全速运行时动态地观察有关值的变化 但 是 选中该项 将会使程序模拟执行的速度变慢 二 各种窗口在程序调试中的用途 以下通过一个高级语言程序来说明这些窗口的使用 例 2 include reg51 h sbit P1 0 P1 0 定义 P1 0 void mDelay unsigned char DelayTime unsigned int j 0 for DelayTime 0 DelayTime for j 0 jDissambly Window 可以打开反汇编窗口 该窗口可以显示反汇编后 的代码 源程序和相应反汇编代码的混合代码 可以在该窗口进行在线汇编 利用 该窗口跟踪已找行的代码 在该窗口按汇编代码的方式单步执行 这也是一个重要 的窗口 打开反汇编窗口 点击鼠标右键 出现快捷菜单 如图 6 所示 其中 Mixed Mode 是以混合方式显示 Assembly Mode 是以反汇编码方式显示 程序调试 中常使用设置断点然后全速运行的方式 在断点处可以获得各变量值 但却无法知 道程序到达断点以前究竟执行了哪些代码 而这往往是需要了解的 为此 Keil 提 供了跟踪功能 在运行程序之前打开调试工具条上的允许跟踪代码开关 然后全速 运行程序 当程序停止运行后 点击查看跟踪代码按钮 自动切换到反汇编窗口 如图 6 所示 其中前面标有 号的行就是中断以前执行的代码 可以按窗口边的 上卷按钮向上翻查看代码执行记录 图 2 19 反汇编窗口 利用工程窗口可以观察程序执行的时间 下面我们观察一下该例中延时程序的 延时时间是否满足我们的要求 即是否确实延时 10 毫秒 展开工程窗口 Regs 页中 的 Sys 目录树 其中的 Sec 项记录了从程序开始执行到当前程序流逝的秒数 点击 RST 按钮以复位程序 Sec 的值回零 按下 F10 键 程序窗口中的黄色箭头指向 mDelay 10 行 此时 记录下 Sec 值为 0 然后再按 F10 执行完该段程序 再次查 看 Sec 的值为 0 两者相减大约是 0 01 秒 所以延时时间大致是正确的 读者可 毕业设计论文 智能化汽车照明系统 22 以试着将延时程序中的 unsigned int 改为 unsigned char 试试看时间是否仍正确 注意 使用这一功能的前提是在项目设置中正确设置晶振的数值 Keil 提供了串行窗口 我们可以直接在串行窗口中键入字符 该字符虽不会被 显示出来 但却能传递到仿真 CPU 中 如果仿真 CPU 通过串行口发送字符 那么这 些字符会在串行窗口显示出来 用该窗口可以在没有硬件的情况下用键盘模拟串口 通讯 下面通过一个例子说明 Keil 串行窗口的应用 该程序实现一个行编缉功能 每键入一个字母 会立即回显到窗口中 编程的方法是通过检测 RI 是否等于 1 来判 断串行口是否有字符输入 如果有字符输入 则将其送到 SBUF 这个字符就会在串 行窗口中显示出来 其中 ser init 是串行口初始化程序 要使用串行口 必须首先 对串行口进行初始化 例 3 MOV SP 5FH 堆栈初始化 CALL SER INIT 串行口初始化 LOOP JBC RI NEXT 如果串口接收到字符 转 JMP LOOP 否则等待接收字符 NEXT MOV A SBUF 从 SBUF 中取字符 MOV SBUF A 回送到发送 SBUF 中 SEND JBC TI LOOP 发送完成 转 LOOP JMP SEND 否则等待发送完 SER INIT 中断初始化 MOV SCON 50H ORL TMOD 20H ORL PCON 80H MOV TH1 0FDH 设定波特率 SETB TR1 定时器1开始运行 SETB REN 允许接收 SETB SM2 RET END 输入源程序 并建立项目 正确编译 连接 进入调试后 全速运行 点击 毕业设计论文 智能化汽车照明系统 23 串行窗口 1 按钮 即在原源程序窗口位置出现一个空白窗口 击键 相应的字母就 会出现在该窗口中 在窗口中击鼠标右键 出现一个弹出式菜单 选择 Ascii Mode 即以 Ascii 码的方式显示接收到的数据 选择 Hex Mode 以十六进制码方 式显示接收到的数据 选择 Clear Window 可以清除窗口中显示的内容 由于部 份 CPU
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年电子商务行业招聘面试常见问题解答
- 2025年人力资源管理师高级考试题库与答案解析
- 电力安全基础知识培训课件
- 2025年数据分析师面试技巧与模拟题集含答案
- 2025年工业设计师的面试模拟题及答案
- 2025年软件开发项目经理面试攻略与模拟题解析
- 2025年高级营养师健康咨询实战模拟面试题集及解析
- 电力业务知识培训心得
- 2025年护士招聘面试宝典护理技能与职业素养考核要点医疗护理类
- 2025年职位解析社区长者食堂客服招聘面试模拟题集萃
- 悟空识字1-300(带拼音)-可打印
- 小学与初中科学课程衔接策略
- (完整版)西门子ARCADICOrbic3D三维C型臂培训
- 检验科免疫室工作制度
- 《智能感知技术》课件
- 2024版酷家乐课件
- 税务停业申请书
- 班组长一日工作培训
- 2025年春季安全教育主题班会教育记录
- 人教版六年级数学下册《全册完整》教案
- 2024年中国VHB泡棉胶带市场调查研究报告
评论
0/150
提交评论