版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
自动车窗升降控制器的设计与制作摘要:车窗是汽车必不可少的重要部件,早期的汽车采用传统的手动升降车窗。90年代中期以来,汽车车窗控制器的控制技术发展迅速,电子模块控制形式大量应用于批量装车,并设有安全保护装置。现在许多轿车门窗玻璃的升降使用的是价格低廉、性能稳定的单片机作为集成模块控制器进行控制。据此本次设计也是以STC89C52RC单片机作为核心控制器,L9110芯片为电机驱动,带有温度检测以及状态显示的车窗升降控制器。通过5V小功率电机的正反转、停止以及自动上升功能,模拟车窗的升降以及车辆停车熄火时车窗自动关闭控制功能。采用单片机作控制核心不仅价格低廉而且性能稳定,电路简单。关键词:单片机;直流电机;车窗升降;温度检测DesignandmanufactureofautomaticwindowliftcontrollerAbstract:Windowsareimportantandindispensablepartsforautomobiles,earlycarsusedtraditionalmanuallyliftwindow.Sincethemid90,rapiddevelopmentofcontroltechnologyofautomobilewindowcontroller,electroniccontrolmoduleformswidelyusedinbulkloading,andareequippedwithsafetydevices.Nowmanycarwindowglassliftisusedascheap,stableperformanceofthesinglechipmicrocomputerintegratedcontrolmodulecontroller.ThisdesignisalsoSTC89C52RCSCMasthecorecontroller,L9110chipformotordrive,withtemperaturedetectionandStatedisplaywindowliftcontroller.5Vlowpowermotorreverse,stop,aswellasanautomaticrisefunction,whenasimulatingmovementsinthecarwindowandvehicleparkingstallwindowclosesautomaticallycontrolfunctions.Usingsingle-chipmicrocomputercontrolledcorenotonlylowpricesbutstableperformance,simplecircuit.Keywords:microcontroller;DCmotor;windowlift;temperaturedetection目录TOC\o"1-3"\h\u第1章绪论..............................................11.1选题意义...................................................11.2自动车窗升降控制器的发展历程...............................11.3本文主要研究内容...........................................2第2章系统元件选择与论证.................................32.1单片机选择与论证.............................................32.2电机驱动芯片选择与论证.......................................42.3温度传感器筛选与论证.........................................42.4显示器选择与论证.............................................42.5系统方案设计.................................................5第3章硬件电路设计.......................................63.1硬件系统总体设计.............................................63.2STC89C52RC微处理器核心电路...................................63.2.1STC89C52RC单片机简介.........................................63.2.2晶振电路...................................................83.2.3单片机复位电路..............................................93.2.4单片机总体硬件电路设计.......................................93.3电源输入电路................................................103.4L9110电机驱动电路...........................................113.4.1L9110芯片.................................................113.51602液晶显示器电路..........................................123.5.11602液晶显示器.............................................123.5.21602LCD电路设计............................................143.6DS18B20数字温度传感器电路...................................153.6.1DS18B20的主要特征..........................................153.6.2工作原理及应用.............................................153.6.3DS18B20数字温度传感器电路设计................................173.7按键模块设计................................................17第4章软件程序设计......................................184.1C语言在单片机中的应用.......................................184.1.1文件包含处理...............................................18单片机引脚定义.............................................194.2主程序流程图设计............................................194.3DS18B20传感器模块程序设计...................................204.4LCD1602模块程序设计.........................................22第5章软硬件调试........................................315.1硬件调试....................................................315.2软件程序调试................................................325.3软硬件联调..................................................32结语.....................................................33参考文献.................................................34致谢...................................................36附录1硬件电路原理图.....................................37附录2元器件清单.........................................38附录3源程序清单.........................................39附录4硬件实物图.........................................42
第1章绪论1.1选题意义车窗是汽车必不可少的重要部件。它不仅可以遮风挡雨,为驾驶人提供足够的视角来安全的行车而且调节车窗的开度可以使车内的温度,湿度和气压适应驾驶人和乘客。当汽车高速行驶时,车窗打开必然要提高汽车的风阻系数[1]从而使车辆的用油量变多,而且风产生的噪音会对驾驶人和乘客的听力造成一定的破坏。同时一旦发生意外打开的车窗也成为隐患,不利于保护乘客。当汽车低速行驶时,车窗的开度需要不断地调整来满足乘坐舒适的需要。鉴于以上原因,车窗的开度不时需要调节。为了使车窗可以自由调节开度以及操作更加简便灵活车窗升降控制器就成了控制车窗的关键部件。目前大多数汽车制造商制造的汽车都会有车窗升降控制器,车窗的升降功能已经是汽车的标准功能之一。我相信没有哪个消费者会购买一款没有车窗升降功能的汽车。综上所述,自动车窗升降控制器关系到驾驶人和乘客的舒适度和健康,行车安全以及车辆的行驶成本等等。1.2自动车窗升降控制器的发展历程早期的汽车采用传统的手动升降车窗。欧洲的一些豪华汽车制造商于二十世纪八十年代后期将自动窗户控制器首次应用于他们制造的汽车上,经过几十年的发展,其应用技术已相当成熟。目前国内许多车辆也有这样的配置,它的设计思想是将汽车车窗的平常工作状态和停止状态输入的模拟信号进行A/D转换,把读取的数字信号存储在存储器(ROM)内,通过一个特定的微处理器匹配窗户自动关闭时与正常工作时信号的差别,再通过程序编写来控制电机的旋转[2]。因为整个过程是连续依次的,可以确保电池没有在充电状态下放电,所以电池和电机能够高效,安全的工作。现在通过微控制器控制车窗已经普及,实现的功能也多种多样,我相信将来的车窗控制器会更加人性化,智能化。1.3本文主要研究内容本次设计是以STC89C52RC单片机为核心控制器,主要研究内容如下:熟悉STC89C52RC单片机的引脚功能及其硬件外围电路和软件程序的设计。直流电机驱动芯片L9110的了解,运用以及该芯片电路图的绘制,LCD1602的运用和温度传感器DS18B20的运用。硬件电路设计遵循布局合理简单,易于实现,简单实用的原则,使系统的抗干扰性能以及各项技术指标都达到设计要求。学习,研究高级语言C语言在单片机中的应用。硬件模块的仿真,软件程序的调试以及程序下载到STC89C52RC单片机中运行。第2章系统元件选择与论证本次设计会使用到单片机、传感器、电机驱动芯片、LED/LCD、独立按键等元件。所以在使用何种型号的元件的问题上有必要进行选择和论证。所以,系统的元件选择应在顺应自动车窗升降控制器功能的前提下,以控制器所处的环境条件为参考,所设计的各个硬件模块电路不仅要符合设计要求的技术参数而且要完成相应的功能。元器件的选择不仅要考证其实用性而且要满足易于购买,参数合适,性能稳定,功耗低,成本低廉的特点[3]。2.1单片机选择与论证从处理能力的角度来看,AT系列微控制器分为基本和增强两个种类。两种类型的单片机区分主要是从芯片的末位数字1和2来判定。若末位数字是1,就代表该单片机为基本型。基本的单片机内含4字节的掩膜ROM,128位的RAM,2个16位定时器/计数器,5个中断源,4个并行口和1个串行口。若末位数字是2,就代表该单片机为增强型。增强型单片机拥有8字节掩膜ROM,256位的RAM,3个16位的定时器/计数器,6个中断源,4个并行口和1个串行口[4]。由以上内容可知增强型单片机较基础型有以下优势:片内ROM增加了4KB的存储空间。片内数据存储器提高了128位的存储空间,可以处理更多的数据。定时器/计数器从2个增加到了3个,在串行通信中可以设置更高的波特率。中断增加了1而且增加1个看门狗增强型还在数据指针和断电保护等方面有些进步。增强型最高时钟频率可达33MHz,基础型大抵只有24MHz[5]。当前市场上的AT89C51已经停销,取代它的是具有ISP能力的S系列单片机。相比于C系列S51/52具备系统编程功能(ISP)。考虑到够买器件的价格和难易度,本次设计选择购买宏晶科技公司生产的STC89C52RC单片机。2.2电机驱动芯片选择与论证众所周知单片机是5V供电,工作电流很小。本次设计购买的直流电机工作电流在1.5A左右,如果直接将直流电机接在单片机上会造成动力不足,过小的电流时电机不能转动。这时需要电机驱动来提供足够的电流使直流电机能够正常工作。而且电机工作时会产生扰动,扰动电流会影响控制器件的正常工作甚至遭到损坏。电机驱动芯片可以很好的解决这个问题[6]。由于单片机是5V供电而且本次设计不需要大功率直流电机,所以选择的是5V供电的小型直流电机。那么,选择电机驱动芯片时不需要太大的电压范围和工作电流,所以本次设计选择了L9110电机驱动芯片。2.3温度传感器筛选与论证因为本次设计中有测温的附加功能,所以需要用到温度传感器。温度传感器的种类很多,从测量点上看有接触式和非接触式两大类。从温度传感器的出现发展到现在大体包含四个种类:热电偶、热敏电阻、电阻温度传感器和IC温度传感器。这四个种类中的IC温度传感器根据输出方式的不同又可以分为:模拟输出和数字输出两种种类[7]。本次设计是以单片机为核心控制器的,温度传感器的选择上还是数字输出型的IC传感器更为方便,简单,对于后续程序设计也大大减少了工作量。当前市场上的IC温度传感器还是以美国DALLAS半导体公司的DS18B20传感器为主。它不仅是数字输出型的还是单总线型的,也就是说它与单片机的接口只有一根线,硬件电路十分简单。2.4显示器选择与论证显示部分可以使用数码管或液晶显示芯片。但是若使用数码管的话电路接线太过复杂而且软件设计也会大大增加难度,所以这次我选用了1620液晶显示器。液晶显示器相比于其他显示器有很多优点:功率小耗能低、小巧玲珑、可以显示字符及图形、厚度小,由于以上优点使它在各种仪器仪表和小型低功率系统中大放异彩。液晶显示器又有字符型和图形型之分,顾名思义字符型可以显示字符;图形型可以显示图形。液晶显示器有单行十六字的;也有两行十六字的;两行二十字的[8]。1620是一种通用模块。与数码管相比该模块有如下优点:
1.位数多,可显示32位,32个数码管体积相当庞大了
2.显示内容丰富,可显示所有数字和大、小写字母
3.程序很简单,如果使用数码管动态显示,将需要大量的时间来刷新显示,而1602的自动完成功能。2.5系统总体方案设计按下控制开关,控制开关和温度传感器将命令或信号传送给单片机,单片机接收到信号后通过程序的执行再发出控制命令,电机驱动电路连接在单片机和电机之间,能够采集直流电机的电流将其作样本,把样本信号传送给单片机中的A/D转换采样模块,单片机处理采样信号后发出控制指令返回给电机执行,电机就可以进行相应的动作所以才能控制玻璃的升降运动。液晶显示器也是通过单片机中的程序执行来显示相应的字符。图2-1自动车窗升降控制器总体设计框图第3章硬件电路设计3.1硬件系统总体设计本系统的硬件主要由STC89C52RC单片机核心电路、1602液晶显示器电路、DS18B20数字温度传感器电路、电源电路以及L9110电机驱动电路和5V直流电机组成。以下是硬件结构框图。图3-1自动车窗升降控制器硬件结构框图3.2STC89C52RC微处理器核心电路3.2.1STC89C52RCSTC89C52RC是宏晶科技生产的最新单片机,该单片机有处理速度快、功率小能耗低、抗扰动性能强的特点。它的控制指令标示符是和传统AT系列8051单片机兼容的。它还有十二时钟/机器周期和六时钟/机器周期两个工作频率,用户可以随意挑选。主要特性如下:
(1)5V单片机工作电压范围是3.3V到5.5V。(2)其工作频率范围为0~40MHz。(3)拥有片内ROM8KB,片内512BRAM。(4)共有输入/输出口有32个,当清零后为:P1~4口是准双向口,P0口是集电极开路输出,当P0口接上拉电阻起输入/输出口作用,当P0口不接上拉电阻时作总线扩展用。(5)ISP/IAP,与普通的单片机不同的是它可以直接通过预留的引脚下载软件,不需要编程器和仿真器节省了很多资源。(6)拥有3个16位定时器/计数器。
(7)它拥有四个外部中断源,时钟下降沿触发中断并进入掉电模式[9]。
图3-2STC89C52RC引脚图STC89S52RC引脚功能说明:VCC:电源GND:接地P0口:P0口可以作一个八位漏极开路的双向I/O口使用或者作为低八位地址/数据总线使用。当P0口作双向I/O口时,每个口能驱动八个肖特基门。当调用外部存储器时,P0口开始作为低八位地址总线,然后再作为双向数据总线使用,这时需要外接一个地址锁存器。在这个分时复用的情况下,P0具有内部上拉电阻。P1口:P1口和P2口在数据输入功能上相同。对P1端口写“1”时,其中内部的上拉电阻把端口的电平拉高,这时P1口承担着输入口的作用。当作其作为输入口使用时,内部的高电平电阻和外部的低电平引脚产生压降,这个压降便输出了一个电流。此外,P1.0和P1.2引脚具有复用功能,当作触发输入和外部计数输入时它们可以单独作为定时器/计数器2(P1.0/T2)和定时器/计数器2(P1.1/T2EXP2口:P2口和P1口在数据输入功能相同。但P2口在访问外部程序存储器或用16位地址读取外部数据存储器时,P2口送出高八位地址。在使用八位地址访问外部数据存储器功能时,P2口的内容被锁存在整个访问期间都不会改变。P3口:P3口和P1口一样有一般I/O口所具有的功能和特点,但它也有一些复用功能。如P3.0:RXD(串行输入口),P3.1:TXD(串行输出口),P3.2:外部中断0,P3.3:外部中断1,P3.4:定时器0的外部输入,P3.5:定时器1的外部输入,P3.6:外部存贮器的数据写选通,P3.7:存贮器数据的外部读选通。RST:复位端口。晶振工作时,在RST端口不间断给出两个时钟周期的高电平单片机就会清零。看门狗计时完成后,RST脚输出96个晶振周期的高电平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。EA/VPP:片外程序存储器访问许可/编程电压输入引脚。在这个引脚上电平是零还是一决定了该引脚执行那个存储器里的程序。如果引脚上的电位是“1”,单片机从片内ROM的0000H单元开始执行到FFFFH单元;如果引脚上的电位是“0”,单片机只从片外程序存储器中的初始单元开始运行程序。用户对单片机片内flashXTAL1:振荡器反相放大器和内部时钟发生电路的输入端。XTAL2:振荡器反相放大器的输出端[10]。3.2.2微处理器的正常运行需要矩形脉冲信号来提供其内部各种微操作的时间准则。时钟信号的产生通常有两种,一种是内部振荡方式另一种是外部振荡方式。由于单片机内部自带振荡器反向放大器,为了电路简单此处选择采用内部振荡方式。内部振荡方式是在XTAL1和XTAL2之间接一个石英晶体或陶瓷振荡器[11],分别在两端接上一个电容来稳定振荡频率。晶振电路相当于一个电容和一个电阻并联再串联一个电容的二端网络。在这个网络中有两个谐振点,串联谐振是谐振频率较低的点,并联谐振是谐振频率较高的点。因为晶体自己本身的物理特点使串联谐振和并联谐振的差别不是很明显即频率大致相同,在这个极小的差距内,晶振就相当于一个电感。晶振可以选用12MHz。单片机处理速度取决于最小系统的晶振频率,因此为了有更快的处理速度可以采用更高频率的晶振[12]。晶振负载电容一般使用15~30pF,为了减少寄生电容,晶振和电容要尽可能靠近,单片机和晶振间也要尽可能近。这个取值是数据手册推荐的经验值。3.2.3单片机在启动时都需要复位,来使单片机及各个部分都在初始时的工作状态。在单片机处在平时的工作状态和振荡器的稳定状态的时候,只需要在第9引脚RST接个2毫秒的高电平就使单片机复位。上电复位只需要在复位端口上接个电容和电源,下端连接一个电阻和接地。在上电位复位操作的过程中,上电操作的时候,复位电路经电容来给复位端提供高电压,这高电压会跟着电容的作用而逐渐减弱。为了保证系统可靠地复位,高电平必须持续足够长的时间。复位电路使用的是十千欧的电阻和十微法的电容。在这样的参数下只需要0.1S的时间就能够使电容充电的容量达到电源电压的0.7倍。在微控制器运行0.1S中,电容的电压在0~3.5V增0加。此时十千欧电阻两端的电压从5~1.5V反而在减少。所以在0.1S内,RST引脚所接收到的电压是5V~1.5V。在5V正常工作的51单片机中小于1.5V的电压信号为低电平信号,而大于1.5V的电压信号为高电平信号。所以在开机0.1S内,单片机系统自动复位(RST引脚接收到的高电平信号时间为0.1S左右)[13]。上电复位电路的原理是单片机RST引脚接收到2uS以上的高电平信号,只要保证电容的充放电时间大于2uS,即可实现复位,所以电路中的电容值是可以改变的[14]。3.2.4这部分是本系统的核心部分,提供了一个让单片机能够正常工作的最小电路。其中,上电复位电路是实现单片机的上电复位功能(本电路不含手动复位按钮,断电开机等于复位)。软件程序下载接口是现有的不需要购买编程器,STC89C52RC单片机拥有下载程序的专用接口。晶振电路是给单片机提供振荡信号的,而晶振旁的两个电容则是晶振的负载电容。单片机的P0口与其他接口不同,P0口是集电极开漏输出,原本就是低电平不能满足外围电路工作需求即没有高电平的驱动能力。为了给单片机外部电路一个高电平来驱动相应的功能模块需要加装一些电阻。这些电阻接在电源正极和单片机对应的P0口上,该电阻就叫上拉电阻。图3-3STC89C52RC单片机电路3.3电源输入电路图3-4电源输入电路本部分是用于电源输入的,其中104电容起到的是去除干扰的作用,而220uF电解电容是用于稳定输入电源用的。VCC即提供到系统各处的5V电压,通过限流电阻和电源灯实现电源接通的指示。3.4L91103.4.1LL9110是电机驱动芯片。它是两通道推挽式功率放大专用集成电路器件,将分立电路集成在单片集成电路之中,使外围器件成本降低,整机可靠性提高。该芯片有两个TTL/CMOS兼容电平的输入,具有良好的抗干扰性;两个输出端能直接驱动电机的正反向运动,它具有较大的电流驱动能力,每通道能通过750~800mA的持续电流,峰值电流能力可达1.5~2.0A;同时它具有较低的输出饱和压降;内置的钳位二极管能释放感性负载的反向冲击电流,使它在驱动继电器、直流电机、步进电机或开关功率管的使用上安全可靠。L9110被广泛应用于玩具汽车电机驱动、步进电机驱动和开关功率管等电路上[15]。它具有以下特点:低静态工作电流;宽电源电压范围;2.5V-12V;电流输出能力为每通道800mA;较低的饱和压降;TTL/CMOS输出电平兼容,可直接连CPU;输出内置钳位二极管,适用于感性负载;控制和驱动集成于单片IC之中;具备管脚高压保护功能;工作温度:0℃-80图3-5电机驱动电路L9110的电机芯片根据数据手册中规定的操作时序,由IB和IA引脚共同决定转动状态,从而使L9110电机驱动芯片的OA和OB引脚分别输出不同的电平组合而驱动电机进行正转或反转。L9110电机的3和4引脚都是接入VCC即5V的电源。电机上并联的104电容是吸收电机运转过程中发出的干扰,以免影响整体电路的稳定性。3.51602液晶显示器电路3.5.11602液晶显示器(1)液晶显示的原理液晶显示原理是液晶的物理性质的使用,电压控制显示区域,区域电压的不同就可以显示图形及字符。市场上销售的液晶显示器在个人电脑、智能手机、电视机、数字摄影机等众多领域都有应用。(2)液晶显示器的分类目前液晶显示器在市场上有各种各样的型号及种类,如果按照其显示器的工作方式分,可分为段式、字符式、点阵式等。LCD不仅拥有显示黑白、彩色等各种颜色的能力,还有可以根据外界光强调整灰度的功能。如果根据驱动方式来分,可分为静态驱动,单纯矩阵驱动和有源矩阵驱动三种。图3-61602液晶显示器引脚图引脚接口说明如表3-1所示:表3-1引脚接口说明表编号符号引脚说明编号符号引脚说明1VSS电源地9D2数据2VDD电源正极10D3数据3VL液晶显示偏压11D4数据4RS数据/命令选择12D5数据5R/W读/写选择13D6数据6E使能信号14D7数据7D0数据15BLA背光源正极8D1数据16BLK背光源负极第1脚:VSS为地电源。第2脚:VDD接5V正电源。第3脚:VL是用来调整液晶显示器对比度的端口,如果该引脚是高电平那么对比度最小,如果是低电平对比度那么最高,不过对比度太高会产生重影不利于显示。第3脚能外接一个十千欧的电位器用来调整LCD的对比度。第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据[16]。第6脚:E端为使能端,端口工作在下降沿,即下降沿时液晶电路运行指令。第7~14脚:D0~D7为8位双向数据线。第15脚:背光源正极。第16脚:背光源负极。3.5.21602LCD电路设计图3-71602LCD电路图LCD电路原理图的设计主要是控制寄存器选择端、读写信号选择端及使能端的状态,双向数据线与单片机的双向I/O口之间的连接,另外就是液晶显示器的背光电源与驱动电源之间的连接以及对比度调节了。3.6DS18B20数字温度传感器电路DS18B20的主要特征最近美国的DALLAS半导体公司发布了一款改进型的智能温度传感器那就是DS18B20温度传感器。它是环境控制,设备或过程控制,温度类消费电子产品。传统的热敏电阻等元件测温后的值并不是温度值而是电阻值要想知道具体的温度还需要将电阻值换算成温度值这样一来就特备麻烦。但是本次设计使用的传感器就没有这样复杂,它可以直接测出被测物体的温度,并且用户可以根据实际需求自行编程改变其数值读数方式。由DS18B20测量物体的温度是以数字信号在单总线中传送的,大大提高了测量的准确度减少了外部的扰动,对于一些控制环境比较差的场所该传感器也能够精确无误的测量。该传感器的工作电压在3V到5V之间,使系统设计更加灵活、方便[17]。其特征可概括如下:1、独特的单线接口仅需要一个端口引脚进行通信;3、采用了3线制与单片机相连,减少了外部硬件电路;4、零待机功耗;5、可通过数据线供电,电压范围在;6、用户可定义的非易失性温度报警设置;7、对超温和搜索命令识别有报警功能;8、当正负极接反时,传感器不会因反向电流作用而损坏,只是停止工作而已。9、全数字温度转换及输出。10、拥有十二位分辨率,测量精度可达正负零点五摄氏度,精度非常高。11、检测温度范围是零下五十五度到一百二十五度。12、64位光刻ROM,内置产品序列号,方便多机挂接。13、多样封装形式,适应不同硬件系统。3.6.2工作原理及应用DS18B20的温度检测与数字数据输出全集成于一个芯片之上,从而抗干扰力更强。它有温度检测和数据处理两个部分,而且这两个部分是在一个工作周期中完成的。DS18B20作为一个温度传感器其的内部数据和程序存储器资源也很充足。DS18B20共有三种形态的存储器资源,它们分别是:(1)ROM只读存储器,它拥有64位的存储空间用来储存DS18B20的程序代码,开始的八位是单线系列编码(DS18B20的编码是19H),后面四十八位是芯片独一无二的序列号,最后八位是以上五十六的位的CRC码(冗余校验)。芯片在出厂时的设置用户不能自行随意改动。(2)RAM数据暂存器,DS18B20内部RAM共9KB。暂存器顾名思义就是内部运算输入/输出数据暂时存放的地方,这些数据不能永久保存在芯片中,芯片掉电时会自动丢失。前两个字节单元存放的是被测物体温度翻译后的数据代码信息,第三、四个字节是用户非易失性存储器(常用于温度报警值储存)的镜像。在上电复位后非易失性存储器中的信息被清空。第五个字节则是用户的第三个非易失性存储器的镜像。第六、七、八字节为计数寄存器,这三个字节是内部运算结果和温度值转化的临时存储单元。另外这三个字节还可以提高温度检测的分辨率。最后一个字节为前八个字节的冗余校验码[18]。(3)EEPROM非易失性存储器。它和RAM有本质区别,保存在EPROM中的数据不易丢失,适合将一些需要长时间不需改动的数据存放其中。如上下限温度报警值和校验数据。DS18B20中共三位非易失性存储器,并在数据暂存器中都存在镜像,这些镜像可以方便使用者调取使用,大大简化了设计。LSBLSB位置/清除增加计数器1斜率累加器计数比较器温度寄存器减到0预置计数器2减到0停止预置低温度系数晶振高温度系数晶振图3-8DS18B20测温原理3.6.3DS18B20数字温度传感器电路设计DS18B20数字温度传感器使用单总线协议传输,第二个引脚DQ接的是单片机的P2.4引脚。为了增强稳定性排除外部干扰,在DQ引脚处做上拉电阻处理,电阻阻值为4.7K。第一脚是VCC引脚,第三脚是GND引脚。图3-9DS18B20数字温度传感器电路设计3.7按键模块设计本次设计用到了四个按键,其中一个用来模拟汽车车窗的行程开关,另外三个采用独立按键,如图3-10所示S1为上升按钮,S2为下降按钮,S3为一键升降按钮。这三个独立按键分别连接在STC89S52RC的P1.1~3接口上。采用该此种接法电路简单易于检查错误,软件程序编写方便快捷也可节省单片机资源。图3-10按键模块电路如上图所示S1为上升按键,用来控制电机正转;S2为下降按钮键,用来控制电机反转;S3为自动上升按键,用来模拟汽车停车落锁信号以控制电机连续正转。当车窗上升到一定高度(车窗触碰到行程开关,即模拟行程开关的按键按下时)直流电机停止转动。第4章软件程序设计本次设计的自动车窗升降控制器是由单片机做核心控制器的所以必须要有程序来控制硬件的动作。因此软件设计业应当是和硬件电路模块设计对应的。把整个系统分为几个模块分别进行编写、调试、运行。最后在用一个主程序把各个模块连接起来,实现最终的功能。模块化设计使主程序变得简单、清晰明了,使阅读和维护程序变得容易。模块化设计就像组装一台计算机一样,事先生产好各个部件,最后组装计算机时直接把做好的部件装上就好了这样使程序设计难度降低,思路更清晰,调试更方便同时增强了程序的可移植性。单片机已经出现了几十年最初的汇编语言也正在被高级语言取代,由于汇编语言复杂难以理解,目前已有大多数的人已经习惯使用高级语言开发,其中主要是以C语言为主,现在许多单片机制造厂家都开发了C语言开发环境[19]。4.1C语言在单片机中的应用4.1.1文件包含处理文件包含其实是一个载体文件,此文件定义了一些常用函数和数据接口声明。简单来说就是将一个模块装载到另一个模块中,这样就可以在总模块中调用子模块的端口等。如下面一句程序:#include“reg51.h”这里程序中包含REG51.h文件。为了要确定使用的是STC89C52RC微处理器的端口而不是其它变量,此句程序即通知C编译器实现这样的目的。若开启reg51.h能够看到以下的内容:/*BYTERegister*/sfrP0=0x80;sfrP1=0x90;sfrP2=0xA0;sfrP3=0xB0;sfrPSW=0xD0;sfrACC=0xE0;等上述的P1~P3等就是单片机中的I/O口,这里的赋值语句规定了符号名与地址的对应关系。如sfrP2=0xA0;0xA0是对P2口地址的定义,P2端口地址为0xA0(0xA0是十六进制数的方法,C语言相当于汇编语言写的A0h)[20]。sfr是单片机中的特殊功能寄存器,而在标准C语言中并没有sfr关键字,为何sfr可以直接出现在C语言程序中呢?特殊功能寄存器能直接接入单片机是因为Keil提供了一种新的关键字,它的使用方法是:sfrt变量名=地址值。4.1.2单片机引脚定义在C语言里,引脚的定义不能直接引用单片机中的符号。比如直接写P2.1就是错误的。因为P2.1是一个不合法的C语言的变量名,C编译器并不能识别,所以不能使用原来的标号需要重新定义,这里修改的变量名为P1_0,用关键字sbit来定义,对SBIT使用如下:第一种方法:sbit位变量名=地址值第二种方法:sbit位变量名=SFR名称^变量位地址值第三种方法:sbit位变量名=SFR地址值^变量位地址值4.2主程序流程图设计图4-1主程序流程图4.3DS18B20传感器模块程序设计DS18B20温度传感器是与微控制器之间的连接只有一根线即单总线系统。软件程序设计是实现硬件功能的基础。温度传感器整体功能是测温并将数据传送出去但要完成这项功能必须要软件程序的设计。当单片机作为主要控制器时,必须由用户自己在单总线协议的基础上[21],用C语言写的程序,提高了软件设计的难点。为了确保数据不受干扰,无错误地传送,必须保证任何时刻单总线上仅有一个控制命令或数据在传输。处理次序操作时,一般有以下四个过程:(1)初始化;(2)传送程序储存器命令;(3)传送RAM命令;(4)数据交换[22]。
通过上述四个可知一根总线上所有操作都从初始化开始的。初始化时钟信号是由脉冲组成的。该脉冲可以是复位脉冲或是应答脉冲。/**********ds18b20初始化[23]函数**********************/voidInit_DS18B20(void){ unsignedcharx=0; DQ=1;//DQ复位 delay_18B20(8);//做一点延时 DQ=0;//单片机DQ拉低了 delay_18B20(80);//做精确延时,延时时间大于480us DQ=1;//拉高总线 delay_18B20(14); x=DQ;//稍微延迟如果x=0是成功地如果x=1的初始化失败 delay_18B20(20);}/***********ds18b20读一个字节**************/unsignedcharReadOneChar(void){ unsignedchari=0; unsignedchardat=0; for(i=8;i>0;i--) { DQ=0;//脉冲信号 dat>>=1;//数据右移一位 DQ=1;//给脉冲信号 if(DQ) dat|=0x80;//位或,取高位 delay_18B20(4); } return(dat);}/*************ds18b20写一个字节****************/voidWriteOneChar(unsignedchardat){ unsignedchari=0; for(i=8;i>0;i--) { DQ=0; DQ=dat&0x01;//取最低位 delay_18B20(5); DQ=1;//上升沿将数据输入 dat>>=1;}}/**************读取ds18b20当前温度************/charNEG_FLAG; //负号记录变量 unsignedintReadTemp(void){ unsignedchara=0; unsignedcharb=0; unsignedchart=0; unsignedinttvalue;//温度值 EA=0; Init_DS18B20(); WriteOneChar(0xCC); //跳过读序号列号的操作 WriteOneChar(0x44); //转换温度 delay_18B20(100);//延时 Init_DS18B20(); WriteOneChar(0xCC); //跳过读序号列号的操作 WriteOneChar(0xBE); //读取温度寄存器等(共可读个寄存器)前两个就是温度 delay_18B20(100);//延时 a=ReadOneChar(); //读取温度值低位 b=ReadOneChar(); //读取温度值高位 EA=1;tvalue=b; tvalue<<=8;//将温度值左移位,腾出低八位空间tvalue=tvalue|a;//将低位并到温度值的低八位上(刚已经腾出来了)tvalue=tvalue*(0.625);//按照数据手册分辨率,将温度值乘以分辨率得出真实温度值,本值的个位即小数位return(tvalue);//返回真实温度值}#endif4.4LCD1602模块程序设计要编写1602液晶显示器模块的程序需要了解其内部运算器的十一个控制命令,这十一个命令包含及实现了1602液晶模块所有的逻辑或运算操作。
指令1:将光标重置到初始单元00H,指令代码:01H。指令2:将光标返回初始单元00H。
指令3:光标和显示模式设置
I/D:光标移动方向由高低电平决定,高电平右移,低电平左移
S:液晶显示器上的字符或图形是否需要移动,同样是由高低电平决定的。高电平表示需要移动,低电平则表示不需要移动。
指令4:显示开关控制。
D:决定整个液晶显示器工作状态,由高低电平决定。高电平决定整体开,低电平决定整体关。
C:决定是否有光标,也由高低电平决定。高电平决定有光标,低电平决定无光标
B:决定是否有光标闪烁,还是由高低电平决定。高电平闪烁,低电平不闪烁。
指令5:光标或显示移动选择
S/C:高低电平决定是移动文字还是移动光标。高电平移动文字,低电平移动光标。指令6:功能设置命令
DL高电平时为4位总线,低电平时为8位总线
N:低电平时为单行显示,高电平时双行显示
F:低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。
指令7:配置RAM地址。
指令8:配置DDRAM地址。
指令9:读忙信号和光标地址
BF:为是否空闲标志位,高电平表示不空闲,此时模块不能接收命令或者数据;低电平表示空闲,模块可以接收命令或数据。
指令10:写操作。
指令11:读操作[24]。#defineucharunsignedchar//宏定义#defineuintunsignedint //宏定义ucharcodetable[]="0123456789.";//定义字符串表sbitLcdRs =P2^5;//定义液晶rssbitLcdRw =P2^6;//定义液晶rwsbitLcdEn =P2^7;//定义液晶ensfrDBPort =0x80; //内部等待函数**************************************************************************unsignedcharLCD_Wait(void){ LcdRs=0;_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); //时序,拉高RW电平//时序,拉低RS电平 LcdRw=1; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); //时序,拉高RW电平 LcdEn=1; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); //时序,拉高EN电平 LcdEn=0;//时序,拉低EN电平 _nop_();nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); returnDBPort; }//向LCD写入命令或数据************************************************************#defineLCD_COMMAND 0//命令#defineLCD_DATA 1//数据#defineLCD_CLEAR_SCREEN 0x01//清屏#defineLCD_HOMING 0x02//光标返回原点 voidDelay_50us(unsignedinttimes) //延时us{unsignedinti;for(i=0;i<times;i++) //循环{_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();//空指令延时 _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); //空指令延时}}voidDelay_ms_Lcd1602(unsignedinttimes)//延时ms{unsignedinti;for(i=0;i<times;i++)Delay_50us(32);//调用延时函数,延时ms}voidLCD_Write(bitstyle,unsignedcharinput)//液晶写函数,无返回值,声明了bit和unsignedchar变量{ LcdEn=0;//时序,拉低EN电平 LcdRs=style;//将方式复制给RS LcdRw=0; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();//时序,拉低RW电平。 DBPort=input; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();//将input参数传递给数据端口 LcdEn=1; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();//注意顺序 LcdEn=0; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();//时序,拉低EN电平。 LCD_Wait(); //液晶等待函数}//设置显示模式************************************************************#defineLCD_SHOW 0x04//显示开#defineLCD_HIDE 0x00//显示关 #defineLCD_CURSOR 0x02 //显示光标#defineLCD_NO_CURSOR 0x00//无光标 #defineLCD_FLASH 0x01//光标闪动#defineLCD_NO_FLASH 0x00//光标不闪动voidLCD_SetDisplay(unsignedcharDisplayMode)//设置显示模式函数,无返回值,unsignedchar型参数{ LCD_Write(LCD_COMMAND,0x08|DisplayMode);//写入显示模式}//设置输入模式************************************************************#defineLCD_AC_UP 0x02//定义AC_UP指令#defineLCD_AC_DOWN 0x00//定义AC_DOWN指令#defineLCD_MOVE 0x01//定义MOVE指令#defineLCD_NO_MOVE 0x00//定义NO_MOVE指令voidLCD_SetInput(unsignedcharInputMode)//设置输入函数{ LCD_Write(LCD_COMMAND,0x04|InputMode); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();_nop_();}voidWaitForEnable(void)//查忙状态函数{ DBPort=0xff; //将0xff复制到数据端口 _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();LcdRs=0;LcdRw=1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();//生成时序,RS为低电平LcdEn=1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();//生成时序,EN为高电平while(DBPort&0x80);//等不忙_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();LcdEn=0;//EN为低电平} //初始化LCD************************************************************voidLCD_Initial()//液晶初始化函数{ LcdEn=0; Delay_ms_Lcd1602(15); LCD_Write(LCD_COMMAND,0x38);//8位数据端口,2行显示,5*7点阵 Delay_ms_Lcd1602(5); LCD_Write(LCD_COMMAND,0x38);//再写入一次 Delay_ms_Lcd1602(5); LCD_Write(LCD_COMMAND,0x38);//再写入一次WaitForEnable();//等待 LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR);//开启显示,无光标 WaitForEnable();//等待 LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);//清屏 WaitForEnable();//等待 LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE);//AC递增,画面不动}voidGotoXY(unsignedcharx,unsignedchary)//光标去特定位置{ if(y==0)//如果y=0 LCD_Write(LCD_COMMAND,0x80|x);//写入x地址 if(y==1)//如果y=1 LCD_Write(LCD_COMMAND,0x80|(x-0x40));//如果y=1经过进一步运算再写到x地址}voidWriteDataLCM(uchardataW)//写数据函数{ WaitForEnable();//等待 //等待液晶忙完 LcdRs=1;LcdRw=0;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();//生成合适时序DBPort=dataW;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); //赋值dataW参数到数据端口上LcdEn=1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();LcdEn=0;//结束时序} voidDisplayOneChar(ucharx,uchary,ucharWdata)//显示一个字符函数{ GotoXY(x,y); //到达特定坐标 WriteDataLCM(Wdata); //写入字符}voidPrintXY(ucharx,uchary,uchar*str)//在特定位置显示函数,无返回值,unsignedchar参数和unsignedchar指针参数{ WaitForEnable();//等待 GotoXY(x,y);//到达指定坐标 while(*str!='\0')//等待字符串结束 { DisplayOneChar(x,y,*str);//写入字符串 str++;//指针自加 x++;//x坐标增加 } }voidDisplayChar_num(uintx,uinty,uintnum)//显示整数函数{ //EA=0;//关总中断 WaitForEnable();//等待DisplayOneChar(x,y,table[num/100]);//百位 DisplayOneChar(x+1,y,table[(num/10)%10]);//十位 DisplayOneChar(x+2,y,table[(num)%10]);//个位 //EA=1;}voidDisplay2num(uintx,uinty,uintnum)//显示整数函数{ //EA=0;//关总中断 WaitForEnable();//等待//if((num/100)>0)DisplayOneChar(x,y,table[num/100]);elsePrintXY(x,y,"");//百位 DisplayOneChar(x,y,table[(num/10)%10]);//十位 DisplayOneChar(x+1,y,table[(num)%10]);//个位 //EA=1;} voidDisplayInt(uintx,uinty,uintnum)//显示整数函数{ucharwan,qian,bai,shi,ge; EA=0;wan=num/10000;qian=(num/1000)%10;bai=(num/100)%10;shi=(num/10)%10;ge=num%10; WaitForEnable(); if(wan>0)DisplayOneChar(x,y,table[wan]);elsePrintXY(x,y,""); if(wan>0||qian>0)DisplayOneChar(x+1,y,table[qian]);elsePrintXY(x+1,y,""); if(wan>0||qian>0||bai>0) DisplayOneChar(x+2,y,table[bai]);elsePrintXY(x+2,y,""); if(wan>0||qian>0||bai>0||shi>0) DisplayOneChar(x+3,y,table[shi]);elsePrintXY(x+3,y,""); DisplayOneChar(x+4,y,table[ge]);//个位 EA=1;}voidDisplay_Signed_char(uintx,uinty,signedcharnum)//显示整数函数{ //EA=0; //关总中断 WaitForEnable();//等待 if(num>=0)PrintXY(x,y,"");elsePrintXY(x,y,"-");//处理符号 if(num<0)num=~num+1;//将负数转换 if((num/100)>0)DisplayOneChar(x+1,y,table[num/100]);elsePrintXY(x+1,y,"");//百位 DisplayOneChar(x+2,y,table[(num/10)%10]);//十位 DisplayOneChar(x+3,y,table[(num)%10]);//个位 //EA=1;}第5章软硬件调试5.1硬件仿真调试在硬件电路设计完成后不能着急焊接板子,首先要做的是用Multisim软件进行电路仿真。Multisim软件是专门用于硬件电路原理图设计和仿真的,它有非常全面的元件库,并且可以直接将画好的原理图导入到软件中进行仿真[25]。在进行仿真时,在设计电路中加上虚拟电压表用来检测各个模块的工作电压,测试其是否达到正常工作电压。在仿真无误后才可开始焊接硬件电路。焊接完成后进行硬件电路实物检查及调试。1.检查电路刚刚焊接好的电路板不能直接上电调试。首当其冲的是确认各个元件尤其是芯片的连线是否完整。对照原理图或接线图,检查每个模块电路连线的正确性。检查接线是否正确的同时也要关注有极性二极管和电解电容器是否接错,芯片是否插错方向。最后观察焊点是否牢固,有没有漏焊、虚焊。在检查中可以使用万用表判断线路是否导通。2.上电观察在仿真时已经确定好了各个模块的工作电压以及电路检查没有问题的情况下,可以开始上电调试。电源一但接通,不需要着急检测板子的各项技术参数,而是要观察是否有异常现象。如果有,应立即关闭电源,重新排查故障直到故障排除后才能重新上电。最后,才用电压表测每个模块的工作电压是否正常,确保芯片正常工作。3.静态调试
为了提高调试效率必须进行静态调试。在不加输入信号的条件下,对硬件电路每一个模块的性能试验和静态工作点的调整,使它可以适应总体设计要求。这样的分模块调试可以大大提高效率,减少错误率也为后续调试奠定了基础。在这个部分需要重点调试液晶显示器上的4.7K的上拉电阻,将LCD的对比度调整到合适的范围。
4.动态调试
在加入输入信号加的条件下,调整通信信道单元电路中的元件,如电容、电感的波形振幅、频率等参数符合设计要求。如果输入信号是一个周期性的信号,该信号可以通过示波器来观测。动态调试也要与静态调试一样采用分块调试,这时调试后一级电路的输入信号应采用前一级的输出信号。
5.2软件程序调试本次软件程序设计采用的是C语言。编译的源代码文件中可能遇到各种错误和警告,表明源文件的设计还不够准确需要修改。软件程序设计中有LCD1602模块和DS18B20温度检测传感器程序模块,调试时需要对这两个模块分别进行调试。首先用visualc++对编好的程序进行编译,如果程序中存在语法或逻辑错误,编译后会提示你有多少,在哪一行有错误。最后再调试main函数。我在调试时就出现了很多错误,有的是粗心大意写错了指令有的是由逻辑错误。当面对逻辑错误时要对照流程图修改,这时的修改量就会很大。所以在最初设计时就要考虑好每段程序的设计思路,以免后面话大量时间修改。5.3软硬件联调设计使用的是STC89C52RC单片机,兼容传统的51单片机,拥有串口下载功能,只需要在电路板上飞线引出接地、电源、P3.0、P3.1这四个引脚,再配合一个USB-TTL的小板,就可以在电脑上用STC-ISP软件下载程序进去了。只要将程序下载进单片机后就可以上电进行调试,看板子是否能够完成预计的功能。结语本次毕业设计从选题到最后的论文纂写花费了我大量的精力,不过不经历风雨哪来彩虹,有付出才会有收获。我很庆幸能够由这次毕业设计来结束我大学四年的学习生活,毕业设计不仅是对我四年学习生涯学到的知识或技能的检测也是我今后走上职场及社会的一次难得的锻炼机会,或许它会成为我首份工作的敲门砖。这次设计我是选题时自动车窗升降控制器,这个选题很贴近生活。因为贴近生活所以设计难度也很大,但是从中我可以学到许多课本没有的知识,拓宽视野扩展思维。本次设计考虑的最多的是如何用最小的代价模拟实物车窗控制器。实际生活中的车窗升降控制器是很复杂的机械和电子部件的集成,我必须查阅资料了解它的电路方面的工作方式和机械构成及其动作方式。最终决定采用小电流控制大电流的方式来模拟现实车窗控制器的功能。为了减少成本及处于设计抗干扰性能方面的考虑我决定使用直流小型电机来作动力输出,这样大大降低了功耗也减少了扰动。另外,本次设计不仅锻炼了我选用元件的能力还让我温顾了以前学习过的电路和程序设计软件以及学习了高级语言C语言在单片机中的创新,使我的思维更加灵活,逻辑更加清晰。但是这次设计也有很多缺陷,比如说没有很好的和实际联系,软件编程方面指令记不熟缺少实际运用经验。这次设计让我知道了认真做一件成果过程很苦但结果很甜。
参考文献[1]杨祖元,秦大同,孙冬野.电动汽车动力传动系统参数设计及动力性仿真[J].重庆大学学报(自然科学版),2002,25(6):18-22.[2]徐本财,鲍宇.基于威驰轿车电动车窗自动关窗装置的设计[J].黑龙江交通科技,2008,31(12):139-140.[3]卞清,宋勇,李忠富.嵌入式汽车车窗控制器设计[J].自动化技术与应用,2009(12):96-99.[4]王有绪.PIC系列单片机接口技术及应用系统设计[M].北京:北京航空航天大学出版社,2001.[5]唐颖等.单片机原理与应用及C51程序设计[M].北京:北京大学出版社,2008.[6]何洪文,余晓江,孙逢春,等.电动汽车电机驱动系统动力特性分析[J].中国电机工程学报,2006,26(6):136-140.[7]黄贤武,郑筱霞.传感器原理与应用[M].成都:电子科技大学出版社,1999.[8]袁欢,曾先文,徐讳.1602LCD液晶显示[J].商品与质量:学术观察,2012(5):104-104.[9]邬伟奇.STC89系列高性能单片机及其应用[J].微计算机信息,2004,20(7):92-93.[10]余锡存,曹国华.单片机原理及接口技术[M].西安:西安电子科技大学出版社,2000.[11]韩勇鹏,霍利锋.基于MSP430F169的最小系统设计[J].山西农业大学学报,2007,6(6):216-218.[12]廖刚,胡二虎.一种低功耗CMOS晶振电路的设计[J].微电子学与计算机,2002,19(12):70-72.[13]包国彬,张建民,刘赢.单片机复位电路的设计与分析[J].光电技术应用,2005,20(3):66-69.[14]王晖,薛永存.基于MCS-51单片机的复位电路抗干扰分析与设计[J].现代电子技术
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小时工代招聘协议书
- 神经外科手术后的神经康复指导
- 肾结石科普演讲
- 鼻腔出血紧急处理流程
- 体育管理的研究方向
- 2026重庆九洲隆瓴科技有限公司招聘助理项目经理1人备考题库及答案详解参考
- 2026江苏食品药品职业技术学院招聘专职辅导员3人备考题库含答案详解(巩固)
- 2026广东梅州市人民医院招聘博士研究生备考题库及答案详解(各地真题)
- 2026江苏南通如东县岔河镇村卫生室工作人员招聘2人备考题库及答案详解(有一套)
- 2026湖南郴州市第一人民医院招聘58人备考题库及参考答案详解(模拟题)
- 第2章 Spring Boot核心配置与注解
- 网络传播法规(自考14339)复习必备题库(含答案)
- GB/T 4893.8-2023家具表面理化性能试验第8部分:耐磨性测定法
- 互联网营销师(直播销售员)理论考试题库(备考用)
- 肠易激综合征
- DB4403T 325-2023 红火蚁防控规程
- 联合试运转记录表(空)
- 普速铁路线路封闭设施管理办法
- 大学生志愿服务西部计划考试复习题库(笔试、面试题)
- 2023年考研考博-考博英语-中国海洋大学考试历年真题摘选含答案解析
- 中考语文名著阅读-艾青诗选及水浒传
评论
0/150
提交评论