口碑最好的皮卡车品牌排行榜-起亚智跑2019新款上市
2023年11月26日发(作者:二手汽车配件拆车件app)
汽车自适应前照灯系统的设计
摘 要
传统的汽车照明系统主要由前照灯系统,信号照明系统,车内照明系统
三大部分组成。随着科技的进步,传统照明系统也经历了长足的发展,但是
实际的使用中,传统的前照灯系统依然存在着诸多问题,在面对复杂的道路
条件和行车状况时,交通安全仍然存在巨大的隐患。因此,如何使传统汽车
照明智能化,驾车更安全,更舒适就成为一个十分紧迫而又有重大现实意义
的课题。
针对传统的汽车照明灯夜间行驶在弯道时无法调节照明角度、在弯道
内侧易出现盲区,在坡道无法调节照明角度等情况,提出了一种前照灯弯
道自适应照明控制系统,以提高夜间行车安全性。本文主要介绍了一种以
单片机STC90C51为核心设计的汽车自适应前照灯计算机控制系统。简要的
介绍汽车自适应前照灯的产生的背景、当今国内外发展现状及趋势。分析
了该系统的组成、功能和工作原理。在文章硬件部分,详细设计了汽车自
适应前照灯左右转向计算机控制系统的主控制器及外围电路。在软件部分,
设计了系统软件的整体流程,算法程序,实现了一个可根据道路以及方向
盘转角信号随动转向的控制系统。
通过最后的系统调试,保证了车辆在弯道行驶时,前照灯能根据路况
调整到合适的位置给驾驶者提供照明。表明了本设计方案的可行性和正确
A PROJECT OF AUTOMOTIVE ADAPTIVE FRONT
LIGHTINGSYSTEM
ABSTRACT
Traditional automotive lighting system consists of three major
components: headlamp system, signal lighting and interior lighting system. As
technology advances, the traditional lighting system also continues to develop,
but in practice, there are still many problems in the traditional headlamp
system. Facing complex road conditions and driving conditions, there are
colossal security bungles in the traffic safety. Therefore, how to make the
traditional automotive lighting intelligent, and how to make the driving more
secure and more comfortable have become a very urgent and great
practically significant issue.
The traditional automotive lighting drive at night may be faced some
conditions, for example, inability of adjusting illumination angels at the curve,
the appearance of blind section at the clip, inability of adjusting illumination
angels at the ramp, based on which, a headlamp adaptive lighting control
system at the curve is put forward in order to improve the driving safety at
night. This paper introduces a Computer control system of the automotive
adaptive headlamps with STC90C51 microcontroller core design. The paper
will briefly introduce the background of the appearance of auto-adaptive
headlamps, and its current development situations and trends at home and
abroad. It will also analyze the composition, function and working theory of
the system. The hardware part in the paper detailed designs the host controller
and peripheral circuits of the auto adaptive headlamps left and right tuning
computer control system. The software part projects the overall process of
system software, algorithms program, finishing a control system that can
II
optional turn according to vehicle speed and steering angle signals. The final
system debugging ensures that when the vehicles are driving at the curve, the
headlamps can adjust itsel according to road conditions to a suitable position
to light for the drivers. The project is of feasibility and correctness.
At the end of the paper, a conclusion of the project is drawn to put
forward some problems waiting for solving and to come up with some idea
about the later improvement.
Key words: adaptive lighting, tracking turning, safe driving,STC90C5
III
目 录
第1章 绪论 ...................................................................................... 1
§1.1 课题背景 ....................................... 1
§1.2 国内外发展现状及发展趋势 ....................... 3
§1.3本课题的研究意义与主要内容 ...................... 5
第2章 系统整体方案设计 ............................................................... 6
§2.1 系统的功能及构成 ............................... 6
§2.2 系统基本功能 ................................... 8
§2.3 系统的工作原理 ................................. 8
§2.3.1 随动转弯角度 ................................ 9
§2.3.2 车身纵倾调光 ............................... 10
§2.4本章小结 ....................................... 10
第3章 系统硬件设计 ..................................................................... 11
§3.1 AFS主控制器设计 ............................... 11
§3.1.1 微控制芯片的选型 ........................... 11
§3.1.2 信号处理电路设计 ........................... 13
§3.1.3 电源电路设计 ............................... 15
§3.1.4 电机控制电路设计 ........................... 15
§3.2 执行器选择 .................................... 17
§3.3 传感器模块选择 ................................ 17
§5.1.1 常见的硬件故障 ............................. 25
§5.1.2 硬件调试方法 ............................... 25
§5.2 系统软件调试 .................................. 26
§5.3 基于PROE的运动建模 ........................... 27
§5.4 本章小结 ...................................... 28
结 论 ................................................................................................ 29
参考文献 .......................................................................................... 30
致 谢 .............................................................................................. 31
附 录 .............................................................................................. 32
附 录1原理图............................................................................... 32
附 录2 PCB ................................................................................... 33
附 录3 实物图 .............................................................................. 34
附 录4程序代码 ........................................................................... 35
V
第1章 绪论
§1.1 课题背景
自19世纪汽车诞生以来,已经历了一个多世纪的风雨。想当初,卡尔.本
茨造出的三轮汽车每小时的时速仅为18公里/时,而现在已经诞生了时速
600公里的超级跑车。随着社会的不断进步发展,汽车已成为现代人生活中
不可或缺的交通工具。然而,随着汽车技术的不断进步以及车辆数目的增加,
汽车也给现代社会带来了新的问题。频繁发生的交通事故已经成为不得不严
肃对待的世界性问题。据统计,在各种意外事故中,以车祸占首位,占意外
死亡总数的50%以上。仅以汽车交通事故为例,全世界因交通事故而死亡的
人数已超过3000万人,比世界大战所死亡的人数还多。而其中以青少年与老
年人的死亡率最高。
值得注意的是:儿童青少年一直都是交通事故导致伤亡的高危人群。据
估计,近年来全世界每年在车祸中丧生的人数约为30万人,受伤者约3000万
人,其中终身残疾者约为300万人。我国城市每万辆车死亡率为50—10.8人左
右,与国外相比较,为日本的26.5倍、美国的17.8倍。若以万辆车的死亡率
作比较,我国车祸的发生率和死亡率皆居世界之首位。据公安部交通管理局
的统计:2005年,全国共发生道路交通事故450254起,造成98738人死亡、
469911人受伤,直接财产损失18.8亿元。自2001年以来全国交通事故死亡人
数首次回落到10万人以下。中国由于交通事故每年死亡超过10万人,死者大
多是年轻人,占全球交通事故死亡人数的五分之一,居世界各国之首。中国
每5分钟有一人因车祸死亡,每一分钟有一人因车祸伤残,每天死亡280多人,
每年死亡10万多人,中国的汽车数量仅占世界的1.9%,而车祸死亡人数占世
界15%,且每年增加4.5%。如何提高汽车的安全性、减少交通事故的发生已
经成为全世界的迫切要求。汽车安全性分为三大部分:主动安全性、被动安
全性和防火安全性。所谓主动安全性,是指汽车设计者在汽车的配置中,采
取一系列技术措施,以预防和减少安全事故的发生。其中包括汽车夜间照明、
1
各种指示信号、驾驶员视野、制动以及轮胎等;所谓被动安全性,是指在汽
车中采取一系列技术措施,使得安全事故一旦发生时,可最大限度地防止或
减少对人员造成的伤害。其中包括车身结构、安全玻璃、座椅、头枕、内外
部凸出物以及安全气囊等。汽车照明系统作为汽车最主要的主动安全装置之
一,主要负责前方路况的照明,提供给驾驶者前方的路况信息,使驾驶员能
够及时看清障碍物并做出反应,是保证汽车在夜间或能见度较低的环境下安
全行驶的关键。
传统的汽车照明系统主要包括照明装置(照明灯)和信号装置。其中照明
灯的功能是在黑暗环境中照亮汽车行驶前方的路面(倒车灯照亮汽车后方,
在倒车时也是照亮行驶方向)。照明灯主要是指前照灯、前雾灯、倒车灯和
牌照灯。其次像室内灯、仪表等和行李箱灯也属照明灯用。信号装置包括汽
车信号灯和回复反射器。信号灯中又包括转向指示灯、制动灯、后雾灯和位
置灯等。信号灯的功能,是向其他道路使用者表明本车的存在,以及本车将
要转向某一方向或正在制动减速等,以引起对其的特别关注。事实上,前雾
灯兼有照明和信号的两种功能,它是在雾、雪、雨或尘埃蔓延等有碍可见度
的情况下,为改善车辆前方道路照明和使迎面来车易于发现车辆的灯具。但
电子技术的迅猛发展,各行各业都开始提倡机电一体化,汽车也不例外。安
全、节能、环保以及智能化和信息化是未来汽车的发展趋势。与这些要求相
适应,汽车电子化的趋势越来越明显,各类电器元件在汽车成本中所占比例
也越来越高,如今的汽车上都是动辄数百个电子元件,数以捆计的汽车线路
控制着汽车多个部门的协调工作,国外专家预测未来3-5年内汽车上装用的电
子装置成本将占汽车整车成本的25%以上,汽车将由单纯的机械产品向高级
的机电一体化产品方向发展,成为所谓的“电子汽车”。可以说汽车电子化
已经成为现代汽车发展的重要标志。在现代汽车制造工艺中引入电子技术不
仅提高了汽车的动力性、经济性和安全性,使汽车产业进入一个新的纪元,
而且还开拓了电子产品的市场,推动了电子产业的发展。
将汽车电子技术运用到汽车照明领域,将微控制器、传感器、车载网络
系统、自动控制理论与传统的汽车前照明机械系统结构相结合,开发出能够
解决由于传统照明系统带来的安全问题的新型智能车灯,将是未来汽车前照
明系统的发展方向。
§1.2 国内外发展现状及发展趋势
在欧、美、日等发达地区和国家,从上个世纪几时年代中叶就已经开
始投入研究。在2003年初,一种具有“左顾右盼”功能的Pre-AFS(初级
AFS-Adaptive Front lighting System)系统诞生了。时至今天,AFS前照灯
系统的研究在国外已经取得了很大的进展,日趋成熟。日本、欧洲等国的
知名汽车制造商都纷纷推出自己的AFS系统。在其高档轿车中标配AFS
系统的同时,讲AFS系统在中档甚至中低档轿车车型作为选配列出,比如
宝马5系,奥迪A8,梅赛德斯CLS、M系、E系,雷克萨斯R系,大众
B6等。
虽然AFS系统已经投入使用,而且效果良好,但致力于行车安全的专
家们并不满足于已经取得的成绩。以德国海拉公司为首的汽车灯具巨头们
正在考虑如何让车灯在多种复杂的道路状况下司机们提供更好的照明。一
种被称作VARILIS(多功能可变智能灯光系统)的新技术已诞生,除了本
课题研究的随动转弯功能之外,它将根据车速在不同范围产生不同的光型,
3
如乡村灯光、城市灯光、高速灯光、远光等。在VARILIS系统中,光源和
透镜之间不是双疝气前照灯中的遮光罩,而是一种可旋转的柱体,改柱体
表面有很多不同的形状,根据智能控制器对更累传感器信号的处理,使转
到不同的角度产生不同的光型。
国内关于汽车自适应照明系统的研究起步较晚,目前仅有上海小系车
灯有限公司,沈阳北方汽车大灯自动转向器厂、天津欧华汽车研发中心等
少数机构在进行自主研发。据报道,沈阳北方汽车大灯自动转向器厂在
2007年初研发成功汽车自动转向前照灯,该产品打破了国外公司在此方面
的垄断,在汽车照明领域取得突破,但与自适应的前照灯还有一定差距。
可以说自适应照明系统是近年国际国内在汽车智能照明系统方面研究的热
点,也是汽车主动式安全系统研究有所突破的领域。
目前,己经有很多车辆具备了AFS的部分功能,比如全新宝马530i、
奔驰新E级、东风日产新天籁、东风雪铁龙凯旋、广州丰田凯美瑞、雷克
萨斯LS460L以及一汽丰田锐志3.0L等。随着科技的进步和人们对于汽车
观念的提升,AFS有着更安全,更环保的发展趋势。
随着科技日新月异的进步和人们对汽车安全的追求越来越高,汽车自
适应前照灯系统越来越有着更安全、更环保、更人性化的发展趋势。
自适应智能照明系统在汽车主动安全领域的重大突破和显著成效使其
成为未来国内外汽车生产厂商在汽车智能照明系统方面的热门研究方向之
一。随着汽车工业的发展,使用者在考虑车载高新技术的同时,对汽车的安
全性也越来越重视。为满足市场的需求,安全、舒适、节能将是未来自适应
前照灯系统的发展方向。首先,在未来的汽车智能前照明系统中将会集成图
像识别功能以检测行人、车辆和路边障碍物,为驾驶员提供更加安全的行驶
环境;其次,未来的自适应照明系统将与自适应巡航控制(ACC)和车道偏离
警告系统(LDWS)等其他新型汽车主动安全系统相结合,不仅可以更加精确
的预测前方的路面状况从而对光型进行更智能化地调节,同时也能使系统变
得更加集成化、低成本化;并且随着LED技术的不断发展,LED的性价比不
断提高,据专家预测,新一代的汽车自适应照明系统也将采用LED转向灯,
由于LED灯具有寿命长、占用空间小等优点,可以使得整个系统的节能性和
可靠性明显提高。
4
§1.3本课题的研究意义与主要内容
随着汽车制造技术的不断进步,汽车的行驶安全成为人们越来越关心的
问题。而汽车前照灯作为汽车主动安全的主要组成部分之一,也必须满足使
用者越来越高的要求。一个优秀的汽车照明系统应该满足以下标准:能够为
驾驶者提供前方路段的景象信息,让驾驶者有充足的时间对可能面对的危险
做出反应;给驾驶者提供信息时不会增加驾驶员的疲劳;给本车驾驶员带来
方便的同时不会给其它车道使用者的带来麻烦。
汽车自适应前照灯上下左右转向控制系统是综合利用传感技术、计算机
技术、控制技术、机电一体化技术设计,使汽车自适应前照灯转向控制系统
能够根据车辆的行驶状态、方向盘的转角提供更加合理的照射范围,为驾驶
员的行车安全提供了更有利的保障。
本课题借鉴了当前国际和国内在这方面的技术经验及其设计思想,开发
了低成本的基于STC90C51单片机的汽车自适应照明系统。论文主要研究内
容如下:
第一章简单介绍了本课题的研究背景、研究目的及意义以及国内外的发
第2章 系统整体方案设计
§2.1 系统的功能及构成
在绪论中已经提到夜间是交通事故高发生时间段,而因照明问题引发的
交通事故更是占到了夜间事故的50%以上,而且夜问事故的致死率很高,达
到了50%,几乎是白天事故致死率的2倍。可以说,自从汽车诞生以来,安
全一直是人们关注的首要汽车性能,也永远是汽车制造商首要考虑的问题,
基于此,无论是用户还是汽车生产商都希望能开发出一个能够显著减少夜间
交通事故发生率的汽车前照明系统,从而自适应照明系统便登上了舞台。因
此,综合国内外研究发展状况.系统的功能构成主要包括以下两个个方面:
当因路面崎岖或汽车前后载荷变化导致车身倾斜时,系统能够根据当前
车身负载和当前路况来改变汽车前照灯的俯仰照射角度,既提供了更适宜的
照明范围,又不会影响对面会车的司机使其眩目,图2-1为车身倾角对照明的
影响。
图2-1 车身纵倾对照明产生的影响
6
随动转弯,车辆进入弯道时,前照灯产生随动的旋转光型,给予前方弯
道足够的照明。其中图2-2是弯道传统照明情况,图2-3为在AFS下的照明情
况。
图2-2 弯道传统照片
图2-3 AFS的弯道旋转照明
汽车自适应智能照明控制系统主要由获取必要汽车行驶信息的各传感
器、信号调理电路、驱动电路、执行电机、故障诊断等部分组成。可分为以
下几个模块:
(1)前照灯控制模块,包括调整灯光左右随动和调整高度的步进电机;
(2)AFS主控制器;
(3)传感器模块,包括倾角传感器模块和车灯左右转动处理模块;
系统结构示意图2-4如下:
7
电源供电
转角信号
倾角信号
驱动执行单元
步进电机
STC90C51
图2-4系统结构示意图
§2.2 系统基本功能
夜晚行驶转弯和坡道行驶时,系统对方向盘的转向信号和车身倾角信号
§2.3.1 随动转弯角度
车辆在行驶中发生状况最极端的应对措施就是制动,根据当前的车速和
方向盘转角,前照灯需要偏转的角度就是要照亮车辆将要行驶到的路面,保
证这个有效的刹车距离内的照明。转弯水平方向偏转模型如图:
图2-5转弯时水平方向偏转模型示意图
由图中的几何关系和圆弧长公式可得:
2-1
L?2R
?
其中:是圆弧长,由转弯时系统的照明要求可得:
L
L?vt?s
(2-2)
式中是车速,是反应时间,是制动距离。
vs
t
转弯半径
R?L/sin
轴
?
(2-3)
式中:是车轮转过的角度:是汽车的轴距。
?
L
轴
方向盘和车轮转角的关系:
(2-4)
??
?K
式中:是转向特征系数,
K
?
是方向盘转角;
由式子得:
??
?sin(K)
vt?s
2L
轴
(2-5)
9
()
此公式即为计算前照灯转向转角的经验公式
。
§2.3.2 车身纵倾调光
车身纵惭调光是采用安装在车体前部的车身倾角传感器,获取车身倾角
变化量。车身纵倾角度的变化量,就是前灯光轴角度的变化量,通过调光电
机的运作,反向调整此角度变化,使之适应行车变化。
§2.4本章小结
本章首先给出了本系统的总体组成。详细的阐述了本系统的基本功能和
工作原理,并建立了汽车自适应前照灯转向控制系统基本控制模型,为系统
的进一步研究提供了理论基础。
10
第3章 系统硬件设计
如前所述,系统的硬件部分设计主要包括:
AFS主控制器设计:包括微控制器,信号处理电路,电机控制电路,指
示部分电路及开关电路
执行器设计:包括左右旋转电机总成和车身纵倾调高电机总成,以下分
别简称为旋转电机总成和调高电机总成
传感器模块设计:选用车身倾角传感器模块来实现倾角测控
。
§3.1 AFS主控制器设计
§3.1.1 微控制芯片的选型
在车载电子系统的设计中,微控制器是整个系统的核心部件,其性能的
好坏直接决定整个系统的运行效果。一般来说,选用车载电子系统微控制器
时应考虑微控制器应用的类型、I/O接口、主频、功耗、所支持的存储器类
型、总线、价格、封装、产品的生命力和厂家的实力、技术支持以及第三方
软件的支持等因素,但最重要的是微控制器的稳定性,安全问题应该永远是
车载系统首要考虑的因素。由于高度的通用性和出色的稳定性,本系统采用
宏晶公司产的低功耗,高性能CMOS 8位单片机的STC90C51作为控制器。片
内含4k bytes的可系统编程的Flash只读程序存储器,器件采用ATMEL公司的
高密度、非易失性存储技术生产,兼容标准8051指令系统及引脚。它集Flash
程序存储器既可在线编程(ISP)也可用传统方法进行编程及通用8位微处理器
于单片芯片中,可提供许多高性价比的应用场合,可灵活应用于各种控制领
域。其主要性能参数:
?
?
?
?
与MCS51产品指令系统完全兼容
4k字节在系统编程(ISP)Flash闪速存储器
1000次擦写周期
4.0-5.5V的工作电压范围
11
?
?
?
?
?
?
?
?
?
?
?
?
全境态工作模式:0Hz-33MHz
三级程序加密锁
128×8字节内部RAM
32个可编程I/O口线
2个16位定时器/计数器
6个中断源
全双工串行UART通道
低功耗空闲和掉电模式
中断可从空闲模唤醒系统
看门狗(WDT)及双数据指针
掉电标识和快速编程特性
灵活的在线系统编程
STC90C51芯片管脚图3-1
图3-1 STC90C51芯片管脚图
12
§3.1.2 信号处理电路设计
如前所述,系统需要采集的信号主要包括:方向盘转角信号。这里用
电位器模拟转角信号,模拟信号均为0~5V线形变化电压信号,这就需要
进行AD转换,本系统用PCF8591是一个单片集成、单独供电、低功耗、
8-bit CMOS数据获取器件。
PCF8591具有4个模拟输入、1个模拟输出和1个串行I?C总线接口。
PCF8591的3个地址引脚A0, A1和A2可用于硬件地址编程,允许在同
个I?C总线上接入8个PCF8591器件,而无需额外的硬件。在PCF8591器
件上输入输出的地址、控制和数据信号都是通过双线双向I?C总线以串行
的方式进行传输。
PCF8591的功能包括多路模拟输入、内置跟踪保持、8-bit模数转换和
8-bit数模转换。PCF8591的最大转化速率由I?C总线的最大速率决定。
PCF8591 特性如下:
?
?
?
?
?
?
?
?
?
?
?
?
?
单独供电
PCF8591的操作电压范围2.5V-6V
低待机电流
通过I?C总线串行输入/输出
PCF8591通过3个硬件地址引脚寻址
PCF8591的采样率由I?C总线速率决定
4个模拟输入可编程为单端型或差分输入
自动增量频道选择
PCF8591的模拟电压范围从V到V
SSDD
PCF8591内置跟踪保持电路
8-bit逐次逼近A/D转换器
通过1路模拟输出实现DAC增益
图3-2为引脚图
13
图3-2 PCF8591引脚
引脚含义如下:
AIN0~AIN3:模拟信号输入端。
A0~A3:引脚地址端。
VDD、VSS:电源端。
SDA、SCL:I2C 总线的数据线、 时钟线。
OSC:外部时钟输入端,内部时钟输出端。
EXT:内部、外部时钟选择线,使用内部时钟时 EXT 接地。
AGND:模拟信号地。
AOUT:D/A 转换输出端。
VREF:基准电源端。
图3-3 PCF8591电路图
14
§3.1.3 电源电路设计
目前轿车使用蓄电池一般都是12V,在车辆使用过程中,发电机电压可
以达到13V左右,考虑到车载电源的电压波动,实际ECU的供电电压范围在
9-15V。而微控制器及控制芯片供电电压都是5V,因此为了保证系统的工作,
需要电源芯片进行电压转换。系统选用三端稳压器MC7805ACT作为电压转
换芯片,它能提供固定的输出电压,内含过流、过热和过载保护电路。带散
热片时,输出电流可达1A。其主要特点有:
输出电流可达1A
输出电压:5V
过热保护
短路保护
输出晶体管SOA保护
使用一片MC7805ACT即可将车载12V电源转换为5V为系统提供稳压电
源,如图3-4所示:
图3-4 电源电路
§3.1.4 电机控制电路设计
系统共四个电机,系统选用4相5线步进电机,电压5VDC,电流O.16A。
由于旋转和调高在执行动作时分时进行,因此需要分别控制,由于左右电机
旋转角度不同,所以P1.0-P1.3发送PWM脉冲给旋转电机,P1.4和P1.7发送PWM
脉冲给调高电机。
步进电机的驱动器选用达林顿阵列管ULN2003,ULN2003是高耐压、大
电流达林顿陈列,由八个硅NPN达林顿管组成,该芯片特点如下:
每一对达林顿都串联一个2.7K的基极电阻,在5V的工作电压下它能与
15
TTL和CMOS电路直接相连,可以直接处理原先需要标准逻辑缓冲器来处理
的数据。
工作电压高,工作电流大,灌电流可达500mA,并且能够在关态时承受
50V的电压,输出还可以在高负载电流并行运行。
其内部结构如下图所示:
图3-5 ULN2003芯片引脚
电机控制电路:
图3-6 电机驱动电路
16
§3.2 执行器选择
本系统选用四相六线的24BYJ48型永磁感应式步进电机,其外形尺寸如
下图所示:
图3-7 电机外形尺寸
§3.3 传感器模块选择
倾角传感器设计
该系统选用ADXL345加速度传感器模块,ADXL345是一款小而薄的
超低功耗3轴加速度计,分辨率高(13位),测量范围达± 16g。数字输出
数据为16位二进制补码格式,可通过SPI(3线或4线)或I2C数字接口访
问。它可以在倾斜检测应用中测量静态重力加速度,还可以测量运动或冲
击导致的动态加速度。其高分辨率(3.9mg/LSB),能够测量不到1.0°的倾斜
角度变化。
下图为该模块的原理图3-8
17
图3-8倾角传感器模块原理图
ADXL345加速度计实际是一种机械传感器,为多晶硅表面微加工结
构,置于晶圆顶部。由于应用加速度,多晶硅弹簧悬挂于晶圆表面的结构
之上,提供力量阻力。差分电容由独立固定板和活动质量连接板组成,能
对结构偏转进行测量。加速度使惯性质 量偏转、差分电容失衡,输出的值
与加速 度成正比。相敏解调用于确定加速度的幅度和极性。
图3-9 加速度计工作原理示意图
如图3-10所示,物体的翻转和倾斜均可以通过ADXL345三轴加速度
数据gx、gy和gz来测量,根据ADXL345的工作原理有g2=gx2+gy2+gz2 ,
g为重力加速度,gx、gy和gz分别为重力加速度在三轴的分量,并且三轴
18
与重力方向的夹角θx、θy、θz可以表述为:θx=arcsin(gx/g),其他两轴类推。
由此可以确定物体在空间的姿态。
图3-10 物体的翻转和倾斜
§3.4本章小结
本章首先根据系统功能需求对AFS主控制器的方案设计进行了介绍,然
后对执行器即电机设计进行了介绍,接下来对系统所用传感器的设计和选择
做了介绍和说明。
19
第4章 系统软件设计
在系统的硬件设计完成后,需要编写源代码程序来控制硬件电路完成系
统的设计功能。系统性能的高效与否,不仅取决于合理的硬件电路设计,同
时也需要优秀的软件程序编写。通常的编程语言有汇编语言和高级语言两
种,但是由于使用汇编语言会遇到很多问题,首先它的可读性和可维护性不
强,特别是当程序没有很好标注的时候;其次是代码的可重用性不强。为提
高程序的可移植性与开发效率,现在很多单片机的开发应用都使用高级语言
进行。本系统所使用的C51语言就是高级语言中的一种。应用C51语言进行编
写具有以下优点:不需要了解系统的硬件结构;编程时寄存器的分配和寻址
由编译器自动完成而不需再考虑存储器的寻址;所使用的操作函数与汇编语
言相比更接近人的思维:可直接调用C51语言中库文件的标注函数;通过C语
言的模块化编程技术,可直接将已编制好的程序运用到到新的程序之中。
§4.1程序思路
系统的总体构思如下图4-1:
图4-1程序总体构思图
20
主程序是整个汽车自适应前照明系统功能的骨架,它体现了整个系统的
逻辑关系。在本系统中,主程序包括系统初始化子程序、前照灯水平偏转子
程序、前照灯车身上下垂直调整子程序3个功能模块。系统初始化模块对之
后系统所使用的各变量进行定义,同时将内存清零、设置计数器等。前照灯
水平偏转子程序、前照灯车身俯仰垂直调整子程序这两个个模块则是在不同
的行驶环境中对灯头照射方向进行调整来辅助驾驶员的驾驶任务。
§4.2系统分块程序设计
图4-2 系统主程序设计流程图
21
§4.2.1 随动转弯程序
在汽车驾驶员进行转弯操作时,系统先通过汽车传感器采集的数据判断
是否启动此子程序,当采集到转角信号时,启动子程序,否则不启动。再通
过转角传感器采集的数据判断是否需要进行前照灯的水平偏转及前照灯水
平偏转的方向。当采集到的方向盘转角大于系统设定值时,则需要进行前照
灯水平偏转。
开始
§4.2.2 倾角转动程序
汽车在直线路况行驶时,系统通过汽车倾角传感器采集的数据来判断是
否需要进行车身俯仰前照灯垂直调整以及垂直调整的方向。当采集到的倾角
数大于系统设定值时,则需要进行车身俯仰前照灯垂直调整。由于前照灯垂
直调整不包含模糊控制器设计,所以只需要根据步进电机的步进角和灯头的
偏转关系计算出输出的脉冲数,驱动步进电机使灯头偏转到系统设定的角度
即可。如果采集到的车高数据小于系统设定值,则无需进行车身俯仰前照灯
垂直调整,只需要将储存在寄存器中上次的脉冲数取反直接作为最后输出的
脉冲数,使得前照灯回复到初始位置即可。车身俯仰调整子程序如下图所示
开始
倾角数据采集
需要调整
N
Y
§4.3 本章小结
本章针对系统的特点,设计了系统控制主程序流程图。并分别设计了随
动转弯子程序、车身俯仰调整子程序的软件算法流程图。
24
第5章 系统调试
§5.1 系统硬件调试
§5.1.1 常见的硬件故障
(1)逻辑错误:硬件的逻辑错误是由于设计错误和加工过程中的工艺性
错误所造成的,主要包括:错线、开路、短路等,其中短路最为常见,在印
刷电路板布线密度高的情况下,极易因工艺原因造成短路。
(2)器件失效:元器件失效主要是因为器件本身已损坏或性能不符合要
求,或者是由于组装错误造成的元器件失效,如电解电容、二极管的极性错
误,集成块安装方向错误等。
(3)可靠性差:系统不可靠可能受多种因素影响,如金属化孔、接插件
接触不良会造成系统时好时坏;内部和外部的干扰、器件负载过大等造成逻
辑电平不稳定;另外,走线和布局的不合理等也是系统可靠性差的重要因素
之一。
(4)电源故障:若系统中存在电源故障,则加电后将造成器件损坏。
§5.1.2 硬件调试方法
拿到印刷电路板后,用万用表直接检查线路板各处是否有明显短路、断
路的地方,尤其是电源是否短路。接着,焊接各元器件及插座,在焊接过程
中要对各元件做逐一检查,比如二极管极性、电容容量及耐压、电阻值大小
等。在插座、元件焊接完毕后,仔细检查元件面各元件之间裸露部分有无相
互接触现象,焊接面的各焊点间、焊点和近邻线有无连接。最后,再给电路
板空载上电(未插芯片),检查线路板各管脚及插件上的电位是否正确,特别
是单片机管脚上的各点电压。若上述的一切都正常,则硬件调试的准备工作
完成。
25
§5.2 系统软件调试
对系统软件编写完成之后,可以利用Keil C51仿真软件进行仿真运行
调试,其调试界面如图5-1所示。
图5-1 Keil C51软件调试截面图
在具体的调试过程中,采取以下方法进行调试:在Keil C51编译环境
中编写、编译软件模块,进行软件仿真调试,对功能模块的软件仿真。通
过Keil C51的调试窗口观察各个寄存器、变量以及并行口输出的结果,监
测软件模块运行的状态,在调试过程中不断地调整修改系统的软件程序,
使系统实现预定功能。
调试过程中单步运行和断点运行调试只能验证程序正确与否,而不能
确定定时精度、CPU的实时响应等问题,故在单步和断点调试之后,又进
行了连续调试。待全部完成后,应反复运行调试多次,对系统的稳定性和
操作是否符合原始设计要求、安排的操作是否合理等都要进行详细的观察,
必要时作适当的修正。在软件调试仿真无误后,即可用编程器烧写到单片
机中运行,观察系统运行结果。这样,通过不断烧写、试验,最终完成整
个软件,准确实现车灯转动的功能。
26
§5.3 基于PROE的运动建模
经过系统软件调试,证明设计方案是可行的。为了更加深入了解系统
的运动特性,我们对其进行运动的仿真,通过对比选择了使用PROE以达
到运动仿真。系统通过接受信号控制电机的转动,再通过减速机构,从而
使车灯系统能转动。
机械部分总体建模如下图5-2
图5-2 机械总体建模
内支架建模:
图5-3 内支架建模
27
外支架建模:
图5-4 外支架建模
§5.4 本章小结
本章首先详细描述用Keil C51对软件进行调试的过程以及其方法,通
过输入不同的数据对系统进行调试,以确定本设计方案的正确性。其后通
过PROE建模,并通过PROE对其进行运动仿真。本章工作内容使得硬件
部分能通过机械结构和软件算法实现系统的功能,通过PROE的运动仿真,
能更加深入的了解其运动特性。
28
结 论
汽车自适应照明系统目前正处于迅速发展时期,国内研究尚处于起步阶
段,基础理论还不完善,这给研究工作带来很大的机遇和挑战。本论文针对
传统汽车照明系统光型单一,无法进行故障预知,安全系数不高的背景,整
合了全车灯光系统,设计了一种自适应的照明系统。以最简单的方式实现了
汽车的低成本、智能化照明。
课题的研究开发工作经过两个月的不懈努力取得突破性进展,现将所完
成的主要工作总结如下:
(1)系统总体设计方案是正确、可行的。创造性的整合了全车灯光系统,
通过机电一体化技术实现了汽车照明系统的智能化。
(2)课题设计的灯光控制系统实现了原定的功能要求,且具有较强的抗
干扰能力和故障自诊断能力,能够保证驾驶过程的安全、舒适。
(3)采用模块化方法进行了系统的软硬件开发,从原理图,PCB设计到各
种传感器的选择、器件采购、软件设计、调试,获得了宝贵的实践经验。
(4)硬件电路采用的元器件经过多方面的选折比较,能够完成系统功能
要求,在市场上又容易采购,价格合理。具有良好的性价比,为今后的系统
参考文献
[1]世界汽车发展大事记[J].湖南现代道路交通,2002(3):28—30.
[2]2009年下半年全国道路交通情况.[2010.1.20].
[3]2009年全国道路交通事故统计数据情况.[2010.2.23].
[4]2010年全国道路交通安全形势总体平稳.[2011.1.27].
[5]徐大伟.世界汽车安全性技术法规与标准研究[D].武汉:武汉理工
大学,2007.
[6]D.Decker,C.Schmidt.Adaptive Systems for Motor Vehicle Front Steps
and Future,SAE World Congress,2005 It].USA:Detroit,Michigan.
[7]H.Shadeed,J.Wallschek.Concept of an Intelligent Adaptive Vehicle
Front Lighting Assistant System,Proceeding of the 2007 IEEE Intelligent
Vehicle Symposium,2007[C].Turkey:Istanbul.
[8]郑乃金.智能灯光系统的发展、功能及技术动向[J].世界汽车,
1996(6):18-22.
[9]雷雨海.前照灯智能话控制[J].交通科技与经济,2004(5):42-43.
[10]魏春园,等译.汽车电气与电子[M].北京:北京理工大学出版社,
2004.
[11]戎辉,龚进峰,等.AFS系统关键技术研究[J].汽车电器,2008(5):
15一18.
[12]谢明志.主动式灯头控制系统之研究[D].台湾:大叶大学,2003.
[13]戎辉,龚进峰,等.自适应前照灯运动学建模及系统开发[J].汽车
工程,2008,12(30):1079—1082.
[14] 李礼夫 邓前.汽车自适应前照灯转弯模式的数学模型研究.设
计.计算.研究.2010(10):43-45.
[15] 谭浩强.C程序设计.第三版.清华大学出版社,2005:1-376
30
致 谢
本论文是在导师任德志老师的悉心指导下完成的。两个多月来,老师渊
博的专业知识、严谨的治学态度和平易近人的气质,给我以深深的教诲和启
迪,是我今后学习和工作的榜样。同时,老师还在生活上对我无微不至的关
怀,并给予良好的学习环境和科研条件,使我能够全身心的投入到学习和工
作中。感谢我的父母和家人对我的学业一贯的支持与关心,是他们在背后默
默地为我提供了物质保障和不断进取的精神动力,让我顺利的完成学业。感
谢教研室各位同学的关心和帮助,感谢你们在学业上不断给予我的支持和帮
助,同时也感谢曾经无私帮助过我的其他老师和同学。
河南科技大学毕业设计(论文)
附 录
附 录1原理图
32
河南科技大学毕业设计(论文)
附 录2 PCB
河南科技大学毕业设计(论文)
附 录3 实物图
河南科技大学毕业设计(论文)
附 录4程序代码
#include
#include
#include
#include
#define uchar unsigned char
#define uint unsigned int
#include \"dianji.h\"
#include \"tuoluoyi.h\"
#include \"ad.h\"
uint jiaodu=0;
uchar bz=0;
uchar add=0;
uchar bza1=0;
uchar bza2=0;
//主程序
void main()
{
uchar devid;
P1=0X00;
delay(500); //上电延时
InitLcd(); //液晶初始化ADXL345
Init_ADXL345(); //初始化ADXL345
devid=Single_Read_ADXL345(0X00);//读出的数据为0XE5,表示正确
add=Read_AD(0);
if(add<127) {bza2=0;}
if(add>=127) { bza2=1;}
while(1)
35
河南科技大学毕业设计(论文)
{
//初始化ADXL345
Init_ADXL345();
//连续读出数据,存储在BUF中
Multiple_read_ADXL345();
//读取xyz
display_x();
display_y();
display_z();
delay(200);
//延时
//0到20;20到40;40到60;
if((jiaodu1>190)&&(bz==0)){K=2;motor_ffw();bz=1; }
if((jiaodu1>390)&&(bz==1)){K=2;motor_ffw();bz=2; }
if((jiaodu1>590)&&(bz==2)){K=2;motor_ffw();bz=3;}
if((jiaodu1<55)&&(bz==3)){bz=4;K=1;motor_ffw();K=1;motor_ffw();K=1;m
otor_ffw();}
if((jiaodu1>190)&&(bz==4)){K=1;motor_ffw();bz=5; }
if((jiaodu1>390)&&(bz==5)){K=1;motor_ffw();bz=6; }
if((jiaodu1>590)&&(bz==6)){K=1;motor_ffw();bz=7;}
if((jiaodu1<55)&&(bz==7)){bz=0;K=2;motor_ffw();K=2;motor_ffw();K=2;m
otor_ffw();}
//--------
add=Read_AD(0);
if((add<127)&&(bza2==0)) {bza1=1;bza2=1;}
if((add>=127)&&(bza2==1)) { bza1=2;bza2=0;}
36
河南科技大学毕业设计(论文)
if((bza1==1)) { bza1=0;K=1;motor_ffw2(); }
if((bza1==2)) { bza1=0;K=2;motor_ffw2(); }
}
}
//**************************************************************
************************************
sbit I2C_SDA=P2^7; //数据线
sbit I2C_SCK=P2^3; //时钟线
#define uchar unsigned char
#define uint unsigned int
void Delay_10_uS(void)
{
char i=10;
while(i--);
}
//**************************************************************
************************************
//启动(SCL为高,SDA由高变为低是一个开始条件)
//**************************************************************
************************************
bit start()
{
37
河南科技大学毕业设计(论文)
Delay_10_uS();
I2C_SDA =1;
Delay_10_uS();
I2C_SCK =1;
Delay_10_uS();
if ( I2C_SDA == 0) return 0;
if ( I2C_SCK == 0) return 0;
I2C_SDA = 0;
Delay_10_uS();
I2C_SCK = 0;
Delay_10_uS();
return 1;
}
//**************************************************************
************************************
//停止(SCL为高,SDA由低变为高是一个结束条件)
//**************************************************************
************************************
void stop()
{
Delay_10_uS();
I2C_SDA = 0;
Delay_10_uS();
I2C_SCK = 1;
Delay_10_uS();
I2C_SDA = 1;
Delay_10_uS();
}
河南科技大学毕业设计(论文)
出\"0\"信号来作为收到一个字的应答信号)
//**************************************************************
************************************
//void checkACK() //主器件检测从器件是否返回应答
//{
// Delay_10_uS();
// I2C_SDA=1;
// Delay_10_uS();
// I2C_SCK=1;
// Delay_10_uS();
// I2C_SCK=0;
// Delay_10_uS();
//}
//**************************************************************
************************************
//发送应答(发送方为主器件,接收方为从器件,控制器作为从器件接收完
1数据时,发送应答信号
//**************************************************************
************************************
//void sendACK(bit ACK)
//{
// if(ACK)sda=1; //如果i位为1则发送1,即发送\"非应答信
号\"
// else sda=0; //如果i位为0则发送0,即发送\"应答信号\"
// scl=1; //时钟线置高,给一个脉冲
// Delay_10_uS(); //延时
// scl=0; //时钟线置低
// _nop_(); //延时
//}
//**************************************************************
39
河南科技大学毕业设计(论文)
************************************
//写一字节
//**************************************************************
************************************
bit send_byte(uchar date) //写一个8位字
{
uchar s_i = 8;
bit bit_ack;
while( s_i-- )
{
Delay_10_uS();
if ( date &0x80 ) I2C_SDA =1;
else I2C_SDA =0;
Delay_10_uS();
I2C_SCK = 1;
Delay_10_uS();
I2C_SCK = 0;
date = date << 1;
}
Delay_10_uS();
I2C_SDA = 1;
Delay_10_uS();
I2C_SCK = 1;
Delay_10_uS();
bit_ack = I2C_SDA;
I2C_SCK =0;
Delay_10_uS();
return bit_ack; //查询是否返回应答信号
}
//**************************************************************
************************************
40
河南科技大学毕业设计(论文)
//读一字节
//**************************************************************
************************************
uchar receive_byte() //读一个8位字
{
uchar ic_i = 8, d;
Delay_10_uS();
I2C_SDA = 1;
while ( ic_i--)
{
d = d << 1;
Delay_10_uS();
I2C_SCK =1;
if ( I2C_SDA ) d++;
Delay_10_uS();
I2C_SCK =0;
}
return d; //返回读取的8位数据
}
//**************************************************************
************************************
//读取AD转换结果数据
//**************************************************************
************************************
uchar Read_AD(uchar chn)
{
uchar ad_data; //定义变量,存放转换结果
start(); //启动总线
send_byte(0x90); //选择从器件地址,RW位为0,即选择写命令
send_byte(0x40|chn); //寄存器设置,0通道
41
河南科技大学毕业设计(论文)
start(); //启动I2C总线
send_byte(0x91); //选择从器件地址,RW位为1,即选择读命令
ad_data=receive_byte(); //读取转换结果
stop(); //停止
return(ad_data);
}
#define DataPort P0 //LCD1602数据端口
sbit SCL=P2^0; //IIC时钟引脚定义
sbit SDA=P2^1; //IIC数据引脚定义
sbit LCM_RS=P2^4; //LCD1602命令端口
sbit LCM_RW=P2^5; //LCD1602命令端口
sbit LCM_EN=P2^6; //LCD1602命令端口
#define SlaveAddress 0xA6 //定义器件在IIC总线中的从地址,根据
ALT ADDRESS地址引脚不同修改
//ALT ADDRESS引脚接地时地址为
0xA6,接电源时地址为0x3A
typedef unsigned char BYTE;
typedef unsigned short WORD;
BYTE BUF[8]; //接收数据缓存区
uchar ge,shi,bai,qian,wan; //显示变量
int dis_data; //变量
int data_xyz[3];
42
河南科技大学毕业设计(论文)
void delay(unsigned int k);
void InitLcd(); //初始化lcd1602
void Init_ADXL345(void); //初始化ADXL345
void WriteDataLCM(uchar dataW);
void WriteCommandLCM(uchar CMD,uchar Attribc);
void DisplayOneChar(uchar X,uchar Y,uchar DData);
void conversion(uint temp_data);
void Single_Write_ADXL345(uchar REG_Address,uchar REG_data); //
单个写入数据
uchar Single_Read_ADXL345(uchar REG_Address); //
单个读取内部寄存器数据
void Multiple_Read_ADXL345();
//连续的读取内部寄存器数据
//------------------------------------
void Delay5us();
void Delay5ms();
void ADXL345_Start();
void ADXL345_Stop();
void ADXL345_SendACK(bit ack);
bit ADXL345_RecvACK();
void ADXL345_SendByte(BYTE dat);
BYTE ADXL345_RecvByte();
void ADXL345_ReadPage();
void ADXL345_WritePage();
//-----------------------------------
//*********************************************************
void conversion(uint temp_data)
43
河南科技大学毕业设计(论文)
{
wan=temp_data/10000+0x30 ;
temp_data=temp_data%10000; //取余运算
qian=temp_data/1000+0x30 ;
temp_data=temp_data%1000; //取余运算
bai=temp_data/100+0x30 ;
temp_data=temp_data%100; //取余运算
shi=temp_data/10+0x30 ;
temp_data=temp_data%10; //取余运算
ge=temp_data+0x30;
}
/*******************************/
void delay(unsigned int k)
{
unsigned int i,j;
for(i=0;i { for(j=0;j<121;j++) {;}} } /*******************************/ void WaitForEnable(void) { DataPort=0xff; LCM_RS=0;LCM_RW=1;_nop_(); LCM_EN=1;_nop_();_nop_(); while(DataPort&0x80); LCM_EN=0; } /*******************************/ 44 河南科技大学毕业设计(论文) void WriteCommandLCM(uchar CMD,uchar Attribc) { if(Attribc)WaitForEnable(); LCM_RS=0;LCM_RW=0;_nop_(); DataPort=CMD;_nop_(); LCM_EN=1;_nop_();_nop_();LCM_EN=0; } /*******************************/ void WriteDataLCM(uchar dataW) { WaitForEnable(); 河南科技大学毕业设计(论文) WriteCommandLCM(X,0); WriteDataLCM(DData); } /************************************** 延时5微秒 不同的工作环境,需要调整此函数,注意时钟过快时需要修改 当改用1T的MCU时,请调整此延时函数 **************************************/ void Delay5us() { _nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_(); } /************************************** 延时5毫秒 不同的工作环境,需要调整此函数 当改用1T的MCU时,请调整此延时函数 **************************************/ void Delay5ms() { WORD n = 560; while (n--); } /************************************** 起始信号 **************************************/ 河南科技大学毕业设计(论文) void ADXL345_Start() { SDA = 1; //拉高数据线 SCL = 1; //拉高时钟线 Delay5us(); //延时 SDA = 0; //产生下降沿 Delay5us(); //延时 SCL = 0; //拉低时钟线 } /************************************** 停止信号 **************************************/ void ADXL345_Stop() { SDA = 0; //拉低数据线 SCL = 1; //拉高时钟线 Delay5us(); //延时 SDA = 1; //产生上升沿 Delay5us(); //延时 } /************************************** 发送应答信号 入口参数:ack (0:ACK 1:NAK) **************************************/ void ADXL345_SendACK(bit ack) { SDA = ack; //写应答信号 SCL = 1; //拉高时钟线 Delay5us(); //延时 47 河南科技大学毕业设计(论文) SCL = 0; //拉低时钟线 Delay5us(); //延时 } /************************************** 接收应答信号 **************************************/ bit ADXL345_RecvACK() { SCL = 1; //拉高时钟线 Delay5us(); //延时 CY = SDA; //读应答信号 SCL = 0; //拉低时钟线 Delay5us(); //延时 return CY; } /************************************** 向IIC总线发送一个字节数据 **************************************/ void ADXL345_SendByte(BYTE dat) { BYTE i; for (i=0; i<8; i++) //8位计数器 { dat <<= 1; //移出数据的最高位 SDA = CY; //送数据口 SCL = 1; //拉高时钟线 Delay5us(); //延时 48 河南科技大学毕业设计(论文) SCL = 0; //拉低时钟线 Delay5us(); //延时 } ADXL345_RecvACK(); } /************************************** 从IIC总线接收一个字节数据 **************************************/ BYTE ADXL345_RecvByte() { BYTE i; BYTE dat = 0; SDA = 1; //使能内部上拉,准备读取数据, for (i=0; i<8; i++) //8位计数器 { dat <<= 1; SCL = 1; //拉高时钟线 Delay5us(); //延时 dat |= SDA; //读数据 SCL = 0; //拉低时钟线 Delay5us(); //延时 } return dat; } //******单字节写入******************************************* void Single_Write_ADXL345(uchar REG_Address,uchar REG_data) { 49 河南科技大学毕业设计(论文) ADXL345_Start(); //起始信号 ADXL345_SendByte(SlaveAddress); //发送设备地址+写信号 ADXL345_SendByte(REG_Address); //内部寄存器地址,请参考中 文pdf22页 ADXL345_SendByte(REG_data); //内部寄存器数据,请参考中 文pdf22页 ADXL345_Stop(); //发送停止信号 } //********单字节读取***************************************** uchar Single_Read_ADXL345(uchar REG_Address) { uchar REG_data; ADXL345_Start(); //起始信号 ADXL345_SendByte(SlaveAddress); //发送设备地址+写信 号 ADXL345_SendByte(REG_Address); //发送存储 单元地址,从0开始 ADXL345_Start(); //起始信号 ADXL345_SendByte(SlaveAddress+1); //发送设备地址+读信 号 REG_data=ADXL345_RecvByte(); //读出寄存器数据 ADXL345_SendACK(1); ADXL345_Stop(); //停止信号 return REG_data; } //********************************************************* // //连续读出ADXL345内部加速度数据,地址范围0x32~0x37 // //********************************************************* void Multiple_read_ADXL345(void) 50 河南科技大学毕业设计(论文) { uchar i; ADXL345_Start(); //起始信号 ADXL345_SendByte(SlaveAddress); //发送设备地址+写信 号 ADXL345_SendByte(0x32); //发送存储单元地 址,从0x32开始 ADXL345_Start(); //起始信号 ADXL345_SendByte(SlaveAddress+1); //发送设备地址+读信 号 for (i=0; i<6; i++) //连续读取6个地址数据, 存储中BUF { BUF[i] = ADXL345_RecvByte(); //BUF[0]存储0x32地 址中的数据 if (i == 5) { ADXL345_SendACK(1); //最后一个数据需 要回NOACK } else { ADXL345_SendACK(0); //回应ACK } } ADXL345_Stop(); //停止信号 Delay5ms(); } //************************************************************** *** 51 河南科技大学毕业设计(论文) //初始化ADXL345,根据需要请参考pdf进行修改 ************************ void Init_ADXL345() { Single_Write_ADXL345(0x31,0x0B); //测量范围,正负16g,13位模式 Single_Write_ADXL345(0x2C,0x08); //速率设定为12.5 参考pdf13 页 Single_Write_ADXL345(0x2D,0x08); //选择电源模式 参考pdf24 页 Single_Write_ADXL345(0x2E,0x80); //使能 DATA_READY 中断 Single_Write_ADXL345(0x1E,0x00); //X 偏移量 根据测试传感器的 状态写入pdf29页 Single_Write_ADXL345(0x1F,0x00); //Y 偏移量 根据测试传感器的 状态写入pdf29页 Single_Write_ADXL345(0x20,0x05); //Z 偏移量 根据测试传感器的 状态写入pdf29页 } //************************************************************** ********* //显示x轴 uint jiaodu1; void display_x() { float temp; dis_data=(BUF[1]<<8)+BUF[0]; //合成数据 if(dis_data<0){ dis_data=-dis_data; DisplayOneChar(2,0,\'-\'); //显示正负符号位 } else DisplayOneChar(2,0,\' \'); //显示空格 52 河南科技大学毕业设计(论文) temp=(float)dis_data*3.9; //计算数据和显示,查考ADXL345快速入 门第4页 jiaodu1=temp; conversion(temp); //转换出显示需要的数据 DisplayOneChar(0,0,\'X\'); //第0行,第0列 显示X DisplayOneChar(1,0,\':\'); DisplayOneChar(3,0,qian); DisplayOneChar(4,0,\'.\'); DisplayOneChar(5,0,bai); DisplayOneChar(6,0,shi); DisplayOneChar(7,0,ge); } //************************************************************** ********* //显示y轴 void display_y() { float temp; dis_data=(BUF[3]<<8)+BUF[2]; //合成数据 if(dis_data<0){ dis_data=-dis_data; DisplayOneChar(2,1,\'-\'); //显示正负符号位 } else DisplayOneChar(2,1,\' \'); //显示空格 temp=(float)dis_data*3.9; //计算数据和显示,查考ADXL345快速入门 第4页 conversion(temp); //转换出显示需要的数据 DisplayOneChar(0,1,\'Y\'); //第1行,第0列 显示y 53 河南科技大学毕业设计(论文) DisplayOneChar(1,1,\':\'); DisplayOneChar(3,1,qian); DisplayOneChar(4,1,\'.\'); DisplayOneChar(5,1,bai); DisplayOneChar(6,1,shi); DisplayOneChar(7,1,ge); } //************************************************************** ********* //显示z轴 void display_z() { float temp; dis_data=(BUF[5]<<8)+BUF[4]; //合成数据 if(dis_data<0){ dis_data=-dis_data; DisplayOneChar(10,1,\'-\'); //显示负符号位 } else DisplayOneChar(10,1,\' \'); //显示空格 temp=(float)dis_data*3.9; //计算数据和显示,查考ADXL345快速入门 第4页 conversion(temp); //转换出显示需要的数据 DisplayOneChar(10,0,\'Z\'); //第0行,第10列 显示Z DisplayOneChar(11,0,\':\'); DisplayOneChar(11,1,qian); DisplayOneChar(12,1,\'.\'); DisplayOneChar(13,1,bai); DisplayOneChar(14,1,shi); DisplayOneChar(15,1,ge); 54 河南科技大学毕业设计(论文) } unsigned char code FFW[8]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9}; //反 转 unsigned char code FFZ[8]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1}; //正 转 unsigned int K; /****************************************************** * * 延时程序 * ********************************************************/ void delay1(unsigned int t) { unsigned int k; while(t--) { for(k=0; k<80; k++) { } } } //步进电机驱动1 void motor_ffw() { unsigned char i; unsigned int j; 55 河南科技大学毕业设计(论文) for (j=0; j<6; j++) //转1*n圈 { for (i=0; i<8; i++) //一个周期转30度 { if(K==1) P1 = FFW[i]&0x0f; //取数据 if(K==2) P1 = FFZ[i]&0x0f; delay1(10); //调节转速 } } } //步进电机驱动2 void motor_ffw2() { unsigned char i; unsigned int j; for (j=0; j<72; j++) //转1*n圈 { for (i=0; i<8; i++) //一个周期转30度 { if(K==1) P1 = (FFW[i]<<4)&0xf0; //取数据 if(K==2) P1 = (FFZ[i]<<4)&0xf0; delay1(10); //调节转速 } } } 56 河南科技大学毕业设计(论文) 此处开始附录内容。(小四号宋体)若有多项附录,可按顺序编号。 57
紧凑型车排名-大众汽车公司
更多推荐
13万左右的轿车前十名
发布评论