论文部分内容阅读
摘 要:针对汽车仪表发展的新趋势,本文介绍了以87LPC767单片机为核心设计的智能化仪表。
关键词:单片机;核心设计;智能化仪表
以87LPC767单片机为核心设计的智能化仪表。分析其工作原理、硬件电路设计和软件框图。
1.系统工作原理:
本仪表盘的工作原理框图如图一所示:
它由两大部分组成:一类是转向、制动等信号的显示,该部分不需要单片机控制,直接显示即可。另一类是数值信号的显示,如水温、机油压力和车速等,它们必须经过单片机的处理才能正确显示,此类信号共五种。
对于汽车仪表而言,信号输入有三大类:(1)模拟连续信号,包括电瓶电压、油箱内燃数量等;(2)模拟脉冲信号,包括左、右转向信号、制动、档位信号、水温、机油压力等;(3)机械信号,包括码表软轴输入信号和发动机转速信号等。设计时主要考虑(2)和(3)类的信号变换、处理及显示和数据保存等功能的显示。其中,码表软轴输入信号和发动机转速信号的监测和处理可以有多种方法实现。例如,使用测速发电机可以将转速变为交流信号,在进行转变处理;也可以通过红外对管来解决,通过红外对管将机械信号直接转变成脉冲信号,用单片机内部的定时/计数器完成码表和里程表的计数管理任务,以车速为例,车轮转一圈,码表输入软轴也转一圈,由车轮的外径可以计算出每行驶1公里应该旋转的圈数n,每一秒钟计数一次m,则车速为3600m/n。为了保证车辆慢速行驶时车速的计算精度,可以在软轴上套用一个多槽检测片,设每圈有k个槽,则修正后的车速为3600m/kn(公里/小时)。数据显示可以通过液晶组件实现,显示的数据包括码表、总里程数、单次行驶里程、发动机转速、机油压力、燃油量1.水温、和电瓶电压等参数,这些显示参数可以使用单片机的I2C总线实现。数据保存主要完成总行驶里程、单次行驶里程、和停车时的车速等关键数据的保存。第(2)类信号的处理较为困难,主要是因为此类脉冲信号的频率较低,约为40-120/分钟,这样就难以用普通的计数法处理,为了实时显示的需要,可以采用两种方法解决:信号倍频或脉冲/直流信号的转换。采用倍频的方法,显然抗干扰能力不够,因为汽车的工作环境很复杂,外界干扰可能很严重。必须有效的进行干扰抑制;采用脉冲/直流信号的转换就能有效的抗外界干扰,然后再进行A/D转换,显然增加了成本。但是,目前51系列的许多单片机内部都有A/D转换电路,所以在分析了系统的工作原理后。器件的选型对系统的性能实现就显得尤其关键,因此选定单片机87LPC767。
2.硬件设计
本仪表使用单片机87LPC767具有801C51单片机的内核,与普通80C51单片机指令完全兼容。并提供了低系统成本和低功耗及少数的IC引脚,由于它内建了许多周边电路如电源BROWNDOUT侦测、模拟功能、串口UART和 I2C及创新的内建式RC振荡4通道8位ADC、看门狗电路、电源监控电路等。使得87LPC系列单片机降低了对外部元件的要求,同时给设计者提供了高集成度、低成本、低功耗应用更多的选择。而且,液晶显示和EEPROM(用于参数保存)可以接在同样的两根I2C总线上,由于单片机的功能很强,因此,外围电路非常简单。需要说明的是:767内部虽然有自己的RC振荡器,但频率稳定性不高,频率偏差约为标称振荡频率的25%,为了计量的准确,必须使用片外的晶体振荡器,考虑到单片机的任务较重,我们采用了12M Hz的外部晶体。
仪表盘设计必须考虑许多实际因素,由于水温和机油压力这两个传感器的输出是幅度为0.12伏、脉冲持续时间和周期均可变。因此,此类信号必须经过转换才能送入A/D,我们用图2所示电路转换后。送到A/D输入端的波纹电压幅度小于400Mv,当A/D参考电压选择为5V时,转换误差为40Mv/5V=0.008=0.8%,满足读数精度的要求。
同时,为了避免过多的参数显示给驾驶员造成不必要的影响,我们还设计了一些控制按钮。例如,总里程表和本次行驶里程就没必要同时显示,缺省显示为总里程显示,当驾驶员要检查本次行驶里程时,可按下相应的显示控制按键,则在里程参数显示的位置上显示本里程。
另外,我们还考虑了仪表的安全可靠使用和安全报警等问题。如果汽车行驶在工业干扰严重的地域,一旦单片机系统不能正常的工作,则必须用看门狗电路及时将单片机复位。同时,如果汽车在行驶过程中发生故障,必须及时在相应参数显示的位置上报警,避免驾驶员带故障行车,确保行车安全。
3.软件设计
主程序及中断子程序框图分别见图3和图4。
由于单片机工作频率较高,而汽车运行参数的显示不能很快,否则会对驾驶员造成不必要的干扰,分散注意力,通过上车实验,我们发现:码表及里程表等参数的显示以1秒刷新一次为宜;其他参数除了加电时显示一次以外,,正常工作的显示以1分钟刷新一次为宜。考虑到A/D检测所需的时间,电瓶电压、机油压力、水温和燃油量的显示采用了间隔15秒循环显示的方式。只有在关电时才向E2PROM写里程及速度等参数。
本仪表盘设计时直接采用汽车的12伏电瓶供电,功耗小,工作温度范围大,还可提供安全报警,任何参数显示的过高或过低都会在相应的位置上实时报警。由于87LPC767单片机的功能很强,因此外围电路大为简化,仪表性能大大加强。
本仪表操作简单、精度高、显示信息丰富、体积小、重量轻,可广泛应用在各种汽车上。但应用在实验系统中,就有了一定的局限性。因此,我们考虑用LabWindows/CVI集成开发环境来设计虚拟汽车仪表盘。
4.接口程序:
double sensor (void)
{ char RecieveData[9];
char SendData[4];
OpenComConfig (1, "", 9600, 0, 8, 1, 512, 512);
SendData[0]='#';
SendData[1]='0';
SendData[2]='1';
SendData[3]='\r';
ComWrt (1, SendData, 4);
ComRd (1, RecieveData, 9);
data=(RecieveData[2]-RecieveData[2])*100+(RecieveData[3]-RecieveData[2])*10+(RecieveData[4]-RecieveData[2])+(RecieveData[6]-RecieveData[2])*0.1;
return data;
参考文献
[1]基于LabWindows/CVI的虚拟仪器设计 刘君华主编 电子工业出版社2003.1
[2]Lab VIEW 7 Express 实用技术教程 雷振山 机械工业出版社2004-4-1
[3]低功牦单片微机系统设计何为民 著 北京航空航天大学出版社1994.4
[4]单片机实验与实践教程万光毅 严 义 编著 北京航空航天大学出版社 2003.12
关键词:单片机;核心设计;智能化仪表
以87LPC767单片机为核心设计的智能化仪表。分析其工作原理、硬件电路设计和软件框图。
1.系统工作原理:
本仪表盘的工作原理框图如图一所示:
它由两大部分组成:一类是转向、制动等信号的显示,该部分不需要单片机控制,直接显示即可。另一类是数值信号的显示,如水温、机油压力和车速等,它们必须经过单片机的处理才能正确显示,此类信号共五种。
对于汽车仪表而言,信号输入有三大类:(1)模拟连续信号,包括电瓶电压、油箱内燃数量等;(2)模拟脉冲信号,包括左、右转向信号、制动、档位信号、水温、机油压力等;(3)机械信号,包括码表软轴输入信号和发动机转速信号等。设计时主要考虑(2)和(3)类的信号变换、处理及显示和数据保存等功能的显示。其中,码表软轴输入信号和发动机转速信号的监测和处理可以有多种方法实现。例如,使用测速发电机可以将转速变为交流信号,在进行转变处理;也可以通过红外对管来解决,通过红外对管将机械信号直接转变成脉冲信号,用单片机内部的定时/计数器完成码表和里程表的计数管理任务,以车速为例,车轮转一圈,码表输入软轴也转一圈,由车轮的外径可以计算出每行驶1公里应该旋转的圈数n,每一秒钟计数一次m,则车速为3600m/n。为了保证车辆慢速行驶时车速的计算精度,可以在软轴上套用一个多槽检测片,设每圈有k个槽,则修正后的车速为3600m/kn(公里/小时)。数据显示可以通过液晶组件实现,显示的数据包括码表、总里程数、单次行驶里程、发动机转速、机油压力、燃油量1.水温、和电瓶电压等参数,这些显示参数可以使用单片机的I2C总线实现。数据保存主要完成总行驶里程、单次行驶里程、和停车时的车速等关键数据的保存。第(2)类信号的处理较为困难,主要是因为此类脉冲信号的频率较低,约为40-120/分钟,这样就难以用普通的计数法处理,为了实时显示的需要,可以采用两种方法解决:信号倍频或脉冲/直流信号的转换。采用倍频的方法,显然抗干扰能力不够,因为汽车的工作环境很复杂,外界干扰可能很严重。必须有效的进行干扰抑制;采用脉冲/直流信号的转换就能有效的抗外界干扰,然后再进行A/D转换,显然增加了成本。但是,目前51系列的许多单片机内部都有A/D转换电路,所以在分析了系统的工作原理后。器件的选型对系统的性能实现就显得尤其关键,因此选定单片机87LPC767。
2.硬件设计
本仪表使用单片机87LPC767具有801C51单片机的内核,与普通80C51单片机指令完全兼容。并提供了低系统成本和低功耗及少数的IC引脚,由于它内建了许多周边电路如电源BROWNDOUT侦测、模拟功能、串口UART和 I2C及创新的内建式RC振荡4通道8位ADC、看门狗电路、电源监控电路等。使得87LPC系列单片机降低了对外部元件的要求,同时给设计者提供了高集成度、低成本、低功耗应用更多的选择。而且,液晶显示和EEPROM(用于参数保存)可以接在同样的两根I2C总线上,由于单片机的功能很强,因此,外围电路非常简单。需要说明的是:767内部虽然有自己的RC振荡器,但频率稳定性不高,频率偏差约为标称振荡频率的25%,为了计量的准确,必须使用片外的晶体振荡器,考虑到单片机的任务较重,我们采用了12M Hz的外部晶体。
仪表盘设计必须考虑许多实际因素,由于水温和机油压力这两个传感器的输出是幅度为0.12伏、脉冲持续时间和周期均可变。因此,此类信号必须经过转换才能送入A/D,我们用图2所示电路转换后。送到A/D输入端的波纹电压幅度小于400Mv,当A/D参考电压选择为5V时,转换误差为40Mv/5V=0.008=0.8%,满足读数精度的要求。
同时,为了避免过多的参数显示给驾驶员造成不必要的影响,我们还设计了一些控制按钮。例如,总里程表和本次行驶里程就没必要同时显示,缺省显示为总里程显示,当驾驶员要检查本次行驶里程时,可按下相应的显示控制按键,则在里程参数显示的位置上显示本里程。
另外,我们还考虑了仪表的安全可靠使用和安全报警等问题。如果汽车行驶在工业干扰严重的地域,一旦单片机系统不能正常的工作,则必须用看门狗电路及时将单片机复位。同时,如果汽车在行驶过程中发生故障,必须及时在相应参数显示的位置上报警,避免驾驶员带故障行车,确保行车安全。
3.软件设计
主程序及中断子程序框图分别见图3和图4。
由于单片机工作频率较高,而汽车运行参数的显示不能很快,否则会对驾驶员造成不必要的干扰,分散注意力,通过上车实验,我们发现:码表及里程表等参数的显示以1秒刷新一次为宜;其他参数除了加电时显示一次以外,,正常工作的显示以1分钟刷新一次为宜。考虑到A/D检测所需的时间,电瓶电压、机油压力、水温和燃油量的显示采用了间隔15秒循环显示的方式。只有在关电时才向E2PROM写里程及速度等参数。
本仪表盘设计时直接采用汽车的12伏电瓶供电,功耗小,工作温度范围大,还可提供安全报警,任何参数显示的过高或过低都会在相应的位置上实时报警。由于87LPC767单片机的功能很强,因此外围电路大为简化,仪表性能大大加强。
本仪表操作简单、精度高、显示信息丰富、体积小、重量轻,可广泛应用在各种汽车上。但应用在实验系统中,就有了一定的局限性。因此,我们考虑用LabWindows/CVI集成开发环境来设计虚拟汽车仪表盘。
4.接口程序:
double sensor (void)
{ char RecieveData[9];
char SendData[4];
OpenComConfig (1, "", 9600, 0, 8, 1, 512, 512);
SendData[0]='#';
SendData[1]='0';
SendData[2]='1';
SendData[3]='\r';
ComWrt (1, SendData, 4);
ComRd (1, RecieveData, 9);
data=(RecieveData[2]-RecieveData[2])*100+(RecieveData[3]-RecieveData[2])*10+(RecieveData[4]-RecieveData[2])+(RecieveData[6]-RecieveData[2])*0.1;
return data;
参考文献
[1]基于LabWindows/CVI的虚拟仪器设计 刘君华主编 电子工业出版社2003.1
[2]Lab VIEW 7 Express 实用技术教程 雷振山 机械工业出版社2004-4-1
[3]低功牦单片微机系统设计何为民 著 北京航空航天大学出版社1994.4
[4]单片机实验与实践教程万光毅 严 义 编著 北京航空航天大学出版社 2003.12