汽车行车安全距离监测系统设计

2020-06-12 07:37孙晓峰
电子技术与软件工程 2020年3期
关键词:管脚高电平C语言

孙晓峰

(上海海军702厂 上海市 200434)

1 绪论

1.1 研究背景

随着科学研究的深入,电子测量技术取得了巨大的进步。目前众多的工业领域,对于测量精度的要求越来越高,同时也催生了一系列的测距方式。其中超声波测距是目前非常流行的测距方式。超声波是一种利用频率高于20KHz的声波去测量的方式。相比于传统的方式,该方式具有测量精度高,成本低,容易操作,可维护性强等一系列的特点,正受到越来越多人的青睐。超声波测距的原理比较简单,主要是利用机械波在传播过程中遇到障碍物会发生反射和折射的现象,发射端可以记录和计算往返的时间进而得到距离值。本课题通过接收超声波的反射信号,通过计算往返时间就可以确定汽车行车安全距离。

1.2 研究意义

随着电子技术的快速发展,目前越来越多的电子设备搭载了智能化的芯片,这些核心控制器能够起到综合管理系统的作用。其中单片机是微控制器领域中非常重要的应用。单片机是电子通信类相关专业最重要的技能之一,因此通过学习和设计单片机相关的系统,可以综合的锻炼学生的动手能力,实现理论与实践的结合,而且还可以更好地拓展学生的创造性思维,进而完成更加个性化的设计。这种过程是非常重要的尝试,对于后续的工作也有重要的指导意义。

2 系统方案选择与整体设计

2.1 系统方案选择

2.1.1 主控制器方案选择

方案一:使用FPGA控制。FPGA是近几年新兴起的一种核心控制器。FPGA采用与或门组成因此具有高速,保密性好等特点,但是目前FPGA技术使用比较复杂,使用Verilog语言或者VHDL语言开发。开发流程长,工序复杂,同时价格非常的昂贵,因此一般用于军工领域和火箭航天等领域。如果使用FPGA将会有大量的资源被闲置。因此不是很适合本课题的需要,所以考虑使用其他的方式。

方案二:使用单片机控制,随着集成电路技术和半导体工艺的设计,目前单片机的功能越来越强大,单片机的产品目标很明确,关于民用和军工都有明确的区分。同时单片机技术比较成熟,各大半导体厂家生产的单片机都具有兼容性好,结构稳定,价格低廉等一系列的特点,所以很适合嵌入式领域使用。在本设计中主要需要超声波测距信号,显示设置的距离阈值以及驱动报警。使用STC12C5A60S2单片机已经可以满足要求。所以综合成本和性能单片机是一个非常好的选择。

2.1.2 显示模块方案选择

为了实现更好的人机交互界面,需要设计显示模块,显示当前的状态。

图1:系统整体框图

方案一:采用数码管显示。数码管虽然价格较低,使用起来也比较简单,但是进行多方位数据显示的时候,连线和驱动就变得非常复杂,电路的功耗也增加了很多。同时由于数码管只能显示数字不能显示文字,所以可以承载的信息量有限,人机交互方面也比较差,所以无法显示各种预设阈值这些提示信息,而且数码管的显示效果也比较差。所以使用数码管显示的方案不是特别好,本课题考虑其他的方案。

方案二:采用LCD1602液晶显示。LCD1602液晶具有功耗低,可以显示多行内容,所以在很多场合都有非常广泛的应用。LCD1602液晶显示内容丰富,成本很低,驱动简单,因此本系统选择LCD1602进行显示。

2.2 系统整体设计

整个系统的主要可以分为单片机最小系统,按键模块,超声波模块,显示模块和报警模块几个部分组成。系统的整体框图如图1所示。

3 系统硬件设计

3.1 单片机系统设计

单片机的本质是一个微型的计算机系统,内部具有CPU,RAM,ROM和定时/计数器等资源。本系统选用的是宏晶公司推出的STC89C52。该单片机具有40个引脚,晶振频率为11.0592MHz或者12MHz.支持通过串口直接烧录程序。同时该单片机具有5个中断源,支持外部中断,串口中断和定时计数器中断等。

单独的单片机是无法工作的,必须要给单片机配备时钟电路才能实现稳定的时钟。单片机的时钟频率直接决定了芯片的机器周期和指令周期。晶振电路一般是使用石英晶体和电容组成振荡电路。本设计中使用30pf的电容配合11.0592MHz的石英晶体共同构成单片机的晶振电路。晶振电路与单片机的第18,19两个引脚相连。这2个引脚分别为XTAL1和和XTAL2。

低端的单片机一般采用裸机控制的方式,没有操作系统对硬件设备的管理,这时候需要有一种方式使得单片机从错误状态中恢复到初始化状态。所以单片机的芯片提供了一个RST复位管脚,该管脚高电平有效。本系统设计了两种复位电路,分别是上电复位和按键复位。其中按键复位可以让设计中随时使系统进入到复位状态。上电复位是每次整个系统上电的时候都会首先复位然后再进行程序执行的操作。本系统通过外接上拉电阻到5V电平上,然后上电之后可以直接复位,用户也可以通过按键进行手动复位。在本系统设计的复位电路中,当按键被按下,系统通过10K的上拉电阻将单片机的RST引脚电平拉高,实现按键复位。当单片机一上电的时候,系统可以实现自动复位。

3.2 超声波模块设计

