1、分类号 密级 公开 UDC注1 毕业设计论文智能化汽车照明系统设计*指导教师姓名 * 申请学位级别 专业名称 论文提交日期 论文答辩日期 学位授予单位和日期 答辩委员会主席 评阅人 年 月 日注1:注明国际十进分类法UDC的类号。 摘要传统的汽车照明系统主要由前照灯系统,信号照明系统,车内照明系统三大部分组成。随着科技的进步,传统照明系统也经历了长足的发展,但是实际的使用中,传统的前照灯系统依然存在着诸多问题,在面对复杂的道路条件和行车状况时,交通安全仍然存在巨大的隐患。因此,如何使传统汽车照明智能化,驾车更安全,更舒适就成为一个十分紧迫而又有重大现实意义的课题。本文通过对现有汽车智能照明方案
2、的分析,提出了一种能够实现照明和弯道随动转向主要功能的汽车自适应照明方案。与各大汽车厂商的方案相比,本系统集成了更多的智能照明设计,功能更为全面。而且本方案是基于AT89S51单片机开发的低成本、低功耗系统,性价比更为出色。首先介绍了汽车自适应照明系统ALS(AdaptiveLightingSystem)的产生、发展和应用状况,分析了ALS的组成、功能和工作原理,在详细分析了系统功能需求的基础上设计了基于AT89S51单片机的汽车自适应照明系统。在文章的硬件部分,详细设计了主控制器及外围电路、电源模块、执行器模块电路。在软件部分,设计了系统软件的整体流程,算法程序等软件模块,实现了一个完整的整
3、车照明系统。通过最后的系统调试,保证了车辆在各种状态下总能为驾驶员提供最佳照明,并能够及时发现整车车灯的各种故障,表明了本设计方案的可行性和正确性。关键词: 汽车照明;单片机;中断;控制AbstractTraditional automotive lighring system is mainly composed of three parts:Frontlighting System,signal lighting,Incar lightingWith the development of science and technology,Traditional amomotive lighti
4、ng system has developed a lotHowever,there are still many problems in traditional automotive lighting system in actual useTraffic-safety is still a big problem when the road surrounding and driving condition are complexTherefore,how to make the traditional automotive lighting intelligent,driving saf
5、er and more comfortable is becoming a very urgent issue with practical significanceThrough 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
6、auto-body tilt and fault diagnosisCompared with theprograms of the maj or car manufacturers,the system integrates more intelligent lighting designs and the function is more comprehensiveThe program is a low-cost and low-powersystem which is based on the singlechipAT89S51,and its more costeffectiveTh
7、is paper introduced the beginning,developing and application status of the vehicle adaptive lighting system(ALS),then analyzed the constitution,function and work theoryAfter the system requirements are analyzed in detail,the vehicle adaptive lighting system based on the single-chip AT89S5 1 Was desi
8、gnedThe system includes the modules of datacollectionprocess,fault diagnosis and the sensorsIn the section abouthardware,there are the detail designs of ALS master controller and peripheral circuits,power module,implementation module circuitIn the section about software,the overall system software p
9、rocesses and the software algorithm module Was designed,both realizes a complete autobody lighting systemAfter the ALS test result,this system Can make sure to provide drivers the best lighting in many kinds of conditionsAnd the system Can discover all kinds of faults of the vehicle lightsAt the end
10、 of the article,there is summarize which havent solved yet,I think they could be futureKeywords: smart lighting;scm; interruptL; control目录1 绪论11.1 课题背景与意义11.2 课题内容21.3 课题主要技术指标31.4 设计的方案32软件介绍42.1 PROTEUS介绍42.1.1PROTEUS功能和特点42.1.2 PROTEUS功能模块52.2keilC介绍72.1.1Keil工程的建立72.1.2 工程的详细设置102.1.4 Keil的调试命令、
11、在线汇编与断点设置132.1.5 Keil程序调试窗口172.1.6 Keil的辅助工具和部份高级技巧233硬件系统设计303.1AT89C51模块303.1.1AT89C51简介303.1.2单片机电路设计343.2电源模块部分设计363.3亮灯控制模块373.4按键模块设计393.5电压比较器393.5.1基本过零比较器393.5.2任意电平比较器413.5.3 感光模拟电路413 系统软件设计433.1系统软件流程设计433.2延时子程序433.3消抖子程序433.4中断子程序454 系统联调484.1 PROTEUS与KEILC联调484.2系统硬件与软件联调50总结51参考文献52致
12、谢53附录一 系统总原理图54附录二 系统总程序551 绪论1.1 课题背景与意义随着社会的发展和人们生活水平的不断提高,人们对汽车的要求已不仅仅局限于性能,成本,而是越来越多的要求现代汽车更加安全,更加环保,更加人性化。汽车生产商们也正在用更安全、更环保、设计更精美以及更省油料等优点来吸引用户。而同时,新车款型也必须符合最新的规定,这就导致了新技术不断得到应用。作为汽车的三大安全件之一,汽车照明系统是最主要的主动式安全装置,对传统汽车照明系统的改进和创新也日益成为全世界汽车厂商研究的热点问题。因此,如何使汽车照明智能化,驾车更安全,更舒适就成为一个十分紧迫而又有重大现实意义的课题。传统的汽车
13、照明系统主要由前照灯系统,信号照明系统,车内照明系统三大部分组成。随着科技的进步,传统照明系统也经历了长足的发展,相应的交通法规也越来越健全,前照灯系统就经历了从最初的煤油灯到白炽灯,卤素灯到现在的气体放电灯的发展过程,信号照明系统从最初的手提煤油灯发展到现在普遍应用的LED信号灯,车内照明系统更是种类越来越多,越来越人性化。但是实际的使用中,传统的前照灯系统存在着诸多问题。例如,现有近光灯在近距离上的照明效果很不好,特别是在交通状况比较复杂的市区,经常会有很多司机在晚上将近光灯、远光灯和前雾灯统统打开;车辆在转弯的时候也存在照明的暗区,严重影响了司机对弯道上障碍的判断;车辆在雨天行驶的时候,
14、地面积水反射前灯的光线,产生反射眩光等等。据统计,夜间事故中约有50发生在没有照明设施的黑暗道路上,道路照明越差,事故发生的可能性就越大。夜间事故占事故总数的331(虽然夜间出车率只占白天的15)。死亡人数则为50左右,对比致死率,白天事故为124,而夜间为33、7。夜间事故多发和高的致死率,其原因就是驾驶员的视力与白天相比约降低12。此外雨和雾也会使视力下降,前窗玻璃脏得和水滴不仅使视力降低,还会使距离感失真,必须引起驾驶员的注意。欧洲汽车照明研究机构曾经就此作过专项调查,结果显示,欧洲司机们最希望改善的是阴雨天气积水路面的照明,排在第二位的是乡村公路的照明,接下来依次是弯道照明、高速公路照
15、明和市区照明1】。上述这些问题的存在,就使得研制一种具有多种照明功能的照明系统成为必要,并且这些功能的切换,出于安全上的考虑,必须是自动实现的,由此,自适应照明系统(ALS)也就应运而生了。1.2 课题内容本设计是关于汽车智能化汽车照明系统的设计开发,要求学生在毕业设计期间,完成汽车智能化汽车照明系统的理论设计,同时要求开发的汽车智能化汽车照明系统有一定的实用性,能满足汽车弯道转向工况的性能需求。1.了解汽车智能化汽车照明系统的性能要求和设计步骤;2.掌握汽车智能化汽车照明系统设计的方法和流程;3.熟悉一种制图软件的操作;4.能够熟练地查阅有关参考文献及资料;5.熟悉毕业论文的格式和撰写软件的
16、操作。1.3 课题主要技术指标1.设计方案要切实可行,设计的汽车智能化汽车照明系统要布置合理,安全可靠,具有实用性;2. 要有相关的设计图纸、电路图纸和相应的单片机仿真系统;3.要有合乎格式规定的书面和电子版的毕业设计论文;4.有一定的资料参考和查阅量,能翻译与课题有关的外文资料1.4 设计的方案根据汽车功能需求:1、阴雨天气的照明,当自然光突然变暗喇,系统能够自动打开车灯补充照明;2、随动转弯,车辆进入弯道时,前照灯产生随动的旋转光型,给予前方弯道足够的照明。3.启动、停车照明;4.雾霾天气及紧急照明等。图1.1 系统实现的功能框图上图是本设计要实现的功能,共有5个模块组成:按键开关模块,C
17、PU主控模块、中断模块、灯模块。2 软件介绍 2.1 PROTEUS介绍Proteus软件是英国Labcenter electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软
18、件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等。Proteus软件具有其它EDA工具软件(例:multisim)的功能。2.1.1PROTEUS功能和特点1.功能(1)原理布图; (2)PCB自动或人工布线 ;(3)SPICE电路仿真。 2.革命性的特点 (1)互动的电路仿真 用户甚至可以实时采用诸如RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。 (2)仿真处理器及其外围电路 可以仿真51系列、AVR、PIC、ARM、等常用主流单片机。还可以直接
19、在基于原理图的虚拟原型上编程,再配合显示及输出,能看到运行后输入输出的效果。配合系统配置的虚拟逻辑分析仪、示波器等,Proteus建立了完备的电子设计开发环境。2.1.2 PROTEUS功能模块(1)智能原理图设计(ISIS)丰富的器件库:超过27000种元器件,可方便地创建新元件; 智能的器件搜索:通过模糊搜索可以快速定位所需要的器件; 智能化的连线功能:自动连线功能使连接导线简单快捷,大大缩短绘图时间; 支持总线结构:使用总线器件和总线布线使电路设计简明清晰; 可输出高质量图纸:通过个性化设置,可以生成印刷质量的BMP图纸,可以方便地供WORD、POWERPOINT等多种文档使用。 (2)
20、完善的电路仿真功能(Prospice) ProSPICE混合仿真:基于工业标准SPICE3F5,实现数字/模拟电路的混合仿真; 超过27000个仿真器件:可以通过内部原型或使用厂家的SPICE文件自行设计仿真器件,Labcenter也在不断地发布新的仿真器件,还可导入第三方发布的仿真器件; 多样的激励源:包括直流、正弦、脉冲、分段线性脉冲、音频(使用wav文件)、指数信号、单频FM、数字时钟和码流,还支持文件形式的信号输入; 丰富的虚拟仪器:13种虚拟仪器,面板操作逼真,如示波器、逻辑分析仪、信号发生器、直流电压/电流表、交流电压/电流表、数字图案发生器、频率计/计数器、逻辑探头、虚拟终端、S
21、PI调试器、I2C调试器等; 生动的仿真显示:用色点显示引脚的数字电平,导线以不同颜色表示其对地电压大小,结合动态器件(如电机、显示器件、按钮)的使用可以使仿真更加直观、生动; 高级图形仿真功能(ASF):基于图标的分析可以精确分析电路的多项指标,包括工作点、瞬态特性、频率特性、传输特性、噪声、失真、傅立叶频谱分析等,还可以进行一致性分析; (3)独特的单片机协同仿真功能(VSM) 支持主流的CPU类型:如ARM7、8051/52、AVR、PIC10/12、PIC16、PIC18、PIC24、dsPIC33、HC11、BasicStamp、8086、MSP430等,CPU类型随着版本升级还在继
22、续增加,如即将支持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、
23、Keil和Hitech)结合,进行高级语言的源码级仿真和调试; (4)实用的PCB设计平台 原理图到PCB的快速通道: 原理图设计完成后,一键便可进入ARES的PCB设计环境,实现从概念到产品的完整设计; 先进的自动布局/布线功能:支持器件的自动/人工布局;支持无网格自动布线或人工布线;支持引脚交换/门交换功能使PCB设计更为合理; 完整的PCB设计功能:最多可设计16个铜箔层,2个丝印层,4个机械层(含板边),灵活的布线策略供用户设置,自动设计规则检查,3D 可视化预览; 多种输出格式的支持:可以输出多种格式文件,包括Gerber文件的导入或导出,便利与其它PCB设计工具的互转(如prote
24、l)和PCB板的设计和加工。在PROTEUS绘制好原理图后,调入已编译好的目标代码文件:*.HEX,可以在PROTEUS的原理图中看到模拟的实物运行状态和过程。PROTEUS不仅可将许多单片机实例功能形象化,也可将许多单片机实例运行过程形象化。前者可在相当程度上得到实物演示实验的效果,后者则是实物演示实验难以达到的效果。它的元器件、连接线路等却和传统的单片机实验硬件高度对应。这在相当程度上替代了传统的单片机实验教学的功能,例:元器件选择、电路连接、电路检测、电路修改、软件调试、运行结果等。随着科技的发展,“计算机仿真技术”已成为许多设计部门重要的前期设计手段。它具有设计灵活,结果、过程的统一的
25、特点。可使设计时间大为缩短、耗资大为减少,也可降低工程制造的风险。相信在单片机开发应用中PROTEUS也能茯得愈来愈广泛的应用。 2.2keilC介绍单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣
26、布全面支持Keil即可看出。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用C语言编程,那么Keil几乎就是你的不二之选(目前在国内你只能买到该软件、而你买的仿真机也很可能只支持该软件),即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真
27、调试工具也会令你事半功倍。我们将通过一些实例来学习Keil软件的使用,在这一部份我们将学习如何输入源程序,建立工程、对工程进行详细的设置,以及如何将源程序变为目标代码。图1所示电路图使用89C51单片机作为主芯片,这种单片机性属于MCS-51系列,其内部有4K的FLASH ROM,可以反复擦写,非常适于做实验。89C51的P1引脚上接8个发光二极管,P3.2P3.4引脚上接4个按钮开关,我们的第一个任务是让接在P1引脚上的发光二极管依次循环点亮。2.1.1Keil工程的建立首先启动Keil软件的集成开发环境,这里假设读者已正确安装了该软件,可以从桌面上直接双击uVision的图标以启动该软件。
28、UVison启动后,程序窗口的左边有一个工程管理窗口,该窗口有3个标签,分别是Files、Regs、和Books,这三个标签页分别显示当前项目的文件结构、CPU的寄存器及部份特殊功能寄存器的值(调试时才出现)和所选CPU的附加说明文件,如果是第一次启动Keil,那么这三个标签页全是空的。1、源文件的建立图2.1 简单的键盘、显示板使用菜单“File-New”或者点击工具栏的新建文件按钮,即可在项目窗口的右侧打开一个新的文本编缉窗口,在该窗口中输入以下汇编语言源程序,如:MOV A,#0FEH MAIN:MOV P1,ARL A LCALL DELAY AJMP MAINDELAY:MOV R7
29、,#255D1:MOV R6,#255DJNZ R6,$ENDDJNZ R7,D1RET保存该文件,注意必须加上扩展名(汇编语言源程序一般用asm或a51为扩展名),这里假定将文件保存为exam1.asm。需要说明的是,源文件就是一般的文本文件,不一定使用Keil软件编写,可以使用任意文本编缉器编写,而且,Keil的编缉器对汉字的支持不好,建议使用UltraEdit之类的编缉软件进行源程序的输入。2、建立工程文件在项目开发中,并不是仅有一个源程序就行了,还要为这个项目选择CPU(Keil支持数百种CPU,而这些CPU的特性并不完全相同),确定编译、汇编、连接的参数,指定调试的方式,有一些项目还
30、会有多个文件组成等,为管理和使用方便,Keil使用工程(Project)这一概念,将这些参数设置和所需的所有文件都加在一个工程中,只能对工程而不能对单一的源程序进行编译(汇编)和连接等操作,下面我们就一步一步地来建立工程。图2.2选择目标CPU点击“Project-New Project”菜单,出现一个对话框,要求给将要建立的工程起一个名字,你可以在编缉框中输入一个名字(设为exam1),不需要扩展名。点击“保存”按钮,出现第二个对话框,如图2所示,这个对话框要求选择目标CPU(即你所用芯片的型号),Keil支持的CPU很多,我们选择Atmel公司的89C51芯片。点击ATMEL前面的“+”号
31、,展开该层,点击其中的89C51,然后再点击“确定”按钮,回到主界面,此时,在工程窗口的文件页中,出现了“Target1”,前面有“+”号,点击“+”号展开,可以看到下一层的“Source Group1”,这时的工程还是一个空的工程,里面什么文件也没有,需要手动把刚才编写好的源程序加入,点击“Source Group1”使其反白显示,然后,点击鼠标右键,出现一个下拉菜单,如图3所示。选中其中的“Add file to Group”Source Group1”,出现一个对话框,要求寻找源文件,注意,该对话框下面的“文件类型”默认为C source file(*.c),也就是以C为扩展名的文件,而
32、我们的文件是以asm为扩展名的,所以在列表框中找不到exam1.asm,要将文件类型改掉,点击对话框中“文件类型”后的下拉列表,找到并选中“Asm Source File(*.a51,*.asm),这样,在列表框中就可以找到exam1.asm文件了。双击exam1.asm文件,将文件加入项目,注意,在文件加入项目后,该对话框并不消失,等待继续加入其它文件,但初学时常会误认为操作没有成功而再次双击同一文件,这时会出现如图4所示的对话框,提示你所选文件已在列表中,此时应点击“确定”,返回前一对话框,然后点击“Close”即可返回主界面,返回后,点击“Source Group 1”前的加号,会发现e
33、xam1.asm文件已在其中。双击文件名,即打开该源程序。图2.3加入文件2.1.2 工程的详细设置图2.4重复加入文件的错误工程建立好以后,还要对工程进行进一步的设置,以满足要求。首先点击左边Project窗口的Target 1,然后使用菜单“Project-Option for targettarget1”即出现对工程设置的对话框,这个对话框可谓非常复杂,共有8个页面,要全部搞清可不容易,好在绝大部份设置项取默认值就行了。图2.5对目标进行设置设置对话框中的Target页面,如图5所示,Xtal后面的数值是晶振频率值,默认值是所选目标CPU的最高可用频率值,对于我们所选的AT89C51而言
34、是24M,该数值与最终产生的目标代码无关,仅用于软件模拟调试时显示程序执行时间。正确设置该数值可使显示时间与实际所用时间一致,一般将其设置成与你的硬件所用晶振频率相同,如果没必要了解程序执行的时间,也可以不设,这里设置为12。Memory Model用于设置RAM使用情况,有三个选择项,Small是所有变量都在单片机的内部RAM中;Compact是可以使用一页外部扩展RAM,而Larget则是可以使用全部外部的扩展RAM。Code Model用于设置ROM空间的使用,同样也有三个选择项,即Small模式,只用低于2K的程序空间;Compact模式,单个函数的代码量不能超过2K,整个程序可以使用
35、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的地址范围,这些选择项必须根据所用硬件来决定,由于该例是单片应用,未进行任何扩
36、展,所以均不重新选择,按默认值设置。设置对话框中的OutPut页面,如图6所示,这里面也有多个选择项,其中Creat Hex file用于生成可执行代码文件(可以用编程器写入单片机芯片的HEX格式文件,文件的扩展名为.HEX),默认情况下该项未被选中,如果要写片做硬件实验,就必须选中该项,这一点是初学者易疏忽的,在此特别提醒注意。选中Debug information将会产生调试信息,这些信息用于调试,如果需要对程序进行调试,应当选中该项。Browse information是产生浏览信息,该信息可以用菜单view-Browse来查看,这里取默认值。按钮Select Folder for ob
37、jects”是用来选择最终的目标文件所在的文件夹,默认是与工程文件在同一个文件夹中。Name of Executable用于指定最终生成的目标文件的名字,默认与工程的名字相同,这两项一般不需要更改。工程设置对话框中的其它各页面与C51编译选项、A51的汇编选项、BL51连接器的连接选项等用法有关,这里均取默认值,不作任何修改。以下仅对一些有关页面中常用的选项作一个简单介绍。图2.6对输出进行控制Listing标签页用于调整生成的列表文件选项。在汇编或编译完成后将产生(*.lst)的列表文件,在连接完成后也将产生(*.m51)的列表文件,该页用于对列表文件的内容和形式进行细致的调节,其中比较常用
38、的选项是“C Compile Listing”下的“Assamble Code”项,选中该项可以在列表文件中生成C语言源程序所对应的汇编代码。图2.7代码生成控制C51标签页用于对Keil的C51编译器的编译过程进行控制,其中比较常用的是“Code Optimization”组,如图7所示,该组中Level是优化等级,C51在对源程序进行编译时,可以对代码多至9级优化,默认使用第8级,一般不必修改,如果在编译中出现一些问题,可以降低优化级别试一试。Emphasis是选择编译优先方式,第一项是代码量优化(最终生成的代码量小);第二项是速度优先(最终生成的代码速度快);第三项是缺省。默认的是速度优
39、先,可根据需要更改。设置完成后按确认返回主界面,工程文件建立、设置完毕。三、编译、连接图2.8有关编译、连接、项目设置的工具条在设置好工程后,即可进行编译、连接。选择菜单Project-Build target,对当前工程进行连接,如果当前文件已修改,软件会先对该文件进行编译,然后再连接以产生目标代码;如果选择Rebuild All target files将会对当前工程中的所有文件重新进行编译然后再连接,确保最终生产的目标代码是最新的,而Translate.项则仅对该文件进行编译,不进行连接。以上操作也可以通过工具栏按钮直接进行。图8是有关编译、设置的工具栏按钮,从左到右分别是:编译、编译连
40、接、全部重建、停止编译和对工程进行设置。编译过程中的信息将出现在输出窗口中的Build页中,如果源程序中有语法错误,会有错误报告出现,双击该行,可以定位到出错的位置,对源程序反复修改之后,最终会得到如图9所示的结果,提示获得了名为exam1.hex的文件,该文件即可被编程器读入并写到芯片中,同时还产生了一些其它相关的文件,可被用于Keil的仿真与调试,这时可以进入下一步调试的工作。图2.9正确编译、连接之后的结果2.1.4 Keil的调试命令、在线汇编与断点设置一、常用调试命令在对工程成功地进行汇编、连接以后,按Ctrl+F5或者使用菜单Debug-Start/Stop Debug Sessi
41、on即可进入调试状态,Keil内建了一个仿真CPU用来模拟执行程序,该仿真CPU功能强大,可以在没有硬件和仿真机的情况下进行程序的调试,下面将要学的就是该模拟调试功能。不过在学习之前必须明确,模拟毕竟只是模拟,与真实的硬件执行程序肯定还是有区别的,其中最明显的就是时序,软件模拟是不可能和真实的硬件具有相同的时序的,具体的表现就是程序执行的速度和各人使用的计算机有关,计算机性能越好,运行速度越快。进入调试状态后,界面与编缉状态相比有明显的变化,Debug菜单项中原来不能用的命令现在已可以使用了,工具栏会多出一个用于运行和调试的工具条,如图1所示,Debug菜单上的大部份命令可以在此找到对应的快捷
42、按钮,从左到右依次是复位、运行、暂停、单步、过程单步、执行完当前子程序、运行到当前行、下一状态、打开跟踪、观察跟踪、反汇编窗口、观察窗口、代码作用范围分析、1串行窗口、内存窗口、性能分析、工具按钮等命令。图2.10调试工具条程序调试,必须明确两个重要的概念,即单步执行与全速运行。全速执行是指一行程序执行完以后紧接着执行下一行程序,中间不停止,这样程序执行的速度很快,并可以看到该段程序执行的总体效果,即最终结果正确还是错误,但如果程序有错,则难以确认错误出现在哪些程序行。单步执行是每次执行一行程序,执行完该行程序以后即停止,等待命令执行下一行程序,此时可以观察该行程序执行完以后得到的结果,是否与
43、我们写该行程序所想要得到的结果相同,借此可以找到程序中问题所在。程序调试中,这两种运行方式都要用到。使用菜单STEP或相应的命令按钮或使用快捷键F11可以单步执行程序,使用菜单STEP OVER或功能键F10可以以过程单步形式执行命令,所谓过程单步,是指将汇编语言中的子程序或高级语言中的函数作为一个语句来全速执行。图2.11调试窗口按下F11键,可以看到源程序窗口的左边出现了一个黄色调试箭头,指向源程序的第一行,如图2所示。每按一次F11,即执行该箭头所指程序行,然后箭头指向下一行,当箭头指向LCALL DELAY行时,再次按下F11,会发现,箭头指向了延时子程序DELAY的第一行。不断按F1
44、1键,即可逐步执行延时子程序。通过单步执行程序,可以找出一些问题的所在,但是仅依靠单步执行来查错有时是困难的,或虽能查出错误但效率很低,为此必须辅之以其它的方法,如本例中的延时程序是通过将D2:DJNZ R6,D2这一行程序执行六万多次来达到延时的目的,如果用按F11六万多次的方法来执行完该程序行,显然不合适,为此,可以采取以下一些方法,第一,用鼠标在子程序的最后一行(ret)点一下,把光标定位于该行,然后用菜单Debug-Run to Cursor line(执行到光标所在行),即可全速执行完黄色箭头与光标之间的程序行。第二,在进入该子程序后,使用菜单Debug-Step Out of Cu
45、rrent Function(单步执行到该函数外),使用该命令后,即全速执行完调试光标所在的子程序或子函数并指向主程序中的下一行程序(这里是JMP LOOP行)。第三种方法,在开始调试的,按F10而非F11,程序也将单步执行,不同的是,执行到lcall delay行时,按下F10键,调试光标不进入子程序的内部,而是全速执行完该子程序,然后直接指向下一行“JMP LOOP”。灵活应用这几种方法,可以大大提高查错的效率。二、在线汇编图2.12在线汇编窗口在进入Keil的调试环境以后,如果发现程序有错,可以直接对源程序进行修改,但是要使修改后的代码起作用,必须先退出调试环境,重新进行编译、连接后再次
46、进入调试,如果只是需要对某些程序行进行测试,或仅需对源程序进行临时的修改,这样的过程未免有些麻烦,为此Keil软件提供了在线汇编的能力,将光标定位于需要修改的程序行上,用菜单Debug-Inline Assambly即可出现如图3的对话框,在Enter New后面的编缉框内直接输入需更改的程序语句,输入完后键入回车将自动指向下一条语句,可以继续修改,如果不再需要修改,可以点击右上角的关闭按钮关闭窗口。三、断点设置程序调试时,一些程序行必须满足一定的条件才能被执行到(如程序中某变量达到一定的值、按键被按下、串口接收到数据、有中断产生等),这些条件往往是异步发生或难以预先设定的,这类问题使用单步执行的方法是很难调试的,这时就要使用到程序调试中的另一种非常重要的方法断点设置。断点设置的方法有多种,常用的是在某一程序行设置断点,设置好断点后可以全速运行程序,一旦执行到该程序行即停止,可在此观察有关变量值,以确定问题所在。在程序行设置/移除断点的方法是将光标定位于需要设置断点的程序行,使用菜单Debug-Insert/Remove BreakPoint设置或移除断点(也可以用鼠标在该行双击实现同样的功能);Debug-Enable/D isable Breakpoint是开启或暂
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100