下载
加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 智能化汽车照明系统设计__毕业设计

智能化汽车照明系统设计__毕业设计.doc

智能化汽车照明系统设计__毕业设计

杀来杀去就有了三国杀933
2017-09-18 0人阅读 举报 0 0 暂无简介

简介:本文档为《智能化汽车照明系统设计__毕业设计doc》,可适用于综合领域

智能化汽车照明系统设计毕业设计分类号密级公开注UDC毕业设计论文智能化汽车照明系统设计***指导教师姓名*********申请学位级别专业名称论文提交日期论文答辩日期学位授予单位和日期答辩委员会主席评阅人年月日注:注明《国际十进分类法UDC》的类号。毕业设计论文智能化汽车照明系统摘要传统的汽车照明系统主要由前照灯系统信号照明系统车内照明系统三大部分组成。随着科技的进步传统照明系统也经历了长足的发展但是实际的使用中传统的前照灯系统依然存在着诸多问题在面对复杂的道路条件和行车状况时交通安全仍然存在巨大的隐患。因此如何使传统汽车照明智能化驾车更安全更舒适就成为一个十分紧迫而又有重大现实意义的课题。本文通过对现有汽车智能照明方案的分析提出了一种能够实现照明和弯道随动转向主要功能的汽车自适应照明方案。与各大汽车厂商的方案相比本系统集成了更多的智能照明设计功能更为全面。而且本方案是基于ATS单片机开发的低成本、低功耗系统性价比更为出色。首先介绍了汽车自适应照明系统ALS(AdaptiveLightingSystem)的产生、发展和应用状况分析了ALS的组成、功能和工作原理在详细分析了系统功能需求的基础上设计了基于ATS单片机的汽车自适应照明系统。在文章的硬件部分详细设计了主控制器及外围电路、电源模块、执行器模块电路。在软件部分设计了系统软件的整体流程算法程序等软件模块实现了一个完整的整车照明系统。通过最后的系统调试保证了车辆在各种状态下总能为驾驶员提供最佳照明并能够及时发现整车车灯的各种故障表明了本设计方案的可行性和正确性。关键词:汽车照明单片机中断控制I毕业设计论文智能化汽车照明系统AbstractTraditionalautomotivelighringsystemismainlycomposedofthreeparts:FrontlightingSystemsignallightingIncarlighting(WiththedevelopmentofscienceandtechnologyTraditionalamomotivelightingsystemhasdevelopedalot(Howevertherearestillmanyproblemsintraditionalautomotivelightingsysteminactualuse(Trafficsaf字节方式显示。第三部份的ModifyMemoryatX:xx用于更改鼠标处的内存单元值选中该毕业设计论文智能化汽车照明系统项即出现如图所示的对话框可以在对话框内输入要修改的内容。图存储器的值的修改、工程窗口寄存器页图是工程窗口寄存器页的内容寄存器页包括了当前的工作寄存器组和系统寄存器系统寄存器组有一些是实际存在的寄存器如A、B、DPTR、SP、PSW等有一些是实际中并不存在或虽然存在却不能对其操作的如PC、Status等。每当程序中执行到对某寄存器的操作时该寄存器会以反色(蓝底白字)显示用鼠标单击然后按下F键即可修改该值。、观察窗口图工程窗口寄存器页观察窗口是很重要的一个窗口工程窗口中仅可以观察到工作寄存器和有限的寄存器如A、B、DPTR等如果需要观察其它的寄存器的值或者在高级语言编程时需要直接观察变量就要借助于观察窗口了。其它窗口将在以下的实例中介绍。一般情况下我们仅在单步执行时才对变量的值的变化感兴趣全速运行时变量的值是不变的只有在程序停下来之后才会将这些值最新的变化反映出来但是在一些特殊场合下我们也可能需要在全速运行时观察变量的变化此时可以点击View>PeriodicWindowUpdata(周期更新窗口)确认该项处于被选中状态即可在全速运行时动态地观察有关值的变化。但是选中该项将会使程序模拟执行的速度变慢。二、各种窗口在程序调试中的用途以下通过一个高级语言程序来说明这些窗口的使用。例:#include"regh"sbitP=P^定义P毕业设计论文智能化汽车照明系统voidmDelay(unsignedcharDelayTime){unsignedintj=for(DelayTime>DelayTime){for(j=j<j){}}}voidmain(){unsignedintifor(){mDelay()延时毫秒iif(i==){P=!Pi=}}}这个程序的工作过程是:不断调用延时程序每次延时毫秒然后将变量I加随后对变量I进行判断如果I的值等于那么将P取反并将I清最终的执行效果是P每S取反一次。输入源程序并以examc为文件名存盘建立名为exam的项目将examc加入项目编译、连接后按CtrlF进入调试按F单步执行。注意观察窗口其中有一个标签页为Locals这一页会自动显示当前模块中的变量名及变量值。可以看到窗口中有名为I的变量其值随着执行的次数而逐渐加大如果在执行到mDelay()行时按F跟踪到mDelay函数内部该窗口的变量自动变为DelayTime和j。另外两个标签页Watch#和Watch#可以加入自定义的观察变量点击“typeFtoedit”然后再按F即可输入变量试着在Watch#中输入I观察它的变化。在程序较复杂变量很多的场合这两个自定义观察窗口可以筛选出我们自己感兴趣的变量加以观察。观察窗口中变量的值不仅可以观察还可以修改以该程序为例I须加次才能到为快速验证是否可以正确执行到P=!P行点击I后面的值再按F该值即可修改将I的值改到再次按F单步执行即可以很快执行到P=!P程序行。该窗口显示的变量值可以以十进制或十六进制形式显示方法是在显示窗口点右键在快捷菜单中选择如图所示。图设定观察窗的显示方式点击View>DissamblyWindow可以打开反汇编窗口该窗口可以显示反汇编后的代码、源程序和相应反汇编代码的混合代码可以在该窗口进行在线汇编、利用该毕业设计论文智能化汽车照明系统窗口跟踪已找行的代码、在该窗口按汇编代码的方式单步执行这也是一个重要的窗口。打开反汇编窗口点击鼠标右键出现快捷菜单如图所示其中MixedMode是以混合方式显示AssemblyMode是以反汇编码方式显示。程序调试中常使用设置断点然后全速运行的方式在断点处可以获得各变量值但却无法知道程序到达断点以前究竟执行了哪些代码而这往往是需要了解的为此Keil提供了跟踪功能在运行程序之前打开调试工具条上的允许跟踪代码开关然后全速运行程序当程序停止运行后点击查看跟踪代码按钮自动切换到反汇编窗口如图所示其中前面标有“”号的行就是中断以前执行的代码可以按窗口边的上卷按钮向上翻查看代码执行记录。图反汇编窗口利用工程窗口可以观察程序执行的时间下面我们观察一下该例中延时程序的延时时间是否满足我们的要求即是否确实延时毫秒展开工程窗口Regs页中的Sys目录树其中的Sec项记录了从程序开始执行到当前程序流逝的秒数。点击RST按钮以复位程序Sec的值回零按下F键程序窗口中的黄色箭头指向mDelay()行此时记录下Sec值为然后再按F执行完该段程序再次查看Sec的值为两者相减大约是秒所以延时时间大致是正确的。读者可以试着将延时程序中的unsignedint改为unsignedchar试试看时间是否仍正确。注意使用这一功能的前提是在项目设置中正确设置晶振的数值。Keil提供了串行窗口我们可以直接在串行窗口中键入字符该字符虽不会被显示出来但却能传递到仿真CPU中如果仿真CPU通过串行口发送字符那么这些字符会在串行窗口显示出来用该窗口可以在没有硬件的情况下用键盘模拟串口通讯。下面通过一个例子说明Keil串行窗口的应用。该程序实现一个行编缉功能每键入一个字母会立即回显到窗口中。编程的方法是通过检测RI是否等于来判断毕业设计论文智能化汽车照明系统串行口是否有字符输入如果有字符输入则将其送到SBUF这个字符就会在串行窗口中显示出来。其中serinit是串行口初始化程序要使用串行口必须首先对串行口进行初始化。例:MOVSP,#FH堆栈初始化CALLSERINIT串行口初始化LOOP:JBCRI,NEXT如果串口接收到字符转JMPLOOP否则等待接收字符NEXT:MOVA,SBUF从SBUF中取字符MOVSBUF,A回送到发送SBUF中SEND:JBCTI,LOOP发送完成转LOOPJMPSEND否则等待发送完SERINIT:中断初始化MOVSCON,#HORLTMOD,#HORLPCON,#HMOVTH,#FDH设定波特率SETBTR定时器开始运行SETBREN允许接收SETBSMRETEND输入源程序并建立项目正确编译、连接进入调试后全速运行点击串行窗口按钮即在原源程序窗口位置出现一个空白窗口击键相应的字母就会出现在该窗口中。在窗口中击鼠标右键出现一个弹出式菜单选择“AsciiMode”即以Ascii码的方式显示接收到的数据选择“HexMode”以十六进制码方式显示接收到的数据选择“ClearWindow”可以清除窗口中显示的内容。由于部份CPU具有双串口故Keil提供了两个串行窗口我们选用的C芯片只有一个串行口所以Serial串行窗口不起作用。毕业设计论文智能化汽车照明系统Keil的辅助工具和部份高级技巧在前面的几讲中我们介绍了工程的建立方法常用的调试方法除此之外Keil还提供了一些辅助工具如外围接口、性能分析、变量来源分析、代码作用分析等帮助我们了解程的性能、查找程序中的隐藏错误快速查看程序变量名信息等这一讲中将对这些功工具作一介绍另外还将介绍Keil的部份高级调试技巧。一、辅助工具这部份功能并不是直接用来进行程序调试的但可以帮助我们进行程序的调试、程序性能的分析同样是一些很有用的工具。、外围接口为了能够比较直观地了解单片机中定时器、中断、并行端口、串行端口等常用外设的使用情况Keil提供了一些外围接口对话框通过Peripherals菜单选择该菜单的下拉菜单内容与你建立项目时所选的CPU有关如果是选择的C这一类“标准”的机那么将会有Interrupt(中断)、IOPorts(并行IO口)、Serial(串行口)、Timer(定时计数器)这四个外围设备菜单。打开这些对话框列出了外围设备的当前使用情况各标志位的情况等可以在这些对话框中直观地观察和更改各外围设备的运行情况。图外围设备之并行端口下面我们通过一个简单例子看一看并行端口的外围设备对话框的使用。编译、连接进入调试后点击Peripherals>IOPorts>Port打开如图所示全速运行可以看到代表各位的勾在不断变化(如果看不到变化请点击View>PeriodicWindowUpdata)这样可以形象地看出程序执行的结果。注:如果你看到的变化极快甚至看不太清楚那么说明你的计算机性能好模拟执行的速度快你可以试着将加长延时程序的时间以放慢速度。模拟运行速度与实际运行的速度无法相同是软件模拟的一个固有弱点。点击Peripherals>IOPorts>Timer即出现图所示定时计数器的外围接口界面可以直接选择Mode组中的下拉列表以确定定时计数工作方式四种毕业设计论文智能化汽车照明系统工作方式设定定时初值等点击选中TRstatus后的stop就变成了run如果全速运行程序此时th,tl后的值也快速地开始变化(同样要求PeriodicWindowUpdata处于选中状态)直观地演示了定时计数器的工作情况(当然由于你的程序未对此写任何代码所以程序不会对此定时计数器的工作进行处理)。图外围设备之定时器、性能分析Keil提供了一个性能分析工具利用该工具我们可以了解程序中哪些部份的执行时间最长调用次数最多从而了解影响整个程序中执行速度的瓶颈。下面通过一个实例来看一看这个工具如何使用例:#include"regh"sbitP=P^定义PvoidmDelay(unsignedcharDelayTime){unsignedintj=for(DelayTime>DelayTime){for(j=j<j){}}}voidmDelay(unsignedcharDelayTime){unsignedintj=for(DelayTime>DelayTime){for(j=j<j){}}}voidmain()毕业设计论文智能化汽车照明系统{unsignedintifor(){mDelay()延时毫秒iif(i==){P=!Pi=mDelay()}}}编译连接。进入调试状态后使用菜单View>PerformanceAnalyzerWindow打开性能分析对话框进入该对话框后只有一项unspecified点鼠标右键在快捷菜单中选择SetupPA即打开性能分析设置对话框对于C语言程序该对话框右侧的“FunctionSymbol”下的列表框给出函数符号双击某一符号该符号即出现在DefinePerformanceAnalyzer下的编缉框中每输入一个符号名字点击Define按钮即将该函数加入其上的分析列表框。对于汇编语言源程序FunctionSymbol下的列表框中不会出现子程序名可以直接在编缉框中输入子程序名点击Close关闭窗口回到性能分析窗口此时窗口共有个选项。全速执行程序可以看到mDelay和mDelay后出现一个蓝色指示条配合上面的标尺可以直观地看出每个函数占整个执行时间的比例点击相应的函数名可以在该窗口的状态栏看到更详细的数据其中各项的含义如下:Min:该段程序执行所需的最短时间Max:该段程序执行所需的最长时间Avg:该段程序执行所花平均时间Total:该段程序到目前为目总共执行的时间:占整个执行时间的百分比count:被调用的次数。本程序中函数mDelay和mDelay每次被调用都花费同样的时间看不出Min、Max、和Avg的意义实际上由于条件的变化某些函数执行的时间不一定是一个固定的值借助于这些信息可以对程序有更详细的了解。下面将mDelay函数略作修改作一演示。voidmDelay(unsignedcharDelayTime){staticunsignedcharkunsignedintj=for(DelayTime>DelayTime)毕业设计论文智能化汽车照明系统{for(j<p>{}}k}程序中定义了一个静态变量K每次调用该变量加而j的循环条件与k的大小有关这使每次执行该程序所花的时间不一样。编译、执行该程序再次观察性能分析窗口可以看出Min、Max、Avg的意义。、变量来源浏览该窗口用于观察程序中变量名的有关信息如该变量名在那一个函数中被定义、在哪里被调用共出现多少次等。在SourceBrowse窗口中提供了完善的管理方法如过滤器可以分门别类地列出各种类别的变量名可以对这些变量按Class(组)、Type(类型)、Space(所在空间)、Use(调用次数)排序点击变量名可以在窗口的右侧看到该变量名的更详细的信息。、代码作用范围分析在你写的程序中有些代码可能永远不会被执行到(这是无效的代码)也有一些代码必须在满足一定条件后才能被执行到借助于代码范围分析工具可以快速地了解代码的执行情况。进入调试后全速运行然后按停止按钮停下来后可以看到在源程序的左列有三种颜色灰、淡灰和绿其中淡灰所指的行并不是可执行代码如变量或函数定义、注释行等等而灰色行是可执行但从未执行过的代码而绿色则是已执行过的程序行。使用调试工具条上的CodeCoverageWindow可打开代码作用范围分析的对话框里面有各个模块代码执行情况的更详细的分析。如果你发现全速运行后有一些未被执行到的代码那么就要仔细分析这些代码究竟是无效的代码还是因为条件没有满足而没有被执行到。二、部份高级调试技巧Keil内置了一套调试语言很多高级调试技巧与此有关但是全面学习这套语言并不现实这不是这么几期连载可以胜任的这里仅介绍部份较为实用的功能如要获得更详细的信息请参考Keil自带的帮助文件GSPDF。、串行窗口与实际硬件相连Keil的串行窗口除可以模拟串行口的输入和输出功能外还可以与PC机上实际毕业设计论文智能化汽车照明系统的串口相连接受串口输入的内容并将输出送到串口。这需要在Keil中进行设置。方法是首先在输出窗口的Command页用MODE命令设置串口的工作方式然后用ASSIGN命令将串行窗口与实际的串口相关联下面我们通过一个实例来说明如何操作。例:ORGHJMPSTARTORG*串行中断入口JMPSERINTSTART:MOVSP,#FH堆栈初始化CALLSERINIT串行口初始化ASETBEASETBESJMP$主程序到此结束SERINT:JBCRI,NEXT如果串口接收到字符转JMPSEND否则转发送处理NEXT:MOVA,SBUF从SBUF中取字符MOVSBUF,A回送到发送SBUF中JMPOVERSEND:clrtiOVER:retiSERINIT:中断初始化MOVSCON,#HORLTMOD,#HORLPCON,#HMOVTH,#FDH设定波特率SETBTR定时器开始运行SETBREN允许接收SETBSMRETEND这个程序使用了中断方式编写串行口输入输出程序它的功能是将接串行口收毕业设计论文智能化汽车照明系统到的字符回送即再通过串行口发送出去。正确输入源文件、建立工程、编译连接没有错后可进行调试使用Keil自带的串行窗口测试功能是否正确如果正确可以进行下一步的连机试验。为简单实用我们不借助于其它的硬件而是让PC机上的两个串口互换数据即COM发送COM接收而COM发送则由COM接收为此需要做一根连接线将这两个串口连起来做法很简单找两个可以插入PC机串口的DIN插座(母)然后用一根芯线将它们连起来连线的方法是:接好线把两个插头分别插入PC机上的串口与串口。找一个PC机上的串口终端调试软件如串口精灵之类运行该软件设置好串口参数其中串口选择串口参数设置为:n其含义是波特率为无奇偶校验位数据位停止位。在Keil调试窗口的command页中输入:>modecom,,,>assigncomsout注意两行最前面的“>”是提示符不要输入第二行中的“<”和“>”即“小于”和“大于”符号中间的是字母“s”和“input”的前两个字母最后是字母“s”和“output”的前三个字母。第一行命令定义串口的波特率为无奇偶校验位数据位停止位。第二行是将串口(com)分配给串行窗口。全速运行程序然后切换串口精灵开始发送会看到发送后的数据会立即回显到窗口中说明已接收到了发送过来的数据。切换到uVison查看串行窗口会看到这里的确接收到了串口精灵送来的内容。、从端口送入信号程序调试中如果需要有信号输入比如数据采集类程序需要从外界获得数据由于Keil的调试完全是一个软件调试工具没有硬件与之相连所以不可能直接获得数据为此必须采用一些替代的方法例如某电路用P口作为数据采集口那么可以使用的一种方法是利用外围接口打开PORT用鼠标在点击相应端口位毕业设计论文智能化汽车照明系统使其变为高电平或低电平就能输入数据。显然这种方法对于要输获得数据而不是数值以下是作位处理来说太麻烦了另一种方法是直接在command页输入port=一个小小的验证程序。例:LOOP:MOVA,PJZNEXTMOVR,#HJMPLOOPNEXT:MOVR,#AAHJMPLOOPEND该程序从P口获得数据如果P口的值是那么就让R的值为AAH否则然后让R的值为H。输入源程序并建立工程进入调试后在观察窗口加入R全速运行程序注意确保View>PeriodicWindowUpdata处于选中状态然后在Command后输入PORT=回车后可以发现观察窗口中的R的值变成了AAH然后再输入PORT=或其它非零值则R的值会变为H。同样的道理可以用p、p、p分别向端口、、输入信号。、直接更改内存值在程序运行中另一种输入数据的方法是直接更改相应的内存单元的值例如某数据采集程序使用H和H作为存储单元采入的数据由这两个单元保存那么我们更改了H和H单元的值就相当于这个数据采集程序采集到了数据这可以在内存窗口中直接修改(参考上一讲)也可以通过命令进行修改命令的形式是:WBYTE(地址,数据)其中地址是指待写入内存单元的地址而数据则是待写入该地址的数据。毕业设计论文智能化汽车照明系统硬件系统设计ATC模块ATC简介在车载电子系统的设计中微控制器是整个系统的核心部件其性能的好坏直接决定整个系统的运行效果。一般来说选用车载电子系统微控制器时应考虑微控制器应用的类型、I,O接口、主频、功耗、所支持的存储器类型、总线、价格、封装、产品的生命力和厂家的实力、技术支持以及第三方软件的支持等因素但最重要的是微控制器的稳定性安全问题应该永远是车载系统首要考虑的因素。由于高度的通用性和出色的稳定性本系统选用美国ATMEL公司生产的低功耗高性能CMOS位单片机ATS作为微控制器。片内含kbytes的可系统编程的Flash只读程序存储器器件采用ATMEL公司的高密度、非易失性存储技术生产兼容标准指令系统及引脚。它集Flash程序存储器既可在线编程(ISP)也可用传统方法进行编程及通用位微处理器于单片芯片中可提供许多高性价比的应用场合可灵活应用于各种控制领域。ATC是一种带K字节闪烁可编程可擦除只读存储器(FPEROMFalshProgrammableandErasableReadOnlyMemory)的低电压高性能CMOS位微处理器俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造与工业标准的MCS指令集和输出管脚相兼容。由于将多功能位CPU和闪烁存储器组合在单个芯片中ATMEL的ATC是一种高效微控制器为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。主要特性:与MCS兼容K字节可编程闪烁存储器寿命:写擦循环数据保留时间:年毕业设计论文智能化汽车照明系统图芯片引脚图全静态工作:HzHz三级程序存储器锁定*位内部RAM可编程IO线两个位定时器计数器个中断源可编程串行通道低功耗的闲置和掉电模式片内振荡器和时钟电路(管脚说明:VCC:供电电压。GND:接地。P口:P口为一个位漏级开路双向IO口每脚可吸收TTL门电流。当P口的管脚第一次写时被定义为高阻输入。P能够用于外部程序数据存储器它毕业设计论文智能化汽车照明系统可以被定义为数据地址的第八位。在FIASH编程时P口作为原码输入口当FIASH进行校验时P输出原码此时P外部必须被拉高。P口:P口是一个内部提供上拉电阻的位双向IO口P口缓冲器能接收输出TTL门电流。P口管脚写入后被内部上拉为高可用作输入P口被外部下拉为低电平时将输出电流这是由于内部上拉的缘故。在FLASH编程和校验时P口作为第八位地址接收。P口:P口为一个内部上拉电阻的位双向IO口P口缓冲器可接收输出个TTL门电流当P口被写“”时其管脚被内部上拉电阻拉高且作为输入。并因此作为输入时P口的管脚被外部拉低将输出电流。这是由于内部上拉的缘故。P口当用于外部程序存储器或位地址外部数据存储器进行存取时P口输出地址的高八位。在给出地址“”时它利用内部上拉优势当对外部八位地址数据存储器进行读写时P口输出其特殊功能寄存器的内容。P口在FLASH编程和校验时接收高八位地址信号和控制信号。P口:P口管脚是个带内部上拉电阻的双向IO口可接收输出个TTL门电流。当P口写入“”后它们被内部上拉为高电平并用作输入。作为输入由于外部下拉为低电平P口将输出电流(ILL)这是由于上拉的缘故。P口也可作为ATC的一些特殊功能口如下表所示:P管脚备选功能PRXD(串行输入口)PTXD(串行输出口)PINT(外部中断)PINT(外部中断)PT(记时器外部输入)毕业设计论文智能化汽车照明系统PT(记时器外部输入)PWR(外部数据存储器写选通)PRD(外部数据存储器读选通)P口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时要保持RST脚两个机器周期的高电平时间。ALEPROG:当访问外部存储器时地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间此引脚用于输入编程脉冲。在平时ALE端以不变的频率周期输出正脉冲信号此频率为振荡器频率的。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时将跳过一个ALE脉冲。如想禁止ALE的输出可在SFREH地址上置。此时ALE只有在执行MOVXMOVC指令是ALE才起作用。另外该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止置位无效。PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间每个机器周期两次PSEN有效。但在访问外部数据存储器时这两次有效的PSEN信号将不出现。EAVPP:当EA保持低电平时则在此期间外部程序存储器(HFFFFH)不管是否有内部程序存储器。注意加密方式时EA将内部锁定为RESET当EA端保持高电平时此间内部程序存储器。在FLASH编程期间此引脚也用于施加V编程电源(VPP)。XTAL:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL:来自反向振荡器的输出。振荡器特性:毕业设计论文智能化汽车照明系统XTAL和XTAL分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件XTAL应不接。有余输入至内部时钟信号要通过一个二分频触发器因此对外部时钟信号的脉宽无任何要求但必须保证脉冲的高低电平要求的宽度。芯片擦除:整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合并保持ALE管脚处于低电平ms来完成。在芯片擦操作中代码阵列全被写“”且在任何非空存储字节被重复编程以前该操作必须被执行。此外ATC设有稳态逻辑可以在低到零频率的条件下静态逻辑支持两种软件可选的掉电模式。在闲置模式下CPU停止工作。但RAM定时器计数器串口和中断系统仍在工作。在掉电模式下保存RAM的内容并且冻结振荡器禁止所用其他芯片功能直到下一个硬件复位为止。其内部结构如图所示:图ATS内部结构单片机电路设计电源电路主电源引脚:引脚VCC:接V电源正端。引脚VSS:接V电源地端。控制电路开关引脚P口:低电平电平有效。如图毕业设计论文智能化汽车照明系统图开关按键连接图中断接P口如图:图中断连接图晶振电路ATC单片机片内含有一个高增益的反相放大器通过X,X外接作为反馈元件的晶体后便成为自激振荡器如图所示:X:振荡器反向放大器的及内部时钟发生器的输入端。X:振荡器方向放大器的输出端。图晶振电路EA引脚电路EA引脚功能为内外程序存储器选择其引脚连接如图所示:图EA引脚图EA为高电平时单片机访问内部程序存储器但在PC值超过FFFH时将自动向执行外部程序存储器内的程序。EA为低电平时单片机则只访问外部程序存储器毕业设计论文智能化汽车照明系统而不管它是否有内部程序存储器。所以在我们这个系统中EA接V高电平。P端口电路P口为为、可位寻址的输入输出端口,为为的漏极开路输出如图图P端口内部电路由于内部无上拉电阻执行输出功能时外部必须接上拉。电阻一般为K如图:图P脚外接上拉电阻电路电源模块部分设计目前轿车使用蓄电池一般都是V在车辆使用过程中发电机电压可以达到V左右考虑到车载电源的电压波动实际ECU的供电电压范围在一V。而微控制器及控制芯片供电电压都是V因此为了保证系统的工作需要电源芯片进行电压转换。系统选用三端稳压器MCACT作为电压转换芯片它能提供固定的输出电压内含过流、过热和过载保护电路。带散热片时输出电流可达A。其主要特点有:>输出电流可达A>输出电压:V>过热保护>短路保护>输出晶体管SOA保护其内部功能框图如下图所示:毕业设计论文智能化汽车照明系统图MCACT内部框图使用一片MCACT即可将车载V电源转换为V为系统提供稳压电源如图(所示:图V稳压电路原理图V稳压电路仿真如图下:图V稳压电路仿真原理图亮灯控制模块LED直接点亮一般由于LED的承受电流为mA若去电流为Ma,则VmA=欧仿真中取标值为欧姆。实际电路应取欧姆。如图毕业设计论文智能化汽车照明系统图LED电路原理图由于实际电路电压电流比较高若要使用c控制不同电压或电路的负载则需要通过继电器来转达控制的意思。如图:图继电器如图高电平动作的继电器驱动电路当C输出高电平时从VCC经由K的上拉电阻及K的限流电阻提供的积极电路约为()=mA一般NPN晶体管的放大倍数为以上所以集电极电路约为mA晶体管应可工作于饱和状态若输出为低电平输出端FET导通输出接近于V所以晶体管工作于截至状态。图继电器驱动电路仿真图为:图继电器仿真电路原理图毕业设计论文智能化汽车照明系统按键模块设计本设计中的键盘模块实际是按钮开关占用了位的输入输出端口。若以相同的方式连接个按钮则要占用位的输入输出端口当然不是好的方法对于电路设计而言若需多个按钮通常会将这些按钮组成陈列称为键盘如图:图*键盘的内部原理图考虑到实际使用中汽车照明按键不是集中使用因此仍然采用基本的按钮开关接法。如图所示:图按键原理图电压比较器电压比较器的基本功能是能对两个输入电压的大小进行比较判断出其中那一个比较大。比较的结果用输出电压的高和低来表示。电压比较器可以采用专用的集成比较器也可以采用运算放大器组成。由集成运算放大器组成的比较器其输出电平在最大输出电压的正极限值和负极限值之间摆动当要和数字电路相连接时必须增添附加电路对它的输出电压采取箝位措施使它的高低输出电平满足数字电路逻辑电平的要求。基本过零比较器过零比较器主要用来将输入信号与零电位进行比较以决定输出电压的极性。电路如图所示:毕业设计论文智能化汽车照明系统图反向输入过零比较器放大器接成开环形式信号u从反向端输入同相端接地。当输入信号u<时输出电压iiu为正极限值由于理想运放的电压增益A故当输入信号由小到大达到u=时即ouiu=u的时刻输出电压u由正极限值U翻转到负极限值,U。当ui>时输出uo为,oOMOM负极限值,UOM。因此输出翻转的临界条件是u=u,=。即:其传输特性如图(a)所示。所以通过该电路输出的电压值就可以鉴别输入信号电压ui是大于零还是小于零即可用做信号电压过零的检测器。(a)理想运放(增益A)(b)实际运放(增益A)图基本过零比较器的传输特性对于实际运算放大器由于其增益不是无限大输入失调电压U不等于零因此输出OS状态的转换不是突然的其传输特性如图(b)所示存在线性区。由以上工作原理可知比较器中运放的反向输入端和同相输入端的电压不一定相等。假设输入信号u为正弦波在u过零时ii比较器的输出就跳变一次因此u为正、负相间的方波电压如图所示。o图比较器的输入与输出波形为了使输出电压有确定的数值并改善大信号时的传输特性经常在比较器的输出端接上限幅器。如图(a)所示。图中:R=k,D、D采用U=U=V。ZZZZ毕业设计论文智能化汽车照明系统(a)接上限幅器的比较器,b,电压传输特性图在图(b)中:U=UU,U=UU。ZZDZZD此时:任意电平比较器电路如图所示输入信号u加到反向输入端在同相输入端加一个参考电压U当输入电iREF压u小于参考电压U时输出为U当输入电压u大于参考电压U时输出为,U。iREFOMiREFOM该电路的传输特性如图(b)所示。(a)电路(b)电压传输特性图即:与零电平比较器一样可以根据比较器输出电压的极性来判断输入信号是大于UREF还是小于UREF。对于差动型任意电平比较器来说其比较电平UC就等于基准电压UREF。感光模拟电路在汽车感光元器件中一般采用光敏电阻这样当外界光照强度增加电阻值变小则两端电压变小则不需要开近光灯当外界光照前股东强度减小电阻值变大则两端电压比昂达则需要开近光灯因此在此设计反相比较器产生、数字信号控制近光灯开关。电路如图所示:毕业设计论文智能化汽车照明系统图仿真如图所示:图有仿真时序图可知通过运放可以达到所需要的数字信号电平。毕业设计论文智能化汽车照明系统系统软件设计系统软件流程设计本设计的程序的子函数主要包含延时、中断、端口扫描等。流程如图所示:图流程图延时子程序延时子函数的主要是为了延长时间需要或者是为了使单片机的某个动作保持一段时间。程序如下*延迟函数开始,延迟xms*voiddelay(intx)延迟函数开始{inti,j声明整数变量i,jfor(i=i<xi)计数x次,延迟约xmsfor(j=j<j)计数次延迟约ms}延迟函数结束消抖子程序不管是按钮开关还是闸刀开关在操作时并不是想想中的那么理想。实际上操作开关时会有不确定状态也就是噪声。即存在抖动或者弹跳现象。如图毕业设计论文智能化汽车照明系统图如何避免抖动想想可使用一个切换开关及互锁电路组成一个去抖动电路如图所示。图虽然这个电路可降低抖动所产生的噪声但所需的元件较多所占的电路面积较大增加了成本与电路的复杂度已很少使用了其实也可利用一个简单的RC电路来抑制抖动电压如图图我们通过按键抖动的波形可以分析出可以通过产生MS的延迟即可消去抖动。检测到第一个高电平按下按钮响应按下按钮的动作响应放开按钮的动作ms(不动作)ms(不动作)检测到第一个低电平放开按钮图即为:*防弹跳函数函数,延迟约ms*voiddebouncer(void)防弹跳函数开始{inti声明整数变数ifor(i=i<i)计数次,延迟约ms}防弹跳函数结束毕业设计论文智能化汽车照明系统中断子程序当CPU正在执行程序时,外部发生了某一随机事件请求CPU迅速处理。CPU暂时中止执行的程序,转去处理所发生的事件中断处理完毕,再回到原来被中止的断点继续执行原程序这个过程叫中断。图设置中断提高CPU工作效率具有实时处理功能在实时控制中现场的各种参数、信息均随时间和现场而变化。这些外界变量可根据要求随时向CPU发出中断申请请求CPU及时处理中断请求。如中断条件满足CPU马上就会响应进行相应的处理从而实现实时处理。具有故障处理功能针对难以预料的情况或故障如掉电、存储出错、运算溢出等可通过中断系统由故障源向CPU发出中断请求再由CPU转到相应的故障处理程序进行处理。实现分时操作中断可以解决快速的CPU与慢速的外设之间的矛盾使CPU和外设同时工作。CPU在启动外设工作后继续执行主程序同时外设也在工作。每当外设做完一件事就发出中断申请请求CPU中断它正在执行的程序转去执行中断服务程序(一般情况是处理输入输出数据)中断处理完之后CPU恢复执行主程序外设也继续工作。这样CPU可启动多个外设同时工作大大地提高了CPU的效率。中断控制(两级管理))、中断屏蔽在中断源与CPU之间有一级控制类似开关其中第一级为一个总开关毕业设计论文智能化汽车照明系统第二级为五个分开关由IE控制。中断优先级:CPU同一时间只能响应一个中断请求。若同时来了两个或两个以上中断请求就必须有先有后。为此将个中断源分成高级、低级两个级别高级优先由IP控制。时为高级。初始化编程时由软件确以上各位与IE的低五位相对应为“”定。同一级中的个中断源的优先顺序是:)中断源和中断控制寄存器中断源中断源是指能发出中断请求引起中断的装置或事件。INT:外部中断中断请求信号由P输入。T:定时计数器溢出中断对外部脉冲计数由P输入。TF:定时器T溢出中断请求。T:定时计数器溢出中断对外部脉冲计数由P输入。TF:定时器溢出中断请求。当定时器产生溢出时定时器中断请求标志位(TCON)置位(由硬件自动执行)请求中断处理。串行中断:包括串行接收中断RI和串行发送中断TI。本设计中采用个外部中断源并定义如下:IE=x准许INT,INT中断IP=x设定INT具有最高优先权中断程序:*INT的中断子程序遥控关灯*voidmyint(void)interruptINT中断子程序开始{unsignedsaveLED=LED储存中断前LED状态毕业设计论文智能化汽车照明系统LED=xffDB=DB=DB=DB=LED=saveLED写回中断前ED状态}结束INT中断子程序*INT的中断子程序遥控开灯*voidmyint(void)interruptINT中断子程序开始{unsignedsaveLED=LED储存中断前LED状态LED=xceLED=saveLED写回中断前LED状态}结束INT中断子程序毕业设计论文智能化汽车照明系统系统联调PROTEUS与KEILC联调联调步骤如下:下载keilcv软件和proteusSP软件分别进行安装。安装完毕以后进行如下置:、系统安装上TCPIP协议、把proteus安装目录下VDMdll(C:ProgramFilesLabcenterElectronicsProteusProfessionalMODELS)文件复制到Keil安装目录的CBIN目录中。、编辑C里toolsini文件,加入:TDRV=BINVDMDLL("PROTEUSVSMMONITORDRIVER")、keil里设置:project>optionsforproject>debugtab、选中useproteusVSMmonitor(如果想用两台电脑仿真,双击setting,输入IP地址或者DNSname、载入proteus文件、proteus里DEBUG>useremotedebugmonitor进入KEIL的project菜单optionfortarget'工程名'。在DEBUG选项中右栏上部的下拉菜选中ProteusVSMMonitorDriver。在进入seting如果同一台机IP名为,如不是同一台机则填另一台的IP地址。端口号一定为注意:可以在一台机器上运行keil另一台中运行proteus进行远程仿真哦~。、打开KEIL,按F开始仿真联调把压缩文件中的VDMDLL解压到Keil目录下的cBIN修改Keil目录下的TOOLSini文件如图毕业设计论文智能化汽车照明系统如果Keil正在运行则需重新启动使用ISIS打开LabcenterElectronicsProteusProfessionalSAMPLESCCalculator原理图打开Keil选择LabcenterElectronicsProteusProfessionalSAMPLESCCalculator目录下的Keil工程毕业设计论文智能化汽车照明系统在Keil下重新编译一下并按调试按钮就可以调试了。系统硬件与软件联调打开原理图文件加载*HEX文件。调试如图:测试结果完成预订认为运行正常。符合设计要求毕业设计论文智能化汽车照明系统总结,本文总结基于单片机的智能化汽车照明的仿真设计经过实际应用与测试能够满足对数据的车灯的智能化控制等要求。功能更为全面。而且本方案是基于ATS单片机开发的低成本、低功耗系统性价比更为出色。在文章的硬件部分详细设计了主控制器及外围电路、电源模块、执行器模块电路。在软件部分设计了系统软件的整体流程算法程序等软件模块实现了一个完整的整车照明系统。通过最后的系统调试保证了车辆在各种状态下总能为驾驶员提供最佳照明并能够及时发现整车车灯的各种故障表明了本设计方案的可行性和正确性。,进一步研究的地方程序还需高效率运行优化应用程序在编写过程中应注意索引的使用规范避免频繁亮灯减少电源系统表资源的消耗同时根据实际使用需要可以进一步做到人性化的GUI界面控制。望,展近年来随着国内汽车行业的迅猛发展智能照明系统的应用得到越来越多的重视。同时,功能也越来越强大更加人性化的、智能化的系统将会得到广泛的发展应用。不仅可以保证准确性而且方便可以有效电源的使用效率。参考文献工程硕士学位论文参考文献阮德生自动测试技术与计算机仪器系统设计M第版西安:西安电子科技大学出版社AHTaner,NMWhiteVirtualInstrumentation:asolutiontotheproblemofdesigncomplexityininteHigentinstrumentsJ,MeasurementControl,,():(范立南电子测量技术的新发展虚拟仪器J仪器仪表用户():余成波传感器与检测技术M第版北京:高等教育出版社,任献彬ATE系统信号转接通道的自动管理技术J测控技术,():NationalInstrumentsLabVIEWHelpCPOL张毅等自动检测技术及仪表控制系统M第版北京:化学工业出版社,张毅刚MCS单片机应用设计M哈尔滨:哈尔滨工业大学出版社徐玲利用高精度AD实现的数据采集系统J自动化技术与应用,():毕业设计论文智能化汽车照明系统致谢对于本论文的各项工作我的导师教授给予了热情的关怀和悉心的指导从论文的选题到论文的审阅均浸透着他辛劳的汗水。在我两年多的研究生生活期间皮老师在各方面给我以关怀和照顾以他严谨的治学态度、一丝不苟的工作作风、丰富的实践经验使我收益匪浅使我在研究生阶段各方面的能力都有了很大的提高。在完成论文的过程中得到教授大力帮助和支持在此表示诚挚的感谢。在**期间还得到各位师弟、师妹们给予本人的极大的帮助在此一并表示感谢。他们对我学习和生活上的支持和关爱一直勉励鼓舞着我伴我走过这人生中极重要的一段奋斗历程。最后向所有关心、帮助过我的老师、同学表示最衷心的感谢。附录三工程硕士学位论文附录一系统总原理图RRRRRkRkRkRkRkGNDRkRk启动亮近光灯和尾灯。Rk停车尾灯刹车灯亮VCC倒车倒车时尾灯转向灯亮左转时左转向灯亮右转向时右转向灯亮汽车紧急故障左右转向灯尾灯亮汽车熄火所有等熄灭停车开门近光灯车内前后门灯亮RVCCXRRRRkRkRABRRRinto中断钥匙遥控开灯R左前右前XTALPAD左侧灯RPAD刹车灯PAD左前左后XTALPAD左后PADRCDEFPAD左右左右右前右后左右右后PAD刹车灯CuFRSTPADCRYSTALRinto中断钥匙遥控关灯PAPAPARPSENPARKALEPA转向灯门灯EAPA刹车CpFCpFPARPAPPRXDGNDPPTXDRPPINTPPINTPPTPPTRPPWR左转向灯PPRD启动停车倒车左转向ATCR右转向灯R右侧灯RVCC汽车智能照明系统仿真R尾灯紧急熄火开门近光灯远光灯雾灯尾灯VCCVRkRkRkRkDDIODERkQPNP右转向近光灯远光灯雾灯RLRTEFLV左前阅读灯右前阅读灯左后阅读灯右后阅读灯GNDRk实际电路中控制端需用继电器启动灯珠(例)RkRkRk江苏技术师范学院毕业设计说明书(论文)附录二系统总程序#include<regh>sbitPB=P^sbitPB=P^sbitPB=P^sbitPB=P^sbitPB=P^sbitPB=P^sbitPB=P^sbitPB=P^sbitCB=P^sbitCB=P^sbitCB=P^sbitCB=P^sbitCB=P^sbitCB=P^sbitCB=P^sbitCB=P^sbitDB=P^sbitDB=P^sbitDB=P^sbitDB=P^sbitDB=P^sbitDB=P^sbitDB=P^sbitDB=P^毕业设计论文智能化汽车照明系统sbitJGD=P^sbitYGD=P^sbitWUD=P^sbitWED=P^sbitZZD=P^sbitYZD=P^sbitMED=P^sbitSCD=P^#defineLEDPvoiddebouncer(void)声明防弹跳函数main(){IE=x准许INT,INT中断IP=x设定INT具有最高优先权LED=Xff关闭LEDPB=PB=PB=PB=PB=PB=PB=PB=规划输入CB=CB=CB=CB=CB=CB=CB=CB=规划输入while(){if(PB==){debouncer()呼叫防弹跳函数(按下时)JGD=!JGD切换JGD为反相YGD=WED=!WEDwhile(PB!=)若仍按住PB继续等debouncer()呼叫防弹跳函数(放开时)}if叙述结束elseif(PB==){debouncer()呼叫防弹跳函数(按下时)江苏技术师范学院毕业设计说明书(论文)WED=!WED切换WED为反相SCD=!SCDwhile(PB!=)若仍按住PB继续等debouncer()呼叫防弹跳函数(放开时)}if叙述结束elseif(PB==){debouncer()呼叫防弹跳函数(按下时)WED=!WED切换WED为反相ZZD=!ZZDYZD=!YZDwhile(PB!=)若仍按住PB继续等debouncer()呼叫防弹跳函数(放开时)}if叙述结束elseif(PB==){debouncer()呼叫防弹跳函数(按下时)ZZD=!ZZDYZD=while(PB!=)若仍按住PB继续等debouncer()呼叫防弹跳函数(放开时)}if叙述结束elseif(PB==){debouncer()呼叫防弹跳函数(按下时)YZD=!YZDZZD=while(PB!=)若仍按住PB继续等debouncer()呼叫防弹跳函数(放开时)}if叙述结束elseif(PB==){debouncer()呼叫防弹跳函数(按下时)毕业设计论文智能化汽车照明系统JGD=!JGD切换JGD为反相YGD=while(PB!=)若仍按住PB继续等debouncer()呼叫防弹跳函数(放开时)}if叙述结束elseif(PB==)){debouncer()呼叫防弹跳函数(按下时YGD=!YGD切换JGD为反相JGD=while(PB!=)若仍按住PB继续等debouncer()呼叫防弹跳函数(放开时)}if叙述结束elseif(PB==)按下时){debouncer()呼叫防弹跳函数(WUD=!WUD切换JGD为反相while(PB!=)若仍按住PB继续等debouncer()呼叫防弹跳函数(放开时)}if叙述结束elseif(CB==){debouncer()呼叫防弹跳函数(按下时)WED=!WED切换JGD为反相while(CB!=)若仍按住PB继续等debouncer()呼叫防弹跳函数(放开时)}if叙述结束elseif(CB==){debouncer()呼叫防弹跳函数(按下时)ZZD=!ZZDYZD=!YZDwhile(CB!=)若仍按住PB继续等debouncer()呼叫防弹跳函数(放开时)江苏技术师范学院毕业设计说明书(论文)}if叙述结束elseif(CB==){debouncer()呼叫防弹跳函数(按下时)LED=xffDB=DB=DB=DB=while(CB!=)若仍按住PB继续等debouncer()呼叫防弹跳函数(放开时)}if叙述结束elseif(CB==){debouncer()呼叫防弹跳函数(按下时)JGD=MED=!MED切换为反相while(CB!=)若仍按住PB继续等debouncer()呼叫防弹跳函数(放开时)}if叙述结束elseif(CB==){debouncer()呼叫防弹跳函数(按下时)DB=!DB切换为反相while(CB!=)若仍按住PB继续等debouncer()呼叫防弹跳函数(放开时)}if叙述结束elseif(CB==){debouncer()呼叫防弹跳函数(按下时)DB=!DB切换为反相while(CB!=)若仍按住PB继续等debouncer()呼叫防弹跳函数(放开时)毕业设计论文智能化汽车照明系统}if叙述结束elseif(CB==){debouncer()呼叫防弹跳函数(按下时)DB=!DB切换为反相while(CB!=)若仍按住PB继续等debouncer()呼叫防弹跳函数(放开时)}if叙述结束elseif(CB==){debouncer()呼叫防弹跳函数(按下时)DB=!DB切换为反相while(CB!=)若仍按住PB继续等debouncer()呼叫防弹跳函数(放开时)}if叙述结束}}==子程序=====================================*防弹跳函数函数,延迟约ms*voiddebouncer(void)防弹跳函数开始{inti声明整数变数ifor(i=i<i)计数次,延迟约ms}防弹跳函数结束==子程序===================================*INT的中断子程序遥控关灯*voidmyint(void)interruptINT中断子程序开始{unsignedsaveLED=LED储存中断前LED状态LED=xffDB=DB=DB=江苏技术师范学院毕业设计说明书(论文)DB=LED=saveLED写回中断前ED状态}结束INT中断子程序*INT的中断子程序遥控开灯*voidmyint(void)interruptINT中断子程序开始{unsignedsaveLED=LED储存中断前LED状态LED=xceLED=saveLED写回中断前LED状态}结束INT中断子程

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/80

智能化汽车照明系统设计__毕业设计

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利