1《汽车单片机技术》课程结课设计报告题目:单片机控制直流电动机专业汽车服务工程班级2013学号201301503018姓名曾祥金指导教师张琦21.1设计要求:(1)通过改变A/D输入端可变电阻来改变A/D的输入电压,D/A输入检测量大小,进而改变直流电机的转速。(2)手动控制。在键盘上设置两个按键—直流电动机加速键和直流电机减速键。在手动状态下,每按一次键,电机的转速按照约定的速率改变。1.2设计原理直流电机是通过两个磁场的互作用产生旋转。其结构如下页图所示,固定部分(定子)上,装设了一对直流励磁的静止的主磁极N和S,在旋转部分(转子)上装设电枢铁心。定子与转子之间有一气隙。在电枢铁心上放置了由A和X两根导体连成的电枢线圈,线圈的首端和末端分别连到两个圆弧形的铜片上,此铜片称为换向片。换向片之间互相绝缘,由换向片构成的整体称为换向器。换向器固定在转轴上,换向片与转轴之间亦互相绝缘。在换向片上放置着一对固定不动的电刷B1和B2,当电枢旋转时,电枢线圈通过换向片和电刷与外电路接通。定子通过永磁体或受激励电磁铁产生一个固定磁场,由于转子由一系列电磁体构成,当电流通过其中一个绕组时会产生一个磁场。对有刷直流电机而言,转子上的换向器和定子的电刷在电机旋转时为每个绕组供给电能。通电转子绕组与定子磁体有相反极性,因而相互吸引,使转子转动至与定子磁场对准的位置。当转子到达对准位置时,电刷通过换向器为下一组绕组供电,从而使转子维持旋转运动。直流电机的速度与施加的电压成正比,输出转矩则与电流成正比。由于必须在工作期间改变直流电机的速度,直流电机的控制是一个较困难的问题。直流电机高效运行的最常见方法是施加一个PWM(脉宽调制)方波,其占空比对应于所需速度。电机起到一个低通滤波器作用,将PWM信号转换为有效直流电平。特别是对于微处理器驱动的直流电机,由于PWM信号相对容易产生,这种驱动方式使用的更为广泛。1.3整体设计为了使用单片机对电动机进行控制,对单片机的基本要求应有足够快点速度;有捕捉功能。总体设计方案如图所示3图1.1总体设计方案键盘向单片机输入相应控制指令,由单片机通过P1口输出与转速相应的8位BCD编码,该编码通过DAC0832译成相应的模拟电压,经过信号放大实现电动机转向与转速的控制。可变电阻接ADC0808转变成相应电压的数字信号,单片机通过P2口读取,再由P1口输出与转速相应的8位BCD编码。电动机的运转状态则通过四位数码管显示出来。电动机所处速度级以速度档级数显示。正转时最高位显示“三”,其它三位为电机转速;反转时最高位显示“F”,其它三位为电机转速。每次电动机启动后开始显示,停止时数码管显示出“0000”。单片机DAC0832数码管显示按键控制ADC0808电压信号信号放大驱动电机4第二章系统硬件设计根据总设计方案可知硬件电路是以单片机为核心辅以适当的电路以完成要求功能。主要包括显示模块,A/D转换模块,D/A转换模块等模块。2.1按键电路2.1.1AT89C51AT89C51是一种带4K字节FLASH存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。图2.1按键电路的设计AT89C51提供以下标准功能:4k字节Flash闪速存储器,128字节内部RAM,32个5I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。2.1.2按键电路如图2.1所示,单片机的P2.1和P2.2口分别接一个按键用于控制电机。当按下S1键时,电机转速提高,进入加速状态;当按下S2键时,电机转速减慢,进入减速状态。通过S1,S2两个按键可以达到键盘控制电机的作用。2.2显示电路2.2.1MAX7219MAX7219/MAX7221是一种集成化的串行输入/输出共阴极显示驱动器,它连接微处理器与8位数字的7段数字LED显示,也可以连接条线图显示器或者64个独立的LED。其上包括一个片上的B型BCD编码器、多路扫描回路,段字驱动器,而且还有一个8*8的静态RAM用来存储每一个数据。只有一个外部寄存器用来设置各个LED的段电流。MAX7221与SPI™、QSPI™以及MICROWIRE™相兼容,同时它有限制回转电流的段驱动来减少EMI(电磁干扰)。一个方便的四线串行接口可以联接所有通用的微处理器。每个数据可以寻址在更新时不需要改写所有的显示。MAX7219/MAX7221同样允许用户对每一个数据选择编码或者不编码。整个设备包含一个150μA的低功耗关闭模式,模拟和数字亮度控制,一个扫描限制寄存器允许用户显示1-8位数据,还有一个让所有LED发光的检测模式。功能特点:1、10MHz连续串行口62、独立的LED段控制3、数字的译码与非译码选择4、150μA的低功耗关闭模式5、亮度的数字和模拟控制6、高电压中断显示7、共阴极LED显示驱动8、限制回转电流的段驱动来减少EMI(MAX7221)9、SPI,QSPI,MICROWIRE串行接口(MAX7221)10、24脚的DIP和SO封装2.2.2工作原理图2.2显示电路的设计7如图2.2所示,可变电阻接ADC0808转变成相应电压的数字信号,单片机通过P0口读取,再由P1口输出与转速相应的8位BCD编码到MAX7219。经由MAX7219处理后通过四位数码管显示出来。电动机所处速度级以速度档级数显示。正转时最高位显示“三”,其它三位为电机转速;反转时最高位显示“F”,其它三位为电机转速。每次电动机启动后开始显示,停止时数码管显示出“0000”。2.3A/D转换模块2.3.1ADC0808ADC0808是美国国家半导体公司生产的CMOS工艺8通道,8位逐次逼近式A/D模数转换器。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。是目前国内应用最广泛的8位通用A/D芯片。主要特性1)8路输入通道,8位A/D转换器,即分辨率为8位。2)具有转换起停控制端。3)转换时间为100μs(时钟为640kHz时),130μs(时钟为500kHz时)4)单个+5V电源供电。5)模拟输入电压范围0~+5V,不需零点和满刻度校准。6)工作温度范围为-40~+85摄氏度。7)低功耗,约15mW。ADC0809的工作过程首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。此地址经译码选通8路模拟输入之一到比较器。START上升沿将逐次逼近寄存器复位。下降沿启动A/D转换,之后EOC输出信号变低,指示转换正在进行。直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。当OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上。8转换数据的传送A/D转换后得到的数据应及时传送给单片机进行处理。数据传送的关键问题是如何确认A/D转换的完成,因为只有确认完成后,才能进行传送。为此可采用下述三种方式。(1)定时传送方式对于一种A/D转换器来说,转换时间作为一项技术指标是已知的和固定的。例如ADC0809转换时间为128μs,相当于6MHz的MCS-51单片机共64个机器周期。可据此设计一个延时子程序,A/D转换启动后即调用此子程序,延迟时间一到,转换肯定已经完成了,接着就可进行数据传送。(2)查询方式A/D转换芯片由表明转换完成的状态信号,例如ADC0808的EOC端。因此可以用查询方式,测试EOC的状态,即可确认转换是否完成,并接着进行数据传送。(3)中断方式把表明转换完成的状态信号(EOC)作为中断请求信号,以中断方式进行数据传送。不管使用上述哪种方式,只要一旦确定转换完成,即可通过指令进行数据传送。首先送出口地址并以信号有效时,OE信号即有效,把转换数据送上数据总线,供单片机接受。图2.3AD转换电路的设计92.3.2工作原理如图2.3所示,外部电源通过滑动变阻器向ADC0808输入控制电压信号,经A/D处理后,输入到AT89C51中,交由AT89C51处理,进行下一步动作。2.4D/A转换模块2.4.1DAC0832DAC0832是8分辨率的D/A转换集成芯片。与微处理器完全兼容。这个DA芯片以其价格低廉、接口简单、转换控制容易等优点,在单片机应用系统中得到广泛的应用。D/A转换器由8位输入锁存器、8位DAC寄存器、8位D/A转换电路及转换控制电路构成。主要特性参数1.分辨率为8位;2.电流稳定时间1us;3.可单缓冲、双缓冲或直接数字输入;4.只需在满量程下调整其线性度;5.单一电源供电(+5V~+15V);6.低功耗,20mW。DAC0832的工作方式DAC0832进行D/A转换,可以采用两种方法对数据进行锁存。第一种方法是使输入寄存器工作在锁存状态,而DAC寄存器工作在直通状态。具体地说,就是使和都为低电平,DAC寄存器的锁存选通端得不到有效电平而直通;此外,使输入寄存器的控制信号ILE处于高电平、处于低电平,这样,当端来一个负脉冲时,就可以完成1次转换。第二种方法是使输入寄存器工作在直通状态,而DAC寄存器工作在锁存状态。就是使和为低电平,LE为高电平,这样,输入寄存器的锁存选通信号处于无效状态而直通;当10和端输入1个负脉冲时,使得DAC寄存器工作在锁存状态,提供锁存数据进行转换。图2.4DA转换电路的设计2.4.2工作原理如上图2.4所示,电压信号输入后经过AD转换输入到AT89C51,由单片机通过P1口输出与转速相应的8位BCD编码,该编码通过DAC0832译成相应的模拟电压,经过信号放大实现电动机转向与转速的控制。2.5总电路图由各子模块设计给得出总硬件电路设计如下图2.5所示11图2.5硬件总电路图12第三章系统软件设计本系统编程部分工作采用KELI-C51语言完成,采用模块化的设计方法,与各子程序做为实现各部分功能和过程的入口,完成键盘输入、按键识别、ADC0809读取和DAC0832输出以及数码管显示等部分的设计。3.1系统主程序设计NY图3.1主程序流程图开始系统初始化按键是否按下读取键值将模拟电压转变为数字信号调用显示子程序显示速度返回加速减速电机加速电机减速13主程序流程图如上图3.1所示。系统初始化后,主程序通过调用各子程序完成预定动作,达到控制电机正反转及转速的目的。4.1按键扫描程序按键扫描程序采用中断方式,按下键,完成延时去抖动、键码识别、按键功能执行。要实现按住加/减速键不放时恒加或恒减速直到放开停止,就需在判断是否松开该按键时,每进行一次增加/减少一定的占空比。按键扫描程序流程图如下图3.2所示N、Y图3.2按键扫描程序流程图由流程图设计程序如下:开始按键是否释放延时去抖动键码识别按键功能执行加/减占空比返回14/****************按键扫描**************/key(){if(P12==0)//如果按下,{while(!P12)//去抖动display();k=~k;}if(P16==0)//启动{while(P16==0);IE=0x8a;}if(P13==0)//加速{while(P13==0);t++;}if(t=