单片机实习报告_简易智能小车
智能小车毕业实习报告
一、实习背景随着科技的飞速发展,智能技术已经深入到我们生活的方方面面。
智能小车作为智能技术的一个重要应用,近年来得到了广泛关注。
为了更好地了解智能小车的原理和应用,提高自己的实践能力,我选择了智能小车作为毕业实习的课题。
二、实习目的1. 掌握智能小车的原理和设计方法;2. 提高自己的动手能力和团队协作能力;3. 培养自己的创新意识和实践能力;4. 为毕业设计打下坚实基础。
三、实习内容1. 理论学习在实习过程中,我首先对智能小车的原理进行了深入的学习。
通过查阅资料、阅读相关书籍,了解了智能小车的组成、工作原理以及各类传感器的工作原理。
主要包括以下内容:(1)单片机原理:学习了51单片机的结构、工作原理以及编程方法;(2)传感器原理:学习了红外传感器、超声波传感器、光电传感器等常用传感器的原理和特点;(3)电机驱动原理:学习了直流电机、步进电机等电机的驱动原理和控制方法;(4)通信原理:学习了串口通信、无线通信等通信方式的基本原理。
2. 实验与实践在理论学习的基础上,我进行了以下实验和实践:(1)搭建智能小车电路:根据设计要求,我选择了51单片机作为控制核心,红外传感器、超声波传感器、电机驱动模块等作为主要硬件。
通过焊接、连接等操作,搭建了智能小车的电路;(2)编程与调试:利用C语言对单片机进行编程,实现智能小车的各项功能。
主要包括:红外传感器循迹、超声波传感器避障、电机驱动控制等;(3)测试与优化:对智能小车进行测试,观察其运行效果。
针对存在的问题,对程序和电路进行优化,提高智能小车的性能。
3. 团队协作在实习过程中,我与团队成员密切合作,共同完成智能小车的研发。
我们分工明确,各司其职,共同解决了许多技术难题。
四、实习收获1. 提高了实践能力:通过实际操作,我掌握了智能小车的搭建、编程和调试方法,提高了自己的动手能力;2. 培养了团队协作精神:在团队协作中,我学会了与他人沟通、协调,提高了自己的团队协作能力;3. 增强了创新意识:在解决技术难题的过程中,我不断思考、尝试,培养了创新意识;4. 为毕业设计打下基础:通过这次实习,我对智能小车有了更深入的了解,为毕业设计积累了丰富的经验。
智能小车实训报告
智能小车实训报告摘要:本课题是基于AT89C52单片机的智能小车的设计与实现,小车完成的主要功能是能够自主识别黑色引导线并根据黑线走向实现快速稳定的寻线行驶。
小车系统以 AT89S52 单片机为系统控制处理器;采用红外传感获取赛道的信息,来对小车的方向和速度进行控制。
此外,对整个控制软件进行设计和程序的编制以及程序的调试,并最终完成软件和硬件的融合,实现小车的预期功能。
一、实验目的:通过设计进一步掌握51单片机的应用,特别是在嵌入式系统中的应用。
进一步学习51单片机在系统中的控制功能,能够合理设计单片机的外围电路,并使之与单片机构成整个系统。
二、设计方案该智能车采用红外传感器对赛道进行道路检测,单片机根据采集到的信号的不同状态判断小车当前状态,通过电机驱动芯片L298N发出控制命令,控制电机的工作状态以实现对小车姿态的控制。
三.报告内容安排本技术报告主要分为三个部分。
第一部分是对整个系统实现方法的一个概要说明,主要内容是对整个技术原理的概述;第二部分是对硬件电路设计的说明,主要介绍系统传感器的设计及其他硬件电路的设计原理等;第三部分是对系统软件设计部分的说明,主要内容是智能模型车设计中主要用到的控制理论、算法说明及代码设计介绍等。
技术方案概要说明本模型车的电路系统包括电源管理模块、单片机模块、传感器模块、电机驱动模块。
工作原理:➢利用红外采集模块中的红外发射接收对管检测路面上的轨迹➢将轨迹信息送到单片机➢单片机采用模糊推理求出转向的角度,然后去控制行走部分➢最终完成智能小车可以按照路面上的轨迹运行。
硬件电路的设计1、最小系统:小车采用atmel公司的AT89C52单片机作为控制芯片,图1是其最小系统电路。
主要包括:时钟电路、电源电路、复位电路。
其中各个部分的功能如下:1、时钟电路:给单片机提供一个外接的16MHz的石英晶振。
2、电源电路:给单片机提供5V电源。
3、复位电路:在电压达到正常值时给单片机一个复位信号。
单片机实习报告_简易智能小车
单片机实习报告_简易智能小车单片机实习报告指导老师:李勇波日期:2011年7月班级:073092-15 | 姓名:赵英俊(20091002410)简易智能小车报告摘要本小车以Atmel公司生产的AT89S52为核心,完成寻迹、避障、光源检测和车速测量等功能。
在机械结构上,对普通的小车进行了改造,即用一个万向轮来代替两个前轮,是小车的转向更加灵敏。
采用PWM驱动芯片控制电机,红外传感器检测白线、障碍物以及用来测量速度,光敏器件检测光强。
基于可靠的硬件设计和稳定的软件算法,基本实现题目要求。
关键字:STC89C52 寻迹光源检测避障测速测量AbstractThis design is controlled with the MCU (AT89S52) to complete the function of finding trace,avoiding barrier,tending to light and measure speed. In the mechanical structure, about the car, the reform which is a universal wheel instead of two front, the more sensitive to the car. Using PWM motor drive chip control, infrared sensor detection white line, obstacles and used to measure the speed, photodetector detection light intensity. Based on reliable hardware design and stable software algorithm, basically realize the topic request.Key words: STC89C52 trace avoiding barrier tending to light measure speed1.系统设计1.1 设计要求1. 基本要求(1)小车从起跑线出发(不得超过起跑线),沿引导线到达B点在B点有一障碍物需绕过障碍物到达C点(2)小车到达C点沿一段直到到达D点后进入“弯道区”(中间有一断点),此时有一光源照射,引导小车转弯并通过断点继续进入大弯道区。
智能小车控制实验报告
一、实验目的本次实验旨在通过设计和搭建一个智能小车系统,学习并掌握智能小车的基本控制原理、硬件选型、编程方法以及调试技巧。
通过实验,加深对单片机、传感器、电机驱动等模块的理解,并提升实践操作能力。
二、实验原理智能小车控制系统主要由以下几个部分组成:1. 单片机控制单元:作为系统的核心,负责接收传感器信息、处理数据、控制电机运动等。
2. 传感器模块:用于感知周围环境,如红外传感器、超声波传感器、光电传感器等。
3. 电机驱动模块:将单片机的控制信号转换为电机驱动信号,控制电机运动。
4. 电源模块:为系统提供稳定的电源。
实验中,我们选用STM32微控制器作为控制单元,使用红外传感器作为障碍物检测传感器,电机驱动模块采用L298N芯片,电机选用直流电机。
三、实验器材1. STM32F103C8T6最小系统板2. 红外传感器3. L298N电机驱动模块4. 直流电机5. 电源模块6. 连接线、电阻、电容等7. 编程器、调试器四、实验步骤1. 硬件搭建:- 将红外传感器连接到STM32的GPIO引脚上。
- 将L298N电机驱动模块连接到STM32的PWM引脚上。
- 将直流电机连接到L298N的电机输出端。
- 连接电源模块,为系统供电。
2. 编程:- 使用Keil MDK软件编写STM32控制程序。
- 编写红外传感器读取程序,检测障碍物。
- 编写电机驱动程序,控制电机运动。
- 编写主程序,实现小车避障、巡线等功能。
3. 调试:- 使用调试器下载程序到STM32。
- 观察程序运行情况,检查传感器数据、电机运动等。
- 调整参数,优化程序性能。
五、实验结果与分析1. 避障功能:实验中,红外传感器能够准确检测到障碍物,系统根据检测到的障碍物距离和方向,控制小车进行避障。
2. 巡线功能:实验中,小车能够沿着设定的轨迹进行巡线,红外传感器检测到黑线时,小车保持匀速前进;检测到白线时,小车进行减速或停止。
3. 控制性能:实验中,小车在避障和巡线过程中,表现出良好的控制性能,能够稳定地行驶。
智能小车的实训报告
智能小车的实训报告1. 实训简介本次实训是一项基于智能小车的项目,旨在让学生学习并掌握智能控制和物联网技术的应用。
在实训中,我们使用了Raspberry Pi作为核心控制器,通过各类传感器和执行器实现智能小车的控制。
实训期间,我们学习了基本的Python编程语言,同时掌握了一些树莓派操作和调试技巧。
通过完成一系列的课程设计,我们不仅加深了对智能控制和物联网技术的理解,也训练了自己的实践能力和创新思维。
2. 实训内容2.1 实验一:智能小车的搭建在实验一中,我们首先学习了如何搭建智能小车的硬件平台。
通过对各种模块和传感器的接线和配置,我们最终完成了一辆基本的智能小车,并成功地将它连接到了树莓派上。
2.2 实验二:避障控制实验二是围绕智能小车的避障控制展开的,我们使用超声波传感器测量周围物体的距离,并通过程序控制小车的行进方向和速度,以实现避障功能。
在实验过程中,我们需要不断调试代码和参数,逐步完善小车避障的精准度和鲁棒性。
2.3 实验三:智能追踪实验三是针对小车能够追踪指定物体的控制,我们使用了摄像头来捕捉物体的图像,并通过OpenCV进行图像处理,最终根据识别出的物体位置控制小车的运动。
在实验中,我们不仅学习了图像处理的基础知识,还掌握了如何使用Python调用OpenCV和摄像头。
2.4 实验四:手势识别实验四是一个拓展性比较强的实验,我们使用了一款手势识别模块,实现了对小车的手势控制。
通过手势识别模块的数据处理和解析,我们能够将自己的手势指令转化为小车的运动指令,并实现多种手势的控制操作。
3. 实训收获通过本次实训,我们不仅学到了很多智能控制和物联网技术的应用知识,还锻炼了自己的实践能力和团队协作能力。
在实验过程中,我们需要不断调试和优化代码,同时也需要和同学合作,互相帮助和交流。
除此之外,我们还学到了如何独立思考和创新,不仅是在完成课程设计时,也体现在我们对未来的探索和思考上。
这是一次非常有意义的实训,让我们受益匪浅。
单片机循迹小车实训报告
一、实训目的通过本次单片机循迹小车实训,使学生掌握单片机的基本原理和编程方法,了解循迹小车的构造和工作原理,提高学生动手能力和实践能力,培养学生的创新精神和团队协作精神。
二、实训背景随着科技的不断发展,单片机在各个领域得到了广泛应用。
单片机具有体积小、功耗低、成本低、易于编程等优点,是现代电子设备的核心控制单元。
循迹小车作为一种典型的嵌入式系统,具有较好的应用前景。
通过本次实训,学生可以了解单片机在循迹小车中的应用,提高自己的实际操作能力。
三、实训内容1. 硬件部分(1)单片机:选用AT89C52单片机作为循迹小车的核心控制单元。
(2)循迹传感器:采用红外传感器,用于检测地面上的黑色轨迹线。
(3)电机驱动模块:选用L298N电机驱动模块,驱动直流电机。
(4)电源模块:采用可充电锂电池,为整个系统提供稳定的电源。
(5)其他辅助元件:如电阻、电容、二极管等。
2. 软件部分(1)系统初始化:设置单片机的IO口、定时器、中断等。
(2)循迹算法:根据红外传感器的输入信号,判断小车与轨迹线的相对位置,控制小车行驶方向。
(3)电机控制:根据循迹算法的结果,控制电机的转速和方向,实现小车的前进、后退、左转和右转等动作。
(4)数据通信:通过串口通信,将小车行驶过程中的数据传输到上位机。
四、实训步骤1. 硬件搭建(1)根据电路图,将各个模块连接起来。
(2)检查电路连接是否正确,确保各个模块正常工作。
2. 软件编程(1)编写系统初始化程序,设置单片机的IO口、定时器、中断等。
(2)编写循迹算法程序,根据红外传感器的输入信号,判断小车与轨迹线的相对位置。
(3)编写电机控制程序,根据循迹算法的结果,控制电机的转速和方向。
(4)编写数据通信程序,通过串口通信,将小车行驶过程中的数据传输到上位机。
3. 调试与优化(1)将编写好的程序烧录到单片机中。
(2)调试程序,观察循迹小车的运行状态。
(3)根据调试结果,优化循迹算法和电机控制程序。
智能小车实验报告心得(3篇)
第1篇一、引言随着科技的不断发展,人工智能技术逐渐渗透到我们生活的方方面面。
作为人工智能的一个典型应用,智能小车实验为我们提供了一个将理论知识与实践操作相结合的平台。
在本次智能小车实验中,我深刻体会到了理论知识的重要性,同时也感受到了动手实践带来的乐趣和成就感。
以下是我对本次实验的心得体会。
二、实验目的本次实验旨在通过设计、搭建和调试智能小车,让学生掌握以下知识:1. 传感器原理及在智能小车中的应用;2. 单片机编程及接口技术;3. 电机驱动及控制;4. PID控制算法在智能小车中的应用。
三、实验过程1. 设计阶段在设计阶段,我们首先对智能小车的功能进行了详细规划,包括自动避障、巡线、遥控等功能。
然后,根据功能需求,选择了合适的传感器、单片机、电机驱动器等硬件设备。
2. 搭建阶段在搭建阶段,我们按照设计图纸,将各个模块连接起来。
在连接过程中,我们遇到了一些问题,如电路板布局不合理、连接线过多等。
通过查阅资料、请教老师,我们逐步解决了这些问题。
3. 编程阶段编程阶段是本次实验的核心环节。
我们采用C语言对单片机进行编程,实现了小车的基本功能。
在编程过程中,我们遇到了许多挑战,如传感器数据处理、电机控制算法等。
通过查阅资料、反复调试,我们最终完成了编程任务。
4. 调试阶段调试阶段是检验实验成果的关键环节。
在调试过程中,我们对小车的各项功能进行了测试,包括避障、巡线、遥控等。
在测试过程中,我们发现了一些问题,如避障效果不稳定、巡线精度不高、遥控距离有限等。
针对这些问题,我们再次查阅资料、调整程序,逐步优化了小车的性能。
四、心得体会1. 理论与实践相结合本次实验让我深刻体会到了理论与实践相结合的重要性。
在实验过程中,我们不仅学习了理论知识,还通过实际操作,将所学知识应用于实践,提高了自己的动手能力。
2. 团队合作在实验过程中,我们充分发挥了团队合作精神。
在遇到问题时,我们互相帮助、共同探讨解决方案,最终完成了实验任务。
智能小车实习报告
随着科技的不断发展,智能化技术逐渐渗透到各个领域,智能小车作为人工智能技术在工业、农业、军事、医疗卫生和宇宙探测等领域的重要应用之一,受到了广泛关注。
为了更好地了解和掌握智能小车的相关知识,提高自身的实践能力,我参加了为期一个月的智能小车实习。
二、实习目的1. 学习智能小车的原理和设计方法,掌握智能小车的构造和性能。
2. 了解智能小车在各个领域的应用,提高自身的创新意识和实践能力。
3. 通过实际操作,培养团队协作精神和动手能力。
三、实习内容1. 智能小车基础知识学习实习初期,我们学习了智能小车的定义、分类、组成及工作原理。
智能小车主要由传感器、控制器、执行器、电源和通信模块等组成。
传感器负责收集环境信息,控制器根据收集到的信息进行决策,执行器执行控制器的决策,电源为整个系统提供能量,通信模块实现与其他设备或系统的数据交换。
2. 智能小车硬件设计在硬件设计方面,我们学习了传感器选型、电路设计、电机驱动和电源设计等。
传感器选型主要包括红外传感器、超声波传感器、光电传感器等;电路设计包括单片机电路、驱动电路和电源电路等;电机驱动主要采用L298N驱动模块;电源设计主要考虑电池容量、电压和电流等。
3. 智能小车软件设计软件设计是智能小车实现功能的关键环节。
我们学习了单片机编程语言C语言,掌握了中断、定时器、串口通信等编程技巧。
在软件设计过程中,我们实现了小车的前进、后退、左转、右转、循迹和避障等功能。
4. 智能小车系统集成与调试在系统集成与调试阶段,我们将硬件和软件相结合,完成了小车各个模块的连接和调试。
通过不断调整参数,使小车能够稳定运行,实现了预期的功能。
通过本次实习,我们成功设计并实现了一款基于AT89C52单片机的智能小车。
该小车具备以下功能:1. 循迹功能:小车能够自动跟随黑线前进,实现自动循迹。
2. 避障功能:小车能够检测到前方障碍物,自动避开障碍物。
3. 远程控制功能:通过蓝牙模块,可以实现手机远程控制小车的前进、后退、左转、右转等功能。
智能小车实训报告5页
智能小车实训报告5页一、实验目的本实验旨在通过图像识别技术和单片机控制技术,构建一辆具有自主巡线和避障功能的智能小车。
二、实验器材硬件器材:1. Arduino UNO 控制器2. 舵机驱动模块4. 红外遥控模块5. 平衡车底盘6. 直流电机7. 陀螺仪传感器8. 红外线反射传感器软件工具:2. Python 编程语言三、实验步骤1. 硬件连接将舵机驱动模块和电机驱动模块连接至 Arduino 控制器上,并将红外遥控模块和陀螺仪传感器两个模块连接到 Arduino 子板上。
2. 巡线程序设计编写巡线程序,使小车能够自主巡线。
巡线程序的主要功能是利用红外线反射传感器检测地面上黑白交替的线条,然后控制小车转向或停止。
4. 远程控制程序设计编写远程控制程序,使小车能够通过红外线遥控器进行操作。
远程控制程序的主要功能是接收红外遥控信号,并进行相应的操作。
5. 整合程序将巡线程序、避障程序和远程控制程序整合到一个程序中,使小车能够在不同情况下实现自主巡线、避障和远程控制操作。
四、实验结果在巡线实验中,小车能够准确地检测到地面上黑白交替的线条,并在此基础上实现正确的转向和运动。
在避障实验中,小车通过陀螺仪传感器检测到自身的倾斜角度,进而避免与障碍物发生碰撞。
总结本实验通过对图像识别和单片机控制技术的应用,实现了自主巡线、避障和远程控制等多种功能的智能小车。
实验过程充满挑战,但通过不断调试和优化,最终实现了预期的效果。
这个实验让我深刻认识到了图像识别和控制技术的重要性和广泛性,也让我更加坚定了今后学习和研究相关领域的决心。
单片机控制小车实训报告
一、实训背景与目的随着科技的发展,单片机技术已经广泛应用于各个领域。
为了提高学生的实践能力和创新能力,本实训旨在通过单片机控制小车的设计与实现,让学生深入了解单片机的应用,掌握单片机编程及控制硬件的方法,培养实际动手能力。
二、实训内容本次实训主要内容包括:1. 硬件电路设计:设计单片机控制小车所需的电路,包括单片机、电机驱动模块、传感器、电源等。
2. 软件编程:编写单片机程序,实现小车的基本运动功能,如前进、后退、左转、右转、停止等。
3. 功能扩展:根据需要,实现小车的高级功能,如循迹、避障、远程控制等。
三、实训过程1. 硬件电路设计(1)单片机选择:本次实训选用STC89C52单片机作为控制核心,该单片机具有高性能、低功耗、易于编程等特点。
(2)电机驱动模块:选用L298N电机驱动模块,该模块具有驱动能力强、稳定性好等特点。
(3)传感器:选用红外线传感器作为循迹传感器,用于检测地面上的轨迹线。
(4)电源:选用5V电源为单片机及电机驱动模块供电。
2. 软件编程(1)初始化:初始化单片机、电机驱动模块、传感器等硬件设备。
(2)基本运动控制:编写程序实现小车的前进、后退、左转、右转、停止等基本运动。
(3)循迹控制:编写程序实现小车在预设路线上自动循迹的功能。
(4)避障控制:编写程序实现小车在遇到障碍物时自动停止或绕行。
3. 功能扩展(1)远程控制:通过蓝牙模块实现手机APP对小车进行远程控制。
(2)数据显示:在手机APP上显示小车运行状态、速度等信息。
四、实训结果与分析1. 硬件电路设计根据实训要求,设计完成单片机控制小车所需的电路,包括单片机、电机驱动模块、传感器、电源等。
2. 软件编程(1)基本运动控制:成功实现小车的前进、后退、左转、右转、停止等基本运动。
(2)循迹控制:成功实现小车在预设路线上自动循迹的功能。
(3)避障控制:成功实现小车在遇到障碍物时自动停止或绕行。
3. 功能扩展(1)远程控制:成功实现手机APP对小车进行远程控制。
智能车单片机实践报告
以自动循迹智能车为载体的“单片机应用系统设计实践”1、设计目标小车能自己识别道路,自主导航跑过指定道路。
2、总体方案设计整体控制流程图:单片机控制器识别磁场信号,比赛中用的是通过信号发生器产生的变化磁场。
我们需要通过电感采集到信号,再通过运算放大电路将信号放大,继而形成识别道路的信号,最后将信号通过单片机的ADC采集管脚输入到单片机。
在单片机中处理后(在此过程中运用不同算法整理信号数据,减少误差)向舵机和电机发出指令,使小车的转角和速度做出相应改变,小车的前进方向和前进速度就会做出相应变化。
系统全部包括:汽车动态分析车速控制模块方向控制模块赛道检测模块电子控制模块策略规划模块行为决策模块路况记忆模块数据传输模块3、硬件电路设计小车硬件设计结构图人机接口模块:电感传感器原理根据电磁学相关知识,我们知道在导线中通人变化的电流(如按止弦规律变化的电流).则导线周围会产生变化的磁场,且磁场与电流的变化规律具有一致性,如果在此磁场中置一个电感,则该电感上会产生感应电动势,且该感应电动势的大小和通过线圈回路的磁通量的变化率成正比。
由于在导线周围不同位置,磁感应强度的大小和方向不同,所以不同位置上的电感产生的感应电动势也应该不同。
据此,则可以确定电感的大致位置。
采用ADC采集管收集信号:一般会采集一个周期采集多次求取平均值的方法来稳定信号。
在放大器输出端加上检波的电路,把交流信号变成直流。
信号波动很小,噪声可以忽略。
每次采集5次,求个平均。
对偏差数据的处理,这里用的是差比和,目的是为了在把偏差放在自己想要的范围之类,在不同环境下也可以得到有效偏差。
相关识别类代码有:void ADC_init(){adc_init(ADC_IN8_B0);adc_init(ADC_IN9_B1);// adc_init(ADC_IN4_A4);// adc_init(ADC_IN6_A6);}void ADC_GET(){left_ad = adc_convert(ADC_IN8_B0 ,ADC_8BIT);right_ad = adc_convert(ADC_IN9_B1 ,ADC_8BIT);}void ADC_Error(){int16 ad_difference=0;int16 ad_sum=0;ad_difference=left_ad-right_ad;ad_sum=left_ad+right_ad;ad_error=(ad_difference*30)/ad_sum;}磁传感器信号处理电路确定使用电感作为检测导线的传感器,但是其感应信号较微弱,且混有杂波,所以要进行信号处理。
智能小车工程应用实训报告
一、实训目的本次实训旨在让学生掌握智能小车的设计与开发流程,提高学生的动手实践能力和创新能力。
通过实训,学生能够了解智能小车的硬件组成、软件编程、传感器应用、控制系统设计等方面的知识,并能够运用所学知识完成智能小车的开发与应用。
二、实训内容1. 硬件组成(1)单片机:选用STC89C51单片机作为核心控制器,负责整个系统的控制与运算。
(2)传感器:包括红外传感器、超声波传感器、光电传感器等,用于检测环境信息。
(3)执行器:包括电机驱动模块、舵机模块等,用于实现小车的运动控制。
(4)通信模块:选用蓝牙模块,实现手机与智能小车之间的无线通信。
2. 软件编程(1)C语言编程:使用C语言编写单片机程序,实现小车的基本控制功能。
(2)手机端应用程序:使用Android Studio开发手机端应用程序,实现手机控制小车。
3. 系统设计(1)循迹功能:利用红外传感器检测地面颜色,实现小车沿黑色轨迹行驶。
(2)避障功能:利用超声波传感器检测前方障碍物距离,实现小车自动避开障碍物。
(3)远程控制:通过蓝牙模块实现手机与智能小车之间的无线通信,实现手机控制小车。
三、实训过程1. 硬件搭建(1)首先,根据设计要求,准备好所需硬件设备,包括单片机、传感器、执行器、通信模块等。
(2)然后,按照电路图连接各个模块,确保连接正确无误。
(3)最后,将单片机程序烧录到单片机中,测试小车的基本功能。
2. 软件编程(1)编写单片机程序,实现小车的基本控制功能,如循迹、避障等。
(2)开发手机端应用程序,实现手机控制小车,如前进、后退、左转、右转等。
3. 系统调试(1)首先,对小车进行循迹测试,确保小车能够沿黑色轨迹行驶。
(2)然后,对小车进行避障测试,确保小车能够自动避开障碍物。
(3)最后,对手机端应用程序进行测试,确保手机能够控制小车。
四、实训成果1. 完成了一辆具备循迹、避障、远程控制功能的智能小车。
2. 掌握了智能小车的设计与开发流程,提高了动手实践能力和创新能力。
单片机小车应用实训报告
一、实训背景随着科技的不断发展,单片机技术在各个领域得到了广泛的应用。
单片机具有体积小、功耗低、成本低、功能强大等优点,已成为现代电子设备的核心控制单元。
为了提高学生的实际操作能力,我们开展了单片机小车应用实训,旨在让学生掌握单片机的编程、硬件电路设计、传感器应用等技能。
二、实训目的1. 熟悉单片机的基本原理和编程方法;2. 掌握单片机小车硬件电路的设计与制作;3. 学会传感器应用和数据处理;4. 提高学生的动手实践能力和团队协作能力。
三、实训内容1. 单片机基础知识(1)单片机的结构及工作原理;(2)C语言编程基础;(3)单片机常用外设(如定时器、中断、串口等)的使用。
2. 硬件电路设计(1)选择合适的单片机(如AT89C52);(2)设计硬件电路,包括电源电路、电机驱动电路、传感器电路、显示电路等;(3)制作电路板,焊接元器件。
3. 传感器应用(1)学习常用传感器(如红外传感器、超声波传感器、光电传感器等)的工作原理;(2)编写程序实现传感器数据采集和处理;(3)将传感器应用于单片机小车,实现避障、循迹等功能。
4. 软件编程(1)使用C语言编写单片机程序,实现小车的基本控制功能;(2)编写传感器数据处理程序,实现避障、循迹等功能;(3)编写显示程序,实现小车状态显示。
5. 小车组装与调试(1)组装单片机小车,包括电机、传感器、电源等模块;(2)调试程序,实现小车的基本控制功能;(3)优化程序,提高小车性能。
四、实训过程1. 学习单片机基础知识,了解单片机的基本原理和编程方法;2. 根据实训要求,选择合适的单片机(如AT89C52);3. 设计硬件电路,绘制电路原理图,制作电路板;4. 学习传感器原理,编写程序实现传感器数据采集和处理;5. 编写单片机程序,实现小车的基本控制功能;6. 组装单片机小车,进行调试,优化程序;7. 进行团队协作,完成实训报告。
五、实训成果1. 成功设计并制作了一台基于单片机的智能小车;2. 掌握了单片机的编程、硬件电路设计、传感器应用等技能;3. 提高了动手实践能力和团队协作能力;4. 完成了实训报告,总结实训经验。
智能小车避障实习报告
智能小车避障实习报告一、实习目的本次实习旨在通过设计和实现基于单片机的智能小车避障系统,使学生掌握嵌入式系统的基本原理和应用,提高学生在实际工程中的动手能力和创新能力。
通过实习,学生应能熟练识别电子元器件,了解传感器、电机在控制作用下实现具体机械结构的运动原理,并掌握基于单片机的控制系统设计与调试方法。
二、实习内容1. 设计基于单片机的智能小车避障系统,实现小车在遇到障碍物时能够自动避开,继续前进。
2. 掌握单片机的基本原理和编程方法,熟悉C语言编程。
3. 了解传感器技术、电机驱动技术和控制算法在智能小车避障系统中的应用。
4. 学习使用仿真器和编程软件进行系统仿真和调试。
5. 撰写实习报告,总结实习过程中的收获和不足。
三、实习过程1. 设计思路本实习设计的智能小车避障系统采用单片机作为核心控制器,利用红外线传感器检测前方障碍物,并通过控制算法实现小车的自动避障。
系统主要包括单片机、红外线传感器、电机驱动模块和电源模块等。
2. 硬件设计单片机:选用高性能、低功耗的单片机作为核心控制器,负责处理传感器数据、执行避障算法,以及控制小车的运动。
红外线传感器:用于检测前方障碍物,当红外线传感器检测到障碍物时,输出高电平信号给单片机。
电机驱动模块:负责驱动小车的运动,包括前进、后退、转向等。
通过控制电机的转速和方向,实现小车的运动控制。
电源模块:为整个系统提供稳定的电源供应。
3. 软件设计软件设计主要涉及系统初始化、红外线传感器数据采集、障碍物检测与避障控制以及控制算法等。
程序采用C语言编写,利用单片机的定时器中断实现红外线传感器的周期性扫描,以及通过判断红外线传感器输出的高电平信号持续时间来判断障碍物的距离。
4. 系统调试与仿真利用仿真器对编写好的程序进行仿真,观察小车在遇到障碍物时的避障效果。
通过不断调整控制算法和参数,优化小车的避障性能。
四、实习收获通过本次实习,学生掌握了基于单片机的智能小车避障系统的设计方法和流程,熟悉了传感器技术、电机驱动技术和控制算法在实际工程中的应用。
智能小车实习报告
智能小车实习报告<i>西农可用</i>1.实习任务与要求1.1实习目的1、机械构件如何通过电机驱动实现不同的动作;2、控制电路的设计及其分析;3、控制器如何通过传感电路感知世界;4、设备如何构成控制反馈等。
1.2实习要求1、熟练掌握单一传感器、单电机在控制器作用下实现具体机械构件的控制。
2、熟练掌握控制器采集多类型、多数量传感器信息并通过复杂电路控制多电机实现对多机械构件的控制;3、熟练掌握各种电机在控制器作用下,驱动机械构件实现复杂运动。
2.1四轮直流电机智能小车2.1.1小车的装配组装按照电路图要求组装,组装完成如附件直流小车图。
2.1.2电机系统1.电机的工作原理:复杂的直流电机结构可简化为电机具有一对主磁极,电枢绕组只是一个线圈,线圈两端分别联在两个换向片上,换向片上压着电刷A 和B,如图2-2。
1― 主磁极:励磁绕组上加上直流电压,励磁绕组上有励磁电流通过,使定子铁心产生固定磁场,即定子的主要作用是产生主磁场。
2―电机绕组:在固定的磁场中旋转,主要作用是产生感应电动势或产生机械转矩,实现能量的转换。
3、4―换向器:电刷固定不动,换向片与电枢绕组一起旋转,主要作用对电动机而言,则是将外加的直流电流转换为电枢绕组的交变电流,并保证每一磁极下,电枢导体的电流的方向不变,以产生恒定的电磁转矩。
<i>西农可用</i>2.直流电机的控制1.使用脉冲宽度调制(PWM)方式来驱动直流电机,也就是给直流电机输入占空比可调的方波,当电平为1时电机转动,电平为0时电机停止。
电动机的驱动方波周期一定,通过改变高电平的持续时间来控制电动机使能,从而改变电动机一个周期内动作时间,达到控制电动机转速的目的。
控制加减速时可以控制占空比的变化,是占空比不断减小可以控制电机的减速,相反可以控制电机的加速。
直流电机控制基本原理:两个电极与电源正接或反接,可以使其正转或反转。
由于直流电机的工作电流比较大,不能直接使用单片机来驱动,一般使用集成芯片L293D或L298D。
单片机小车编程实训报告
一、实训背景随着科技的发展,单片机技术在各个领域得到了广泛应用。
为了提高同学们对单片机编程的实践能力,培养动手操作和团队协作能力,我们进行了单片机小车编程实训。
本次实训以一个简单的单片机小车为载体,通过编程实现对小车的控制,使小车能够完成循迹、避障等基本功能。
二、实训目标1. 掌握单片机编程的基本方法和技巧;2. 熟悉单片机小车硬件组成和电路设计;3. 能够根据实际需求设计、编写程序,实现对小车的控制;4. 提高团队协作能力和动手操作能力。
三、实训内容1. 硬件设计本次实训所使用的单片机为STC89C52,它是一款高性能、低功耗的单片机。
硬件部分主要包括:(1)单片机:STC89C52(2)电源模块:5V电源适配器(3)电机驱动模块:L298N(4)电机:直流电机(5)循迹传感器:红外线传感器(6)避障传感器:超声波传感器(7)舵机:SG90舵机(8)按键模块:独立按键2. 软件设计(1)循迹功能循迹功能是通过循迹传感器检测地面上的轨迹线,根据检测到的信号控制小车沿预设路线行驶。
具体实现方法如下:① 初始化循迹传感器和单片机端口;② 读取循迹传感器信号;③ 判断小车是否偏离轨迹线;④ 根据偏离程度,调整小车转向;⑤ 重复步骤②-④,实现循迹功能。
(2)避障功能避障功能是通过避障传感器检测前方障碍物,控制小车减速或停止,避免碰撞。
具体实现方法如下:① 初始化避障传感器和单片机端口;② 读取避障传感器信号;③ 判断小车前方是否有障碍物;④ 如果有障碍物,则控制小车减速或停止;⑤ 如果没有障碍物,则继续行驶;⑥ 重复步骤②-⑤,实现避障功能。
(3)按键控制功能按键控制功能是通过按键模块控制小车的前进、后退、转向等动作。
具体实现方法如下:① 初始化按键模块和单片机端口;② 读取按键信号;③ 根据按键信号,控制小车动作;④ 重复步骤②-③,实现按键控制功能。
3. 系统调试与测试在编写程序的过程中,不断进行调试和测试,确保各个功能模块正常工作。
智能小车综合实训实习报告
智能小车综合实训实习报告一、实习目的通过此次实训,主要锻炼我们的理论和实践操作能力,将学习的理论知识运用于实践当中,检验书本上理论的正确性,有利于融会贯通。
同时,通过实际开发的模拟训练,让我们把学到的知识点付诸实战,最大程度地体验实际开发的流程,完成理论到认知的全过程。
二、实训内容1. 硬件设备:AT89C51单片机开发板、实物小车、超声波模块、供电模块、电机模块、检测提示模块、舵机模块、红外检测模块等。
2. 软件:在不使用实物的情况下,我们可以使用Proteus8.9进行仿真,观察效果。
编程时使用Keil工具,选用C语言。
三、实训过程1. 首先,根据小车各部分功能,进行模块化硬件电路设计,并调试电路。
2. 将调试成功的各个模块逐个融合成整体,进行软件编程调试,直至完成小车,使其具备智能循迹、避障等功能。
3. 利用红外线传感器检测黑线与障碍物。
当左边传感器检测到黑线时,小车向左边偏转;当右边传感器检测到黑线时,小车向右边偏转。
当前方传感器检测到障碍物时,小车向左偏转避开障碍物后,回到原轨道。
4. 以STC12C5A60S2单片机为控制芯片,控制电动小车的速度及转向,实现自动循迹避障功能。
驱动由L298N驱动电路完成,速度由单片机控制。
四、实训收获通过此次实训,我们对智能小车的设计、组装、编程和调试有了深入的了解,锻炼了我们的动手能力和实际问题解决能力。
同时,我们也学会了如何将理论知识运用到实际项目中,提高了我们的综合素质。
五、存在问题及解决措施在实训过程中,我们遇到了一些问题,如传感器灵敏度不高、小车行驶不稳定等。
针对这些问题,我们采取了以下措施:1. 对于传感器灵敏度不高的问题,我们尝试调整了传感器的位置和角度,以提高检测准确性。
2. 对于小车行驶不稳定的问题,我们优化了小车的机械结构,调整了重心,使其行驶更加稳定。
六、建议通过此次实训,我们认识到在实际项目中,理论知识的重要性。
因此,我们建议在今后的学习中,加强理论知识的学习,同时注重实践操作,将所学知识付诸实践,提高我们的实际工作能力。
单片机生产实习报告(精选3篇)
单片机生产实习报告(精选3篇)单片机生产篇1一、生产实习的目的和意义生产实习是培养本科学生理论联系实际,提高实际动手操作能力的重要教学环节。
本专业的生产实习旨在使学生广泛了解实际电子产品生产的全过程,熟悉电子产品的主要技术管理模式,并在实习的操作过程中学习、掌握电子产品的焊接、安装、调试的实际操作技能。
巩固和加深理解所学的理论,开阔眼界,提高能力,为培养高素质大学本科人才打下必要的基础。
通过学习,是理论与实际相结合,可以使学生加深对所学知识的理解,并为后续专业课的学习提供必要的感性知识,同时使学生直接了解本业的生产过程和生产内容,为将来走上工作岗位提供必要的实际生产知识。
二、实习的基本内容集中授课,进行相关知识的学习。
学习、掌握电子产品的独立性设计与安装、调试的能力;进一步掌握电子测量仪器的正确使用方法,电元器件的测量与筛选技术。
初步了解电子整机产品的工艺过程。
为能使学生得到充分的锻炼,较大的提高学生的实际动手能力,本次生产实习安排每一位学生独立完成全部系统的设计与安装工作。
本实习环节,学生要独立使用电焊铁及各种电子测试设备电路安装与调试,要学生严格遵守电器设备的使用安全,遵守实验室的各项。
三、基本要求在教师的指导下练习在测试电路德核心板上焊接元件,掌握焊接要领。
熟悉元器件的性能及管脚分配。
在给定的pcb板上焊接跳线,ic插座,电阻,电容,led器件等。
检查焊接是否正确。
插上元器件,运行系统,并观测系统工作是否正常。
四、总体设计电路思想和原理本次生产实习用到的开发板和模块共7块,分别为:单片机核心板,电子钟模块,mp3模块,rfid模块,无线传输模块,脉搏传感模块,gps模块。
各模块相互组合,其所能实现的基本功能单片机核心板+电子钟模块:实现时间的显示,温度的测量,且可通过遥控器调时、定闹等。
单片机核心板+无线传输模块:实现数据的近距离无线传输。
单片机核心板+mp3模块(含sd卡):实现mp3播放功能。
单片机智能小车实训报告
学生姓名:李巧生,鄢汉葵,秦飞宇 组 长;秦飞宇
指导老师:曹铁军
实训任务
• 实现手机APP对智能小车的遥控。 • 实现小车自动寻迹,避障等功能。
设计思路
基于单片机控制的简易通过手机APP蓝牙控制小车系统,包 括小车系统构成硬件设计方法。小车以ST89C52单片机为控制 核心,手机通过蓝牙发送数据到蓝牙模块,蓝牙模块会自动转 发到与之相连的单片机处。以此,单片机通过对获取到的信息 给予分析判断,及时控制驱动电机来调整小车的移动方向。
基于单片机控制的简易自动寻迹小车系统,包括小车系统构成硬件设 计方法。小车以ST89C52单片机为控制核心, 用单片机产生PWM波,控 制小车速度。利用寻迹模块对路面黑色轨迹进行检测,并将路面检测信号 反馈给单片机。单片机对采集到的信号予以分析判断,及时控制驱动电机 以调整小车转向,从而使小车能够沿着黑色轨迹自动行驶,实现小车自动寻 迹的目的。 基于单片机控制的简易自动避障小车系统,避障模块对前方,左前, 右前的障碍进行分析判断,控制电机调整小车转向。
项目硬件方案
智能小车
手机APP
蓝牙模块
ST89C52 开发板
驱动模块
电机
电源模块
寻迹模块
避障模块
模块分析
一、驱动模块 1)直流电机: 电机转速与电压成正比。 改变电源极性可以改变电机转向。
施加一个PWM(脉宽调制)方波,其占空比对应于所需速度。
2)直流电机的驱动: 此实训使用专用芯片进行驱动。
二、蓝牙模块 本项目使用的蓝牙模块为HC-05主从机 一体蓝牙模块,能够实现串口透明传输 功能。 所谓透明传输功能即单片机通过串口 发送数据到蓝牙模块,蓝牙模块自动把 接收到的数据转发到与之连接的手机蓝 牙上,而无需关心蓝牙模块如何实现中 间的传输过程,同理,手机通过蓝牙发 送数据到蓝牙模块,蓝牙模块会自动转 发到与之相连的单片机处。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机实习报告_简易智能小车单片机实习报告指导老师:李勇波日期:2011年7月班级:073092-15 | 姓名:赵英俊(20091002410)简易智能小车报告摘要本小车以Atmel公司生产的AT89S52为核心,完成寻迹、避障、光源检测和车速测量等功能。
在机械结构上,对普通的小车进行了改造,即用一个万向轮来代替两个前轮,是小车的转向更加灵敏。
采用PWM驱动芯片控制电机,红外传感器检测白线、障碍物以及用来测量速度,光敏器件检测光强。
基于可靠的硬件设计和稳定的软件算法,基本实现题目要求。
关键字:STC89C52 寻迹光源检测避障测速测量AbstractThis design is controlled with the MCU (AT89S52) to complete the function of finding trace,avoiding barrier,tending to light and measure speed. In the mechanical structure, about the car, the reform which is a universal wheel instead of two front, the more sensitive to the car. Using PWM motor drive chip control, infrared sensor detection white line, obstacles and used to measure the speed, photodetector detection light intensity. Based on reliable hardware design and stable software algorithm, basically realize the topic request.Key words: STC89C52 trace avoiding barrier tending to light measure speed1.系统设计1.1 设计要求1. 基本要求(1)小车从起跑线出发(不得超过起跑线),沿引导线到达B点在B点有一障碍物需绕过障碍物到达C点(2)小车到达C点沿一段直到到达D点后进入“弯道区”(中间有一断点),此时有一光源照射,引导小车转弯并通过断点继续进入大弯道区。
(3)小车在光源的引导下通过进入停车区并到达车库(4)小车在最终在遇到停车标志后停车,并最终显示时间和速度(实时速度)。
1.2方案论证1. 电机驱动方案的选择与论证由于普通直流电机更易于购买,小车对于精度要求不是特别高,同时电路和控制相对简单,所以本设计采用直流电机作为驱动单元。
方案一:使用继电器对电机进行开关控制和调制。
但缺点很明显,继电器响应慢而且机械结构容易坏。
方案二:使用三极管或达林顿管,结合单片机输出PWM信号实现调速的目的,此方案易于实施,但若控制电机转动方向较为困难。
方案三:使用PWM控制芯片来实现对电机的控制。
方案选择:采用方案三。
该方案电路简单,性能稳定,可以轻松实现对电机方向的控制。
2. 路面寻迹模块方案一:采用光敏传感器,根据白色背景和黑色反光程度的不同来判断是否位于黑线上。
方案二:采用采用反射式红外传感器来进行探测。
只要选择数量和合适的红外传感器,可以准确的判断出黑线的位置。
方案选择:采用方案二。
方案一受环境光的影响太大,效果不佳而红外光不易受到环境光的干扰。
3. 趋光模块方案一:采用单一的光敏电阻,利用其在不同的光强下阻值不同,确定小车的转向,保证其朝着光源最强的角度前进。
方案二:采用多个光敏电阻,在小车车头摆成半圆状结构。
方案选择:方案二精度较高,实现较为复杂,这里采用方案一,实现效果足以。
4. 避障模块方案一:采用光电式传感器,根据白色背景和黑色反光程度的不同来判断障碍物。
方案二:采用超声波测距的方法,利用超声波传感器,监视测量发射脉冲和接受脉冲的时间差,计算超声波和物体之间的距离。
可以将避障和寻光模块一起排列为环状结构。
方案选择:虽然超声波测距有其性能上的优势,但价格过高,且通过算法上的优化光电式传感器测距完全可以满足设计要求,故采用方案一。
5. 测距模块方案一:采用断电式光电开关测距。
方案二:采用光电传感器,结合轮子外围自身所带白条,通过光电传感器红外检测单位时间内扫描到白条的个数。
方案选择:考虑到小车的实际机械结构,如果采用方案一必然会对小车的结构有较大的改变。
方案二结构简单易于在小车上很好的固定安装,而且在软件上也易于实现。
2.硬件电路设计智能小车总体构成:本系统以STC89C52为控制核心,最小系统如下:2.1 主控制模块STC89C52是一种带8K字节闪烁可编程擦出只读存储器的低电压,高性能COMMOS8的微处理器。
该器件采用ATMEL高密度非易失真存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
STC89C52主要完成液晶显示、寻迹、避障、光源检测和车速测量等功能。
2.2 电机驱动模块电机的驱动芯片选用L298N作为驱动芯片。
工作稳定电机驱动信号由单片机提供,信号经过光耦隔离后传至PWM控制芯片L298N,通过L298N的输出引脚与两个电机相连。
L198N的连接方法如下图所示本设计中采用脉宽调制技术(PWM)控制使能端(En),然后改变IN1和IN2的状态实现电机的正转和反转。
同时可改变脉宽电平信号,占空比为高电平时间除以周期,改变占空比实质上是改变了电动机的驱动电压。
下图为10%和50%占空比的PWM信号。
2.2 寻迹模块当小车在白色地面行驶时,装在小车下的红外发射管发射红外线信号,经白色反射后,被接收管接受,一旦接收管接收到信号,输输出端将输出低电平,从而实现了通过红外线检测信号的功能。
将检测到的信号传到单片机的I/O口,当I/O口检测到的信号为高电平时,表明红外光被地上的黑线吸收了,表明小车正处在黑色的引线上;同理,当I/O口检测到的信号为低电平时,表明小车行驶在白色地面线上。
反射式红外传感器ST188采用高发射功率红外广电二极管和高灵敏度光电晶体管组成。
检测距离可调整范围为4—15mm;采用非接触式检测方式。
当ST188前方为白色时,ST188接收管导通,电阻值减少,输出电压降低,此时比较器同相输入端(3脚)输入电压小,比较器输出为低电平,发光二极管点亮。
如下图所示2.3 趋光避障模块本设计采用光敏电阻检测光源从而达到趋光效果,光敏电阻阻值随光照强度增大而减小,首先在自然光条件下调节R18改变基准电压,使发光二极管点亮。
当光照强度增大,光敏电阻阻值减少,输出电压增加,此时比较器同相输入端(3脚)输入电压大,比较器输出为高电平,发光二极管熄灭,如下图所示在进行避障时采用了反射式红外传感器ST188,放于小车前部,三个ST188,左右中间各一个,且左右两个各向各自的两边倾斜45度角。
具体算法如下:继续执行,当再次遇到障碍物时再次执行上程序,直到绕出障碍物为止。
2.4 测距和显示模块测距采用反射式红外传感器ST188结合小车轮子外围白条,进行扫描,由单片机计算其一秒钟所扫描白条的个数乘以两白条间的距离即可。
显示部分:2.5 电源模块小车采用单电源供电,12VDC给电机驱动芯片L298N供电,并经一降压模块输出5V给主控制芯片以及其他芯片供电,电路如图所示:3.结论按照要求,小车已经较好的完成了题目要求的任务。
涉及包括机械结构,硬件,软件。
其中机械结构是小车能否稳定运行的基础,硬件电路决定了小车实现的功能,而软件部分则是控制的灵魂,算法的好坏直接决定了完成任务的质量。
整个设计无疑是一个充满辛苦的过程,期间也遇到了很多的困难,不过在全组组员的共同努力下,在整个实验室同仁的无私帮助下,以及老师的指导下,最终完成任务,在此对指导老师以及各位同学一并表示感谢!程序源代码:/*************************************** 后来修改部分:趋光由 P1.6 改为 P3.0四传感器将传感器INT去掉,接上P0.3/***************************************/#include<reg52.h>#include<intrins.h>#define uint unsigned int#define uchar unsigned char#include "motor.h"#include "1602.h"#include "xunji.h"#define WHITE 0#define BLACK 1sbit BUZZER = P1^7;sbit OPT = P3^0;sbit zhang_left =P3^3;sbit zhang_middle =P3^4;sbit zhang_right =P3^5;sbit cesu =P0^4;uchar flag = 0; //全白标志位char road_status=0;/******蜂鸣器发声xMs,低电平发声*****************/ void Buzzer(uchar x){BUZZER = 0;DelayMs(x);BUZZER = 1;}/***********趋光*******************************函数名称: Park函数输入:函数输出:函数功能:**********************************************/void Park(void) //灯亮( OPT1导通 OPT=0 ,左拐){Stop(100,100);GoHead(0,0);DelayMs(100);// if(OPT == 1) // 这种情况下只能用 do{}...while 光照一下即可// do// {// {GoHead(52,5);DelayMs(5);}//右转// } while(RIGHT_ST188 & MID1_ST188& MID2_ST188 & LEFT_ST188); //任何一个检测到白线停止do{TurnLeft(20,20);DelayMs(1000);GoHead(20,15);}while(OPT);}/***********蔽障*****************************函数名称: Bizhang函数输入:函数输出:函数功能:**********************************************/void BiZhang(void) // 倒退右转90度前进_ 左转90度{GoBack(20,20);DelayMs(200);TurnRight(25,25); //右转90度DelayMs(1000);GoHead(21,21);DelayMs(1000);TurnLeft(25,25); //左转90度road_status = (P0 & 0x0f);while(!zhang_left || !zhang_middle || !zhang_right );road_status = (P0 & 0x0f);}/********************主函数******************/void main(){Init(); //内部资源初始化LcdReset(); //液晶初始化DisplayListChar(0,0,"Time",4);DispOneChar(7,0,':');DisplayListChar(0,1,"Speed",5);DisplayListChar(8,1,"cm/s",4);// DisplayListChar(8,0,"Time",4);road_status = (P0 & 0x0f); //取低四位0000 1111while(1){road_status = (P0 & 0x0f);if( (road_status==0)) //一次全白{Buzzer(1000); // 1000msflag++;if(flag == 1) //第一次全白,开始趋光{Park();//趋光}else if(!zhang_left || !zhang_middle || !zhang_right){BiZhang();}else if(flag == 2) //第二次全白,终点停车{Stop(0,0);EA = 0; //关总中断while(1){DispOneChar(5,0,MinuteH+0x30); //显示时间 00110000 x , y , *DLata , LDispOneChar(6,0,MinuteL+0x30); // + 48DispOneChar(8,0,SecondH+0x30);DispOneChar(9,0,SecondL+0x30);}}}DispOneChar(5,0,MinuteH+0x30); //显示时间 0011 0000 x , y , *DLata , LDispOneChar(6,0,MinuteL+0x30); // + 48DispOneChar(8,0,SecondH+0x30);DispOneChar(9,0,SecondL+0x30);RoadTrack(road_status); //循迹DispOneChar(6,1,(b/10)+0x30); //显示速度DispOneChar(7,1,(b%10)+0x30);Delay_10Us(5);}}#define dataport P2 //8位数据口#define dataport P0#define busy 0x80 //忙检测DB7 DB7=1忙,DB7=0允许读写sbit rs=P0^7; //寄存器选择输入端(硬件)sbit rw=P0^6; //读写控制输入端(硬件)sbit e =P0^5; //使能信号输入端(硬件)/*****************************液晶显示头文件*******************************//*-------- 简易延时函数 ---------*/void delay(unsigned int i){for(i;i>0;i--);}void Delay5Ms(void){uint Temp = 4552;while(Temp--);}/*--------------延时--------*/void Lcddelay(unsigned char MS){unsigned char i,j;while(MS!=0){j = 4;while(j!=0){i=0xf0;while(i!=0){i--;}j--;}MS--;}}/*--------------- 检测lcd状态 --------------------*/void WaitForEnable(void) // 等待使能{dataport=0xff; // dataport =P2; P2=0xff;rs=0;rw=1;Lcddelay(5);_nop_();e=1;_nop_();_nop_(); // DB7=1忙,DB7=0允许读写while(dataport&busy); // busy =0x80 1000 0000e=0;}/*-------------------- 写命令 --------------*/void LcdWriteCommand(unsigned char CMD,unsigned char AttribC) {if(AttribC) // en 需要一个高脉冲读出/写入WaitForEnable();rs=0;rw=0;_nop_();dataport=CMD;Lcddelay(5);_nop_();e=1;_nop_();_nop_();e=0;}/*---------- 显示光标定位 ------------*/void LocateXY(char polx,char poly){unsigned char temp;temp=polx & 0x0f; // 0xf =0x0fpoly &= 0x01;if(poly)temp |= 0x40;temp |= 0x80;LcdWriteCommand(temp,0);}/*------------ 写字符 ---------------*/void LcdWriteLata(char lataW){WaitForEnable(); //检测忙否且 en 需要一个高脉冲读出/写入rs=1;rw=0;_nop_();dataport=lataW;Lcddelay(5);_nop_();e=1;_nop_();_nop_();e=0;}/*------------- 在指定位置显示单个字符 -----------------*/void DispOneChar(unsigned char x,unsigned char y,unsigned char Wlata){LocateXY(x,y);LcdWriteLata(Wlata);}/*--------- 初始化 ----------*/void LcdReset(void){LcdWriteCommand(0x38,0); // 显示模块设置 0011 1000;Lcddelay(5);LcdWriteCommand(0x38,0);Lcddelay(5);LcdWriteCommand(0x38,0);Lcddelay(5);LcdWriteCommand(0x38,1); // 清屏LcdWriteCommand(0x08,1); // 0000 1000 关显示,不显示光标,光标不闪烁;LcdWriteCommand(0x01,1);LcdWriteCommand(0x06,1);LcdWriteCommand(0x0c,1);}/*--- 在指定位置显示字符串 ---*/ //void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DLata,unsigned char L){unsigned char i;for(i=0;i<L;i++)DispOneChar(X++,Y,DLata[i]);}// 扫到白线输出为低/***********道路检测循迹**********************函数名称: RoadTrack函数输入:函数输出:函数功能:**********************************************/void RoadTrack(road_status){switch (road_status){case 1: GoHead(64,30); break; //小小右转00010x01case 3: GoHead(65,13); break; //小右转00110x03 //case 7: GoHead(65,6); break; //大右转0111 0x07//case 11: GoHead(80,81); break; //直线前进1011 0x0b //case 13: GoHead(80,81); break; //直线前进1101 0x0d //case 9: GoHead(80,81); break; //直线前进10010x09 //case 8: GoHead(30,64); break; //小小左转10000x08case 12: GoHead(13,65); break; //小左转1100 0x0c //case 14: GoHead(6,64); break; //大左转1110 0x0e //case 15: GoBack(20,21); DelayMs(2); break; //倒退1111 // 0x0f//case 0x00: GoBack(50,50); break; //直线后退default:break;}}/*//***********直道循迹**********************void RoadTrackZ(){road_status = P0&0x0f;switch (road_status){case 0x09: GoHead(50,50);DelayMs(2);break; // 1001 前进//一下:P0.0-P0.3case 0x0d: GoHead(40,55); break; // 1011 一级左转case 0x0c: GoHead(40,55); break; // 0011 二级左转case 0x0e: GoHead(20,55); break; // 0111 三级左转case 0x0b: GoHead(55,45); break; // 1101 一级右转case 0x03: GoHead(55,40); break; // 1100 二级右转case 0x07: GoHead(50,20); break; // 1110 三级右转case 0x00: Stop(98,98); break; // 0000 全白停车case 0x0f: break; // 1111 全黑保持default: break;}}//*****************弯道寻迹************void RoadTrackW(){road_status = P0&0x0f;switch (road_status){case 0x09: GoHead(40,40);DelayMs(2);break; // 1001 前进case 0x0d: GoHead(30,55); break; // 1011 一级左转case 0x0c: GoHead(20,55); break; // 0011 二级左转case 0x0e: GoHead(10,70); break; // 0111 三级左转case 0x0b: GoHead(55,30); break; // 1101 一级右转case 0x03: GoHead(55,20); break; // 1100 二级右转case 0x07: GoHead(75,10); break; // 1110 三级右转case 0x00: Stop(98,98); break; // 0000 全白停车case 0x0f: break; // 1111 全黑保持default: break;}}//***********对齐白线**********************void Duiqi(){road_status = P0&0x0f;switch (road_status){case 0x0e: TurnLeft(20,20); break; // 0111case 0x0c: TurnLeft(20,20); break; // 0011case 0x08: TurnLeft(20,20); break; // 0001case 0x07: TurnRight(20,20);break; // 1110case 0x03: TurnRight(20,20);break; // 1100case 0x01: TurnRight(20,20);break; // 1000case 0x00: Stop(98,98); break; // 0000停止default: break;}}//*************顺时针旋转,实现90度、180度转弯************** void TurnR(){road_status = P0&0x0f;while(road_status!=0x0e) // P0.0-P0.3: 0111{TurnRight(20,20);road_status = P0 &0x0f;}road_status = P0&0x0f;while(road_status!=0x07) // P0.0-P0.3: 1110{TurnRight(20,20);road_status = P0&0x0f;}road_status = P0&0x0f;while(road_status!=0x0b) // P0.0-P0.3: 1101 {TurnRight(10,10);road_status = P0 &0x0f;}Stop(98,98); // 方向对准,停车}void TurnL(){road_status = P0 &0x0f;while(road_status!=0x07) // P0.0-P0.3: 1110{TurnLeft(20,20);road_status = P0 &0x0f;}road_status = P0 &0x0f;while(road_status!=0x0e) // P0.0-P0.3: 0111{TurnLeft(20,20);road_status = P0 &0x0f;}road_status = P0 &0x0f;while(road_status!=0x0d) // P0.0-P0.3: 1011 {TurnLeft(10,10);road_status = P0 &0x0f;}Stop(98,98); // 方向对准,停车}*/。