车窗升降控制器设计

上传人:qd****88 文档编号:71715150 上传时间:2022-04-07 格式:DOC 页数:34 大小:344.50KB
收藏 版权申诉 举报 下载
车窗升降控制器设计_第1页
第1页 / 共34页
车窗升降控制器设计_第2页
第2页 / 共34页
车窗升降控制器设计_第3页
第3页 / 共34页
资源描述:

《车窗升降控制器设计》由会员分享,可在线阅读,更多相关《车窗升降控制器设计(34页珍藏版)》请在装配图网上搜索。

1、.自动车窗升降控制器的设计与制作摘 要:车窗是汽车必不可少的重要部件,早期的汽车采用传统的手动升降车窗。90年代中期以来,汽车车窗控制器的控制技术开展迅速,电子模块控制形式大量应用于批量装车,并设有平安保护装置。现在许多轿车门窗玻璃的升降使用的是价格低廉、性能稳定的单片机作为集成模块控制器进展控制。据此本次设计也是以STC89C52RC单片机作为核心控制器,L9110芯片为电机驱动,带有温度检测以及状态显示的车窗升降控制器。通过5V小功率电机的正反转、停顿以及自动上升功能,模拟车窗的升降以及车辆停车熄火时车窗自动关闭控制功能。采用单片机作控制核心不仅价格低廉而且性能稳定,电路简单。关键词:单片

2、机;直流电机;车窗升降;温度检测Design and manufacture of automatic window lift controllerAbstract:Windows are important and indispensable parts for automobiles, early cars used traditional manually lift window. Since the mid 90, rapid development of control technology of automobile window controller, electronic co

3、ntrol module forms widely used in bulk loading, and are equipped with safety devices. Now many car window glass lift is used as cheap, stable performance of the single chip microputer integrated control module controller. This design is also STC89C52RC SCM as the core controller, L9110 chip for moto

4、r drive, with temperature detection and State display window lift controller. 5V low power motor reverse, stop, as well as an automatic rise function, when a simulating movements in the car window and vehicle parking stall window closes automatically control functions. Using single-chip microputer c

5、ontrolled core not only low prices but stable performance, simple circuit.Keywords: microcontroller;DC motor ;window lift;temperature detection目 录第1章 绪论.11.1 选题意义.11.2自动车窗升降控制器的开展历程.11.3 本文主要研究容.2第2章 系统元件选择与论证.32.1 单片机选择与论证.32.2 电机驱动芯片选择与论证.42.3 温度传感器筛选与论证.42.4 显示器选择与论证.42.5 系统方案设计.5第3章 硬件电路设计.63.1

6、硬件系统总体设计.63.2 STC89C52RC微处理器核心电路.63.2.1 STC89C52RC单片机简介.63.2.2 晶振电路.83.2.3 单片机复位电路.93.2.4 单片机总体硬件电路设计.93.3 电源输入电路.103.4 L9110电机驱动电路.113.4.1 L9110芯片.113.5 1602液晶显示器电路.123.5.1 1602液晶显示器.123.5.2 1602LCD电路设计.143.6 DS18B20数字温度传感器电路.153.6.1 DS18B20的主要特征.153.6.2 工作原理及应用.153.6.3 DS18B20数字温度传感器电路设计.173.7 按键模

7、块设计.17第4章软件程序设计.184.1 C语言在单片机中的应用.184.1.1 文件包含处理.18单片机引脚定义.194.2 主程序流程图设计.194.3 DS18B20传感器模块程序设计.204.4 LCD1602模块程序设计.22第5章 软硬件调试.315.1 硬件调试.315.2 软件程序调试.325.3 软硬件联调.32结语.33参考文献.34致 .36附录1硬件电路原理图.37附录2元器件清单.38附录3源程序清单.39附录4硬件实物图.42. . .第1章绪论1.1 选题意义车窗是汽车必不可少的重要部件。它不仅可以遮风挡雨,为驾驶人提供足够的视角来平安的行车而且调节车窗的开度可

