车窗升降控制器地设计_第1页
车窗升降控制器地设计_第2页
车窗升降控制器地设计_第3页
车窗升降控制器地设计_第4页
车窗升降控制器地设计_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

2、。关键词:单片机;直流电机;车窗升降;温度检测design and manufacture of automatic window lift controllerabstract: windowsa re 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, elect

3、ronic control 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 microcomputer integrated control module controller. this design is also stc89c52rcs cma s the core controller, l9110 ch

4、ip for motor 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! n the car window and vehicle parking stall window closes automatically control functions. using single-chip m

5、icrocomputer controlled 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.

6、1 硬件系统总体设计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 按键模块设计17第4

7、章软件程序设计 184.1 c语言在单片机中的应用 184.1.1 文件包含处理184.1.2 单片机引脚定义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、乘客。当汽车高速行驶时,车窗打开必然要提高汽车的 风阻系数m从而使 车辆的用油量变多,而且风产生的噪音会对驾驶人和乘客 的听力造成一定的破坏。同时一旦发生意外打开的车窗也成为隐患,不利 于保护乘客。当汽车低速行驶时,车窗的开度需要不断地调整来满足乘坐 舒适的需要。鉴于以上原因,车窗的开度不时需要调节。为了使车窗可 以自由调节开度以及操作更加简便灵活车窗升降控制器就成了控制车窗的关 键部件。目前大多数汽车制造商制造的汽车都会有车窗升降控制器,车窗 的升降功能已经是汽车的标准功能之一。我相信没有哪个消费者会购买一 款没有车窗升降功能的汽车。综上所述,自动车窗升降控制器关系到驾驶 人和乘客的舒适度和

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

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

