基于51单片机的车用数字仪表的研究.docx
- 文档编号:3174665
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:37
- 大小:504.49KB
基于51单片机的车用数字仪表的研究.docx
《基于51单片机的车用数字仪表的研究.docx》由会员分享,可在线阅读,更多相关《基于51单片机的车用数字仪表的研究.docx(37页珍藏版)》请在冰点文库上搜索。
基于51单片机的车用数字仪表的研究
基于51单片机的车用数字仪表的研究
摘要
当今世界,由于汽车性能不断提高,使得汽车电子控制程度也越来越高。
汽车电子控制装置必须迅速、准确地处理各种信息,并通过电子仪表显示出来。
统仪表一般是机电式模拟仪表,只能为驾驶员提供汽车运行中必要而又少量的数据信息,已远远不能满足现代汽车新技术、高速度的要求。
随着现代电子技术的发展,多功能高精度、高灵敏度、读数直观的电子数字显示及图像显示的仪表已不断地在汽车上应用,汽车电子化仪表将逐步取代常规的机电仪表。
利用电子显示技术,也就是薄型平面电子显示器技术做成的汽车平面仪表板显示数字及信息,使驾驶者在开车的同时,仍然可以清楚地看到仪表数字及其他信息的变动。
它具有测试反应速度快、指示准确、图形设计灵活、数字清晰、可视性能好、集成化程度高、可靠性强、功耗低等优点。
本系统的汽车电子依表面板,采用汽车微机采集处理不同传感器信号,不仅可把各种传感器检测到信息,如车速、发动机转速等原封不动地显示出来,而且还能把经微机处理、计算、分析后的信息,如燃油消耗和行车里程等综合信息显示出来。
关键字:
单片机传感器模块抗干扰
1前言
1.1设计任务
用51单片机、模/数转换器件及数字式温度传感器DS18B20等对传统的模拟车用仪表进行技术改进,设计并实现了新型全数字仪表系统。
1.2题目简评
车辆仪表是驾驶员与汽车进行信息交流的重要接口和界面,是车辆安全行驶的重要保证。
随着电子技术的广泛应用,传统汽车仪表逐渐被微处理器为核心的电子控制数字仪表取代已成为必然趋势。
然而,目前国内车辆仪表数字化水平还不高,绝大部分仪表还是模拟式的,而大多数模拟仪表表头的体积较大、数量多,使得显示系统拥挤不堪,影响美观;另外一些模拟仪表故障率高,增加了用户的经济负担,减小了车辆行使的安全系数。
为克服这些缺点,文中提出用单片机、模/数转换器件及数字式温度传感器DS18B20等对其进行技术改进,设计并实现了新型全数字仪表系统,该仪表系统有显示直观准确、灵敏度高、使用寿命长、灵巧美观、成本低等优点。
2系统组成及工作原理
本系统功能由硬件和软件两大部份协调完成,硬件部分主要完成各种传感器信号的采集、转换,各种信息的显示等;软件主要完成信号的处理及控制功能等。
其工作原理是89C51单片机依次查询各传感器的输出信号(水温、速度等模拟传感器输出的模拟信号需要经过ADC0809进行模数转换);然后89C51对输入信号进行相应处理后通过显示模块输出。
3系统硬件设计
3.1硬件综述
该系统硬件主要包括以下几个模块:
89C51主控模块、传感器模块、ADC0809模/数转换模块、44780显示模块等。
其中89C51主要完成外围硬件的控制以及一些运算功能,传感器完成信号的采样功能,ADC0809完成将模拟信号转换成数字信号的功能,44780显示模块完成字符、数字的显示功能。
3.2.主控模块
本系统采用ATMEL公司生产的AT89C51单片机。
AT89C51是美国ATMEL公司生产的低电压,高性能的CMOS8位单片机片内4Kbytes的可反复擦写的只读程序存储器(PEROM)和128bytes的随机存储器(RAM),器件采用ATMEL公司的高密度、非易失存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大。
AT89C51单片机可为你提供许多高性价的应用场合,可灵活的应用于各种控制领域。
图2.1
AT89C51
图2.1单片机AT89C51
主要性能参数:
·与MCS-51产品指令系统的全兼容
·4k字节可重擦写Flash闪速存储器
·1000次可擦写周期
·全静态操作:
0Hz-24MHz
·三级加密程序存储器
·128×8字节内部RAM
·32个可编程I/O口线
·2个16位定时/计数器
·6个中断源
·可编程串行UART通道
·低功耗空闲和掉电模式
a.AT89C51功能特性描述:
AT89C51提供以下标准功能:
4k字节Flash闪速存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量中断结构,一个全双工串行通信口,片内震荡器及时钟电路。
同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件的可选的节电工作模式。
空闲方式停止CPU的工作,但允许RAM,定时/计数器,窜行通信口及中断系统继续工作。
掉电方式保存RAM中的内容,但震荡器停止工作并禁止所有部件工作直到下一个硬件复位。
3.2.1AT89C51引脚功能说明:
·Vcc:
电源电压
·GND:
地
·P0口:
PO口是一组8位漏极开路行双向I/O口,也既地址/数据总线复用口。
可作为输出口使用时,每位可吸收电流的方式驱动8个TTL逻辑电路,对端口写“1”可作为高阻抗输入输出用。
在访问外部数据存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。
在Flash编程时,PO口接收指令字节,而在程序校验时,输出指令字节,校验时,要求接上拉电阻。
·P1口:
P1口是一个内部上拉电阻的8位双向I/O口,P1的输入缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输出口。
作输入口时,因为内部存在上拉电阻,某个引脚被外部信号拉低时输出一个电流(I)。
Flash编程和程序校验期间,P1口接收8位地址。
·P2口:
P2口是一个带有内部上拉电阻的8位双向I/O口,P2的输入缓冲极可以驱动(输入或输出电流)4个TTL逻辑门电路。
对端口“1”,通过内部的上拉电阻把端口拉到高电平,此时和作为输出口,作输出口时,因为存在内部上拉电阻,某个引脚被外部信号拉低时会输出一个电流。
在访问外部存储器或1位地址的外部数据存储器(例如执行MOVX@DPTR指令)时,P2口送出高8位地址数据。
在访问8位地址的外部数据存储器(如执行MOVX@RI指令)时,P2口线的内容(也即殊功能寄存器(SFR)区中R2寄存器的内容),在整个访问期间不改变。
Flash编程或校验时,P2亦接收高地址和其他控制信号。
·P3口:
P3口是一组带有内部上拉电阻的8位双向I/O口,,P1的输入缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输出端口。
作输出端口时,被外部拉低的P3口将用上拉电阻输出电流。
P3口除可作为一般的I/O口线外,更重要的用途是它的第二功能,如表2.1所示:
P3口还接收一些用于Flas闪速存储器编程和程序校验的控制信号
图2.2AT89C51方框图
·RST:
复位输出。
当震荡器工作时,RST引脚出现两个机器周期以上高电平使机器复位。
·ALE/
当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节,即使不访问外部字节,ALE仍时钟震荡频率的1/6输出固定的正脉冲信号,因此它可对外输出时钟脉冲或用于定时目的。
要注意的是:
每次访问外部存储器时将跳过一个ALE脉冲。
对Flash存储器编程期间,该引脚还要输入编程脉冲(
)。
如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。
该位置位后,只有一条MOVX和MOVC指令可激活。
此外,此引脚会被微弱拉高,单片机执行外部程序时,应该置ALE无效。
·
:
程序存入允许(
)输出的是外部程序存储器的读选通信号,当
表2.1AT89C51端口
AT89C51由外部程序取指令(或数据)时,每个机器周期两次
有效,既输出两个脉冲。
在此期间,当访问外部数据存储器,这两次有效的
信号不出现。
·EA/VPP:
外部访问允许。
欲使CPU仅访问外部程序存储器(地址为0000H--FFFFH),EA端必须保持低电平(接地)。
要注意的是:
如果加密位LB1被编程,复位时内部会锁存EA端状态。
Flash存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V的编程电压Vpp。
·XTAL1:
震荡器反向放大器及内部时钟的输入端。
·XAAL2:
震荡器反向放大器的输出端。
·时钟震荡器:
AT89C51中有一个构成内部震荡器的高增益反向放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。
这个放大器与作为反馈元件的片外石英或陶瓷震荡器一起构成自激震荡器震荡电路如图。
外接石英晶体(或陶瓷震荡器)及电容C1、C2接在放大器的震荡回路中构成并联震荡电路。
对外接电容C1、C2虽然没有非常严格的要求,但电容的大小会轻微影响震荡频率的高低、震荡工作的稳定性、起震的难易程序及温度稳定性,如果使用石英晶体,推荐使用30pF±10pF,而如果使用陶瓷谐振器建议选择40pF±10pF。
用户还可以采用外部时钟,采用外部时钟如图所示。
在这种情况下,外部时钟脉冲接到XTAL1端,既内部时钟发生器的输入端,XTAL2悬空。
图2.3内部震荡电路图2.4外部震荡电路
由于外部时钟信号是通过一个2分频的触发器后作为内部时钟信号的所以外部
表2.2AT89C51寄存器
寄存器
内容
寄存器
内容
PC
0000H
TMOD
00H
ACC
00H
TCOM
00H
B
00H
TH0
00H
PSW
00H
TLO
00H
SP
07H
TH1
00H0
DPTR
0000H
TH1
00H
P1—P3
0FFH
SCON
00H
IP
xxx00000
SBUF
不定
IE
0xxx00000
PCON
0xxx00000
时钟的占空比没有特殊要求,但最小高电平持续的时间和最大低电平持续的时间应符合产品技术条件的要求。
·Flash闪速存储器的编程:
AT89C51单片机内部有4K字节的FlashPEROM,这个Flash存储存储阵列出厂时已处于擦除状态(既所有存储单元的内容均为FFH),用户随时可对其进行编程。
程序接收高电压(+12V)或低电压(Vcc)的允许编程信号。
低电压编程模式,适用与用户在线编程系统。
而高电平模式可与通用EPROM编程程序兼容。
·编程方法:
编程前需设置好地址、数据及控制信号,编程单元的地址就、加在P1口和P2口的P2.0—P2.3(11位地址范围为0000H—0FFFH),数据从P0口输入,引脚P2.6、P2.7和P3.6、P3.7的电平设置见表。
PSEN为低电平,RST保持高电平,EA/Vp引脚是编程电源的输入端,按要求加上编程电压,ALE/PROG引脚输入编程脉冲(负脉冲)编程时可采用4—20MHz的时钟震荡器AT89C51的编程方法如下:
1.0在地址线上加上要编程单元的地址信号。
1.在数据线上加上要写入的数据字节。
2.激活相应的控制信号。
3.在高电压编程时,将EA/Vpp端加上+1V编程电压。
4.每对Flash存储阵列写入一个字节,加上一个ALE/PROG编程脉冲。
3.2.2AT89C51控制信号
RST/VPD(9脚)复位信号时钟电路工作后,在引脚上出现两个机器周期的高电平,芯片内部进行初始复位,复位后片内存储器的状态如表所示,P1—P3口输出高电平,初始值07H写入堆栈指针SP、清0程序计数器PC和其余特殊功能寄存器,但始终不影响片内RAM状态,只要该引脚保持高电平,89C51将循环复位,,RAT/VPD从高电平到低电平单片机将从0号单元开始执行程序,另外该引脚还具有复用功能,只要将VPD接+5V备用电源,一旦Vcc电位突然降低或断电,能保护片内RAM中的信息不丢失,恢复电后能正常工作。
AT89C81通常采用上电自动复位和开关手动复位,我们采用的是手动复位开关如图所示:
图3.4手动开关
手动开关未按下之前,电容正极处于家电状态,当按键按下去后,VCC与GND导通,电容放电,从而实现放电。
3.2.3计数器/时器简介
由于后面用到了单片机中的计数器/时器,所以这里着重介绍一下。
89C51中有2个16位计数器/时器。
定时器:
对片内机器时钟(周期方波)进行计数。
计数器:
对Tx引脚输入的负脉冲进行计数。
与Timer工作有关的特殊功能寄存器:
TCON和TMOD。
定时器寄存器TCON(88H)
TFx:
Timer0/1计数溢出标志位。
等于1计数溢出,等于0计数未满。
TFx标志位可用于申请中断或供CPU查询。
在进入中断服务程序时会自动清零;但在查询方式时必须软件清零。
TRx:
Timer0/1运行控制位。
等于1启动计数;等于0停止计数。
定时/计数器可按片内机器周期定时,也可对由T0/T1引脚输入一个负脉冲进行加法计数。
在已经开放T0/T1中断允许且已被启动的前提下:
T0/T1加满溢出时TF0/TF1标志位自动置“1”,检测到TCON中TF0/TF1变“1”后,将产生指令:
LCALL000BH/LCALL001BH执行中断服务程序,TF0/TF1标志位会自动清“0”,以备下次中断申请。
TR0/TR1:
Timer0/1运行控制位:
TR0/TR1=0时,Timer0/1停止计数。
TR0/TR1=1时,Timer0/1启动计数。
定时器方式寄存器TMOD(89H)
M1,M0:
工作方式定义位(定义4种方式):
00:
13位Timer——用它无益,不要记它!
01:
16位Timer——经常用到
10:
可自动重装的8位Timer——经常用到
11:
T0分为2个8位Timer;T1此时不工作
——因为没有带来什么好处,几乎无用
C/T:
计数器/定时器选择位
=1外部事件计数器。
对Tx引脚的负脉冲计数;
=0片内时钟定时器。
对机器周期脉冲计数定时
GATE门控位:
Timer可由软件与硬件两者控制
GATE=0——普通用法
Timer的启/停由软件对TRx位写“1”/“0”控制
GATE=1——门控用法
Timer的启/停由软件对TRx位写“1”/“0”
和在INTx引脚上出现的信号的高/低共同控制
3.3温度传感器:
本系统采用的温度传感器是DS18B20传感器。
DS18B20是美国DALLAS半导体公司继DS1820之后最新推出的一种改进型智能温度传感器。
与传统的热敏电阻相比,他能够直接读出被测温度并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。
可以分别在93.75ms和750ms内完成9位和12位的数字量,并且从DS18B20读出的信息或写入DS18B20的信息仅需要一根口线(单线接口)读写,温度变换功率来源于数据总线,总线本身也可以向所挂接的DS18B20供电,而无需额外电源。
因而使用DS18B20可使系统结构更趋简单,可*性更高。
他在测温精度、转换时间、传输距离、分辨率等方面较DS1820有了很大的改进,给用户带来了更方便的使用和更令人满意的效果。
3.3.1DS18B20简介
(1)独特的单线接口方式:
DS18B20与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。
(2)在使用中不需要任何外围元件。
(3)可用数据线供电,电压范围:
+3.0~+5.5V。
(4)测温范围:
-55~+125℃。
固有测温分辨率为0.5℃。
(5)通过编程可实现9~12位的数字读数方式。
(6)用户可自设定非易失性的报警上下限值。
(7)支持多点组网功能,多个DS18B20可以并联在惟一的三线上,实现多点测温。
(8)负压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。
3.3.2DS18B20的内部结构
DS18B20采用3脚PR35封装或8脚SOIC封装,其内部结构框图如图1所示。
(1)64b闪速ROM的结构如下:
开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前56位的CRC校验码,这也是多个DS18B20可以采用一线进行通信的原因。
(2)非易市失性温度报警触发器TH和TL,可通过软件写入用户报警上下限。
(3)高速暂存存储器
DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的E2RAM。
后者用于存储TH,TL值。
数据先写入RAM,经校验后再传给E2RAM。
而配置寄存器为高速暂存器中的第5个字节,他的内容用于确定温度值的数字转换分辨率,DS18B20工作时按此寄存器中的分辨率将温度转换为相应精度的数值。
该字节各位的定义如下:
低5位一直都是1,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。
在DS18B20出厂时该位被设置为0,用户不要去改动,R1和R0决定温度转换的精度位数,即是来设置分辨率,如表1所示(DS18B20出厂时被设置为12位)。
由表1可见,设定的分辨率越高,所需要的温度数据转换时间就越长。
因此,在实际应用中要在分辨率和转换时间权衡考虑。
高速暂存存储器除了配置寄存器外,还有其他8个字节组成,其分配如下所示。
其中温度信息(第1,2字节)、TH和TL值第3,4字节、第6~8字节未用,表现为全逻辑1;第9字节读出的是前面所有8个字节的CRC码,可用来保证通信正确。
当DS18B20接收到温度转换命令后,开始启动转换。
转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1,2字节。
单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式以00625℃/LSB形式表示。
温度值格式如下:
对应的温度计算:
当符号位S=0时,直接将二进制位转换为十进制;当S=1时,先将补码变换为原码,再计算十进制值。
表2是对应的一部分温度值。
DS18B20完成温度转换后,就把测得的温度值与TH,TL作比较,若T>TH或T 因此,可用多只DS18B20同时测量温度并进行告警搜索。 (4)CRC的产生 在64bROM的最高有效字节中存储有循环冗余校验码(CRC)。 主机根据ROM的前56位来计算CRC值,并和存入DS18B20中的CRC值做比较,以判断主机收到的ROM数据是否正确。 3.3.3DS18B20的测温原理 DS18B20的测温原理如图2所示,图中低温度系数晶振的振荡频率受温度的影响很小[1],用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入,图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量。 计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55℃所对应的基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在-55℃所对应的一个基数值。 减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。 图2中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值,这就是DS18B20的测温原理。 另外,由于DS18B20单线通信功能是分时完成的,他有严格的时隙概念,因此读写时序很重要。 系统对DS18B20的各种操作必须按协议进行。 操作协议为: 初始化DS18B20(发复位脉冲)→发ROM功能命令→发存储器操作命令→处理数据。 3.3.4温度传感器的应用 DS18B20温度传感器的使用十分方便,只要把它的GND、Vcc引脚分别接地和+5V,然后把另一个引脚接单片机的串行通信口就可以使用了。 下图就是DS18B20温度传感器和单片机组成的一个小系统: DS18B20与AT89C51的接口电路图如图2所示,其中DS18B20工作在外部电源供电方式,单片机89C51采用P3.7和DS18B20通信。 3.4里程传感器 首先应了解车用里程表中显示的数据是怎样得到的,怎样得到才能使测得的数据更加精确。 由次可以得出可以在转轴上均匀地多加几个通光空,这样可以减少在测量时的误差。 同时可以使前进或是倒退时的误差减小。 因此本系统采用光敏三级管来作为信号的发生源。 其原理如图所示: 在一个密闭的环境中,放置一个发光二极管,当车轮转到一个特定的位置时发光二极管的光就通过小孔照到光敏三极管上,如图是它的电路原理图: 当有光照到过来时: VT1、VT2均导通,VT2输出的低电平使INT0=0向单片机发出中断请求,CPU接受外部中断请求后进入中断处理程序。 使存放在单片机中的变量加1,然后通过查询这个变量的值,使之乘上一个固定的长度,就得到所要的数据。 通过显示模块就可得到当前的公里数。 3.5测速传感器: 速度传感器实际上是采用位移传感器加上单片机的定时器构成的。 也就是说位移传感器得到的位移是在定时器下得到的,这个位移是单位时间内的位移。 如果是一般的车用仪表,上述的里程传感器在加上一个计数器就可以实现速度里程表。 但是,一些要求精度比较高的车子,比如一些赛车的速度表,上面的传感器就显得有点粗糙了。 下面就介绍一下本系统所用的位移传感器,也就是光栅传感器。 3.5.1光栅传感器简介 光栅传感器因具有易实现数字化、精度高(目前分辨率最高的可达到纳米级)、抗干扰能力强、没有人为读数误差、安装方便、使用可靠等优点,在机床加工、检测仪表等行业中得到日益广泛的应用。 光栅是利用光栅的莫尔条纹现象来测量位移的。 “莫尔”原出于法文Moire,意思是水波纹。 几百年前法国丝绸工人发现,当两层薄丝绸叠在一起时,将产生水波纹状花样;如果薄绸子相对运动,则花样也跟着移动,这种奇怪的花纹就是莫尔条纹。 一般来说,只要是有一定周期的曲线簇重叠起来,便会产生莫尔条纹。 计量光栅在实际应用上有透射光栅和反射光栅两种;按其作用原理又可分为幅射光栅和相位光栅;按其用途可分为直线光栅和圆光栅。 下面以透射光栅为例加以讨论。 透射光栅尺上均匀地刻有平行的刻线即栅线,a为刻线宽,b为两刻线之间缝宽,W=a+b称为光栅栅距。 目前国内常用的光栅每毫米刻成10、25、50、100、250条等线条。 光栅的横向莫尔条纹测位移,需要两块光栅。 一块光栅称为主光栅,它的大小与测量范围相一致;另一块是很小的一块,称为指示光栅。 为了测量位移,必须在主光栅侧加光源,在指示光栅侧加光电接收元件。 当主光栅和指示光栅相对移动时,由于光栅的遮光作用而使莫尔条纹移动,固定在指示光栅侧的光电元件,将光强变化转换成电信号。 由于光源的大小有限及光栅的衍射作用,使得信号为脉冲信号。 此信号是一直流信号和近视正弦的周期信号的叠加。 通过整行就可得到方波。 这个就是我们所需要的信号。 然后通过计数器计算在一定时间内所得到的方波信号。 在实际应用中,位移具有两个方向,即选定一个方向后,位移有正负之分,因此用一个光电元件测定莫尔条纹信号确定不了位移方向。 为了辨向,需要有π/2相位差的两个莫尔条纹信号。 在相距1/4条纹间距的位置上安放两个光电元件,得到两个相位差π/2的电信号u01和u0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 51 单片机 数字 仪表 研究