8、以使车的温度,湿度和气压适应驾驶人和乘客。当汽车高速行驶时,车窗翻开必然要提高汽车的风阻系数1从而使车辆的用油量变多,而且风产生的噪音会对驾驶人和乘客的听力造成一定的破坏。同时一旦发生意外翻开的车窗也成为隐患,不利于保护乘客。当汽车低速行驶时,车窗的开度需要不断地调整来满足乘坐舒适的需要。鉴于以上原因,车窗的开度不时需要调节。为了使车窗可以自由调节开度以及操作更加简便灵活车窗升降控制器就成了控制车窗的关键部件。目前大多数汽车制造商制造的汽车都会有车窗升降控制器,车窗的升降功能已经是汽车的标准功能之一。我相信没有哪个消费者会购置一款没有车窗升降功能的汽车。综上所述,自动车窗升降控制器关系到驾驶人

9、和乘客的舒适度和安康,行车平安以及车辆的行驶本钱等等。1.2 自动车窗升降控制器的开展历程早期的汽车采用传统的手动升降车窗。欧洲的一些豪华汽车制造商于二十世纪八十年代后期将自动窗户控制器首次应用于他们制造的汽车上,经过几十年的开展,其应用技术已相当成熟。目前国许多车辆也有这样的配置,它的设计思想是将汽车车窗的平常工作状态和停顿状态输入的模拟信号进展A/D转换,把读取的数字信号存储在存储器ROM,通过一个特定的微处理器匹配窗户自动关闭时与正常工作时信号的差异,再通过程序编写来控制电机的旋转2。因为整个过程是连续依次的,可以确保电池没有在充电状态下放电,所以电池和电机能够高效,平安的工作。现在通过

10、微控制器控制车窗已经普及,实现的功能也多种多样,我相信将来的车窗控制器会更加人性化,智能化。1.3 本文主要研究容本次设计是以STC89C52RC单片机为核心控制器,主要研究容如下:(1) 熟悉STC89C52RC单片机的引脚功能及其硬件外围电路和软件程序的设计。(2) 直流电机驱动芯片L9110的了解,运用以及该芯片电路图的绘制,LCD1602的运用和温度传感器DS18B20的运用。(3) 硬件电路设计遵循布局合理简单,易于实现,简单实用的原则,使系统的抗干扰性能以及各项技术指标都到达设计要求。(4) 学习,研究高级语言C语言在单片机中的应用。(5) 硬件模块的仿真,软件程序的调试以及程序下

11、载到STC89C52RC单片机中运行。第2章系统元件选择与论证本次设计会使用到单片机、传感器、电机驱动芯片、LED/LCD、独立按键等元件。所以在使用何种型号的元件的问题上有必要进展选择和论证。所以,系统的元件选择应在顺应自动车窗升降控制器功能的前提下,以控制器所处的环境条件为参考,所设计的各个硬件模块电路不仅要符合设计要求的技术参数而且要完成相应的功能。元器件的选择不仅要考证其实用性而且要满足易于购置,参数适宜,性能稳定,功耗低,本钱低廉的特点3。2.1 单片机选择与论证从处理能力的角度来看,AT系列微控制器分为根本和增强两个种类。两种类型的单片机区分主要是从芯片的末位数字1和2来判定。假设

12、末位数字是1,就代表该单片机为根本型。根本的单片机含4字节的掩膜ROM,128位的RAM,2个16位定时器/计数器,5个中断源,4个并行口和1个串行口。假设末位数字是2,就代表该单片机为增强型。增强型单片机拥有8字节掩膜ROM,256位的RAM,3个16位的定时器/计数器,6个中断源,4个并行口和1个串行口4。由以上容可知增强型单片机较根底型有以下优势:(1) 片ROM增加了4KB的存储空间。(2) 片数据存储器提高了128位的存储空间,可以处理更多的数据。(3) 定时器/计数器从2个增加到了3个,在串行通信中可以设置更高的波特率。(4) 中断增加了1而且增加1个看门狗增强型还在数据指针和断电

13、保护等方面有些进步。(5) 增强型最高时钟频率可达33MHz,根底型大抵只有24MHz5。当前市场上的AT89C51已经停销,取代它的是具有ISP能力的S系列单片机。相比于C系列S51/52具备系统编程功能(ISP)。考虑到够买器件的价格和难易度,本次设计选择购置宏晶科技公司生产的STC89C52RC单片机。2.2 电机驱动芯片选择与论证众所周知单片机是5V供电,工作电流很小。本次设计购置的直流电机工作电流在1.5A左右,如果直接将直流电机接在单片机上会造成动力缺乏,过小的电流时电机不能转动。这时需要电机驱动来提供足够的电流使直流电机能够正常工作。而且电机工作时会产生扰动,扰动电流会影响控制器