11、下载到stc89c52rc单片机中运行。第2章系统元件选择与论证本次设计会使用到单片机、传感器、电机驱动芯片、led/lcd、独立按 键等元件。所以在使用何种型号的元件的问题上有必要进行选择和论证。 所以,系统的元件选择应在顺应自动车窗升降控制器功能的前提下,以控 制器所处的环境条件为参考,所设计的各个硬件模块电路不仅要符合设计要 求的技术参数而且要完成相应的功能。元器件的选择不仅要考证其实用性 而且要满足易于购买,参数合适,性能稳定,功耗低,成本低廉的特点 。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个串行口闿。由以上内容可知增强型单片机较基础型有 以下优势:(d 片内rom增加了 4kb的存储空间。(2)片内数据存储器提高了 128位的存储空间,可以处理更多的数 据。(3)定时器/计数器从2个增加到了 3个,在串行通信中可以设置更高 的波特率。(4)中断增加了 1而且

13、增加1个看门狗增强型还在数据指针和断电保 护等方面有些进步。(5)增强型最高时钟频率可达33mhz,基础型大抵只有24mhz,o 当前市场上的at89c51已经停销,取代它的是具有isp能力的s系列 单片机。相比于c系列s51/52具备系统编程功能(isp) o考虑到够买器件的价格和难易度,本次设计选择购买宏晶科技公司生产的stc89c52r单 c片机。2.2 电机驱动芯片选择与论证众所周知单片机是5v供电,工作电流很小。本次设计购买的直流电机 工作电流在1.5a左右,如果直接将直流电机接在单片机上会造成动力不 足,过小的电流时电机不能转动。这时需要电机驱动来提供足够的电流使 直流电机能够正常

14、工作。而且电机工作时会产生扰动,扰动电流会影响控 制器件的正常工作甚至遭到损坏。电机驱动芯片可以很好的解决这个问题o由于单片机是5v供电而且本次设计不需要大功率直流电机,所以选择 的是5v供电的小型直流电机。那么,选择电机驱动芯片时不需要太大的电 压范围和工作 电流,所以本次设计选择了 l9110电机驱动芯片。2.3 温度传感器筛选与论证因为本次设计中有测温的附加功能,所以需要用到温度传感器。温度 传感器的种类很多,从测量点上看有接触式和非接触式两大类。从温度传 感器的出现发展到现在大体包含四个种类:热电偶 热敏电阻 电阻温度 传感器和ic温度传感器。这四个种类中的ic温度传感器根据输出方式的

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

16、可以显示字符及图形 厚度小,由于以上优点使它在各种仪器仪表和 小型低功率系统中大放异彩。液晶显示器又有字符型和图形型之分,顾名 思义字符型可以显示字符;图形型可以显示图形。液晶显示器有单行十六字 的;也有两行十六字的;两 行二十字的回。1620是一种通用模块。与数码管 相比该模块有如下优点:1 .位数多,可显示32位,32个数码管体积相当庞大了2 .显示内容丰富,可显示所有数字和大、小写字母3 .程序很简单,如果使用数码管动态显示,将需要大量的时间来刷新 显示,而1602的自动完成功能。2.5系统总体方案设计按下控制开关,控制开关和温度传感器将命令或信号传送给单片机, 单片机接收到信号后通过程

17、序的执行再发出控制命令,电机驱动电路连接 在单片机和电机之间,能够采集直流电机的电流将其作样本,把样本信号传 送给单片机中的a /d转换采样模块,单片机处理采样信号后发出控制指令 返回给电机执行,电机就可以进行相应的动作所以才能控制玻璃的升降运 动。液晶显示器也是通过单片机中的程序执行来显示相应的字符。图2-1自动车窗升降控制器总体设计框图第3章硬件电路设计3.1 硬件系统总体设计本系统的硬件主要由stc89c52r单c片机核心电路、1602液晶显示器电路、ds18b20数字温度传感器电路、电源电路以及l9110电机驱动电路和5v直 流电机组成。以下是硬件结构框图图3-1自动车窗升降控制器硬件

18、结构框图3.2 stc89c52rc微处理器核心电路3.2.1 stc89c52rc单片机简介stc89c52r是c宏晶科技生产的最新单片机,该单片机有处理速度快、功率小能耗低、抗扰动性能强的特点。它的控制指令标示符是和传统at系列8051单片机兼容的。它还有十二时钟/机器周期和六时钟/机器周期两 个工作频率,用户可以随意挑选。主要特性如下:(1) 5v单片机工作电压范围是3.3v至lj 5.5vo(2)其工作频率范围为040mhzo(3)拥有片内rom8k, b片内512bramo(4)共有输入/输出口有32个,当清零后为:p14 口是准双向口,p0 口是集 电极开路输出,当p0 口接上拉电

19、阻起输入/输出口作用,当p0d 不接上拉电阻时作总线扩展用。(5)isp/iap ,与普通的单片机不同的是它可以直接通过预留的引脚下载软件,不需要编程器和仿真器节省了很多资源。(6)拥有3个16位定时器/计数器。(7)它拥有四个外部中断源,时钟下降沿触发中断并进入掉电模式图32stc89c52rc弓|脚图stc89s52rc引脚功能说明:vcc:电源gnd接:地po : p0 口可以作一个八位漏极开路的双向i/o 口使用或者作为低八 位地址/数据总线使用。当p0 口作双向i/o 口时,每个口能驱动八个肖特基 门。当调用外部存储器时,p0 口开始作为低八位地址总线,然后再作为双 向数据总线使用,

20、这时需要外接一个地址锁存器。在这个分时复用的情况 下,p0具有内部上拉电阻。p1 口: p1 口和p2 口在数据输入功能上相同。对p1端口写“ 1”时, 其中内部的上拉电阻把端口的电平拉高,这时p1 口承担着输入口的作用。 当作其作为输入口使用时,内部的高电平电阻和外部的低电平引脚产生压 降,这个压降便输 出了一个电流。此外,p1.0和p1.2引脚具有复用功 能,当作触发输入和外部计数输入时它们可以单独作为定时器/计数器 2(p1.0/t2)和定时器 /计数器 2 (p1.1/t2ex)0p2 口: p2 口和p1 口在数据输入功能相同。但p2 口在访问外部程序存 储器或用16位地址读取外部数

21、据存储器时,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脚

22、输出96个晶振周期的 高电平。特殊寄存器auxr地(址8eh)上的disrt。位可以使此功能无 效。disrto默认状态下,复位高电平有效。ea/vpp:片外程序存储器访问许可/编程电压输入引脚。在这个引脚上电 平是零还是一决定了该引脚执行那个存储器里的程序。如果引脚上的电位是,单片机从片内rom的0000h单元开始执行到ffffh单元;如果引脚上的电 位是“0”,单片机只从片外程序存储器中的初始单元开始运行程序。用户 对单片机片内flash进行并行编程时,此引脚会接收到十二伏的编程电压。xtal1振荡器反相放大器和内部时钟发生电路的输入端。xtal2振荡器反相放大器的输出端皿。3.2.2 晶

23、振电路微处理器的正常运行需要矩形脉冲信号来提供其内部各种微 操作的时间准贝ij。时钟信号的产生通常有两种,一种是内部振荡方式另一种 是外部振荡方式。由于单片机内部自带振荡器反向放大器,为了电路简单 此处选择采用内部振荡方式。内部振荡方式是在xtal1和xtal2之间接一 个石英晶体或陶瓷振荡器分别在两端接上一个电容来稳定振荡频率。晶振电路相当于一个电容和一个电阻并联再串联一个电容的二端网络。 在这个网络中有两个谐振点,串联谐振是谐振频率较低的点,并联谐振是 谐振频率较高的点。因为晶体自己本身的物理特点使串联谐振和并联谐振的 差别不是很明显即频率大致相同,在这个极小的差距内,晶振就相当于一 个电

24、感。晶振可以选用12mhzo单片机处理速度取决于最小系统的晶振频 率,因此为了有更快的处理速度可以采用更高频率的晶振皿。晶振负载电容一般使用1530pf,为了减少寄生电容,晶振和电容要尽 可能靠近,单片机和晶振间也要尽可能近。这个取值是数据手册推荐的经验 值。3.2.3 单片机复位电路单片机在启动时都需要复位,来使单片机及各个部分 都在初始时的工作状态。在单片机处在平时的工作状态和振荡器的稳定状态 的时候,只需要在第9引脚rst接个2毫秒的高电平就使单片机复位。上 电复位只需要在复位端口上接个电容和电源,下端连接一个电阻和接地。 在上电位复位操作的过程中,上电操作的时候,复位电路经电容来给复位

25、 端提供高电压,这高电压会跟着电容的作用而逐渐减弱。为了保证系统可 靠地复位,高电平必须持续足够长的时间。复位电路使用的是十千欧的电阻和十微法的电容。在这样的参数下只需要0.1s的时间就能够使电容充电的容量达到电源电压的0.7倍。在微控制器运 行0.1s中,电容的电压在03.5v增。加。此时十千欧电阻两端的电压从 51.5v反而 在减少。所以在0.1s内,rst引脚所接收到的电压是5v-1.5vo 在5v正常工作的51单片机中小于1.5v的电压信号为低电平信号,而大于 1.5v的电压信号为高电平信 号。所以在开机0.1s内,单片机系统自动复位(rst引脚接收到的高电平信号时 间为0.1s左右)

26、上电复位电路的原理是单片机rst引脚接收到2us以上的高电平信号, 只要保证电容的充放电时间大于2us,即可实现复位,所以电路中的电容值 是可以改变 14|3.2.4 单片机总体硬件电路设计这部分是本系统的核心部分,提供了一个让 单片机能够正常工作的最小电路。其中,上电复位电路是实现单片机的上电 复位功能(本电路不含手动复位按钮,断电开机等于复位)。软件程序下 载接口是现有的不需要购买编程器,stc89c52r单c片机拥有下载程序的专 用接口。晶振电路是给单片机提供振荡信号的,而晶振旁的两个电容则是 晶振的负载电容。单片机的p0 口与其他接口不同,p0 口是集电极开漏输 出,原本就是低电平不能

27、满足外围电路工作需求即没有高电平的驱动能力。 为了给单片机外部电路一个高电平来驱动相应的功能模块需要加装一些电 阻。这些电阻接在电源正极和单片机对应的p0 口上,该电阻就叫上拉电c321jj 2m,jxl图3-3 stc89c52rc单片机电路3.3电源输入电路图3-4电源输入电路本部分是用于电源输入的,其中104电容起到的是去除干扰的作用,而220uf电解电容是用于稳定输入电源用的。vcc即提供到系统各处的5v电 压,通过限流电阻和电源灯实现电源接通的指示。3.4 l9110电机驱动电路3.4.1 l9110 芯片l9110是电机驱动芯片。它是两通道推挽式功率放大专用集成电路器件, 将分立电

28、路集成在单片集成电路之中,使外围器件成本降低,整机可靠性 提高。该芯片有两个ttl/cmos兼容电平的输入,具有良好的抗干扰性; 两个输出端能直接驱动电机的正反向运动,它具有较大的电流驱动能力,每 通道能通过750800ma的持续电流,峰值电流能力可达1.52.0a;同时它具有较低的输出 饱和压降;内置的钳位二极管能释放感性负载的反向冲击电流,使它在驱动 继电器 直流电机、步进电机或开关功率管的使用上安全可靠。l9110被广 泛应用于 玩具汽车电机驱动、步进电机驱动和开关功率管等电路上同。它具 有以下特点:低静态工作电流;宽电源电压范围;2.5v-12v;电流输出能力 为每通道800ma;较低

29、的饱和压降;ttl/cmos输出电平兼容,可直接连 cpu;输出内置钳位二极管,适用于感性负载;控制和驱动集成于单片ic之 中;具备管脚高压保护功能;工作温度:0-80 0vccu234vcc|2385vcc ibvcc ia(ind oagnd ob图3-5电机驱动电路l9110的电机芯片根据数据手册中规定的操作时序,由旧和ia引脚共同决定转动状态,从而使l9110电机驱动芯片的0a和0b引脚分别输出不同 的电平组合而 驱动电机进行正转或反转。l9110电机的3和4引脚都是接入 vcc即5v的电源。电机 上并联的104电容是吸收电机运转过程中发出的干 扰,以免影响整体电路的稳定性。3.5 1

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

31、 7攸晶显小器引脚图引脚接口说明如表3-1所示:表3-1引脚接口说明表编号符号引脚说明编号符号引脚说明1vss电源地9d2数据2vdd电源正极10d3数据3vl液晶显示偏压11d4数据4rs数据/命令选择12d5数据5r/w读/写选择13d6数据6e使能信号14d7数据7do数据15bla背光源正极8d1数据16blk背光源负极第1脚:vss为地电源。第2脚:vdd接5v正电源。第3脚:vl是用来调整液晶显示器对比度的端口,如果该引脚是高电平 那么对比度最小,如果是低电平对比度那么最高,不过对比度太高会产生 重影不利于显示。第3脚能外接一个十千欧的电位器用来调整lcd的对比 度。第4脚:rs为

32、寄存器选择,高电平时选择数据寄存器、 低电平时选择 指令寄存器。第5脚:r/w为读写信号线,高电平时进行读操作,低电平时进行写操 作。当rs和r/w共同为低电平时可以写入指令或者显示地址,当rs为低 电平r/w为高电平时可以读忙信号,当rs为高电平r/w为低电平时可以写 入数据网。第6脚:e端为使能端,端口工作在下降沿,即下降沿时液晶电路运行指令。第714脚:dod7为8位双向数据线。第15脚:背光源正极。第16脚:背光源负极3.5.3 1602lcd电路设计图3-7 1602lcd电路图lcd电路原理图的设计主要是控制寄存器选择端、读写信号选择端及使能端的状态,双向数据线与单片机的双向i/o

33、 口之间的连接,另外就是液晶显 示器的背光电源与驱动电源之间的连接以及对比度调节了。3.6 ds18b20数字温度传感器电路3.6.1 ds18b20的主要特征最近美国的dallas半导体公司发布了一款改进型的智能温度传感器那 就是ds18b20温度传感器。它是环境控制,设备或过程控制,温度类消费 电子产品。传统的热敏电阻等元件测温后的值并不是温度值而是电阻值要想 知道具体的温度还需要将电阻值换算成温度值这样一来就特备麻烦。但是本 次设计使用的传感器就没有这样复杂,它可以直接测出被测物体的温度, 并且用户可以根据实际需求自行编程改变其数值读数方式。由ds18b20测 量物体的温度是以数字信号在

34、单总线中传送的,大大提高了测量的准确度减 少了外部的扰动,对于一些控制环境比较差的场所该传感器也能够精确无误 的测量。该传感器的工作电压在3v到5v之间,使系统设计更加灵活、方 便mo其特征可概括如下:1、独特的单线接口仅需要一个端口引脚进行通信;3、采用了 3线制与单片机相连,减少了外部硬件电路;4、零待机功耗;5、可通过数据线供电,电压范围在3.0v-5.5v ;6、用户可定义的非易失性温度报警设置;7、对超温和搜索命令识别有报警功能;8、当正负极接反时,传感器不会因反向电流作用而损坏,只是停止工作 而已。9、全数字温度转换及输出。10、拥有十二位分辨率,测量精度可达正负零点五摄氏度,精度

35、非常高。 11、检测温度范围是零下五十五度到一百二十五度。12、64位光刻rom,内置产品序列号,方便多机挂接。13、多样封装形式,适应不同硬件系统。3.6.2 工作原理及应用ds18b20的温度检测与数字数据输出全集成于一个芯片之上,从而抗干 扰力更强。它有温度检测和数据处理两个部分,而且这两个部分是在一个工 作周期中完成的。ds18b20作为一个温度传感器其的内部数据和程序存储器 资源也很充足。ds18b20共有三种形态的存储器资源,它们分别是:(1) rom只读存储器,它拥有64位的存储空间用来储存ds18b20的 程序代码,开始的八位是单线系列编码(ds18b20的编码是19h),后面

36、 四十八位是芯片独一无二的序列号,最后八位是以上五十六的位的crc码 (冗余校验)。芯片在出厂时的设置用户不能自行随意改动。(2)ram数据暂存器,ds18b20内部ram共9kb。暂存器顾名思义 就是内部运算输入/输出数据暂时存放的地方,这些数据不能永久保存在芯 片中,芯片掉电时会自动丢失。前两个字节单元存放的是被测物体温度翻译 后的数据代码信息,第三、四个字节是用户非易失性存储器(常用于温度报 警值储存)的镜像。在上电复位后非易失性存储器中的信息被清空。第五个 字节则是用户的第三个非易失性存储器的镜像。第六 七、八字节为计数寄 存器,这三个字节是内部运算结果和温度值转化的临时存储单元。另外

37、这三 个字节还可以提高温度检测的分辨率。最后一个字节为前八个字节的冗余校 验码。(3)eeprom非易失性存储器。它和ram有本质区别,保存在 eprom中的数据不易丢失,适合将一些需要长时间不需改动的数据存放其 中。如上下限温度报警值和校验数据。ds18b20中共三位非易失性存储 器,并在数据暂存器中都存在镜像,这些镜像可以方便使用者调取使用,大 大简化了设计。i停止高温度系数晶振 )计数器2 q减到o |图3-8ds18b20测温原理3.6.3 ds18b20数字温度传感器电路设计ds18b20数字温度传感器使用单总线协议传输,第二个引脚dq接的是 单片机的p2.4弓|脚。为了增强稳定性排

38、除外部干扰,在dq引脚处做上拉 电阻处理,电阻阻值为4.7ko第一脚是vcc引脚,第三脚是gnd引脚。图3-9 ds18b20数字温度传感器电路设计3.7 按键模块设计本次设计用到了四个按键,其中一个用来模拟汽车车窗的行程开关,另 外三个采用独立按键,如图3-10所示s1为上升按钮,s2为下降按钮,s3 为一键升降按 钮。这三个独立按键分别连接在stc89s52r的cp1.13接口 o采用该此种接法电路简单易于检查错误,软件程序编写方便快捷也可节省单片机资源。图3-10按键模块电路如上图所示s1为上升按键,用来控制电机正转;s2为下降按钮键,用 来控制电机反转;s3为自动上升按键,用来模拟汽车

39、停车落锁信号以控制电机连续正转。当车窗上升到一定高度(车窗触碰到行程开关,即模拟行 程开关的按键按下时)直流电机停止转动。第4章软件程序设计本次设计的自动车窗升降控制器是由单片机做核心控制器的所以必须要有 程序来控制硬件的动作。因此软件设计业应当是和硬件电路模块设计对应 的。把 整个系统分为几个模块分别进行编写、调试、运行。最后在用一个 主程序把各个模块连接起来,实现最终的功能。模块化设计使主程序变得简 单、清晰明了,使阅读和维护程序变得容易。模块化设计就像组装一台计算 机一样,事先生产好各个部件,最后组装计算机时直接把做好的部件装上就 好了这样使程序设计难度降低,思路更清晰,调试更方便同时增

40、强了程序的 可移植性。单片机已经出现了几十年最初的汇编语言也正在被高级语言取代,由于 汇编语言复杂难以理解,目前已有大多数的人已经习惯使用高级语言开发, 其中主要 是以c语言为主,现在许多单片机制造厂家都开发了 c语言开发 环境。4.1 c语言在单片机中的应用4.1.1 文件包含处理文件包含其实是一个载体文件,此文件定义了一些常用函数和数据接口声 明。简单来说就是将一个模块装载到另一个模块中,这样就可以在总模块中 调用子模块的端口等。如下面一句程序:include “ reg51.h”这里程序中 包含reg51.h文件。为了要确定使用的是stc89c52r微c处理器的端口而 不是其它变量,此句

41、程序即通知c编译器实现这样的目的。若开启reg51.h 能够看到以下的内容:/* byte register 7 sfr po = 0x80; sfr p1 = 0x90;sfr p2 = ox ao;sfr p3 = oxbo; sfr psw = oxdo;sfr acc = 0xe0;等上述的p1p3等就是单片机中的i/o 口,这里的赋值语句规定了符号名 与地址 的对应关系。如sfr p2 = oxao; oxao是对p2 口地址的定义,p2端口 地址为oxao ( oxao是十六进制数的方法,c语言相当于汇编语言写的 aoh) o sfr是单片机中的特殊功能寄存器,而在标准c语言中并没

42、有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 主程序流程

43、图设计图4-1主程序流程图4.3 ds18b20传感器模块程序设计ds18b20温度传感器是与微控制器之间的连接只有一根线即单总线系统。 软件程序设计是实现硬件功能的基础。温度传感器整体功能是测温并将数据 传送出去但要完成这项功能必须要软件程序的设计。当单片机作为主要控制 器时,必须由用户自己在单总线协议的基础上叫 用c语言写的程序,提 高了软件设计的难点。为了确保数据不受干扰,无错误地传送,必须保证任何时刻单总线上仅有 -个控制命令或数据在传输。处理次序操作时,一般有以下四个过程:(d初始化;(2)传送程序储存器命令;(3)传送ram命令;(4)数据交 换叫通过上述四个可知一根总线上所有操作

44、都从初始化开始的。初始化时钟 信号 是由脉冲组成的。该脉冲可以是复位脉冲或是应答脉冲。/* ds18b20梆化化31函数void lnit_ds18b20(void) unsigned char x=0;复位做一点延时单片机dq 拉低了做精晚时,延时时间 大于480us拉高总线稍微延迟如果x = 0是成功地如果x = 1的初始化失败dq = 1; /dq delay_18b20(8);/ dq = 0;/ delay_18b20(80);/dq= 1;/delay_18b20(14); x=dq;/delay_18b20(20);/* *ds18b20 读一个字节 unsigned char

45、readonechar(void) 0;i-)(dq = 0;/脉冲信号dat=1; /数据右移一位dq = 1;/给脉冲信号if(dq)dat|=0x80; 位或,取高位 delay_18b20(4);return (dat);/*ds18b20 写一个字节void writeonechar(unsigned char dat)unsigned char i=0;for (i=8; i0; i-)(dq = 0;dq = dat&0x01; / 取最低位 delay_18b20;dq = 1;上升沿将数据输入dat=1;读取ds18b20当前温度char neg_flag; /负号记录变量

46、unsigned int readtemp(void) unsigned char a=0;unsigned char b=0;unsigned char t=0;unsigned int tvalue; /ea=0; lnit_ds18b20();跳过读序号列号的操作 转换温度writeonechar(ox44); /writeonechar(oxcc);delay_18b20(100); 延时lnit_ds18b20();writeonechar(oxcc);/ 跳过读序号列号的操作writeonechar(oxbe);/读取温度寄存器等(共可读个寄存器)前两是温度delay_18b20(

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

48、逻辑或运算操作。指令1:将光标重置到初始单元00h,指令代码:01ho指令2:将光标返回初始单元ooho指令3:光标和显示模式设置i/d :光标移动方向由高低电平决定,高 电平右移,低电平左移s:液晶显示器上的字符或图形是否需要移动,同样 是由图低电平决定的。局电平表不需要移动,低电平则表示不需要移动。指令4:显示开关控制。d:决定整个液晶显示器工作状态,由高低电 平决 定。高电平决定整体开,低电平决定整体关。c:决定是否有光标, 也由高低电平决定。高电平决定有光标,低电平决定无光标b:决定是否有光标闪烁, 还是由高低电平决定。高电平闪烁,低电平不闪烁。指令5:光标或显示移动选择s/c:高低电

49、平决定是移动文字还是移动 光标。高电平移动文字,低电平移动光标。指令6:功能设置命令dl高电平时为4位总线,低电平时为8位总线 n:低 电平时为单行显示,高电平时双行显示f:低电平时显示5x7的点阵 字符,高电平时显示5x10的点阵字符。指令7:配置ram地址。指令8:配置ddra地m址。指令9:读忙信号和光标地址bf:为是否空闲标志位,高电平表示不 空闲,此时模块不能接收命令或者数据;低电平表示空闲,模块可以接收 命令或数据。指令10:写操作。指令11:设舞作明#define uchar unsigned char / 宏定义#define uint unsigned int / 宏定义uc

50、har code table=n0123456789定义字符串表sbit led rs = p2a5;/ 定义液晶 rssbit lcdrw = p2a6;/ 定义液晶 rwsbit lcden = p2a7;/ 定义液晶 ensfr dbport =0x80;内部等待函数unsigned char lcd_wait(void) nop_();_nop_();_nop_();时序,拉高rw电平时序,拉低rs电 平lcdrs=0;_nop_();_nop_();_nop_();lcdrw=1; _nop_(); _nop_(); _nop_(); _nop_();_nop_();_nop_();

51、时序,拉高 rw 电平lcden=1;_nop_(); _nop_(); _nop_(); _nop_();_nop_();_nop_();时序,拉高 en 电平lcden=0;时序,拉低en电平_nop_();nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); return dbport;向lcd写入命令或数# define lcd_command 0 / 命令# define lcd_data 1 / 数据# define lcd_clear_screen 0x01 / 清屏# define lcd_homing 0x02 / 光标返回原点voi

52、d delay_50us(unsigned int times) / 延时 us (unsigned 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

53、i;for (i=0; itimes; i+)delay_50us(32); 调用延时函数,延时msvoid lcd_write(bit style, unsigned char input)/ 液晶写函数,无返回 值,声 明 了 bit 和 unsigned char 变量lcden=0;时序,拉低en电平lcdrs=style;将方式复制给rsledrw=0; nop (); nop (); nop (); nop ();nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();/ 时序,拉低rw电平。dbport=input

54、; _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

55、_();_nop_();_nop_();_nop_();_nop_();_nop_();/时序,拉低en 电平。lcd_wait();液晶等待函数设置显示模式#define lcd_show#define lcd_hide#define lcd_cursor#define lcd_no_cursor#define lcd_flash显示开0x04 /0x00 /0x02 /显示光标0x00 /无光标0x01 光标闪动显示关#define lcd_no_flash 0x00 / 光标不闪动void lcd_setdisplay(unsigned char displaymode)/ 设置显示模式函数, 无 返回值,unsigned char型参数lcd_write(lcd_command, 0x08|displaymode);/ 写入显示模式设置输入模式#define lcd_ac_up#define lcd_

温馨提示

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

评论

0/150

提交评论