沈阳城市学院
毕业设计(论文)
基于单片机控制的汽车防撞自动测距系统
专 业: 自动化
班 级: 2013级2班
学 号:
姓 名: 陈小康
指导教师: 吴峰华
答辩日期: 2017 年 6 月 14 日
本科生毕业论文(设计)独创性声明
本人声明所呈交的毕业论文(设计)是本人在导师指导下进行的研究工作及取得的研究成果,除了文中特别加以标注和致谢的地方外,本论文中没有抄袭他人研究成果和伪造数据等行为。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示谢意。
论文(设计)作者签名: 日期:
本科生毕业论文(设计)使用授权声明
沈阳城市学院有权保留并向国家有关部门或机构送交毕业论文(设计)的复印件和磁盘,允许毕业论文(设计)被查阅和借阅。本人授权沈阳城市学院可以将本科毕业论文(设计)的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或其他复印手段保存、汇编毕业论文(设计)。
论文(设计)作者签名: 日期:
指 导 教 师 签 名: 日期:
目 录
摘 要 ..................................................................................................................... 1 Abstract...................................................................................................................... 2 引 言 ..................................................................................................................... 3 1 单片机简介 ......................................................................................................... 6
1.1 ATC51单片机概述 ................................................................................... 6 2 避障小车的总体设计 ......................................................................................... 8
2.1 设计原理与方法 .......................................................................................... 8 2.2 软件设计 ...................................................................................................... 9 2.2.1 C语言 .................................................................................................... 9 2.2.2 Keil软件简介 ...................................................................................... 10 2.3 设计准备 .................................................................................................... 10 3 硬件模块 ........................................................................................................... 12
3.1 各模块的的基本性能 ................................................................................ 12 3.1.1 电机、电机驱动模块 ......................................................................... 12 3.1.2 避障模块 ............................................................................................. 13 3.1.3 电源模块 ............................................................................................. 14 3.1.4 1602液晶模块 ..................................................................................... 15
4 软件模块 ........................................................................................................... 17
4.1 软件设计思路 ............................................................................................ 17 4.2 电机前进模块 ............................................................................................ 17 4.3 电机后退模块 ............................................................................................ 18 4.4 电机停止工作模块 .................................................................................... 18 4.5 电机右转模块 ............................................................................................ 18 4.6 防卡死模块 ................................................................................................ 18 4.7 主函数 ........................................................................................................ 19 结 论 ................................................................................................................... 21 致 谢 ................................................................................................................... 22 参考文献 ................................................................................................................. 23
沈阳城市学院毕业设计(论文)
摘 要
本设计主要介绍了一种基于ATC51单片机的超声波避障测距报警小车。其中包括对小车的执行组件、搭建结构、传感器、ATC51单片机及软件编程的介绍。
本设计以ATC51单片机为控制核心,根据蝙蝠回声定位的原理,利用超声波传感器,检测小车前行过程中前方物体的距离,接着把数据传给单片机。当超声波探测到前方物体小于规定距离时,就会报警,并且单片机发出指令让小车右转一定角度,然后前行继续探测。如果前方规定距离内没有物体则直行,否则还是右转一定角度。就这样,通过超声波不断地探测周边的情况进行自动避障。
本设计的硬件方面,是用ATC51单片机为控制核心,以超声波传感器检测前方障碍物,从而自动避障。在软件方面,利用C语言进行编程,通过软件编程来控制小车运转。本设计采用L298N电机驱动模块,控制2个直流电机使小车运行,让小车可以根据外部的环境,进行前进、后退和转向等动作,从而进行躲避障碍物的功能。
本设计主要体现小车的智能避障功能,本设计中特点与创新点可为智能驾驶、自动运输Robot、家用自动清洁Robot等自动半自动Robot的设计与普及有很大的参考价值。不仅如此本设计中的小车,还可以作为未来玩具的发展趋势,弥补了中国玩具市场技术含量缺乏的现状,从而带来巨大的经济效益。
关键词:超声波; 单片机; 测距 ; 防撞
-1- 沈阳城市学院毕业设计(论文)
Abstract
This design mainly introduces a ATC51 based microcontroller ultrasonic obstacle avoidance, ranging, alarm car working principle. Including the implementation of the car components, structures, sensors, ATC51 microcontroller and software programming.
The design of ATC51 microcontroller as the control core, according to the bat echelecation prineciple, the use of ultrasonic sensors to detect the distance in front of the car in front of object, and then pass data to the microcontroller. When the ultrasonic detects that the object in front is less than the prescribed distance, the alarm will be sent, and the microcontroller will issue an instruction to turn the car to a right angle, then stop moving and continue to detect. If there is no object in front of the distance, then go straight, or continue to turn right at an angle. In this way, through ultrasonic continuous detection of surrounding conditions, automatic obstacle avoidance.
The design of the hardware is to use ATC51 microcontroller as the control core, ultrasonic sensor to detect obstaoles in front of, so as to autematically avoid obstacle. In software, we use C language programming, through software programming to control the operation of the car. This design uses the L298N motor drive module, control 2 DC motor to make the car run, let the car according to the external environment, to move forward and backward and steer action, so as to avoid the obstaele.
This design is mainly reflected the car intelligent obstacle avoidance function, characteristics and innovation of this design is to have a great reference significance to design automatic transportation Robot, mining exploration Robot, Robot and other household automatic cleaning automatic semi-automatic Robot and popularization. At the same time, the design of the car can also be used as a toy development trend, to make up for the lack of China's toy market technical content of the status quo, thereby bringing enormous economic benefits.
Key words: ultrasonic; SCM; ranging; collision avoidance
-2- 沈阳城市学院毕业设计(论文)
引 言
随着社会的飞速发展,城市化、现代化的进一步加深,人们的生活发生了翻天覆地的变化。以前出门都是打车,而如今道路上的私家车越来越多。人们的生活方式发生着改变,汽车领域也发生着改变。
汽车从最初由蒸汽机驱动、柴油机驱动再到内燃机驱动,甚至电力驱动,汽车的发展经历了100多年的历史,现在我们对汽车不仅仅追求它的速度和它的外形,我们对汽车的安全性提出了更高的要求。
说到汽车不得不提到电子行业。现在的汽车在满足了代步的功能后,人们对汽车的其他功能如娱乐、导航等功能也更加重视,而安全方面更是重中之重,电子行业的加入正满足了这样的要求。以前汽车的安全主要体现在硬件方面,而现在电子行业的加入让汽车在软件方面增添了新的血液。现在的交通密度越来越高,对驾驶员的要求也越来越严苛,而电子技术的加入则可进一步地提升汽车的行车安全,从而减轻驾驶员的负担。
我国汽车数量越来越多,拥挤的交通让人心烦,而更让人头疼的是汽车相撞和被盗的事件也频繁发生,而因此造成的损失不计其数,因此汽车防撞报警系统的创建迫在眉睫。欧洲的科学家通过一系列的研究发现:驾驶员如果能在0.5秒内得到要发生碰撞的预警,那么至少可以避免百分之六十左右的追尾事件,避免百分之三十的对面碰撞事件和百分之五十的路面剐蹭事件。如果有了这一秒的预警就可以减少如此多的交通事故[15]。如果在天气条件非常不好的情况下,能见度是非常低的,而且视距非常小,汽车要是高速行驶的情况下,是很难发现前方的车辆或栏杆的,那么这种即时防撞报警的系统
-3- 沈阳城市学院毕业设计(论文)
就是必不可少的。现在我国大型的桥梁、高速公路等对天气的情况要求很高,如果天气很恶劣,就要车辆的速度,必要时也会关闭道路;来防止事故的发生。如果这样的话,那么会严重影响人们的出行和运输行业的运作,这样不仅会损失的经济,也会使本来已拥挤不堪的道路更加难以出入。
在过去的几十年里,人们主要是对汽车的外部进行防护。例如:在汽车外部安装保险杠、在车内的车座上安装安全带、在方向盘上安装安全气囊,以减少汽车碰撞时所带来的伤害。这些所有的措施虽然在一定程度上减轻损伤,但并不能从根本上解决汽车发生的碰撞问题[16]。汽车的碰撞主要原因是由于汽车距所行方向上的物体或车辆距离太近,而行车的速度太高导致的。所以,进行对汽车防撞报警装置的研究非常重要,这种汽车防撞报警系统,对减轻驾驶员的负担,增强对意外事件的正确判断起到了重要的作用。非常明显,对这样产品的研发有着非常大的现实意义和广阔的市场前景[17]。
因此,在本次的设计中,将设计出一套能够避障测距报警的系统。接下来,在实际应用中我们就可以给它赋予更多实用的功能,让它有更多的实用价值。
本设计是用ATC51单片机做为核心控制模块,以超声波模块探测外部情况,检测前方行进的路径上是否有障碍物。超声波测距法是一种较为常见的测距方法,把超声波传感器放在智能小车的前面,从而探测小车前方是否有障碍物[2]。在小车防撞报警系统中,超声波是一种特殊的声波,拥有着普通声波传输的物理特性。汽车防撞测距报警系统是将单片机的实时控制和数据处理功能,与超声波的测距技术、传感器技术相结合,可检测小车行车路线中障碍物与小车的距离,然后通过1602液晶屏显示距离,如果距离达到规定
-4- 沈阳城市学院毕业设计(论文)
距离将由发声电路发出警告[18]。
现在,传感器种类非常多,正是这些各种各样的传感器让“冰冷”的机器有了像人一样的“感觉”。小车想要实现自动测距和避障的功能就必须要感知周围的环境,而超声波传感器就赋予了小车这样的功能,如人的眼睛一般。本设计以超声波传感器作为智能小车避障的关键部件,其测距功能范围大,功能稳定,可以做到即时控制,测量精度也能达到实际应用的要求,相信在不久的将来,在智能化汽车中一定会得到广泛的应用[11]。随着科技的发展,汽车一定会越来越智能化,而现在就开始研究超声波传感器在智能小车上的应用将对我国智能汽车发展有着推动的作用,可以在先进智能汽车领域占有一席之地[3]。
本设计主要体现小车的智能避障功能,本设计中特点与创新的想法可为智能驾驶、智能运载Robot、智能清洁Robot等自动半自动Robot的开发与研究有很大的参考价值。不仅如此本设计中的智能小车,还可以作为未来玩具的发展趋势,弥补了中国玩具市场技术含量缺乏的现状,从而创造巨大的经济效益。
本设计把软件和硬件有机的结合在一起,完成汽车行车防撞测距报警系统的设计,通过对电路的分析和设计,对电路有了较为系统的思路,并且通过对小车防撞测距报警系统的设计,锻炼了对C语言的应用能力,有了这样的基础,相信在以后的工作中一定会得心应手。
-5- 沈阳城市学院毕业设计(论文)
1 单片机简介
单片机,是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的处理器CPU、只读存储器ROM、随机存储器RAM、多种I/O口和中断系统、定时器等功能集成到一块由硅制作的芯片上,这种微型计算机系统在工业上有着广泛的应用。经过二三十年的发展,由当时的4位、8位单片机,发展到现在的300M的高速单片机[4]。单片机如图1所示。
图1 单片机
1.1 ATC51单片机概述
ATC51是带着4K字节FLASH闪存的低电压、高性能CMOS 8位微处理器,俗称ATC51单片机。它有32个I/O口线,128字节内部RAM,两个16位定时器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路[5]。
ATC51单片机可以通过各式各样的传感器来感知外部环境,比如,通过温湿度传感器获取数据,再将数据在1602液晶屏上显示,从而进行对环境的检测。单片机不仅可以“感受”,还可以进行远程控制,把单片机、WIFI模块和继电器结合起来,就可以进行远程的开始和启动。
-6- 沈阳城市学院毕业设计(论文)
要使一个系统运作起来,那么不得不提到程序,它就像人的血液一样重要。想要对单片机进行,两个工具是必不可少的,一个是C语言,一个是Keil软件[19]。单片机上的微控制器可以通过C语言来编写程序,最后收录到闪存中,闪存是一种非易失性内存,所以在没有电路的供应下,它也能长久的保存数据[12]。ATC51单片机如图2所示。
图2 ATC51单片机
-7- 沈阳城市学院毕业设计(论文)
2 避障小车的总体设计
2.1 设计原理与方法
本设计主要以单片机控制智能小车直流电机的正转、反转和停止,实现智能小车前进停止和转向的功能。这部分电路主要由ATC51单片机的I/O端口、定时计数器、外部中断扩展等控制直流电机的正反转和停止。在小车过程中,由超声波传感器探测周围环境,ATC51单片机通过超声波传感器所返回的信号产生高低电平,并输入到L298电机驱动芯片中,控制直流电机运作[20]。本设计的智能小车正面有两个轮子,每个轮子用一个电机,后边是一个万向轮,以起支撑和配合转向的作用。
本小车的硬件部分分为几个模块:ATC51单片机、超声波传感器、电源、两个直流电动机、电机驱动、车身、1602液晶屏。六节1.5V干电池串联,连接到L7805CV稳压模块上,输出5V稳定电流,为整个智能小车的用电模块供电。将超声波传感器安置在车身的最前端,用于探测前方行进的路径上是否有物体。当超声波传感器检测到物体,如果物体距离过近,将执行防卡死程序,即做出后退的反应,然后向右转,再次检测前方是否有障碍物,若有障碍物则继续旋转,没有障碍物则电机驱动器驱动电机前进。如果检测的距离不是很近则直接执行转向程序,在从而实现整个小车的避障功能[6]。硬件框架图如图3所示。
-8- 沈阳城市学院毕业设计(论文)
图3 硬件框架图
2.2 软件设计
2.2.1 C语言
C语言是一门通用计算机编程语言,应用非常广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言[13]。
C语言有以下几个特点:
(1)C语言是一个有结构化程序设计、具有变量作用域(variable scope)以及递归功能的过程式语言。
(2)C语言传递参数均是以值传递(pass by value),另外也可以传递指针(a pointer passed by value)。
(3)不同的变量类型可以用结构体(struct)组合在一起。
(4)只有32个保留字(reserved keywords),使变量、函数命名有更多弹性。
(5)部份的变量类型可以转换,例如整型和字符型变量。
(6)通过指针(pointer),C语言可以容易的对存储器进行低级控制。
-9- 沈阳城市学院毕业设计(论文)
(7)预编译处理(preprocessor)让C语言的编译更具有弹性[7]。 2.2.2 Keil软件简介
Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、可读性、结构性、可维护性上有明显的优势,所以十分容易学习和使用。Keil提供了包括C编译器、链接器、宏汇编、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境将这些部分组合在一起。运行Keil软件可以使用WIN98、NT、WIN2000、WINXP等操作系统。如果用C语言进行编程,那么Keil是最适合不过的了,即便不使用C语言而是仅用汇编语言编程,它方便容易使用的集成环境、强大的软件仿真调试工具也会令人事半功倍[14]。
2.3 设计准备
搭建小车的零件清单如下: (1)直流电机2个 (2)轮胎2个 (3)电机固定件2个 (4)万向轮1个
(5)90*150*1MM万用板1片 (6)L298N电机驱动1个 (7)按键3个 (8)蜂鸣器1个 (9)电源开关1个 (10)超声波模块1个
-10- 沈阳城市学院毕业设计(论文)
(11)1602液晶屏1个 (12)电池盒一个 (13)导线若干 (14)二极管8个 (15)铜柱8个 (16)螺丝螺母若干 (17)发光二极管1个 (18)晶振1个 (19)电阻3个 (20)陶瓷电容5个 (21)电解电容2个 (22)三极管1个
-11- 沈阳城市学院毕业设计(论文)
3 硬件模块
3.1 各模块的的基本性能
3.1.1 电机、电机驱动模块
本设计的用的是双H桥电路。H桥电路可以保证方向的稳定控制。而且它有更强的驱动能力。而且L298N有过电流保护功能,当出现电机卡死时,可以保护电路和电机。这种调速方式有调速特性优良、调整平滑、调速范围广、过载能力大,能承受频繁的负载冲击,还可以实现频繁的无级快速启动、制动和反转等优点[8]。电机驱动模块如图4所示,双H桥电路如图5所示。
图4 电机驱动模块
-12- 沈阳城市学院毕业设计(论文)
图5 双H桥电路
3.1.2 避障模块
本设计采用HC-SR04超声波测距模块,该原件可提供2CM-400CM的非接触式距离感测功能,测距精度可达高到3mm;模块包括超声波发射器,接收器和控制电路[14]。
基本工作原理:
(1)采用IO口TRIG触发测距,给至少10us的高电平信号; (2)模块自动发送8个40khz的方波,自动检测是否有信号返回; (3)有信号返回,通过IO口ECHO输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。测试距离=(高电平时间*声速(340M/S))/2[9]。超声波模块电气参数如表1所示,超声波模块如图6所示。
超声波传感器有四个脚,四个引脚的功能分别是: (1)VCC接+5V。 (2)TRIQ信号输入。 (3)ECHO信号输出。
-13- 沈阳城市学院毕业设计(论文)
(4)GND接地。
表1 超声波模块电气参数
电气参数 工作电压 工作电流 工作频率 最远射程 最近射程 测量角度 输入触发信号 输出回响信号 规格尺寸 HC-SR04 DC5V 15mA 40Hz 4m 2cm 15度 10uS的TTL脉冲 输出TTL电平信号,与射程成比例 45*20*15mm
图6 超声波模块
3.1.3 电源模块
在本设计中采用六节1.5V干电池作为整个系统的电源,它经过L7805稳压模块的降压,产生5V电流,为整个系统的用电模块供电。电源如图7所示。
-14- 沈阳城市学院毕业设计(论文)
图7 电源
3.1.4 1602液晶模块
本次设计使用ATC51单片机直接驱动1602液晶显示数据。1602液晶屏幕如图8所示。
1602LCD主要技术参数: (1)显示容量为16×2个字符; (2)工作电流为2.0mA(5.0V); (3)芯片工作电压为4.5~5.5V; (4)模块最佳工作电压为5.0V;
(5)字符尺寸为2.95×4.35(W×H)mm[10]。
-15- 沈阳城市学院毕业设计(论文)
图8 1602液晶屏幕
-16- 沈阳城市学院毕业设计(论文)
4 软件模块
4.1 软件设计思路
在软件设计方面,本设计的智能小车采用C语言编程,编写程序流程如图9所示。
开始 初始化 检测 小车前进 前方有障碍? Y 转弯
图9 程序流程图
N 4.2 电机前进模块
首先定义前进函数:
void go() {
qu_ll = 1; qu_zl = 0; qu_zr = 0; qu_rr = 1;
-17- 沈阳城市学院毕业设计(论文)
}
4.3 电机后退模块
将函数定义为back后退函数 :
void back() { }
qu_1l = 0; qu_zl = 1; qu_zr = 1; qu_rr = 0;
4.4 电机停止工作模块
将函数定义为stop后退函数:
void stop() { }
qu_ll = 0; qu_zl = 0; qu_zr = 0; qu_rr = 0;
4.5 电机右转模块
将函数定义为right后退函数:
void right() { }
qu_1l = 1; qu_1l = 0; qu_zr = 1; qu_rr = 0;
4.6 防卡死模块
在主函数中编译防卡死程序:
if(distance <= 10)
-18- 沈阳城市学院毕业设计(论文)
{ }
back(); delay(); right(); beep = ~beep;
4.7 主函数
将函数设置为主函数:
void main() {
time_init() init_1602(); while(1) {
send_wave();
write_sfm3(1,7,distance); delay_1ms(50); key();
;
if(distance <= 10) { }
else if(10 < distance <= 20) { } else {
go(); beep = 1;
-19- back(); delay(); right(); beep = ~beep;
right(); beep = ~beep;
沈阳城市学院毕业设计(论文)
}
}
}
-20- 沈阳城市学院毕业设计(论文)
结 论
利用ATC51单片机设计的超声波防撞测距报警系统,操作简单、读数非常直观,而且系统工作稳定,能够满足平常较近距离测距的要求,并且成本比较低、有着不错的性价比。
通过试验,该设计系统灵活方便,工作稳定,有较强的抗干扰能力,精度很高,能够防止小车在前进过程中碰撞到前面的障碍物。超声波测距精度可达高到3mm,很大程度上提高了小车测距的精确度。完全达到了原有的预期。
在本次设计中,我感觉就像对大学这四年所学到的东西都复习强化了一边,同时也对新知识的学习有了系统的方法,提高了我对新挑战的应变能力。我知道在将来的生活和工作中,还会遇到不同的挑战,不同的任务,我相信,只要通过不断地锻炼和学习,我的能力会不断提升的。这次设计同时还加强了我实践动手能力,特别是对出现的问题,分析和解决的能力,我相信这些收获,对我今后在从事任何事情上都将会有极大的帮助。
-21- 沈阳城市学院毕业设计(论文)
致 谢
在本次设计中,我的指导教师吴峰华老师给了我非常多的帮助。无论是从课题的选择,还是对课题的深入探讨,吴峰华老师都给予了我非常多的帮助。有时遇到困难想要放弃时,是吴老师让我重拾信心,并在她的悉心指导下,完成了课题的设计。吴老师的身上有着一个学者的严谨和专业,同时还有着家人般亲切的关怀,当真是为人师表的典范。我对吴峰华老师的敬仰之情简直溢于言表。
任何的成功都是靠着一点一滴累积起来的,对于本次设计的完成,也和孟军红、刘丹丹等其他老师的教导是分不开的,虽然她们没有对我的此次设计进行指导,但她们却在以前的教学中传授了她们渊博的知识,在此向她们表示深深的感谢和敬意!
-22- 沈阳城市学院毕业设计(论文)
参考文献
[1] 上海市教育委员会组. 现代汽车安全技术[M]. 上海: 上海交通大学出版社, 2006:84-87
[2] 陈晓文. 电子线路课程设计[M]. 北京: 北京电子工业出版社, 2004:101-104
[3] 邵贝贝. 单片机嵌入式应用的在线开发方法[J]. 北京: 清华大学出社, 2004:3-4
[4] 王晓明. 电动机的单片机控制[M]. 北京: 北京航空航天大学出版社, 2002. [5] 康华光. 电子技术基础[M]. 北京: 高等教育出版社, 2002:48-50 [6] 余成波. 传感器与自动检测技术[M]. 北京: 高等教育出版社, 2004:56-59 [7] 童诗白, 华成英. 模拟电子技术基础[M]. 北京: 高等教育出版社, 2000:27-28
[8] 沈长生. 常用电子元器件使用一读通[M]. 北京: 人民邮电出版社, 2004:39-110
[9] 宗光华. 机器人的创意设计与实践[J]. 北京: 北京航空航天大学出社, 2004:110-114
[10] 毕满清. 电子技术实验与课程设计[J]. 北京: 机械工业出版社, 2005:20-22
[11] 刘德旺, 韦穗林. 电子制作实训[M]. 北京: 中国水利水电出版社, 2004:201-203
[12] 李广弟. 单片机基础. 北京航空航天出版社, 2001:157-159
[13] 安鹏, 马伟. S12单片机模块应用及程序调试[J]. 电子产品世界, 2006,211:162-163
[14] 王晓明. 电动机的单片机控制[M]. 北京: 北京航空航天大学出版社, 2002:68-70
[15] 臧杰, 阎岩. 汽车构造[M]. 北京: 机械工业出版社, 2005:37-38
[16] 安鹏, 马伟. S12单片机模块应用及程序调试[J]. 电子产品世界, 2006,211:8-10
[17] 童诗白, 华成英. 模拟电子技术基础[M]. 北京: 高等教育出版社, 2000:116-118
-23- 沈阳城市学院毕业设计(论文)
[18] 沈长生. 常用电子元器件使用一读通[M]. 北京: 人民邮电出版社, 2004:12-15
[19] 宗光华. 机器人的创意设计与实践[J]. 北京: 北京航空航天大学出社, 2004:23-25
[20] 张文春. 汽车理论[M]. 北京: 机械工业出版社, 2005:45-47
-24- 沈阳城市学院毕业设计(论文)
附录1 程序
#include //调用单片机头文件 变量范围0~255 #define uchar unsigned char //无符号字符型 宏定义 #define uint unsigned int #include /********************LN298电机驱动IO口定义*********************************/ sbit qu_ll = P1^4; //左边电机控制IN1 sbit qu_zl = P1^5; //左边电机控制IN2 sbit qu_zr = P1^6; //右边电机控制IN1 sbit qu_rr = P1^7; //右边电机控制IN2 sbit beep = P1^3; //蜂鸣器IO口定义 sbit c_recive = P2^4; //超声波接收 //超声波发射 //无符号整型 宏定义 变量范围0~65535 sbit c_send = P2^3; sbit set_key = P1^0; sbit add_key = P1^1; sbit sub_key = P1^2; //设置按键 //增加按键 //减少函数 uchar flag_hc_value; //超声波中间变量 uchar flag_re_value; //设置距离变量 long distance = 888; //距离 bit flag_csb_juli; //超声波超出量程 uint flag_time0; //用来保存定时器0的时候的 /*****************1ms延时函数*********************************/ void delay_1ms(uint q) { -25- 沈阳城市学院毕业设计(论文) } uint i,j; for(i=0;i /***********************小车前进函数************************/ void go() { } /************************小车后退****************************/ void back() { } /***********************小车右转函数************************/ void right() { } /***********************小车停下函数************************/ void stop() -26- qu_ll = 1; qu_zl = 0; qu_zr = 0; qu_rr = 1; qu_1l = 0; qu_zl = 1; qu_zr = 1; qu_rr = 0; qu_1l = 1; qu_1l = 0; qu_zr = 1; qu_rr = 0; 沈阳城市学院毕业设计(论文) { } /**********************按键函数***************************/ void key() { c_send = 1; delay(); c_send = 0; TH0 = 0; TL0 = 0; TR0 = 0; //关定时器0定时 //当c_recive为零时等待 //给定时器0清零 //10us的高电平触发 qu_ll = 0; qu_zl = 0; qu_zr = 0; qu_rr = 0; while(!c_recive); TR0=1; if(set_key==0) //当设置按键按下,开始设置 //当增加按键按下 { if(add_key == 0) { flag_re_value++; if(set_key==0) { write_string(2,0,\" set:\"+flag_re_value); } } //同理自减 //显示设置距离 //自加1cm //当设置按键再次按下,设置成功 else if(sub_key == 0) { flag_re_value--; if(set_key==0) { write_string(2,0,\" set:\"+flag_re_value); } } else -27- 沈阳城市学院毕业设计(论文) } } { write_string(2,0,\" set:\"+flag_re_value); } /******************小延时函数*****************/ void delay() { } /*********************超声波测距程序*****************************/ void send_wave() { _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); //执行一条_nop_()指令就是1us c_send = 1; delay(); c_send = 0; TH0 = 0; TL0 = 0; TR0 = 0; //10us的高电平触发 //给定时器0清零 //关定时器0定时 //当c_recive为零时等待 while(!c_recive); TR0=1; while(c_recive) { //当c_recive为1计数并等待 -28- 沈阳城市学院毕业设计(论文) } } flag_time0 = TH0 * 256 + TL0; if((flag_time0 > 40000)) //当超声波超过测量范围时,显示3个888 { } else { } flag_csb_juli = 1; TR0 = 0; flag_csb_juli = 2; distance = 888; break ; if(flag_csb_juli == 1) { } TR0=0; //关定时器0定时 distance =flag_time0; //读出定时器0的时间 distance *= 0.017; // 0.017 = 340M / 2 = 170M = 0.017M 算出来是米 if((distance > 380)) { } distance = 888; //如果大于3.8m就超出超声波的量程 //距离 = 速度 * 时间 /*********************定时器0、定时器1初始化******************/ void time_init() { } -29- EA = 1; //开总中断 //定时器0、定时器1工作方式1 TMOD = 0X11; ET0 = 1; TR0 = 0; //开定时器0中断 //允许定时器0定时 沈阳城市学院毕业设计(论文) /*****************主函数*********************/ void main() { } time_init() ; init_1602(); //1602初始化 while(1) { } send_wave(); //测距离函数 write_sfm3(1,7,distance); delay_1ms(50); key(); //按键设置 //显示距离 if(distance <= 10) //如果距离小于10 { } else if(10 < distance <= 20) { } else { } go(); beep = 1; //否则正常运行 right(); beep = ~beep; //否则如果距离大于10小于20,直接右转,蜂鸣器响 //先后退,先延时,然后右转,蜂鸣器响 back(); delay(); right(); beep = ~beep; -30- 沈阳城市学院毕业设计(论文) 附录2 原理图 各模块原理图如下图所示。 1602液晶显示模块 电机驱动模块 -31- 沈阳城市学院毕业设计(论文) 单片机模块 电源模块 蜂鸣器模块 -32- 沈阳城市学院毕业设计(论文) 按键模块 -33- 因篇幅问题不能全部显示,请点此查看更多更全内容for(j=0;j<115;j++);
Copyright © 2019- stra.cn 版权所有 赣ICP备2024042791号-4
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务