14、件的正常工作甚至遭到损坏。电机驱动芯片可以很好的解决这个问题6。由于单片机是5V供电而且本次设计不需要大功率直流电机,所以选择的是5V供电的小型直流电机。则,选择电机驱动芯片时不需要太大的电压围和工作电流,所以本次设计选择了L9110电机驱动芯片。2.3 温度传感器筛选与论证因为本次设计中有测温的附加功能,所以需要用到温度传感器。温度传感器的种类很多,从测量点上看有接触式和非接触式两大类。从温度传感器的出现开展到现在大体包含四个种类:热电偶、热敏电阻、电阻温度传感器和IC温度传感器。这四个种类中的IC温度传感器根据输出方式的不同又可以分为:模拟输出和数字输出两种种类7。本次设计是以单片机为核心

15、控制器的,温度传感器的选择上还是数字输出型的IC传感器更为方便,简单,对于后续程序设计也大大减少了工作量。当前市场上的IC温度传感器还是以美国DALLAS半导体公司的DS18B20传感器为主。它不仅是数字输出型的还是单总线型的,也就是说它与单片机的接口只有一根线,硬件电路十分简单。2.4显示器选择与论证显示局部可以使用数码管或液晶显示芯片。但是假设使用数码管的话电路接线太过复杂而且软件设计也会大大增加难度,所以这次我选用了1620液晶显示器。液晶显示器相比于其他显示器有很多优点:功率小耗能低、小巧玲珑、可以显示字符及图形、厚度小,由于以上优点使它在各种仪器仪表和小型低功率系统放异彩。液晶显示器

16、又有字符型和图形型之分,顾名思义字符型可以显示字符;图形型可以显示图形。液晶显示器有单行十六字的;也有两行十六字的;两行二十字的8。1620是一种通用模块。与数码管相比该模块有如下优点:1.位数多,可显示32位,32个数码管体积相当庞大了2.显示容丰富,可显示所有数字和大、小写字母3.程序很简单,如果使用数码管动态显示,将需要大量的时间来刷新显示,而1602的自动完成功能。2.5 系统总体方案设计按下控制开关,控制开关和温度传感器将命令或信号传送给单片机,单片机接收到信号后通过程序的执行再发出控制命令,电机驱动电路连接在单片机和电机之间,能够采集直流电机的电流将其作样本,把样本信号传送给单片机

17、中的AD转换采样模块,单片机处理采样信号后发出控制指令返回给电机执行,电机就可以进展相应的动作所以才能控制玻璃的升降运动。液晶显示器也是通过单片机中的程序执行来显示相应的字符。图2-1 自动车窗升降控制器总体设计框图第3章硬件电路设计3.1 硬件系统总体设计本系统的硬件主要由STC89C52RC单片机核心电路、1602液晶显示器电路、DS18B20数字温度传感器电路、电源电路以及L9110电机驱动电路和5V直流电机组成。以下是硬件构造框图。图3-1 自动车窗升降控制器硬件构造框图3.2 STC89C52RC微处理器核心电路 STC89C52RC单片机简介STC89C52RC是宏晶科技生产的最新

18、单片机,该单片机有处理速度快、功率小能耗低、抗扰动性能强的特点。它的控制指令标示符是和传统AT系列8051单片机兼容的。它还有十二时钟/机器周期和六时钟/机器周期两个工作频率,用户可以随意挑选。主要特性如下:15V单片机工作电压围是3.3V到5.5V。2其工作频率围为040MHz。3拥有片ROM8KB,片512BRAM。4共有输入/输出口有32个,当清零后为:P14口是准双向口,P0口是集电极开路输出,当P0口接上拉电阻起输入/输出口作用,当P0口不接上拉电阻时作总线扩展用。5ISP/IAP,与普通的单片机不同的是它可以直接通过预留的引脚下载软件,不需要编程器和仿真器节省了很多资源。6拥有3个

19、16位定时器/计数器。7它拥有四个外部中断源,时钟下降沿触发中断并进入掉电模式9。图3-2 STC89C52RC引脚图STC89S52RC引脚功能说明:VCC:电源GND:接地P0口:P0口可以作一个八位漏极开路的双向I/O口使用或者作为低八位地址/数据总线使用。当P0口作双向I/O口时,每个口能驱动八个肖特基门。当调用外部存储器时,P0口开场作为低八位地址总线,然后再作为双向数据总线使用,这时需要外接一个地址锁存器。在这个分时复用的情况下,P0具有部上拉电阻。P1口:P1口和P2口在数据输入功能上一样。对P1端口写1”时,其中部的上拉电阻把端口的电平拉高,这时P1口承当着输入口的作用。当作其