超声波测距模块是本课题选用目前非常常用的HC-SR04,该模块的工作原理很简单,不需要外围电路就可以实现自动的检测。在使用过程中,本课题利用单片机的管脚给超声波模块10us以上的高电平信号,模块就可以自动的发送8组40KHz的方波信号,自动检测是否有信号返回,当有信号返回时,会输出高电平到单片机管脚上,这样单片机在发出驱动超声波模块工作的高电平信号后迅速的开始计数,等接收到超声波模块返回的高电平后,测试距离=(高电平时间*声速(340M/S))/2。超声波模块与单片机管脚的P2.1和P2.2两个引脚进行连接。

3.3 按键模块设计

本系统为了方便使用,设计按键控制电路,用户可以较为方便的实现安全距离的设置。本系统使用三组按键开关,分别代表进入设置模式,安全距离增加和安全距离减少的操作。按键设计是共地设计,由于单片机引脚默认电平为高电平,所以当有某个按键被按下,单片机管脚就会被拉低,这时候单片机就可以获知有按键被按下。本设计中按键模块分别于单片机P1.0,P1.1和P1.2三个管脚相连。

3.4 显示模块设计

本系统使用LCD1602液晶模块显示预设阈值和实测安全距离。LCD1602是一种常用的液晶显示模块,本系统使用的10K的电位器来实现液晶背光调节。LCD1602液晶与单片机的P0口相连。

3.5 报警模块设计

为了完成实测距离超出预设阈值系统可以驱动报警的功能,本系统加入了蜂鸣器,由于单片机的管脚电平较弱,因此需要接入一个三极管进行放大,这样报警声更大,可以更好地提醒用户进行注意。蜂鸣器的管脚与单片机的P2.0连接。

4 系统软件设计

4.1 软件开发平台与开发语言

4.1.1 开发语言

C语言是目前非常流行的语言之一,在与硬件相关的驱动程序编写中,C语言具有举足轻重的地位。汇编语言往往与C语言混用的,共同满足我们想要的功能。汇编语言的突出缺点是无法进行移植,这就大大限制了汇编语言的使用。C语言支持指针操作,可以在硬件设计中直接物理寻址。这使得C语言的操作效率很高,同时C语言作为一种高级语言,程序的可读性也比汇编高出很多,同时C语言支持模块化开发,模块化缩短了开发周期,使得程序编写过程可以同步直写。同时C语言的执行效率也比较高,C语言的指针可以直接访问硬件这种设计大大的增强了C语言的灵活性。同时C语言具有丰富的库函数,在开发的时候大量的函数已经被写好了,只需要加载对应的库就可以直接使用。综上所述,C语言是硬件开发相关工作中主要开发语言。

4.1.2 Keil软件

关于嵌入式的开发设备有很多,比如TI公司的IAR可以进行430单片机的开发,CCS可以作为DSP芯片的开发。Keil编译器是最广泛的单片机开发工具之一,该编译器支持多种单片机的开发。同时具备完善的调试功能。用户可以在开发过程中自由设置断点和单步调试等操作。因此keil是一种常用的单片机开发工具。

4.2 软件设计流程图

系统的执行过程较为清晰。首先系统上电,进入到初始化状态。这时候用户开始设置系统阈值,系统开始测距,并将测量到的距离实时显示,一旦实测距离小于预设阈值,那么就会驱动蜂鸣器进行报警。系统的软件设计流程图如图2所示。

5 系统调试

图2:软件流程图

调试总结:整个系统在硬件电路完成之后,编写驱动程序,由于系统的稳定性未知,因此需要进行进一步的调试才能满足实际需要,我们先根据设计的电路图来设计和焊接实际的硬件电路,我们在硬件电路设计好之后,开始着手软件部分的程序编写。将编译通过的程序烧录到单片机中,然后对系统上电,观察系统的实际运行效果。

在系统的硬件调试过程中出现了以下几个主要的问题:

(1)在给单片机进行烧写程序的时候,一开始根本无法实现正常的通信,而且单片机的温度瞬间提高了很多,立刻停止了相关的操作。经过检查,这是由于在安装单片机的时候把芯片接反了,造成了单片机的短路。所幸停止的很及时,单片机,没有被烧毁,在排除该故障之后,程序可以正常的烧录。

(2)在蜂鸣器设计过程中,出现了蜂鸣器不工作的情况,系统的软件部分没有错误。经过检测发现是由于在蜂鸣器模块的焊接过程中出现了漏焊的情况,导致电路不通,在纠正了漏焊情况之后,系统可以正常的工作。

6 总结

通过本次的设计提高了自己对资料的查阅、信息的获取和处理的能力,同时熟练使用了本专业的各种工具软件,尤其是对proteus和keil这两款在电子类开发人员最常用的开发软件的学习。

本系统同样也存在一些不足,存在超声波测距的误差问题,存在控制模式较为单一的问题,后续的研究方向应该朝着更加精确和控制模式的多样化进行发展。实现超声波测距的误差缩小和上位机的智能控制等工作。

猜你喜欢
管脚高电平C语言
一种基于FPGA的PWM防错输出控制电路
基于Visual Studio Code的C语言程序设计实践教学探索
TS-03C全固态PDM中波发射机开关机控制电路原理及故障分析
基于C语言的计算机软件编程
DM 50KW中波广播发射机欠推动故障分析
高职高专院校C语言程序设计教学改革探索
PDM 1kW中波广播发射机保护电路分析
基于图像处理的异型电子元器件管脚偏移误差检测方法研究
CMOS数字IC管脚电容的估算与测量
论子函数在C语言数据格式输出中的应用