剩余油量检测系统的设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计说明书
课程名称:微机测控系统课程设计课程代码: 6010339
题目:燃油量检测系统
学院(直属系) :交通与汽车工程学院
年级/专业/班:2011级车辆工程汽电1班学生姓名:胥涛
学号:310011*********
指导教师:唐岚/赵玲/陈飞/徐晓惠/武小花开题时间:2013 年12 月16日完成时间:2013 年 1 月 7 日
目录
摘要.................................................................................................................................................. - 2 -1 引言................................................................................................................................................ - 3 -1.1 问题的提出..................................................................................................................................... - 3 -1.2任务与分析...................................................................................................................................... - 3 -2方案设计............................................................................................................................................. - 5 -2.1 系统方案设计论证......................................................................................................................... - 5 -
2.2最终设计方案总体设计框图.......................................................................................................... - 5 -
3 系统硬件设计.................................................................................................................................... - 6 -3.1 AT89C52单片机.............................................................................................................................. - 6 -3.1.1 选用AT89C52单片机原因 ........................................................................................................ - 7 -3.2 时钟电路......................................................................................................................................... - 7 -3.3 复位电路......................................................................................................................................... - 7 -3.
4 数码管显示电路............................................................................................................................. - 8 -3.
5 光电报警电路................................................................................................................................. - 9 -
3.6 A/D转换电路 ................................................................................................................................ - 10 -
4 系统软件设计.................................................................................................................................. - 12 -4.1主程序框图.................................................................................................................................... - 12 -4.2 ADC0832子程序框图................................................................................................................... - 13 -
4.3声光报警模块子程序流程图....................................................................................................... - 14 -
5 系统调试过程.................................................................................................................................. - 15 -5.1 PROTUES软件 ............................................................................................................................. - 15 -5.2 KEIL C51软件 .............................................................................................................................. - 15 -5.3 KEIL软件开发流程...................................................................................................................... - 1
6 -5.4原理图和检查................................................................................................................................ - 19 -5.5 Proteus仿真调试........................................................................................................................... - 19 -结论.................................................................................................................................................. - 22 -致谢.................................................................................................................................................. - 23 -参考文献.............................................................................................................................................. - 24 -附录一:相关程序代码...................................................................................................................... - 25 -附录2:电路原理图........................................................................................................................... - 29 -附录3:相关仿真图........................................................................................................................... - 29 -
摘要
本设计汽车油量检测系统以AT89C52为核心芯片。
以protel和proteus为开发工具,并且采用C语言编程设计,辅以压力传感器、A\D转换器、LED显示电路、报警电路等组成。
传感器的输出信号经过ADC0832处理,将其送入单片机进行处理与计算,然后根据传感器压力变化与电位差变化的对应关系,将油量的剩余量转换成电信号,再经LED数码管显示出来,同时,如果剩余油量太低或者太高的话通过报警电路报警。
关键词:单片机、剩余检测、LED数码管显示、报警
1 引言
1.1 问题的提出
随着经济的飞速发展和汽车的快速更新换代,家家户户已经离汽车越来越近,同时随着人们生活水平的逐渐提高,人们需要的不再仅仅是拥有一辆普通的车,而是对汽车的质量和性能有了更好的要求。
人们对汽车的需求日益增大,汽车产业的迅速发展同时也带动了汽车各项技术的发展,汽车传感器是汽车电子技术领域研究的核心内容,传统的传感器逐渐被微型化、多功能化、集成化和智能化得传感器取代。
1.2任务与分析
汽车在行驶过程中离不开燃油,因为汽车油箱剩余油量过多或过少都会影响车辆的性能和汽车的正常使用,所以驾驶员时刻掌握油箱剩余的油量是必须的。
目前在大多数轿车上使用的汽车仪表内的燃油表仍为三刻度式仪表,这种燃油表由于受油量传感器的限制,驾驶人员只能定性地了解油箱内剩余的燃油量,测量精度无法达到。
汽车的油箱油量检测通常是由水平检测器 (一个与仪表板油量计串接的由浮标控制的浮筒式电位器系统)来完成的。
当油箱储满燃油时,浮标动臂升起,将电位器的阻值调至最小(也有部分车型是将电位器的阻值调至最大),使油量计 (实际上是一只毫安表)的指针作满标度的偏转;当油箱中的油量水平下降时,可变电阻器的阻值被调高 (或调低),流过系统回路的电流将随之变化,油量计的指针读数也变小。
这种传统检测油量的方式电路简单易行,但是耗电量大,元件老化快,最主要的问题是测量和显示精度不够,只能对油料的液位进行检测。
随着电子技术的飞速发展,电子控制电路在日常生活中有着大量的应用,各种报警专用集成电路、LED油量数字显示电路、传感器的不断推出,我们完全可以克服传统检测手段中不能直接读出实时油量的弊端,我们的研究方向是开发出一种新型的方便人们使用的汽车油量检测器,驾驶员通过这个检测器可以实时的、形象直接的读出油箱剩余的油量,并且当油量过多或者过少时检测器都可以发生实时报警,提醒驾驶员做出相应正确的处理方法。
本设计以At89C52为核心,辅以压力传感器、A/D转换器、LED显示模块、电源模块、报警模块等组成。
本测量系统由电源模块向单片机供电,通过传感器压力变化与电位差变化的对应关系,将油位高度转换成电信号,经过A/D转换器后,由单片机处理,经过CPU 的计算,得到各项参数的实际值,并定时地存入E2PROM中,且通过LED模块显示出实时油箱里的油量。
当油量过多或过少时,信号通过A/D转换器接入单片机,经单片机处理后,控制报警模块发出灯光闪烁和报警声。
2方案设计
2.1 系统方案设计论证
检测压力传感器MPX4115检测到压力信号后,通过ADC0832转换后送入AT89C52单片机,单片机对数据进行处理,显示等。
2.2最终设计方案总体设计框图
本设计以单片机AT89C52为核心器件,系统检测电路主要包括电源模块、数据采集模块、单片机及最小系统、LED 显示模块、报警模块等,主要器件包括压力传感器、ADC0832、AT89C52、LED 数码管、蜂鸣器、LED 灯等。
本设计设计框图如图2-1所示:
图2-1 系统设计总框图
单片机LED 显示模块 声光报警模块
ADC0832模数转换
电源模块
压力传感器输
入
燃
油压力
3 系统硬件设计
3.1 AT89C52单片机
(1)8052单片机
在此单片机上集成了微处理器(CPU),内部数据存储器(RAM),以及输入输出端口。
8051单片机采用40只引脚的双列直插封装方式,各引脚的功能如下:
①时钟引脚X1及 X2:用于接晶体振荡器,此次设计用的晶振频率为6MHZ。
②RESET脚:是复位信号输入端,高电平有效。
③ALE脚:地址锁存允许信号,用于锁存单片机输出的地址信号,高电平有效
④PSEN脚:程序存储器输出控制端,在单片机访问外部程序存储器时,此引脚输出的负脉冲作为读外部程序存储器的选通信号,接至程序存储器的OE端。
低电平有效。
⑤EA脚:其功能为内外程序存储器选择控制端。
当EA为高电平时,单片机访问内部程序存储器,当EA为低电平时,单片机直接访问片外程序存储器。
本设计用的是8031,由于8031内部无程序存储器,所以此引脚应接地。
低电平有效。
⑥I/O口引脚:共4个,分别是P0、P1、P2、P3,均为8位口。
这4个I/O口可分别作为基本的Input、Output端口。
其中P0口可作为数据总线和地址总线(低8位)分时复用的端口,P2口可作为地址总线的高8位,即P0口和P2口地起构成16位地址总线,可供寻址的地址范围是:64KB。
P3口具有第二功能,即可以产生中断,定时计数等功能。
⑦RD、WR引脚:为读和写选通信号,RD用于将单片机的数据写入外设中,WR用于从外设中读取数据。
低电平有效
AT89C51系列单片机都是以8031为核心发展起来的,具有和51系列单片机及基本结构和软件特征,其内部结构如图3-2所示:
振荡器及
AT
4K
字节
12
8字节
2个
16位定
64
K总线
可
编程
可编
程
图3-1 AT89C52单片机框图
3.1.1 选用AT89C52单片机原因
在课程设计里所需外围电路简单,在设计里面使用的引脚较少,占用的资源也比较少。
而且该芯片是以AT89C52为核心,性能价格比高,应用成熟,且对其内部结构较为熟悉,芯片功能够用而且适用,从而选用AT89C52单片机作为主控芯片。
3.2 时钟电路
本设计采用内部时钟方式的电路。
AT89C51单片机内部有一个用于构成振荡器的高增益反相放大器,该高增益反相放大器的输入端为芯片引脚XTAL1,输出端为引脚XTAL2。
这两个引脚跨接石英晶体振荡器和微调电容,就构成了一个稳定的自激振荡器。
电路中的电容C1和C2典型值通常选择为33pF左右。
晶体的振荡频率的范围通常是在1.2MHZ~12MHZ之间。
晶体的频率越高,则系统的时钟频率也就越高,单片机的运行速度也就越快。
.
图3-2 晶振电路
3.3 复位电路
复位电路通常采用上电自动复位和按钮复位两种方式。
本次设计采用上电复位电路。
上电复位电路是在上电瞬间来实现的,其电路如图3-4所示。
上电时, RESET端维持两个机器周期的高电平实现复位。
图3-3 复位电路
3.4 数码管显示电路
选用4位数码管作为显示,因为89C52单片机的I/O引脚有限,为了节省资源,设计了下图所示的数码管电路,改电路选用2片74HC573作为锁存器,通过程序指令使段选信号和位选信号有序输出,达到驱动目的。
图3-4 显示电路
3.5 光电报警电路
蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛用于计算机、打印机、复印机、报警器、电子玩具、电话机、定时器等电子产品中作发声器件。
蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。
蜂鸣器也分为有源蜂鸣器和无源蜂鸣器。
通过三极管放大电流驱动蜂鸣器发出报警声。
通过LED发光二极管作为灯光报警
图3-5报警电路
3.6 A/D 转换电路
ADC0832 是美国国家半导体公司生产的一种 8 位分辨率、
双通道 A/D 转换 芯片。
由于它体积小,兼容性强,性价比高而深受单片机爱好者及企业欢迎, 其目前已经有很高的普及率。
学习并使用 ADC0832 可是使我们了解 A/D 转换器 的原理,有助于我们单片机技术水平的提高。
ADC0832具有以下特点: 8 位分辨率; 双通道 A/D 转换;
输入输出电平与 TTL/CMOS 相兼容; 5V 电源供电时输入电压在 0~5V 之间; 工作频率为 250KHZ ,转换时间为 32μS ; 一般功耗仅为 15mW ;
8P 、14P —DIP (双列直插)、PICC 多种封装;
商用级芯片温宽为0°C to +70°C ,工业级芯片温宽为−40°C to +85°C ; 芯片引脚分配图如图3-6所示:
图3-6 ADC0832引脚分配图
芯片接口说明:
CS_ 片选使能,低电平芯片使能。
CH0 模拟输入通道0,或作为IN+/-使用。
CH1 模拟输入通道1,或作为IN+/-使用。
GND 芯片参考0电位(地) DI 数据信号输入,选择通道控制 DO 数据信号输出,转换数据输出 CLK 芯片时钟输入
VCC/REF 电源输入及参考电压输入(复用)
ADC0832与单片机的接口电路:ADC0832 为 8 位分辨率 A/D 转换芯片,其最高分辨可达 256 级,可以适应一般的模拟量转换要求。
其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在 0~5V 之间。
芯片转换时间仅为 32μS ,据有双数据输出可作
V
C C G
C
D D
AD
为数据校验,以减少数据误差,转换速度快且稳定性能强。
独立的芯片使能输入,使多器件挂接和处理器控制变的更加方便。
通过DI 数据输入端,可以轻易的实现通道功能的选择。
单片机对ADC0832 的控制原理:
正常情况下ADC0832 与单片机的接口应为 4 条数据线,分别是CS、CLK、DO、DI。
但由于DO 端与DI 端在通信时并未同时有效并与单片机的接口是双向的,所以电路设计时可以将DO 和DI 并联在一根数据线上使用。
当ADC0832 未工作时其CS 输入端应为高电平,此时芯片禁用,CLK 和DO/DI 的电平可任意。
当要进行A/D 转换时,须先将CS 使能端置于低电平并且保持低电平直到转换完全结束。
此时芯片开始转换工作,同时由处理器向芯片时钟输入端CLK 输入时钟脉冲,DO/DI 端则使用DI 端输入通道功能选择的数据信号。
在第 1 个时钟脉冲的下沉之前DI 端必须是高电平,表示启始信号。
在第2、3 个脉冲下沉之前DI 端应输入 2 位数据用于选择通道功能。
作为单通道模拟信号输入时ADC0832 的输入电压是0~5V 且8 位分辨率时的电压度为19.53mV。
如果作为由IN+与IN-输入的输入时,可是将电压值设定在某一个较大范围之内,从而提高转换的宽度。
但值得注意的是,在进行IN+与IN-的输入时,如果IN-的电压大于IN+的电压则转换后的数据结果始终为00H。
4 系统软件设计
4.1主程序框图
如图4-1所示,单片机上电后,程序首先对单片机和液晶显示器LED 进行初始化,这时LED 液晶屏上显示得是0。
这时如果给压力传感器一个压力,压力信号经数据采集系统后存储在CPU ,该数据经CPU 计算后,将该数值通过液晶显示器显示,随着压力的不断增大,液晶屏LED 上从0到100依次显示,期间若油量数值大于90或者小于10,则报警系统启动。
图4-1主程序
Y
结束
声光报警并显示油量值
N
油量值是否大于90小于10 开始
ADC0832采集压力值
CPU 存储油量值
LED 初始化
ADC0832初始化
显示油量
4.2 ADC0832子程序框图
如图4-2所示,当ADC0832 未工作时其CS 输入端应为高电平,此时芯片禁用,CLK 和DO/DI 的电平可任意。
当要进行A/D 转换时,须先将CS 使能端置于低电平并且保持低电平直到转换完全结束。
此时芯片开始转换工作,同时由处理器向芯片时钟输入端CLK 输入时钟脉冲,DO/DI 端则使用DI 端输入通道功能选择的数据信号。
在第1 个时钟脉冲的下沉之前DI 端必须是高电平,表示启始信号。
在第2、3 个脉冲下沉之前DI 端应输入2 位数据用于选择通道功能。
开始
使能芯片
产生时钟信号
输入通道控制字
读取2字节数
据
字节数据校验
将值送入制定寄存器
结束
图4-2 ADC0832
4.3声光报警模块子程序流程图
如图4-3所示,单片机上电后,系统首先对单片机和LED显示屏进行初始化。
初始化完成后,压力信号经数据采集系统和CPU计算后将油量值在LED显示屏上显示出来,若油箱内剩余的油量大于90或者小于10时,声光报警模块启动,蜂鸣器报警以及LED 灯闪出绿光。
开始
系统初始化
油量值大于90
或小于10
声光报警
结束
图4-3 报警流程图
5 系统调试过程
通过上面的设计,设计已经基本完成。
下面主要实现Protel99SE的原理图及做相关检测,对Keil进行相应的检查和调试,并用Proteus对所设计系统进行仿真。
5.1 PROTUES软件
Proteus ISIS是英国Lab center公司开发的电路分析与实物仿真软件。
它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:
1实现了单片机仿真和SPICE电路仿真相结合。
具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统仿真、有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。
2支持主流单片机系统的仿真。
目前支持的单片机类型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。
3提供软件调试功能。
在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如KEIL C51 uVision2等软件。
5.2 KEIL C51软件
随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,目前流行的51系列单片机开发软件是德国KEIL公司推出的KEIL C51软件,它是一个基于32位Windows环境的应用程序,支持C语言和汇编语言编程,其6.0以上的版本将编译和仿真软件统一为uVision2(通常称为uV2)。
KEIL提供包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,由以下几部分组成:uVision2 IDE集成开发环境(包括工程管理器、源程序编辑器、程序调试器)、C51编译器、A51汇编器、LIB51库管理器、BL51连接/定位器、OH51目标文件生成器以及Monitor-51、RTX51实时操作系统。
5.3 KEIL软件开发流程
1新建工程,如图5-1所示:
新建工程
图 5-1 新建工程界面图
2为工程选择目标器件,如图5-2所示:
目标器件
图5-2目标器件选择
3设置工程的配置参数,如图5-3所示:
配置参数
图5-3 配置工程参数界面图
选中创建HEX文件,如图5-4所示,软件默认的情况下是不创建此文件的,而下载到单片机的程序需要此文件。
选中生成HEX文件
图5-4 创建HEX文件
4打开/建立程序文件。
创建的文件用*.c形式保存,如图5-5所示:
新建C语言程序文件,保存文件名
*.C
图5-5 创建代码文件
5编译和连接工程。
在进行编译和链接前,需要将创建的源代码文件添加到工程中,在Source Group1处单击右键,即可出现如图4-6所示的窗口。
然后点add group..
添加文
件
图5-6 添加代码文件
成功添加后,点击此处就会显示对应的文件。
.
6纠正程序中的书写和语法错误并重新编译连接。
成功添加代码文件后,就可以进行编译了,单击如图5-7所示的位置,对工程进行全部编译。
对代码进行编
译
图5-7 编译按钮界面图
图5-8为程序编译窗口。
在此窗口中把需要编译的程序输入,然后点编译按钮。
即可对所写程序编译。
图5-8 程序编译结果
5.4原理图和检查
打开protel99se r,绘制系统的原理图。
原理图包括能输出时钟电路,驱动电路以及复位电路。
绘制完成的原理图如图5-9:
图5-9 原理图
绘制完原理图之后,对原理图进行编译检测。
ERC检测结果如图5-10,无错误:
图5-10 Erc检测
5.5 Proteus仿真调试
运行PROTUES 的ISIS 程序后,进入该仿真软件的主界面。
在工作前,要设置view 菜单下的捕捉对齐和system下的颜色、图形界面大小等项目。
通过工具栏中的p(从库中选择元件命令)命令,在pick devices 窗口中选择电路所需的元件,放置元件并调整其相对位置,元件参数设置,元器件间连线,编写程序;在source 菜单的Define code
generation tools 菜单命令下,选择程序编译的工具、路径、扩展名等项目;在source 菜单的Add/Remove source files 命令下,加入单片机硬件电路的对应程序;通过debug 菜单的相应命令仿真程序和电路的运行情况。
在Proteus中建立仿真图。
按下开始仿真按钮,开始进行仿真实验,结果如图5-11,图5-12,图5-13所示:
图5-11 油量过多
图5-12 油量合适图5-13 油量过低
通过MPX4115进行油量检测,MPX4115将压力的模拟信号转换为电压值,然后通过ADC0832转换后产生一个数字信号输入到AT89C52单片机中进行处理,再通过单片机驱动数码管显示油量的相关信息。
并在超过安全阈值时通过通过单片机实现声光报警。
由于显示程序的复杂性,所以选用了C语言作为开放程序加快了开发进度。
本次设计由于时间较为仓促,难免考虑不周全,还有许多功能需要完善,这需要下来再去深究。
在本次课程设计里面,我把电路和单片机必备的一些基本操作技能再次熟悉了一遍。
对于此次油量检测,我只进行了最简单的程序编写和仿真,而往往在实际中是作为一个系统中的很小子环节来进行应用的,所以还需要我进一步学习更多的单片机及相关测试传感器知识。
在本课程设计期间,我得到了各位指导老师和同学的大力帮助,如果没有他们,我不不可能完成本次设计,在此,我表示对他们衷心的感谢。
值此即将完成课程之际,我要衷心地感谢唐岚老师。
在课程设计过程中,我得到了她的精心指导和热情帮助,她的一些建议和意见给我很深的启发。
在此由衷感谢。
参考文献
[1]谭浩强.C程序设计(第三版)[M].北京.清华大学出版社.2005(2007重印)
[2]张毅刚,彭喜元等. MCS-51单片机应用设计(第3版)[M].哈尔滨.哈尔滨工业大学出版社.2001.
[3]徐琤颖.Protel99SE EDA技术及应用.[M].北京.机械工业出版社.2009.1重印
[4]古辉,刘均等.微型计算机接口及控制技术.[M].北京.机械工业出版社.2009.1
附录一:相关程序代码#include<reg52.h>
sbit wei =P1^1;
sbit duan =P1^0;
sbit Buzz=P1^7;
sbit DIO=P0^0;
sbit CLK=P0^2;
sbit CS=P0^7;
unsigned char table[]=
{192,249,164,176,153,146,130,248,128,144}; unsigned char weiswitch[]={0,1,2,4,8};
unsigned char buzz=0,cishu,dat;
unsigned char A_D();
void SMG(int vvv);
void main()
{
Buzz=0;
TMOD=0x01;
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
EA=1;
ET0=1;
TR0=1;
while(1)
{
A_D();
SMG(dat);
if(dat<10 || dat>90) buzz=1;
else buzz=0;
}
void T0_time() interrupt 1 {
TH0=(65536-45872)/256; TL0=(65536-45872)%256; if(buzz==1)
{
cishu++;
if(cishu==5)
{
Buzz=~Buzz;
cishu=0;
}
}
else Buzz=0;
}
void delay(void)
{
unsigned int a,b;
for(a=10;a>0;a--)
for(b=110;b>0;b--);
}
void Tdelay(unsigned int i) {
while(i--);
}
void SMG(int vvv)
{
int ge=vvv%10;
int shi=vvv%100/10; int bai=vvv%1000/100; int qian=vvv/1000;
duan=1;
P2=table[qian];
duan=0;
P2=0xff;
wei=1;
P2=weiswitch[1];
wei=0;
P2=0xff;
delay();
duan=1;
P2=table[bai];
duan=0;
P2=0xff;
wei=1;
P2=weiswitch[2];
wei=0;
P2=0xff;
delay();
duan=1;
P2=table[shi];
duan=0;
P2=0xff;
wei=1;
P2=weiswitch[3];
wei=0;
P2=0xff;
delay();
duan=1;
P2=table[ge];
duan=0;
P2=0xff;
wei=1;
P2=weiswitch[4];
wei=0;
P2=0xff;
delay();
}
unsigned char A_D()
{
unsigned char i;
CS=1;
CLK=0;
CS=0;
CLK=1;
CLK=0;
DIO=1;
CLK=1;
CLK=0;
DIO=0;
CLK=1;
CLK=0;
DIO=1;
CLK=1;
for(i=0;i<8;i++)
{
CLK=1;
CLK=0;
dat<<=1;
dat|=(unsigned char)DIO;
}
CS=1;
dat=((dat-14)*100)/230;
return dat;
}
附录2:电路原理图。