20、作为输入口使用时,部的高电平电阻和外部的低电平引脚产生压降,这个压降便输出了一个电流。此外,P1.0和P1.2引脚具有复用功能,当作触发输入和外部计数输入时它们可以单独作为定时器/计数器2P1.0/T2和定时器/计数器2P1.1/T2E*。P2口:P2口和P1口在数据输入功能一样。但P2口在访问外部程序存储器或用16位地址读取外部数据存储器时,P2口送出高八位地址。在使用八位地址访问外部数据存储器功能时,P2口的容被锁存在整个访问期间都不会改变。P3口:P3口和P1口一样有一般I/O口所具有的功能和特点,但它也有一些复用功能。如P3.0:R*D(串行输入口),P3.1:T*D(串行输出口),P

21、3.2:外部中断0,P3.3:外部中断1,P3.4:定时器0的外部输入,P3.5:定时器1的外部输入,P3.6:外部存贮器的数据写选通,P3.7:存贮器数据的外部读选通。RST:复位端口。晶振工作时,在RST端口不连续给出两个时钟周期的高电平单片机就会清零。看门狗计时完成后,RST脚输出96个晶振周期的高电平。特殊存放器AU*R(地址8EH)上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。EA/VPP:片外程序存储器访问许可/编程电压输入引脚。在这个引脚上电平是零还是一决定了该引脚执行那个存储器里的程序。如果引脚上的电位是1”,单片机从片ROM的0000H单元开场执

22、行到FFFFH单元;如果引脚上的电位是0”,单片机只从片外程序存储器中的初始单元开场运行程序。用户对单片机片flash进展并行编程时,此引脚会接收到十二伏的编程电压。*TAL1:振荡器反相放大器和部时钟发生电路的输入端。*TAL2:振荡器反相放大器的输出端10。晶振电路微处理器的正常运行需要矩形脉冲信号来提供其部各种微操作的时间准则。时钟信号的产生通常有两种,一种是部振荡方式另一种是外部振荡方式。由于单片机部自带振荡器反向放大器,为了电路简单此处选择采用部振荡方式。部振荡方式是在*TAL1和*TAL2之间接一个石英晶体或瓷振荡器11,分别在两端接上一个电容来稳定振荡频率。晶振电路相当于一个电容

23、和一个电阻并联再串联一个电容的二端网络。在这个网络中有两个谐振点,串联谐振是谐振频率较低的点,并联谐振是谐振频率较高的点。因为晶体自己本身的物理特点使串联谐振和并联谐振的差异不是很明显即频率大致一样,在这个极小的差距,晶振就相当于一个电感。晶振可以选用12MHz。单片机处理速度取决于最小系统的晶振频率,因此为了有更快的处理速度可以采用更高频率的晶振12。晶振负载电容一般使用15 30pF,为了减少寄生电容,晶振和电容要尽可能靠近,单片机和晶振间也要尽可能近。这个取值是数据手册推荐的经历值。单片机复位电路单片机在启动时都需要复位,来使单片机及各个局部都在初始时的工作状态。在单片机处在平时的工作状

24、态和振荡器的稳定状态的时候,只需要在第9引脚RST接个2毫秒的高电平就使单片机复位。上电复位只需要在复位端口上接个电容和电源,下端连接一个电阻和接地。在上电位复位操作的过程中,上电操作的时候,复位电路经电容来给复位端提供高电压,这高电压会跟着电容的作用而逐渐减弱。为了保证系统可靠地复位,高电平必须持续足够长的时间。复位电路使用的是十千欧的电阻和十微法的电容。在这样的参数下只需要0.1S的时间就能够使电容充电的容量到达电源电压的0.7倍。在微控制器运行0.1S中,电容的电压在03.5V增0加。此时十千欧电阻两端的电压从51.5V反而在减少。所以在0.1S,RST引脚所接收到的电压是5V1.5V。

25、在5V正常工作的51单片机中小于1.5V的电压信号为低电平信号,而大于1.5V的电压信号为高电平信号。所以在开机0.1S,单片机系统自动复位RST引脚接收到的高电平信号时间为0.1S左右13。上电复位电路的原理是单片机RST引脚接收到2uS以上的高电平信号,只要保证电容的充放电时间大于2uS,即可实现复位,所以电路中的电容值是可以改变的14。单片机总体硬件电路设计这局部是本系统的核心局部,提供了一个让单片机能够正常工作的最小电路。其中,上电复位电路是实现单片机的上电复位功能本电路不含手动复位按钮,断电开机等于复位。软件程序下载接口是现有的不需要购置编程器,STC89C52RC单片机拥有下载程序

26、的专用接口。晶振电路是给单片机提供振荡信号的,而晶振旁的两个电容则是晶振的负载电容。单片机的P0口与其他接口不同,P0口是集电极开漏输出,原本就是低电平不能满足外围电路工作需求即没有高电平的驱动能力。为了给单片机外部电路一个高电平来驱动相应的功能模块需要加装一些电阻。这些电阻接在电源正极和单片机对应的P0口上,该电阻就叫上拉电阻。图3-3 STC89C52RC单片机电路3.3 电源输入电路图3-4 电源输入电路本局部是用于电源输入的,其中104电容起到的是去除干扰的作用,而220uF电解电容是用于稳定输入电源用的。VCC即提供到系统各处的5V电压,通过限流电阻和电源灯实现电源接通的指示。3.4

27、 L9110电机驱动电路3.4.1 L9110芯片L9110是电机驱动芯片。它是两通道推挽式功率放大专用集成电路器件,将分立电路集成在单片集成电路之中,使外围器件本钱降低,整机可靠性提高。该芯片有两个 TTL/CMOS兼容电平的输入,具有良好的抗干扰性;两个输出端能直接驱动电机的正反向运动,它具有较大的电流驱动能力,每通道能通过 750800mA 的持续电流,峰值电流能力可达 1.52.0A;同时它具有较低的输出饱和压降;置的钳位二极管能释放感性负载的反向冲击电流,使它在驱动继电器、直流电机、步进电机或开关功率管的使用上平安可靠。L9110被广泛应用于玩具汽车电机驱动、步进电机驱动和开关功率管

28、等电路上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电容是吸收电机运转过程中发出的干扰,以免影响整体电路

29、的稳定性。3.5 1602液晶显示器电路3.5.1 1602液晶显示器1液晶显示的原理液晶显示原理是液晶的物理性质的使用,电压控制显示区域,区域电压的不同就可以显示图形及字符。市场上销售的液晶显示器在个人电脑、智能手机、电视机、数字摄影机等众多领域都有应用。2液晶显示器的分类目前液晶显示器在市场上有各种各样的型号及种类,如果按照其显示器的工作方式分,可分为段式、字符式、点阵式等。LCD不仅拥有显示黑白、彩色等各种颜色的能力,还有可以根据外界光强调整灰度的功能。如果根据驱动方式来分,可分为静态驱动,单纯矩阵驱动和有源矩阵驱动三种。图3-61602液晶显示器引脚图引脚接口说明如表3-1所示:表3-

30、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

31、/W为读写信号线,高电平时进展读操作,低电平时进展写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据16。第6脚:E端为使能端,端口工作在下降沿,即下降沿时液晶电路运行指令。第714脚:D0D7为8位双向数据线。第15脚:背光源正极。第16脚:背光源负极。3.5.2 1602LCD电路设计图3-7 1602LCD电路图LCD电路原理图的设计主要是控制存放器选择端、读写信号选择端及使能端的状态,双向数据线与单片机的双向I/O口之间的连接,另外就是液晶显示器的背光电源与驱动电源之间的连接以及比照度调节

32、了。3.6 DS18B20数字温度传感器电路 DS18B20的主要特征最近美国的DALLAS半导体公司发布了一款改良型的智能温度传感器那就是DS18B20温度传感器。它是环境控制,设备或过程控制,温度类消费电子产品。传统的热敏电阻等元件测温后的值并不是温度值而是电阻值要想知道具体的温度还需要将电阻值换算成温度值这样一来就特备麻烦。但是本次设计使用的传感器就没有这样复杂,它可以直接测出被测物体的温度,并且用户可以根据实际需求自行编程改变其数值读数方式。由DS18B20测量物体的温度是以数字信号在单总线中传送的,大大提高了测量的准确度减少了外部的扰动,对于一些控制环境比拟差的场所该传感器也能够准确

33、无误的测量。该传感器的工作电压在3V到5V之间,使系统设计更加灵活、方便17。其特征可概括如下:1、独特的单线接口仅需要一个端口引脚进展通信;3、采用了3线制与单片机相连,减少了外部硬件电路;4、零待机功耗;5、可通过数据线供电,电压围在;6、用户可定义的非易失性温度报警设置;7、对超温和搜索命令识别有报警功能;8、当正负极接反时,传感器不会因反向电流作用而损坏,只是停顿工作而已。9、全数字温度转换及输出。 10、拥有十二位分辨率,测量精度可达正负零点五摄氏度,精度非常高。11、检测温度围是零下五十五度到一百二十五度。12、64 位光刻 ROM,置产品序列号,方便多机挂接。13、多样封装形式,

34、适应不同硬件系统。3.6.2 工作原理及应用DS18B20 的温度检测与数字数据输出全集成于一个芯片之上,从而抗干扰力更强。它有温度检测和数据处理两个局部,而且这两个局部是在一个工作周期中完成的。DS18B20作为一个温度传感器其的部数据和程序存储器资源也很充足。DS18B20 共有三种形态的存储器资源,它们分别是:1ROM只读存储器,它拥有64位的存储空间用来储存 DS18B20的程序代码,开场的八位是单线系列编码DS18B20 的编码是19H,后面四十八位是芯片独一无二的序列号,最后八位是以上五十六的位的 CRC码冗余校验。芯片在出厂时的设置用户不能自行随意改动。2RAM 数据暂存器,DS

35、18B20 部RAM共9KB。暂存器顾名思义就是部运算输入/输出数据暂时存放的地方,这些数据不能永久保存在芯片中,芯片掉电时会自动丧失。前两个字节单元存放的是被测物体温度翻译后的数据代码信息,第三、四个字节是用户非易失性存储器常用于温度报警值储存的镜像。在上电复位后非易失性存储器中的信息被清空。第五个字节则是用户的第三个非易失性存储器的镜像。第六、七、八字节为计数存放器,这三个字节是部运算结果和温度值转化的临时存储单元。另外这三个字节还可以提高温度检测的分辨率。最后一个字节为前八个字节的冗余校验码18。3EEPROM 非易失性存储器。它和RAM有本质区别,保存在EPROM中的数据不易丧失,适合

36、将一些需要长时间不需改动的数据存放其中。如上下限温度报警值和校验数据。DS18B20中共三位非易失性存储器,并在数据暂存器中都存在镜像,这些镜像可以方便使用者调取使用,大大简化了设计。LSB位置/去除增加计数器1斜率累加器计数比拟器温度存放器减到0预置计数器2减到0停顿预置低温度系数晶振高温度系数晶振图3-8 DS18B20测温原理3.6.3 DS18B20数字温度传感器电路设计DS18B20数字温度传感器使用单总线协议传输,第二个引脚DQ接的是单片机的P2.4引脚。为了增强稳定性排除外部干扰,在DQ引脚处做上拉电阻处理,电阻阻值为4.7K。第一脚是VCC引脚,第三脚是GND引脚。图3-9 D

37、S18B20数字温度传感器电路设计3.7 按键模块设计本次设计用到了四个按键,其中一个用来模拟汽车车窗的行程开关,另外三个采用独立按键,如图3-10所示S1为上升按钮,S2为下降按钮,S3为一键升降按钮。这三个独立按键分别连接在STC89S52RC的P1.13接口上。采用该此种接法电路简单易于检查错误,软件程序编写方便快捷也可节省单片机资源。图3-10 按键模块电路如上图所示S1为上升按键,用来控制电机正转;S2为下降按钮键,用来控制电机反转;S3为自动上升按键,用来模拟汽车停车落锁信号以控制电机连续正转。当车窗上升到一定高度车窗触碰到行程开关,即模拟行程开关的按键按下时直流电机停顿转动。第4

38、章软件程序设计本次设计的自动车窗升降控制器是由单片机做核心控制器的所以必须要有程序来控制硬件的动作。因此软件设计业应当是和硬件电路模块设计对应的。把整个系统分为几个模块分别进展编写、调试、运行。最后在用一个主程序把各个模块连接起来,实现最终的功能。模块化设计使主程序变得简单、清晰明了,使阅读和维护程序变得容易。模块化设计就像组装一台计算机一样,事先生产好各个部件,最后组装计算机时直接把做好的部件装上就好了这样使程序设计难度降低,思路更清晰,调试更方便同时增强了程序的可移植性。单片机已经出现了几十年最初的汇编语言也正在被高级语言取代,由于汇编语言复杂难以理解,目前已有大多数的人已经习惯使用高级语

39、言开发,其中主要是以C语言为主,现在许多单片机制造厂家都开发了C语言开发环境19。4.1 C语言在单片机中的应用4.1.1 文件包含处理文件包含其实是一个载体文件,此文件定义了一些常用函数和数据接口声明。简单来说就是将一个模块装载到另一个模块中,这样就可以在总模块中调用子模块的端口等。如下面一句程序:#include reg51.h这里程序中包含REG51.h文件。为了要确定使用的是STC89C52RC微处理器的端口而不是其它变量,此句程序即通知C编译器实现这样的目的。假设开启reg51.h 能够看到以下的容:/* BYTE Register */sfr P0 = 0*80;sfr P1 =

40、0*90;sfr P2 = 0*A0;sfr P3 = 0*B0;sfr PSW = 0*D0;sfr ACC = 0*E0;等上述的P1P3等就是单片机中的I/O口,这里的赋值语句规定了符号名与地址的对应关系。如sfr P2 = 0*A0;0*A0是对P2口地址的定义,P2端口地址为0*A00*A0是十六进制数的方法,C语言相当于汇编语言写的A0h20。sfr是单片机中的特殊功能存放器,而在标准C语言中并没有sfr关键字,为何sfr可以直接出现在C语言程序中呢?特殊功能存放器能直接接入单片机是因为Keil提供了一种新的关键字,它的使用方法是:sfrt变量名=地址值。单片机引脚定义在 C语言里

41、,引脚的定义不能直接引用单片机中的符号。比方直接写P2.1就是错误的。因为P2.1是一个不合法的C语言的变量名,C编译器并不能识别,所以不能使用原来的标号需要重新定义,这里修改的变量名为P1_0,用关键字sbit来定义,对SBIT使用如下:第一种方法:sbit位变量名地址值第二种方法:sbit位变量名SFR名称变量位地址值第三种方法:sbit位变量名SFR地址值变量位地址值4.2 主程序流程图设计图4-1 主程序流程图4.3 DS18B20传感器模块程序设计DS18B20温度传感器是与微控制器之间的连接只有一根线即单总线系统。软件程序设计是实现硬件功能的根底。温度传感器整体功能是测温并将数据传

42、送出去但要完成这项功能必须要软件程序的设计。当单片机作为主要控制器时,必须由用户自己在单总线协议的根底上21,用C语言写的程序,提高了软件设计的难点。为了确保数据不受干扰,无错误地传送,必须保证任何时刻单总线上仅有一个控制命令或数据在传输。处理次序操作时,一般有以下四个过程:1初始化;2传送程序储存器命令;3传送RAM命令;4数据交换22。通过上述四个可知一根总线上所有操作都从初始化开场的。初始化时钟信号是由脉冲组成的。该脉冲可以是复位脉冲或是应答脉冲。/*ds18b20初始化23函数*/void Init_DS18B20(void) unsigned char *=0; DQ = 1; /D

43、Q复位 delay_18B20(8); /做一点延时 DQ = 0; /单片机DQ拉低了 delay_18B20(80); /做准确延时,延时时间大于480us DQ = 1; /拉高总线 delay_18B20(14); *=DQ; /稍微延迟如果* = 0是成功地如果* = 1的初始化失败 delay_18B20(20);/*ds18b20读一个字节*/ unsigned char ReadOneChar(void)unsigned char i=0;unsigned char dat = 0;for (i=8;i0;i-) DQ = 0; / 脉冲信号 dat=1; /数据右移一位 DQ

44、 = 1; / 给脉冲信号 if(DQ) dat|=0*80; /位或,取高位 delay_18B20(4); return(dat);/*ds18b20写一个字节*/ void WriteOneChar(unsigned char dat) unsigned char i=0; for (i=8; i0; i-) DQ = 0; DQ = dat&0*01; /取最低位 delay_18B20(5); DQ = 1; /上升沿将数据输入 dat=1; /*读取ds18b20当前温度*/ char NEG_FLAG; /负号记录变量 unsigned int ReadTemp(void)uns

45、igned char a=0;unsigned char b=0;unsigned char t=0; unsigned int tvalue; /温度值 EA=0;Init_DS18B20();WriteOneChar(0*CC); / 跳过读序号列号的操作WriteOneChar(0*44); /转换温度delay_18B20(100); / 延时Init_DS18B20();WriteOneChar(0*CC); /跳过读序号列号的操作WriteOneChar(0*BE); /读取温度存放器等共可读个存放器前两个就是温度delay_18B20(100); / 延时a=ReadOneCha

46、r(); /读取温度值低位b=ReadOneChar(); /读取温度值高位EA=1; tvalue=b; tvalue = 8;/将温度值左移位,腾出低八位空间 tvalue = tvalue | a;/将低位并到温度值的低八位上刚已经腾出来了tvalue = tvalue*(0.625); /按照数据手册分辨率,将温度值乘以分辨率得出真实温度值,本值的个位即小数位return(tvalue);/返回真实温度值#endif4.4 LCD1602模块程序设计要编写1602液晶显示器模块的程序需要了解其部运算器的十一个控制命令,这十一个命令包含及实现了1602液晶模块所有的逻辑或运算操作。指令1

47、:将光标重置到初始单元00H,指令代码:01H。指令2:将光标返回初始单元00H。指令3:光标和显示模式设置I/D:光标移动方向由上下电平决定,高电平右移,低电平左移S:液晶显示器上的字符或图形是否需要移动,同样是由上下电平决定的。高电平表示需要移动,低电平则表示不需要移动。指令4:显示开关控制。D:决定整个液晶显示器工作状态,由上下电平决定。高电平决定整体开,低电平决定整体关。C:决定是否有光标,也由上下电平决定。高电平决定有光标,低电平决定无光标B:决定是否有光标闪烁,还是由上下电平决定。高电平闪烁,低电平不闪烁。指令5:光标或显示移动选择S/C:上下电平决定是移动文字还是移动光标。高电平

48、移动文字,低电平移动光标。指令6:功能设置命令DL高电平时为4位总线,低电平时为8位总线N:低电平时为单行显示,高电平时双行显示F:低电平时显示5*7的点阵字符,高电平时显示5*10的点阵字符。指令7:配置RAM地址。指令8:配置DDRAM地址。指令9:读忙信号和光标地址BF:为是否空闲标志位,高电平表示不空闲,此时模块不能接收命令或者数据;低电平表示空闲,模块可以接收命令或数据。指令10:写操作。指令11:读操作24。#define uchar unsigned char /宏定义#define uint unsigned int/宏定义uchar code table=0123456789

49、 .;/定义字符串表sbit LcdRs= P25;/定义液晶rssbit LcdRw= P26;/定义液晶rwsbit LcdEn = P27;/定义液晶ensfr DBPort =0*80; /部等待函数*unsigned char LCD_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_()

50、;_nop_(); _nop_();_nop_();_nop_();/时序,拉高EN电平LcdEn=0;/时序,拉低EN电平_nop_();nop_();_nop_();_nop_();_nop_();_nop_();_nop_();return DBPort;/向LCD写入命令或数据*#define LCD_MAND0 / 命令#define LCD_DATA1 / 数据#define LCD_CLEAR_SCREEN0*01 / 清屏#define LCD_HOMING 0*02 / 光标返回原点void Delay_50us(unsigned int times) /延时us unsig

51、ned int i; for (i=0; itimes; i+) /循环 _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); /空指令延时_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); /空指令延时 void Delay_ms_Lcd1602(unsigned int times) /延时ms unsigned int i; for (i=0; itimes; i+) Delay_50us(32); / 调用延时函数,延时ms void

52、 LCD_Write(bit style, unsigned char input)/液晶写函数,无返回值,声明了bit和unsigned char 变量LcdEn=0;/时序,拉低EN电平LcdRs=style;/将方式复制给RSLcdRw=0;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); _nop_(); _nop_();/时序,拉低RW电平。DBPort=input;_nop_(); _nop_(); _nop_();_nop_();_nop_();_nop_();_nop_();_nop

53、_();_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();/液晶等待函数/设置显示模式*#define LCD_SHOW0*04 /显示开#define LCD_HIDE0*00 /显示关#define LCD_CURSOR0*02 /显示光标#define LCD_NO_CURSOR0*00 /无光标#define LCD_FLASH0*01 /光标闪动#define LCD_NO_FLASH0*00 /光标不闪动

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!