基于单片机的多功能智能小车设计毕业论文

合集下载

基于51单片机的智能车毕业设计(论文)

基于51单片机的智能车毕业设计(论文)

基于80C51的电动智能单片机摘要80C51单片机是一款八位单片机,它的易用性和多功能性受到了广大使用者的好评。

这里介绍的是如何用80C51单片机来实现长春工业大学的毕业设计,该设计是结合科研项目而确定的设计类课题。

本系统以设计题目的要求为目的,采用80C51单片机为控制核心,利用超声波传感器检测道路上的障碍,控制电动小汽车的自动避障,快慢速行驶,以及自动停车,并可以自动记录时间、里程和速度,自动寻迹和寻光功能。

整个系统的电路结构简单,可靠性能高。

实验测试结果满足要求,本文着重介绍了该系统的硬件设计方法及测试结果分析。

采用的技术主要有:(1)通过编程来控制小车的速度;(2)传感器的有效应用;(3)新型显示芯片的采用.关键词80C51单片机、智能、光电检测器、PWM调速、电动小车Design and create an intelligence electricity motive small carAbstract80C51 is a 8 bit single chip computer. Its easily using and multi-function suffer large users. This article introduces the CCUT graduation design with the 80C51 single chip computer. This design combines with scientific research object. This system regards the request of the topic, adopting 80C51 for controlling core, super sonic sensor for test the hinder. It can run in a high and a low speed or stop automatically. It also can record the time, distance and the speed or searching light and mark automatically the electric circuit construction of whole system is simple, the function is dependable. Experiment test result satisfy the request, this text emphasizes introduced the hardware system designs and the result analyze.The adoption of technique as:(1)Reduce the speed by program the engine;(2)Efficient application of the sensor;(3)The adoption of the new display chip.Keywords 80C51 single chip computer, light electricity detector, PWM speed adjusting, Electricity motive small car目录第一章前言 (1)第二章方案设计与论证 (3)一直流调速系统 (3)二检测系统 (4)三显示电路 (9)四系统原理图 (9)第三章硬件设计 (10)一 80C51单片机硬件结构 (10)二最小应用系统设计 (11)三前向通道设计 (12)四后向通道设计 (15)五显示电路设计 (17)第四章软件设计 (20)一主程序设计 (20)二显示子程序设计 (24)三避障子程序设计 (25)四软件抗干扰技术 (26)五“看门狗”技术 (28)六可编程逻辑器件 (29)第五章测试数据、测试结果分析及结论 (30)致谢 (31)参考文献 (32)附录A 程序清单 (33)附录B 硬件原理图 (41)第一章前言随着汽车工业的迅速发展,关于汽车的研究也就越来越受人关注。

智能小车优秀毕业论文

智能小车优秀毕业论文

智能小车优秀毕业论文编号本科生毕业设计基于单片机的智能小车设计The Design of Intelligent Vehicle Based on MCU 学生姓名xxx专业自动化学号xxx指导教师xxx学院电子信息工程二〇一三年六月毕业设计原创承诺书1.本人承诺:所呈交的毕业设计(论文)《基于单片机的智能小车设计》,是认真学习理解学校的《长春理工大学本科毕业设计(论文)工作条例》后,在教师的指导下,保质保量独立地完成了任务书中规定的内容,不弄虚作假,不抄袭别人的工作内容。

2.本人在毕业设计(论文)中引用他人的观点和研究成果,均在文中加以注释或以参考文献形式列出,对本文的研究工作做出重要贡献的个人和集体均已在文中注明。

3.在毕业设计(论文)中对侵犯任何方面知识产权的行为,由本人承担相应的法律责任。

4.本人完全了解学校关于保存、使用毕业设计(论文)的规定,即:按照学校要求提交论文和相关材料的印刷本和电子版本;同意学校保留毕业设计(论文)的复印件和电子版本,允许被查阅和借阅;学校可以采用影印、缩印或其他复制手段保存毕业设计(论文),可以公布其中的全部或部分内容。

以上承诺的法律结果将完全由本人承担!作者签名:• 年•• 月• 日摘要随着我国高科技水平的不断提高和工业自动化进程的不断推进,智能车被广泛应用于各种玩具和其他产品的设计中,极大地丰富了人们的生活。

本文基于ATmega16 单片机设计了一种智能循迹避障小车,由电源模块、红外传感器模块、电机驱动模块、调试模块和MCU模块组成。

利用红外对管和超声波检测黑线与障碍物,当左边的红外对管检测到黑线时,小车往左边偏转,右边的红外对管检测到黑线时,小车往右边偏转。

以ATmega16单片机为控制芯片控制电动小车的速度及转向,从而实现自动循迹避障的功能。

其中小车驱动由L298N驱动电路完成,速度由单片机控制。

关键词:智能小车单片机自动循迹避障AbstractWith the increasing levels of high-tech and industrial automation process progresses, the intelligent vehicle is widely used to all kinds of toys and another production’s devise. It is greatly enriched the life of the people.Based on ATmega16 microcontroller,this paper is about a design of intelligent tracking-avoidance car, which is consist of the power supply module, infrared sensor module, the motor drive module, debug module and the MCU modules. Using infrared and ultrasonic testing on the tube black line and the obstacle, when left on the tube detects infrared black line, the car deflected to the left, the right of infrared tube black line is detected, the car to the right deflection. ATmega16 microcontroller for the control chip to control the speed and steering electric car, enabling automatic tracking avoidance function. Which car is driven by L298N driver circuit completed, the speed controlled by the MCU.Keywords: Intelligent Vehicle; MCU;automatic tracking; obstacle avoidance目录摘要 (I)ABSTRACT (II)目录 (III)第1章绪论 (1)1.1引言 (1)1.2课题研究目的及意义 (1)1.3课题研究现状及发展趋势 (2)1.4本文的主要工作 (3)第2章小车的总体方案设计 (4)2.1设计思路 (4)2.2小车循迹避障传感器的选型 (6)2.3小车循迹避障设计方案 (8)第3章小车的硬件电路设计 (10)3.1单片机的选型 (10)3.2小车的硬件电路设计 (14)第4章小车的软件设计 (19)4.1主程序设计及流程图 (19)4.2避障子程序设计及流程图 (20)4.3循迹子程序设计及流程图 (21)结论 (22)参考文献 (23)致谢 (24)附录1 系统电路图 (24)附录2 智能循迹壁障小车完整程序 (27)第1章绪论1.1引言智能,在科技高速发展的今天,已成为一个引领时尚前沿的代名词,智能手机,智能机器人等等已经在工业,军事中得到广泛的作用,在不为人们所熟知的领域,如深海探测,航空航天,地质勘探,智能也发挥着举足轻重的作用[1]。

基于单片机的智能小车的设计毕业论文总

基于单片机的智能小车的设计毕业论文总

基于单片机的智能小车的设计-毕业论文-总————————————————————————————————作者:————————————————————————————————日期:基于单片机的智能小车的设计摘要单片机作为一种微型控制器,自走入人们的视野以来,就随着科技进步不断地更新换代。

它能够将计算机所有关键的零件整合集中在一块芯片上,并且具有强大的计数功能,以及各种必要的接口,因此单片机在自动控制系统中通常处于核心地位。

本文对于智能小车的设计思路就应用了最常见的AT89S51单片机作控制处理器,该单片机在低功率的基础上,能够保持其性能在一个较高的水平上,且其8K的处理器够灵巧,适用于嵌入式产品,在众多单片机中,表现较为优秀。

本设计是在单片机的基础上实施的,兼具数据处理、即时调控和报警提醒功能,小车接到行驶指令后,红外探头会检测路况信息(是否处在黑线路径范围内)并反馈给单片机处理,单片机判断后作出相应指令,由电机驱动使小车执行相应行驶动作。

单片机与系统的配合使智能小车的行驶保持灵敏迅速的状态。

关键词:单片机寻迹报警红外线电机驱动AbstractWith the rapid development of science and technology in recent years,SCM applications arecontinually deepen ing.Traditionalcontroltest drive at the same ti me, the rapidly growing update. In real-timedetect ionandcontrolof the microcomputer application system,the microcontrolleris oftenused asacore component.SCM is the main featureint egrated computer chip ina micro-computer. Itis a setof multi-counting and the interface in oneof the micro-controller. The 51 single-chip microcontroll eris the mosttypical andmost representative one.Thedesignof the mainapplicationAT89S51asthecontrol,anddisplaydriverintegratedcircuit sand other systems.Based on single chipdesign.MCUAT89S51 using the controlleras an alarm device that can givefull playto AT89S51ofdata processing and real-time control functions.Make the system work in the bestcondition,improvethesystem sensit ivity.Whentwo signal driven forward bycar tracing module,theinfrares onwhether to producelevel signalsthrough the black,retutn again according to requirement ofdesign procedure of judgment for motor drivermodule,itcontrolsthe car turning back forward ofrunning onthe blackline.Keywords:SCM,Tracing, Alarm device,Levelsignals,Motor driver module目录摘要ﻩ错误!未定义书签。

基于单片机的智能小车毕业论文

基于单片机的智能小车毕业论文

本科毕业设计(论文)基于单片机的智能小车控制基于单片机的智能小车控制摘要:智能化作为现代电子产品的新趋势,是今后的电子产业的发展方向。

智能化设计的电子产品可以按照预先设定的模式在一个环境里自动运作,不需要人为的管理,可应用于科学勘探、环境监测、智能家居等方面。

基于单片机的智能小车控制就是其中的一个体现。

本设计实现了一种基于51单片机的自动避障智能模型车系统,通过红外传感器采集路况信息,通过对检测信息的分析,自动控制转向电机转向,改变行驶路径,绕过障碍物,从而实现车稳定避障。

本课题设计的智能小车,具有自动避障功能,超声波测距报警,无线电遥控等功能。

关键词:智能车;51单片机;避障;红外线Smart car based on SCM controlAbstract:As a new trend of modern electronic products, intelligent is the developmental direction of electronic industry after then. Electronic products, which are intelligently designed, can automatically operate following the mode that is pre-set. Without the management of human beings, it can be used for scientific exploring, environmental monitoring, intelligent home furnishing, etc. One of the embodiments is the intelligent control car which is based on single chip microcomputer. In the design, an intelligent model car system based on MCU 51 has been realized. It can collect traffic information with infrared sensors. Meanwhile, by the analysis of information examined, it can transfer from automatic control to motor steering in order to change the route and dodge the obstacles so that the steady avoidance of the barrier can come true. In this paper, a car with the ability of intelligent judgment has been designed and made. It functions as the device which can dodge obstacles automatically, alarm with ultrasonic distance examination, and remote control by radio.Key words: Smart Cart;Single-chip 51;Obstacle Avoidance;Infrared目录序言 ............................................................................................................ 错误!未定义书签。

智能小车-毕业论文(设计)文献综述

智能小车-毕业论文(设计)文献综述

华侨大学厦门工院本科生毕业设计(论文)题目:智能小车软件系统设计姓名:魏雄飞学号: 1102104031系别:电气工程信息系专业:电气工程及其自动化年级: 11级指导教师:晏来成年月日基于单片机的智能小车摘要:随着电子工业的发展,智能技术广泛运用于各种领域,智能小车不仅在工业智能化上得到广泛的应用,而且运用于智能家居中的产品也越来越受到人们的青睐。

国外智能车辆的研究历史较长。

相比于国外,我国开展智能车辆技术方面的研究起步较晚,在智能车辆技术方面的研究总体上落后于发达国家但是也取得了一系列的成果。

随着人工智能技术、计算机技术、自动控制技术的迅速发展,智能控制将有广阔的发展空间.本文就智能小车研究现状以及未来的应用与发展前景做一个全方面的介绍.关键词:智能技术,STC89C52单片机,自动循迹,避障1 前言随着电子技术、计算机技术和制造技术的飞速发展,数码相机、DVD、洗衣机、汽车等消费类产品越来越呈现光机电一体化、智能化、小型化等趋势。

智能化作为现代社会的新产物,是以后的发展方向,他可以按照预先设定的模式在一个特定的环境里自动的运作,无需人为管理,便可以完成预期所要达到的或是更高的目标。

智能小车,也称轮式机器人,是一种以汽车电子为背景,涵盖控制、模式识别、传感技术、电子、电气、计算机、机械等多科学的科技创意性设计,一般主要路径识别、速度采集、角度控制及车速控制等模块组成。

一般而言,智能车系统要求小车在白色的场地上,通过控制小车的转向角和车速,使小车能自动地沿着一条任意给定的黑色带状引导线行驶。

本次课题设计以此为背景,设计一种简易的运动小车,运用直流电机对小车进行速度和正反方向的运动控制,通过单片机来控制直流电机的工作,从而实现对整个小车系统的运动控制。

2 主题智能车辆作为智能交通系统的关键技术,是许多高新技术综合集成的载体。

智能车辆驾驶是一种通用性术语,指全部或部分完成一项或多项驾驶任务的综合车辆技术.智能车辆的一个基本特征是在一定道路条件下实现全部或者部分的自动驾驶功能,下面简单介绍一下国内外智能小车研究的发展情况2.1国外智能车辆研究现状国外智能车辆的研究历史较长,始于上世纪50年代.它的发展历程大体可以分成三个阶段:第一阶段??20世纪50年代是智能车辆研究的初始阶段.1954年美国BarrettElectronics公司研究开发了世界上第一台自主引导车系统AGVS (AutomatedGuidedVehicleSystem)。

基于单片机的多功能智能小车设

基于单片机的多功能智能小车设

鉴于单片机的多功能智能小车设(实物制作)纲要跟着社会的发展,智能化愈来愈遇到人们的关注。

本设计经过模拟汽车的自动行驶及避障功能,来实现智能化。

本设计主要有三个模块包含信号检测模块、主控模块、电机驱动模块。

在此设计中,用 STC89C51单片机作为主控芯片,办理接收到的各样信号,并作出相应的反应;用红外对管来进行黑线检测,进而达到循迹和避障的目的;经过编写的程序,保证了电机的左右转动,进而达到小车设计时预约的目标。

因为小车在设计过程中,采纳了模块化的设计思路,所以在进行调试时特别方便。

我们能够分别对每一个功能部分来进行调试,驱动部分调试时,只需给电机向前或许向后的信号,就能够调试出其功能。

循迹部分调试时,只需经过检测到黑线,判断能否沿黑线行驶,即能够调试出。

在进行避障调试中,我们能够把阻碍物放在小车前面,而后看小车两个轮子的转向。

这类模块化的设计思想不单简化了设计过程,并且对我们此后的设计也会有必定启迪。

ABSTRACTAlong with the development of society, more and more intelligent attention. This design by simulating a cardriving and automatic obstacle avoidance, to achieve intelligent. This design has three main modulesincluding drive module, signal detection module, maincontrol module, motor. In this design, with STC89C51SCM as the master chip, processing various signals received, and make corresponding feedback; usingInfrared to tube to detect the black line, so as toachieve the purpose of tracking; Through the program,ensure the motor rotation, so as to achieve the designof the car when the scheduled target.As the car in the design process, using a modulardesign concept, so very convenient during debugging.We were part of each function for debugging, debugging driving part, as long as the motor forward or backwardsignal, you can debug the functionality.Whendebugging tracking part, simply by detecting the black line, todetermine whether the black line running along, thatyou can debug a. Avoidance during commissioning, we can put an obstacle in front of the car, and then look atthe car two steering wheels. This modular design notonly simplifies the design, but also for our futuredesigns also have some inspiration.Key Words : Intelligent,SCM,Infrared to tube ,Obstacle avoidance tracking目录一、绪论智能小车的研究与意义智能小车的现状论文研究内容与主要构造二、方案选型设计车体设计电机驱动选择PWM 调速技术循迹模块技术避障模块技术2. 6驱动模块2. 7控制系统模块2. 8电源选择三、硬件设计整体设计电源电路设计驱动电路设计循迹部分电路避障部分电路主控电路设计四、软件设计主程序设计概括主程序流程图驱动程序流程图循迹程序流程图避障程序流程图五、制作安装与调试小车的安装小车运动模式调试小车循迹调试小车避障调试小车的功能六、结论七、参照文件八、道谢第1章绪论智能小车的研究意义跟着计算机、微电子、信息技术的迅速发展,智能化技术的发展速度也愈来愈快,智能化与人们生产生活的联系愈来愈密切,智能化将是未来社会发展的必定趋向。

基于单片机的多功能智能小车设计

基于单片机的多功能智能小车设计

学科代码:学号:XXXXXXXXXXXXX 大学(本科)毕业论文题目:基于单片机的多功能智能小车设计学院:专业:年级:姓名:指导教师:完成时间:20 年月日、基于单片机的多功能智能小车设计摘要:近几年,我国经济的迅速的增长使得小车的销售量逐渐升高,2016年,我国新能源汽车的销售达到了51.7万辆,销售率同比增长了20.5%。

汽车数量的日益增多使得交通拥挤的现象越来越严重,因此,交通事故的发生的频率也在逐渐的增多。

为了提高小车运行的安全,本文提出了一种基于单片机的多功能智能型小车的设计。

本文以STC89C51的单片机为核心,设计了一款多功能的智能小车,由于STC89C51的单片机在市场上受到了消费者普遍的好评,利用它进行智能小车的设计,既满足了大众的需求,又提高了小车设计的性能。

同时,本文还结合了直流电机L298N型号的驱动芯片、E18-D80NK 红外避障传感器、TCRT5000红外反射式接近开关传感器对智能小车的整体进行了构架。

关键词:单片机;多功能;智能小车;设计AbstractIn recent years, China's rapid economic growth makes the car sales gradually increased, in 2016, China's new energy vehicle sales reached 517,000, sales rate increased by 20.5%. The increasing number of cars makes traffic congestion more and more serious, so the frequency of traffic accidents is gradually increasing. In order to improve the safety of car operation, this paper presents a multi-functional intelligent car based on single-chip design.In this paper, STC89C51 single-chip as the core, designed a multi-functional smart car, as STC89C51 microcontroller in the market by consumers generally praise, use it for intelligent car design, both to meet the needs of the public, but also improve The performance of the car design. At the same time, this article also combines the DC motor L298N model driver chip, E18-D80NK infrared obstacle avoidance sensor, TCRT5000 infrared reflector proximity switch sensor on the overall structure of the smart car.Key Words: Single-chip; multi-function; intelligent car; design目录Abstract (3)引言 (4)1方案选型 (4)1.1车体设计 (4)1.2电机驱动选择 (4)2.3 PWM调速技术 (6)2.4 循迹模块技术 (6)2.5 避障模块技术 (7)2.6 控制系统模块 (7)2.7电源选择 (8)2总体方案设计 (8)2.1设计任务描述 (8)2.2总体设计 (8)2.3需求分析 (9)2.4总体方案 (9)3硬件电路设计 (9)3.1电源电路设计 (9)3.2驱动电路设计 (9)3.3循迹避障部分电路 (10)4程序设计 (12)4.1主程序设计概述 (12)4.2 主程序流程图 (12)4.3 驱动程序流程图 (13)4.4 循迹程序流程图 (14)4.5 避障程序流程图 (15)5制作安装与调试 (16)5.1小车的安装 (16)5.2小车运动模式调试 (16)5.3小车循迹调试 (17)5.4小车避障调试 (17)5.3小车的功能 (17)结论 (18)参考文献 (19)引言当前,关于智能化小车的设计越来越成为当前学者们关注的热点问题,对于智能小车的设计,采用的方法也越来对多样,利用单片机的程序设计的智能小车也是其中的一种。

基于单片机智能小车毕业设计(论文)

基于单片机智能小车毕业设计(论文)

毕业设计(论文)设计(论文)题目:基于单片机的智能小车学院名称:电子与信息工程学院专业:电子与信息工程班级:电信092班姓名:\ 学号\指导教师:\ 职称\基于单片机的智能小车摘要智能车辆是目前世界车辆研究领域的热点和汽车工业新的增长点。

未来的车辆也一定是智能化的车辆。

所以,智能化的车辆是未来人们生活重要的载体。

因此有必要对智能车辆进行研究。

研制一种智能,高效的智能小车控制系统具有重要的实际意义和科学理论价值。

本文设计了一个能自动循迹的智能小车控制系统。

以STC89C52单片机为控制核心,利用反射式光电传感器检测黑线实现小车循迹,利用超声波传感器检测道路上的障碍并提示,利用LCD1602显示小车的速度和路程。

能实现小车自动根据地面黑线前进倒退、转向行驶,超声波测距提示障碍物,LCD1602实时显示小车的速度和行驶的路程,具有高度的智能化,达到设计目标。

关键词:智能小车,STC89C52单片机,超声波传感器,LCD1602目录摘要....................................................................................... 错误!未定义书签。

ABSTRACT ............................................................................................. 错误!未定义书签。

目录......................................................................................... 错误!未定义书签。

第1章绪论.................................................................................... 错误!未定义书签。

基于单片机的智能小车设计(红外避障及循迹)

基于单片机的智能小车设计(红外避障及循迹)

轮式移动机器人的设计报告单片机系统课程设计智能小车(避障及循迹)的设计毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。

尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。

对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。

作者签名:日期:指导教师签名:日期:使用授权说明本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。

作者签名:日期:学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。

除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。

对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。

本人完全意识到本声明的法律后果由本人承担。

作者签名:日期:年月日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。

本人授权大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。

涉密论文按学校规定处理。

作者签名:日期:年月日导师签名:日期:年月日注意事项1.设计(论文)的内容包括:1)封面(按教务处制定的标准封面格式制作)2)原创性声明3)中文摘要(300字左右)、关键词4)外文摘要、关键词5)目次页(附件不统一编入)6)论文主体部分:引言(或绪论)、正文、结论7)参考文献8)致谢9)附录(对论文支持必要时)2.论文字数要求:理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。

基于单片机的智能小车设计_毕业设计论文

基于单片机的智能小车设计_毕业设计论文

摘要AT89C51单片机是一款八位单片机,他的易用性和多功能性受到了广大使用者的好评。

本系统以设计题目的要求为目的,采用AT89C51单片机为控制核心,利用超声波传感器检测道路上的障碍,控制电动小汽车的自动避障,快慢速行驶,以及自动停车,并可以自动记录时间、里程和速度,自动寻迹和寻光功能。

整个系统的电路结构简单,可靠性能高。

实验测试结果满足要求,本文着重介绍了该系统的硬件设计方法及测试结果分析。

在智能小车控制系统的设计中,以AT89C51为核心,用L293D驱动两个直流电机,当产生信号驱动小车前进时,是通过寻迹模块里的红外对管是否寻到黑线产生的电平信号通过LM393再返回到单片机,单片机根据程序设计的要求做出相应的判断送给电机驱动模块,让小车来实现前进、左转、右转、停车等基本功能。

寻白线时,外部环境光线的强弱对小车的运动会产生很大的影响,基于此原因,本实验中的寻迹是指在白色地板上寻黑线。

寻迹是指通过红外发射管和接收管识别路径。

采用的技术主要有:(1)通过编程来控制小车的速度;(2)传感器的有效应用;(3)新型显示芯片的采用;该设计报告共分为五章:第一章是智能小车总体概况。

介绍了小车的功能及展示了小车模型。

第二章是系统要求。

介绍了小车设计的要求及原理。

详细阐述了各功能模块的方案比较与论证,最后得出最终方案。

第三章是硬件实现及单元电路实现。

详细阐述了各部分电路的设计,并给出了原理图。

第四章是软件设计。

介绍了设计思想、程序流程图及具体程序设计。

第五章是系统调试。

介绍了调试软件WAVE ,以及软件调试过程;硬件测试及测试仪器和设备等。

最后是参考文献和附录。

关键词: AT89C51单片机;光电传感器;PWM调速;电动小车Smart cars designtheAT89C51 microcontroller is one of eight, his versatility and usability is the user high praise. This system to design for the purpose of the topic request, AT89C51 microcontroller as control core, ultrasonic sensor detection road barriers, the automatic control of electric car obstacle-avoidance, speed, and speed, and can be automatically stop recording time,mileage and speed, automatic tracing and light function. The whole system of the circuit structure is simple, reliable performance. The test results, this paper introduces the hardware design method of system analysis and test results.In the design of the control system of intelligent car, USES AT89C51 as the core, with L293D drive two dc motor driving car, when the signal generation, is going through tracing module of the infrared tubes are found by the black level signal generated LM393 single-chip microcontroller, return again according to the requirement of design procedure of judgment for motor driver module, let the car to achieve progress, left, right, the basic function such as parking. Find the white line, and the external environment of the strength of the light of sports car produce very big effect, this based on the experiments of tracing refers to the white striped floor found. Tracing is through infrared tubes and receive tube recognition path. Using the technology mainly include:(1) through programming to control the speed of the car,(2) sensor effective application,(3) new display chip USES,This design report is divided into five chapters:The first chapter is intelligent car overview. Introduces thefunction and the car show car model.Chapter 2 is the system requirements. Introduces the design requirement and the principle of car. Expounds the functional modules of the scheme comparison and argumentation, the final solution.The third chapter is hardware realization and unit circuit implementation. Expounds each part of the circuit design, and gives the principle diagram.Chapter four is a software design. Introduces the design idea and program flow chart and design program.The fifth chapter is debugging systems. Introduces the WAVE, and software testing software debugging process, Hardware testing and testing instruments and equipment, etc.The references and appendix.Keywords:AT89C51, photoelectric sensors, PWM control, electric cars目录绪论........................................................ (5)第一章智能小车总体概况 (6)1. 1 概况 (6)1. 2 总体结构图 (6)第二章系统方案设计 (7)2. 1 方案论证 (7)2.1.1 系统原理图 (7)2.1.2 路面情况检测方案的选择 (8)2.1.3 电动机的选择 (9)2.1.4 电动机驱动方案的选择 (9)2.1. 5 路程检测方案的选择 (9)2.1.6 障碍物探测方案的选择 (10)2.1.7 供电电源方案的选择 (10)第三章系统硬件电路设计 (11)3.1 系统硬件设计 (11)3.1.1 路面黑线检测设计与实现 (11)3.1.2 电动机驱动电路设计与实现 (11)3.1.3 车轮检速与路程计算 (13)3.1.4 红外避障电路 (15)3.1.5 电源电路 (15)第四章主控芯片介绍 (16)4.1. 1 AT89C51主控芯片介绍 (16)4.1. 2 电动机驱动芯片L293D (18)4.1. 3 串口电路芯片MAX232 (19)第五章软件设计 (19)5.1. 1 软件设计思想 (19)5.1. 2 主程序设计 (20)5.1. 3 显示子程序设计 (24)5.1. 4 避障子程序设计 (25)5.1. 5 寻迹模块软件程序设计 (26)第六章系统调试与结论 (29)6. 1 硬件调试 (29)6.1. 1 测试方法与仪器 (29)6.1. 2 软件程序调试 (30)6.1. 3 测试经验总结 (31)参考文献........................................................31致谢........................................................ . (31)附录A ........................................................ .33附录B......................................................... .34绪论随着汽车工业的迅速发展,关于汽车的研究也就越来越受人关注。

智能小车毕业论文

智能小车毕业论文

智能小车毕业论文摘要随着科技的不断发展,智能技术在各个领域得到了广泛应用。

智能小车作为智能技术的一个重要应用方向,具有广泛的市场前景和研究价值。

本文旨在设计并实现一款基于嵌入式系统的智能小车,通过对其硬件和软件的深入研究,探讨智能小车的控制策略、传感器应用以及路径规划等问题。

本文介绍了智能小车的背景和意义,然后详细阐述了智能小车的硬件设计、软件设计、实验验证以及结论与展望。

关键词:智能小车;嵌入式系统;控制策略;传感器;路径规划第一章引言1.1 研究背景随着全球经济的快速发展,人们对智能化、自动化产品的需求日益增长。

智能小车作为一种新型的智能交通工具,具有安全、高效、便捷等优点,在物流、家庭服务、特种作业等领域具有广泛的应用前景。

1.2 研究意义本文旨在设计并实现一款基于嵌入式系统的智能小车,通过对其硬件和软件的深入研究,探讨智能小车的控制策略、传感器应用以及路径规划等问题,为智能小车的研究和应用提供理论依据和实践指导。

1.3 研究内容本文主要研究内容包括:(1)智能小车的硬件设计;(2)智能小车的软件设计;(3)智能小车的控制策略;(4)智能小车的传感器应用;(5)智能小车的路径规划;(6)智能小车的实验验证。

第二章相关技术2.1 嵌入式系统嵌入式系统是一种将计算机硬件和软件集成在一起,具有特定功能的系统。

在智能小车的设计中,嵌入式系统是实现智能控制的核心。

2.2 传感器技术传感器是智能小车感知外部环境的重要手段。

常见的传感器有红外传感器、超声波传感器、激光测距传感器等。

2.3 控制策略智能小车的控制策略主要包括PID控制、模糊控制、神经网络控制等。

2.4 路径规划路径规划是智能小车实现自主导航的关键技术。

常见的路径规划算法有Dijkstra算法、A算法等。

第三章智能小车硬件设计3.1 硬件平台本文所设计的智能小车采用STM32F103系列单片机作为核心控制单元,结合其他硬件模块,如电机驱动模块、传感器模块、无线通信模块等。

基于AT89S52单片机及PID算法实现循迹避障功能的智能小车【毕业论文,绝对精品】

基于AT89S52单片机及PID算法实现循迹避障功能的智能小车【毕业论文,绝对精品】
关键词:单片机;传感器;PWM调速;循迹避障;pid控制算法
Abstract
This paper introduced an kind ofintelligent car that use AT89S52 SCM as control core , combine with multiple sensors and PIDcontrolalgorithmto achieve the function that find track and avoid obstacles.the electrical car uses reflective photoelectric sensor to detect black line to achieve track-finding,uses ultrasonic sensors to detect obstacles on the road to avoid obstacles automatically.The entire system has the function that trace route automatically,find light and test speed.Among them, AT89S52 which has 8-bit single-chip is used as the control part.Because of useing easily and having multi-function ,it suffers large users. The motor driver uses the common way--PWM for the motor controlling speed. the speed of car is displayed by the LCD screen .The circuit structure of the whole system is relatively simple, high reliability, and it can meet the requirements of the various design.With the continuous improvement of high technology and the stead process in industrial automation in our country,the Intelligence-car which gradually access to people's attention has been widely applied to design a variety of toys and other products,which greatly enriched people's lives.

智能小车设计毕业论文【范本模板】

智能小车设计毕业论文【范本模板】

摘要智能作为现代社会的新产物,是以后的发展方向它可以按照预先设定的模块在一个特定的环境里自动的运作,无需人为管理,便可以完成预期所要达到的或更高的目标。

本文设计是基于AT89s52微处理器的机器人车体系统和XL02—232AP1微功率无线透明传输模块的无线通信系统,以此实现小车的前进、后退、停止、及直角特别是圆弧形拐弯,本设计主要体现多功能小车的智能模式,设计中的理论方案、分析方法及特色与创新点等可以为自动运输机器人、采矿机器人、家用自动清洁机器人,特别是智能足球机器人的设计与普及有一定的参考意义.同时小车可以作为玩具的发展方向,为中国玩具市场技术含量的缺乏进行一定的弥补,实现经济收益,形成商业价值。

关键词:单片机,智能小车,AT89s52,XL02-232AP1ABSTRACTAs a new product of modern society,intelligence is the trend in future development.It can work in some specific environment according to the mode which sets in advance。

Dispensing with behavior adjustment management,but it can achieve the expected,even higher goal.This design is based on the robot body AT89s52 microprocessor system and XL02-232AP1 transparent micro—power wireless transmission module of the wireless communication system,to achieve the car forward, backward,stop, especially the arc-shaped bend at right anglesThe design mainly reflected a smart-car model,The theoretical scheme,analysis method,uniqueness and innovation etc.that pointed in this paper,I think they are will be certain reference value in design an popularity of automatic or semi—automatic robot such as automatic transportation robot,prospecting robot,cleaning household robot,especially intelligent socce r robot。

电子信息科学与技术基于单片机智能小车设计

电子信息科学与技术基于单片机智能小车设计

本科生毕业论文(设计)中文题目基于单片机智能小车设计英文题目The Design Of Intelligent Car Based on SCM学生姓名班级学号学院电子科学与工程学院专业指导教师职称摘要21世纪以来,随着计算机、微电子和信息科技的发展,人类已经步入了大数据时代,正在朝着智能化时代发展。

在这样一个背景下,车辆的智能化已经成为了现今世界车辆的研究领域的热点和汽车工业的新增长点。

智能车辆成为了未来人类出行的重要载体。

一种智能小车的控制系统的研制与设计有着重要的实际意义和科学理论价值。

根据人类生活出行需求,本文设计了一种能够通过手机蓝牙遥控和智能避障的智能小车。

本设计采用了STC89C52为核心处理器,由主控模块、蓝牙透传模块、避障模块、电机驱动模块、电源模块等组成。

启动后通过直流电源给各个模块供电,智能小车自动检测蓝牙信号,检测到蓝牙信号启动手机遥控,实现智能小车实时控制。

否则进入自主控制模式,当智能小车遇到障碍物时,超声波加舵机模块进行水平180度探测,并将探测信号传送给单片机,单片机根据程序运行结果发出相应的控制信号控制智能小车自动避开障碍物。

关键词智能小车 STC89C52 避障手机遥控ABSTRACTSince the 21st century, with the development of computers, microelectronics and information technology, mankind has entered the era of big data, and we are moving in the era of intelligent development. In this context, intelligentialize of vehicles has become the hotspot of research field of the world, and it become a new growth point of automotive industries. Intelligent vehicle has become an important vehicle to humanity in the future. Development and design of the control system of an intelligent car has important practical significance and value of scientific theories. According to the needs of human life, This paper describes the design of a intelligent car controlled by Bluetooth signals, which can obstacle avoidance intelligently. This design uses a MCU called STC89C52 to be core processor. The intelligent car is composed of the main control module, Bluetooth transparent transmission module, obstacle avoidance module, motor drive modules, power modules. After connecting the power supply, each module powered via a DC power supply. the intelligent car automatically detects the Bluetooth signal, when detecting Bluetooth signal the intelligent car activate Bluetooth remote control, to achieve real-time control. Otherwise the car enter independent control mode, when the intelligent car encounters an obstacle, the ultrasonic detection module 180 degrees horizontally, and the detection signal is transmitted to the MCU, and MCU sends the corresponding control signals to intelligent car based on the results of the program to control the intelligent car automatically avoids obstructions.Keywords Intelligent car STC89C52 Obstacle avoidance Mobile phone remote control目录第一章绪论 (1)1.1 课题提出背景 (1)1.2 智能化产品的应用 (1)1.3 本文研究内容 (1)第二章方案论证与设计 (3)2.1 障碍物检测模块 (3)2.2 电机驱动系统 (4)2.3 无线控制模块 (5)2.4 供电电源 (5)2.5 车体设计 (6)第三章硬件设计 (7)3.1 总体设计 73.2 电机驱动系统 (8)3.3 超声波避障系统 (12)3.4 蓝牙透传模块 (14)3.5 主控电路 (15)第四章方案论证与设计 (18)4.1 主程序设计 (18)4.2 超声波避障系统程序设计 (19)第五章制作安装与调试 (22)5.1 硬件焊接组装 225.2 软件程序设计 (23)5.3 整体调试 (23)结论 (24)致谢 (25)参考文献 (26)附录 (27)附录一智能小车程序 (27)第一章绪论1.1课题提出的背景自工业革命以来,第一台蒸汽机的发明及运用大大提高了社会生产力,人类社会完成了从小作坊手工业向工厂机器工业化的过渡。

基于单片机的多功能智能小车设计论文(电路+程序+论文)

基于单片机的多功能智能小车设计论文(电路+程序+论文)

基于单片机的多功能智能小车设计论文(电路+程序+论文)————————————————————————————————作者:————————————————————————————————日期:(关键词:智能车 AT89S52 单片机金属感应器霍尔元件 1602LCD)智能作为现代的新发明,是以后的发展方向,他可以按照预先设定的模式在一个环境里自动的运作,不需要人为的管理,可应用于科学勘探等等的用途.智能电动车就是其中的一个体现。

本次设计的简易智能电动车,采用AT89S52单片机作为小车的检测和控制核心;采用金属感应器TL-Q5MC来检测路上感应到的铁片,从而把反馈到的信号送单片机,使单片机按照预定的工作模式控制小车在各区域按预定的速度行驶,并且单片机选择的工作模式不同也可控制小车顺着S形铁片行驶;采用霍尔元件A44E 检测小车行驶速度;采用1602LCD实时显示小车行驶的时间,小车停止行驶后,轮流显示小车行驶时间、行驶距离、平均速度以及各速度区行驶的时间。

本设计结构简单,较容易实现,但具有高度的智能化、人性化,一定程度体现了智能.1 设计任务 (3)1.1 要求 (3)2 方案比较与选择 (4)2。

1路面检测模块 (4)2。

2 LCD显示模块 (5)2.3测速模块 (5)2。

4控速模块 (6)2。

5模式选择模块 (7)3 程序框图 (7)4 系统的具体设计与实现 (9)4。

1路面检测模块 (9)4.2 LCD显示模块 (9)4。

3测速模块 (9)4。

4控速模块 (9)4.5复位电路模块 (9)4.6模式选择模块 (9)5 最小系统图 (10)6 最终PCB板图 (12)7 系统程序 (13)8 致谢 (46)9 参考文献 (47)10 附录 (48)1。

设计任务:设计并制作了一个智能电动车,其行驶路线满足所需的要求。

1。

1 要求:1.1。

1 基本要求:(1)分区控制:如(图1)所示:(图1)车辆从起跑线出发(出发前,车体不得超出起跑线)。

毕业设计-基于单片机控制智能小车设计以及英文文献和proteus仿真包括程序

毕业设计-基于单片机控制智能小车设计以及英文文献和proteus仿真包括程序

摘要本次设计的单片机控制的智能小车,采用AT89C51单片机为小车的控制核心。

运用L298芯片实现对小车前进、后退、左行、右行、以及全速和减速的控制,同时单片机会自动根据超声波传感器检测到的情况播放相对应的音乐并点亮相对应颜色的LED灯,实现了自动避障和声光报警两大功能。

此外本次设计还运用液晶显示器LCD1602对小车行驶里程和实时日期、时间进行显示。

在液晶显示器的第一行显示根据霍尔元件A44E获得的脉冲数而计算出的小车行驶的里程数;在液晶显示器的第二行显示从时钟芯片DS1302读取的实时日期和时间,实现了液晶显示功能。

由以上各部分共同实现了设计要求的自动避障、液晶显示、声光报警三大功能。

关键词:AT89C51;L298 ;DS1302;液晶显示Abstract The AT89C51 microcontmller is taken as the control core for the design of an intelligentcar in the paper,with the using of L298 chip it can control the automatic advancebackwardturn leftturn right and with the speed full or slowalso it according to the case of ultrasonicsensors detected play the corresponding music and light the color-codedleds.Besidesthisdesign uses LCD1602 for car trip mileage and real-time date and time display.The first row ofthe LCD display the mileage which based on the number of pulses that the Hall element A44Egot.The second row of LCD display the date andtime which read from the clock chipDS1302.By above all the design request partially realized automatic obstacle avoidanceliquidcrystal display sound-light alarm three major functions.Keyword:AT89C51L298DS1302 liquid crystal display 目录1 绪论1 1.1 研究背景1 1.2 选题意义12 整体方案设计3 2.1 整体方案的设计思路3 2.2 整体设计的构成图33 硬件的选择 5 3.1 电源模块的选择 5 3.2 电机控制模块中硬件的选择 5 3.2.1 电机的选择5 3.2.2 电机控制模块的选择 6 3.3 时间与里程显示模块中的硬件的选择8 3.3.1 显示器的选择8 3.3.2 时钟芯片的选择11 3.3.3 里程检测元件的选择15 3.4 声光报警模块中的硬件的选择16 3.5 障碍检测模块中硬件的选择18 3.6 单片机的选择与简介184 设计所用软件以及模块程序设计21 4.1 所用软件的简介21 4.1.1 Keil的简介21 4.1.2 Protues的简介22 4.2 主程序设计23 4.3 电机控制程序设计24 4.4 声光报警程序设计25 4.5 显示程序设计27结论29致谢30参考文献31附录A 文献及翻译33附录B 程序清单48附录C 元件清单64附录D 电路图65 大学学士学位论文 1 绪论1.1 研究背景当今世界,传感器技术和自动控制技术正在飞速发展,机械、电气和电子信息已经不再明显分家,自动控制在工业领域中的地位已经越来越重要,“智能”这个词也已经成为了热门词汇。

多功能智能小车设计毕业设计(论文)

多功能智能小车设计毕业设计(论文)

1 绪论1.1 设计背景和意义智能小车是一个集环境感知、规划决策、自动行驶等功能于一体的综合系统,它集中的运用了计算机、传感、信息、通信、导航、人工智能及自动控制等技术,是典型的高新技术综合体[1]。

目前,智能小车在军事、民用及科学研究等领域都已得到了广泛的应用。

随着人们物质生活水平的提高,汽车已经越来越普及,但交通事故也随之增加,危及了人们的财产及生命安全。

与此同时,随着科学技术的发展,探险、排爆等危险场合工作的机器人,以及自动化生产中运输小车的应用也日益广泛,汽车已经不再只是拥有四个轮子的交通工具,人们更加希望汽车作为日常生活以及工作范围的一种延伸。

因此,研制智能自动驾驶车已成为急需和必要,它对解决道路交通安全提供了一种新的途径[2]。

本设计的智能电动小车能够实时显示速度、里程,具有自动寻迹、避障功能,具有较强的实际意义。

1.2 国内外研究现状随着汽车工业的迅速发展,关于汽车的研究也就越来越受人关注,智能车的发展也更加细致与多元。

早期的智能车研究侧重于应用,从单纯的作业考虑把智能车作为某个特定条件下作业的专用工具,即程序控制车,它完全按照事先装入到存储器中的程序安排的步骤进行工作,能有效地从事安装、搬运等工作。

这一代智能车的最大缺点是它只能刻板地完成程序规定的动作,不能适应环境变化。

随着电子技术和人工智能学科的发展,配备有传感器的第二代自适应智能车应运而生。

这种智能车通过传感器获取作业环境、操作对象的简单信息。

由于它能随着环境的变化而改变自己的行为,故称为自适应智能车。

第二代智能车虽然具有一些初级的智能,但还没有达到完全“自治”的程度。

当前,人们正在研制能在广泛范围内对物体进行搜索、识别和测距等功能的智能车机构。

它们能对感知到的信息进行处理,以控制自己的行为,具有作用于环境的行为能力。

一个理想化的、完善的智能车系统通常由3个部分组成:移动机构、感知系统和控制系统[3]。

目前研制的智能车虽大都只具有部分智能,但也已在很多领域得到了广泛的应用。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于单片机的多功能智能小车设计毕业论文目录1 设计任务 (3)1.1 要求 (3)2 方案比较与选择 (4)2.1路面检测模块 (4)2.2 LCD显示模块 (5)2.3测速模块 (5)2.4控速模块 (6)2.5模式选择模块 (7)3 程序框图 (7)4 系统的具体设计与实现 (9)4.1路面检测模块 (9)4.2 LCD显示模块 (9)4.3测速模块 (9)4.4控速模块 (9)4.5复位电路模块 (9)4.6模式选择模块 (9)5 最小系统图 (10)6 最终PCB板图 (12)7 系统程序 (13)8 致谢 (46)9 参考文献 (47)10 附录 (48)1. 设计任务:设计并制作了一个智能电动车,其行驶路线满足所需的要求。

1.1 要求:1.1.1 基本要求:(1)分区控制:如(图1)所示:(图1)车辆从起跑线出发(出发前,车体不得超出起跑线)。

在第一个路程C~D区(3~6米)以低速行驶,通过时间不低于10s;第二个路程D~E区(2米)以高速行驶,通过时间不得多于4秒;第三个路程E~F区(3~6米)以低速行驶,通过时间不低于10s。

(2)小车能自动记录、显示行驶时间、行驶距离以及行驶速度,还能记录每段所走的时间,从而判断是否符合课程设计要求。

(记录显示装置要求安装在车上)。

1.1.2 发挥部分:S型控制:如(图2)所示:(图2)车辆沿着S形铁片行驶,自动转弯,自动寻找正确方向和铁片。

当离开S型铁片跑道或者感应不到铁片一段时间的时候,小车自动停止,并记录行驶时间,路程,平均速度并通过LCD显示出来。

2. 方案比较与选择:根据设计任务要求,并且根据我们自己的需要而附加的功能,该电路的总体框图可分为几个基本的模块,框图如(图3)所示:(图3)2.1 路面检测模块:采用铁片感应器TL-Q5MC来检测路面上的铁片从而给单片机中断脉冲。

原理图接线如(图4)所示:(图4)2.2 LCD显示模块:采用1602LCD,由单片机的总线模式连接。

为节约电源电量并且不影响LCD的功能,LCD的背光用单片机进行控制,使LCD的背光在小车行驶的过程中不亮,因为我们不必看其显示;在其它我们需要看显示的容的时候LCD背光亮。

2.3 测速模块:2.3.1 方案1:采用采用霍尔开关元器件A44E检测轮子上的小磁铁从而给单片机中断脉冲,达到测量速度的作用。

霍尔元件具有体积小,频率响应宽度大,动态特性好,对外围电路要求简单,使用寿命长,价格低廉等特点,电源要求不高,安装也较为方便。

霍尔开关只对一定强度的磁场起作用,抗干扰能力强,因此可以在车轮上安装小磁铁,而将霍尔器件安装在固定轴上,通过对脉冲的计数进行车速测量。

2.3.2 方案2:采用红外传感器进行测速。

但无论是反射式红外传感器还是对射式红外传感器,他们对都对外围环境要求较高,易受外部环境的影响,稳定性不高,且价格较为昂贵。

通过对方案1、方案2的比较其优缺点,综合多方面因素决定选用方案1,其原理图接线如(图5)所示:(图5)2.4 控速模块:2.4.1 方案1:使用功率三极管作为功率放大器的输出控制直流电机。

线性型驱动的电路结构和原理简单,成本低,加速能力强,但功率损耗大,特别是低速大转距运行时,通过电阻R 的电流大,发热厉害,损耗大,对于小车的长时间运行不利。

2.4.2 方案2:采用继电器对电动机的开或关进行控制,通过开关的切换对小车的速度进行调整.此方案的优点是电路较为简单,缺点是继电器的响应时间慢,易损坏,寿命较短,可靠性不高。

2.4.3 方案3:采用由双极性管组成的H桥电路。

用单片机控制晶体管使之工作在占空比可调的开关状态,精确调整电机转速。

这种电路由于工作在管子的饱和截止模式下,效率非常高;H桥电路保证了可以简单地实现转速和方向的控制;电子开关的速度很快,稳定性也很高,是一种广泛采用的调速技术。

综合3种方案的优缺点,决定选择方案3,其电路原理图如(图6)所示:(图6)2.5 模式选择模块:模式选择模块通过一个74LS00与非门和两个不带锁按钮来控制单片机单片机的两个中断口,从而按动按钮来选择小车走动的路型、来选择小车的速度是快速、中速、慢速;走完路程小车停止后还可以通过按钮选择想要在LCD上想看的信息,比如总时间、走过各段路程的时间、平均速度、总路程等。

小车走动的模式选择有:(1)直线型:满足设计任务的基本要求,能稳定的走完全程。

之后按顺序循环不断的显示走完全程所用的时间、走完高速区所用的时间和走完低速区所用的时间这三个时间;或者可以通过两个按钮以及LCD显示的菜单选择所要看的容如平均速度、全程距离以及那三个时间。

(2) S型:满足设计任务的发挥部分的要求,小车能自动的感应到在前面或在后面铁片,即第一次转弯后若感应到的是错误的方向,则小车会后退自动调整方向,沿着S 型的铁片走。

当走完S型铁片后的一定时间里,小车自动停止。

之后自动进入菜单由我们自己选择要看的容时间、平均速度和所走的距离。

(3)自动型:小车先以一定的速度走完全程,之后再以一定的速度倒退回起点,再调整速度在一定的时间走完全程。

走完后LCD显示的容与直线型显示的容一样。

3. 程序框图:单片机主程序框图、速度感应程序框图和铁片感应程序框图分别如(图7)所示。

(图7)4.系统的具体设计与实现:4.1 路面检测模块:应用一个金属感应器,安装在车盘下,离地略小于或约四毫米。

当金属传感器检测到铁片时将对单片机发送中断信号,单片机运行中断,改变输给电机驱动信号的电压占空比来控制小车的速度。

4.2 LCD显示模块:采用1602LCD,由单片机的总线模式连接。

为节约电源,LCD的背光用单片机进行控制。

4.3 测速模块:通过霍尔元件感应磁铁来产生脉冲(当霍尔元件在离磁场较近时输出会是高电平,其它时候是低电平),一个车轮均匀放四个小磁铁,计算一秒所得的脉冲数,从而计算出一秒小车轮子转动圈数,再测量出小车车轮周长即可计算出小车当前速度,累加可得到当前路程。

4.4 控速模块:考虑到元器件的缺少以及我们所用的电路的驱动电机的电路原理图和和小车自带的电路的电机驱动原理图一样,所以暂时使用小车自带的电机驱动电路图。

4.5 复位电路模块:单片机的复位电路通过手动来实现,复位电路图如(图8)所示。

(图8)4.6 模式选择模块:两个中断口使用和感应铁片、感应速度所使用的中断口一样,通过一个与非门和按钮控制。

原理图如(图9)所示:(图9)5.最小系统图:该系统主要用到的是单片机,所以主要的部分是最小系统图,该最小系统图如(图10)所示:(图12)6. 最终PCB板图:该最小系统的最终PCB板图(包括LCD接口以及其他的外部扩展电路部分,考虑到最小系统的简洁以及容易看懂,外部扩展电路不在最小系统图上显示。

)分别如(图11)、(图12)所示:(图11)(图12)7.系统程序:按照预定的功能,系统实现预定的功能的程序如下所示:#include<intrins.h>#include<AT89X52.h>/********************************************************************************\** 宏定义区** \********************************************************************************//*------------------------------- LCD模块 ------------------------------------*/#define LCD_RW P2_6 //读写控制端#define LCD_RS P2_7 //数据命令选择端#define LCD_E P2_5 //执行使能端#define LCD_Data P1 //P1口#define Write 0x00//低电平写入#define Read 0x01//高电平读出#define Data 0x01//高电平选择数据#define Cmd 0x00//低电平选择命令#define Enable 0x00//跃变到低电平时执行命令#define Disable 0x01#define True 0x01#define False 0x00#define LCD_Init 0x38//初始化模式#define LCD_DispCtr 0x0C//开显示及光标设置#define LCD_CloseCtr 0x08//关显示#define LCD_CLS 0x01//清屏幕#define LCD_EnterSet 0x06//显示光标#define Busy P1_7 //忙信号/*-------------------------- 测速/测距/测时模块 -------------------------------*/ #define CircleLength 0.132//小车转一轮的长度为.132m/*-------------------------------- 控速模块 -----------------------------------*/ #define P03 P0_3 //后电机#define P04 P0_4 //后电机#define P01 P0_1 //前电机#define P02 P0_2 //前电机#define P31 P0_5 //控制液晶背光#define P33 P3_3/*------------------------------ 菜单选择模块---------------------------------*/ #define Line 0x00//0代表直线模式#define Curve 0x01//1代表S型模式#define Normal 0x00//0 代表正常速度#define Low 0x01//1 代表低速#define High 0x02//2 代表高速/*********************************************************************************\ ** 全局函数声明区 ** \*********************************************************************************//*------------------------------- LCD模块 -------------------------------------*/ void LCDInit(void); //LCD初始化void SetWriteCmd(void); //设置写命令模式void SetReadCmd(void); //设置读命令模式void SetWriteData(void); //设置写数据模式void WriteCmd(char cmd); //写命令void WriteData(char ddata); //写数据void ExecuteCmd(void); //执行命令void SetXY(char x,char y); //定位显示地址void DisplaySingleChar(char x,char y,char cchar); //显示单个字符void DisplayString(char x,char y,char *str); //显示一段字符串void Delay(unsigned int time); //延时主程序void DelayUs(unsigned int time); //延时子程序bit IsBusy(void); //判断忙标志函数void DisplayTime(void); //显示时间void DisplayAVGSpeed(void); //显示平均速度void DisplayDistance(void); //显示路程/*-------------------------- 测速/测距/测时模块 -------------------------------*/void INTInit(void); //所有中断初始化void SpeedINT(void); //测速中断void ComputeTime(void);void ComputeSpeedANDDistance(void); //计算速度和距离/*-------------------------------- 控速模块 -----------------------------------*/ void CtrSpeedINT(void); //控速中断void Time0INT(void);void Time1INT(void); //控速单位时间中断void Clock0_Init(void); //时钟中断初始化void Clock1_Init(void); //时钟中断初始化void CtrSpeed(void);/********************************************************************************\** 全局变量区** \********************************************************************************/float SpeedCount = 0; //测速计数脉冲float Speed = 0.0;float Distance = 0.0;char Time1INTCount=0; //T1中断时间计时float PassTime=0.00; //小车行走的时间short IsT0INT=1;bit IsT1INT; //判断T1是否已经响应中断short IsT0INT2=1;char Thx[5]={0xf4,0xf4,0xc5,0xf4,0xff}; //3ms,3ms,15ms,3mschar Tlx[5]={0x48,0x48,0x68,0x48,0xff};char Thx0=0xd8;char Tlx0=0xf0;char Thx1=0xb1; //20mschar Tlx1=0xe0;short Round=0;short Back=0;short Back0=0;bit Backid;bit Stop=0;char Area0=0;char Area1=0; //区域变量char LowSpeedArea1StartTime;char LowSpeedArea1EndTime;char HighSpeedAreaEndTime;char LowSpeedArea2EndTime;char LowSpeedArea1PassTime=0; //第一个低速区通过时间char HighSpeedAreaPassTime=0; //高速区通过时间char LowSpeedArea2PassTime=0; //第二个低速区通过时间char ReadyToGo=4; //倒计时char flag;bit Roundid=0;char Nocurve=0;char ChangeFlag;char Mode;bit Running;bit SelectedAll; //模式和速度是否选择完毕标志bit IsSelectingMode; //模式选择标志bit IsSelectingSpeed; //速度选择标志bit ModeSelected; //已经被选择的模式标志char SelectedMode=10; //模式选择是否完毕标志bit Next; //Next键标志bit SpeedSelected; //已经被选中的速度方案标志char SelectedSpeed; //速度选择是否完毕标志bit ChoosingDisplay; //人工选择菜单开始标志bit SelectedShow; //显示选择标志bit SelectedReturn; //返回选择标志bit Selected; //确定/返回键选择标志bit ReturnSelection; //返回键启用标志bit AVGSpeedShow; //平均速度显示标志bit TotalDistanceShow; //总路程显示标志bit ReturnMain; //返回主菜单标志bit AutoDisplay; //自动显示标志bit GoToChoosingDisplay; //人工选择标志bit AutoMode=0;char PassLineID=0;char PassLine=0;float PrepareDistance;float FirstDistance;float SecondDistance;float ThirdDistance;int FirstHigh;int SecondHigh;int ThirdHigh;float Rate=1.25; //5ms时的速度float Count=4; //时间的倍数/********************************************************************************\ ** 全局函数实现区** \********************************************************************************//*-------------------------------- 主函数 ------------------------------------*/ void main(){P01=0;P02=0;P03=0;P04=0;P31=1; //单片机复位,背光开Delay(40); //延时等待LCD启动LCDInit(); //初始化LCDDisplayString(0x0,0," Starting... ");DisplayString(0x0,1,"Designed By 202");Delay(300);WriteCmd(LCD_CLS);EA=1; //开总中断EX0=1; //开INT0中断IT0=1; //INTO边沿触发EX1=1; //开INT1中断IT1=1; //INT1边沿触发SelectedAll=False; //开始模式和速度选择/*------------------------------ 模式选择 ---------------------------------*/ DisplayString(0x0,0,"Choose The Mode ");DisplayString(0x0,1,"you want. ");Delay(50);WriteCmd(LCD_CLS);IsSelectingMode=True;while(1){WriteCmd(LCD_CLS);DisplayString(0x0,0," Line Mode ");DisplayString(0x0,1,"Next Yes");Delay(300); //延时消除抖动while (1) //不断检测中断,直到按确定键或是NEXT键{if (Next==True) //如果按Next键则直接跳出break;if (ModeSelected==True) //如果按确定键则设置模式为Line并跳出{SelectedMode=Line;break;} //如果什么键都没有按下,那么一直显示等待}if (ModeSelected==True) //按下了确定键,退出模式选择{IsSelectingMode=False;break;}if (Next==True) //按下了Next键,显示下一个菜单项{Next=False;WriteCmd(LCD_CLS);DisplayString(0x0,0," Curve Mode ");DisplayString(0x0,1,"Next Yes");Delay(300); //延时消除抖动while(1) //不断检测中断,直到按确定键或是Next键 {if (Next==True) //如果再一次按下Next键,则跳出break;if (ModeSelected==True) //如果按下确定键,则设置模式为Curve,并跳出{SelectedMode=Curve;break;}}}if (ModeSelected==True) //按下了确定键,退出模式选择{IsSelectingMode=False;break;}if (Next==True) //再一次按下了Next键,则循环模式选择{Next=False;WriteCmd(LCD_CLS);DisplayString(0x0,0," AutoMode ");DisplayString(0x0,1,"Next Yes");Delay(300); //延时消除抖动while(1){if (Next==True)break;if (ModeSelected==True){AutoMode=1;break;}}}if (ModeSelected==True){IsSelectingMode=False;break;}if (Next==True){Next=False;continue;}}Delay(50);WriteCmd(LCD_CLS);/*------------------------------ 速度选择 ---------------------------------*/if (SelectedMode==Line && AutoMode==0){DisplayString(0x0,0," Now Choose a ");DisplayString(0x0,1," kind of Speed ");Delay(50);WriteCmd(LCD_CLS);IsSelectingSpeed=True;while(1){WriteCmd(LCD_CLS);DisplayString(0x0,0," Normal Speed ");DisplayString(0x0,1,"Next Yes");Delay(300); //延时消除抖动while(1){if (Next==True) //如果按Next键则直接跳出break;if (SpeedSelected==True) //如果按确定键则设置速度为Normal并跳出{Thx[0]=0xec;Tlx[0]=0x78; //5msThx[1]=0xf0;Tlx[1]=0x60; //4msThx[2]=0x8a;Tlx[2]=0xd0; //30msThx[3]=0xf4;Tlx[3]=0x48; //3msSelectedSpeed=Normal;break;} //如果什么键都没有按下,那么一直显示等待}if (SpeedSelected==True) //按下了确定键,退出速度选择{IsSelectingSpeed=False;break;}if (Next==True){Next=False;WriteCmd(LCD_CLS);DisplayString(0x0,0," Low Speed ");DisplayString(0x0,1,"Next Yes");Delay(300); //延时消除抖动while(1){if (Next==True) //如果再一次按下Next键,则跳出break;if (SpeedSelected==True) //如果按下确定键,则设置速度为Low,并跳出{SelectedSpeed=Low; //这里没有速度设置,因为默认速度就是Lowbreak;}}}if (SpeedSelected==True) //按下了确定键,退出速度选择{IsSelectingSpeed=False;break;}if (Next==True){Next=False;WriteCmd(LCD_CLS);DisplayString(0x0,0," High Speed ");DisplayString(0x0,1,"Next Yes");Delay(300); //延时消除抖动while(1){if (Next==True) //如果再一次按下Next键,则跳出break;if (SpeedSelected==True) //如果按下确定键,则设置速度为High,并跳出{Thx[0]=0xe0;Tlx[0]=0xc0; //8msThx[1]=0xe0;Tlx[1]=0xc0; //8msThx[2]=0x63;Tlx[2]=0xc0; //40msThx[3]=0xec;Tlx[3]=0x78; //5msSelectedSpeed=High;break;}}}if (SpeedSelected==True) //按下了确定键,退出速度选择{IsSelectingSpeed=False;break;}if (Next==True) //再一次按下了Next键,则循环速度选择{Next=False;continue;}}}SelectedAll=True; //标志模式选择和速度选择完毕Running=True;Delay(50);WriteCmd(LCD_CLS);/*------------------------- 显示所选择的模式和速度方案 -------------------------*/ if (SelectedMode==Line){DisplayString(0x0,0,"Choosen Mode is ");DisplayString(0x0,1," Line ");Delay(50);WriteCmd(LCD_CLS);}if (SelectedMode==Curve){DisplayString(0x0,0,"Choosen Mode is ");DisplayString(0x0,1," Curve ");Delay(50);WriteCmd(LCD_CLS);}if (AutoMode==1){DisplayString(0x0,0,"Choosen Mode is ");DisplayString(0x0,1," AutoMode ");Delay(50);WriteCmd(LCD_CLS);}if (SelectedMode==Line){if (SelectedSpeed==Normal){DisplayString(0x0,0,"Choosen Speed is");DisplayString(0x0,1," Normal ");Delay(50);WriteCmd(LCD_CLS);}if (SelectedSpeed==Low){DisplayString(0x0,0,"Choosen Speed is");DisplayString(0x0,1," Low ");Delay(50);WriteCmd(LCD_CLS);}if (SelectedSpeed==High){DisplayString(0x0,0,"Choosen Speed is");DisplayString(0x0,1," High ");Delay(50);WriteCmd(LCD_CLS);}}INTInit(); //初始化所有中断DisplayString(0x0,0,"Left Times To Go");while (ReadyToGo--){DisplaySingleChar(0x7,1,ReadyToGo+0x30);DisplaySingleChar(0x09,1,'s');Delay(300);}WriteCmd(LCD_CLS);DisplayString(0x05,0,"Go");Delay(100);WriteCmd(LCD_CLS);DisplayString(0x0,0," Living... ");DisplayString(0x0,1,"Designed by 202");if (SelectedMode==Line&&AutoMode==0)flag=Area0;elseflag=1;while(flag<5){if(AutoMode==1) //自动模式 {switch(PassLineID){case0 :{if(IsT0INT==1){P01=P02=P04=0;P03=1;}else{P01=P02=P03=P04=0;}}break;case1 :{P01=P02=P03=0;P04=1;}break;case2 :{P01=P02=P04=0;P03=1;}break;default :break;}}else{if(SelectedMode==Line) //直线模式 {flag=Area0;if(IsT0INT==1){P03=1;P04=0;P01=P02=0;}else{P03=0;P04=0;P01=P02=0;}}else{ //S型模式if((Nocurve<2)&&Round!=0&&(Back0>0)&&Back!=0){if(Backid==1){P01=1;P02=0;P03=0;P04=1;}else{P01=0;P02=1;P03=0;P04=1;}Back=1;}else{if(Round==0){if(IsT0INT2==1){P01=0;P02=0;P03=1;P04=0;}else{P01=0;P02=0;P03=0;P04=0;}}else{if(P33==0){if(IsT0INT2==1){P01=0;P02=0;P03=1;P04=0;}else{P01=0;P02=0;P03=0;P04=0;}}else{EX1=1;if(Round%2){if(IsT0INT2==1){P01=1;P02=0;P03=1;P04=0;Backid=1;}else{P01=1;P02=0;P03=0;P04=0;}}else{if(IsT0INT2==1){P01=0;P02=1;P03=1;P04=0;Backid=0;}else{P01=0;P02=1;P03=0;P04=0;}}}}}}}if (IsT1INT==1){IsT1INT=0;ComputeTime();ComputeSpeedANDDistance();}}//补中断路程,加上最后一次中断缺失的路程ComputeSpeedANDDistance();P04=1;P03=0;P01=P02=0;Delay(90);P03=0;P04=0; //行程结束,小车停止P31=1; //行程结束,背光开ET0=0x0; //关T0中断ET1=0x0; //关T1中断EX1=0x01; //开INT1中断Running=False;AutoDisplay=True; //默认情况下直线模式会自动显示各个区域经过的时间WriteCmd(LCD_CLS);if (SelectedMode==Line) //直线模式才显示{while(1){if (GoToChoosingDisplay==True)break;Delay();WriteCmd(LCD_CLS);Delay();DisplayString(0,0," LowSpeedArea1");DisplayString(0,1," Costed ");DisplaySingleChar(0x0C,1,'s');LowSpeedArea1PassTime=LowSpeedArea1EndTime-LowSpeedArea1StartTime;DisplaySingleChar(0x0A,1,LowSpeedArea1PassTime%10+0x30);if (LowSpeedArea1PassTime > 9) //通过第一个低速区的时间超过s DisplaySingleChar(0x0B,1,LowSpeedArea1PassTime/10+0x30);if (GoToChoosingDisplay==True)break;Delay();WriteCmd(LCD_CLS);Delay();DisplayString(0,0," HighSpeedArea ");DisplayString(0,1," Costed ");DisplaySingleChar(0x0C,1,'s');HighSpeedAreaPassTime=HighSpeedAreaEndTime-LowSpeedArea1EndTime;DisplaySingleChar(0x0A,1,HighSpeedAreaPassTime%10+0x30);if ( HighSpeedAreaPassTime> 9) //通过高速区的时间超过s DisplaySingleChar(0x0B,1,HighSpeedAreaPassTime/10+0x30);if (GoToChoosingDisplay==True)break;Delay();WriteCmd(LCD_CLS);Delay();DisplayString(0,0," LowSpeedArea2 ");DisplayString(0,1," Costed ");DisplaySingleChar(0x0C,1,'s');LowSpeedArea2PassTime=LowSpeedArea2EndTime-HighSpeedAreaEndTime;DisplaySingleChar(0x0A,1,LowSpeedArea2PassTime%10+0x30);if ( LowSpeedArea2PassTime> 9) //通过第二个低速区的时间超过s DisplaySingleChar(0x0B,1,LowSpeedArea2PassTime/10+0x30);}}AutoDisplay=False;/*---------------- 菜单选择你想要看的容--总时间、总路程以及平均速度 --------------*/ ChoosingDisplay=True;WriteCmd(LCD_CLS);/*首先显示主菜单,然后显示第一个选项*/DisplayString(0x0,0,"Now Choose what ");DisplayString(0x0,1,"you want to see ");Delay(100);while(1){WriteCmd(LCD_CLS);DisplayString(0x0,0," Costed Time ");DisplayString(0x0,1,"Next Show");Delay(250); //延时消除抖动/*------------------------------------第一次按键--------------------------------------*//*不断检测确定键和Next键*/while(1){if (Next==True)break;if (SelectedShow==True)break;}/*按下了确定键,显示第一个选项的容*/if (SelectedShow==True){SelectedShow=False;SelectedReturn=False;Selected=False;WriteCmd(LCD_CLS);DisplayString(0,0,"Costed Time is");DisplayTime();DisplayString(0x0A,1,"s");ReturnSelection=True; //按下了确定键,那么这个时候开启返回键的功能AVGSpeedShow=False;Delay(250); //延时消除抖动}/**按下了Next键,则显示第二个选项*/if (Next==True) //按下Next键,显示AVGSpeed菜单项{Next=False;WriteCmd(LCD_CLS);DisplayString(0x0,0," AVGSpeed ");DisplayString(0x0,1,"Next Show");ReturnMain=False;ReturnSelection=False; //按下了Next键,那么这个时候关闭返回键的功能AVGSpeedShow=True; //表明AVGSpeed选项已经显示过了Delay(250); //延时消除抖动}/*------------------------------------第二次按键--------------------------------------*/ /*显示第一个选项的容后又不断检测返回键(确定键)和Next键*/while(1){if (Next==True)break;if (Selected==True)break;}if (Next==True){Next=False;ReturnMain=False;ReturnSelection=False; //按下了Next键,那么这个时候关闭返回键的功能if (AVGSpeedShow==False) //还没有显示AVGSpeed选项,显示它{ //即第一次选择了确定键WriteCmd(LCD_CLS);DisplayString(0x0,0," AVGSpeed ");DisplayString(0x0,1,"Next Show");TotalDistanceShow=False; //显示了AVGSpeed,则表明TotalDistance还没有显示Delay(250); //延时消除抖动}if (AVGSpeedShow==True) //已经显示过AVGSpeed选项了,则显示下一个选项{ //即第一次选择了Next键WriteCmd(LCD_CLS);DisplayString(0x0,0," Total Distance ");DisplayString(0x0,1,"Next Show");TotalDistanceShow=True; //表明显示了TotalDistance选项Delay(250); //延时消除抖动}}if (Selected==True) //按下了确定键或返回键{SelectedShow=False;SelectedReturn=False;Selected=False;if (ReturnSelection==True) //第一次选择了确定键,故这次按下的是返回键ReturnMain=True;if (ReturnSelection==False){WriteCmd(LCD_CLS);DisplayString(0,0,"The AVGSpeed is");DisplayString(0x0A,1,"m/s");ReturnSelection=True; //按下了确定键,那么这个时候开启返回键的功能Delay(250); //延时消除抖动}TotalDistanceShow=False;}if (ReturnMain==True) //按下了返回键,返回主菜单{ReturnMain=False;continue;}/*------------------------------------第三次按键--------------------------------------*/ /*如果没有返回主菜单,则继续检测Next键和确定键*/while(1){if (Next==True)break;if (SelectedShow==True)break;}/*按下Next键,显示下一个选项*/if (Next==True){Next=False;ReturnMain=False;ReturnSelection=False; //按下了Next键,那么这个时候关闭返回键的功能if (TotalDistanceShow==True)ReturnMain=True;if (TotalDistanceShow==False) //还没有显示TotalDistance选项,显示它{WriteCmd(LCD_CLS);DisplayString(0x0,0," Total Distance ");DisplayString(0x0,1,"Next Show");TotalDistanceShow=True;Delay(250); //延时消除抖动}}if (Selected==True) //按下了确定键或返回键{SelectedShow=False;SelectedReturn=False;Selected=False;if (ReturnSelection==True) //按下的是返回键ReturnMain=True;if (ReturnSelection==False){if (TotalDistanceShow==False) //表明AVGSpeed选项的容还没有显示{WriteCmd(LCD_CLS);DisplayString(0,0,"The AVGSpeed is");DisplayAVGSpeed();DisplayString(0x0A,1,"m/s");ReturnSelection=True;Delay(250); //延时消除抖动}if (TotalDistanceShow==True){WriteCmd(LCD_CLS);DisplayString(0,0,"Total Distance");DisplayDistance();DisplayString(0x0A,1,"m");ReturnSelection=True; //按下了确定键,那么这个时候开启返回键的功能Delay(250); //延时消除抖动}}}if (ReturnMain==True) //按下了返回键,返回主菜单{ReturnMain=False;continue;}/*------------------------------------第四次按键--------------------------------------*/ while(1){if (Next==True)break;if (SelectedShow==True)if (Next==True) //所有菜单项已经显示完毕,返回主菜单{Next=False;ReturnMain=False;ReturnSelection=False;if (TotalDistanceShow==False){WriteCmd(LCD_CLS);DisplayString(0x0,0," Total Distance ");DisplayString(0x0,1,"Next Show");TotalDistanceShow=True;Delay(250); //延时消除抖动}}if (SelectedShow==True){SelectedShow=False;SelectedReturn=False;Selected=False;if (ReturnSelection==True) //按下的是返回键ReturnMain=True;if (ReturnSelection==False){if (TotalDistanceShow==True){WriteCmd(LCD_CLS);DisplayString(0,0,"Total Distance");DisplayDistance();DisplayString(0x0A,1,"m");ReturnSelection=True; //按下了确定键,那么这个时候开启返回键的功能Delay(250); //延时消除抖动}}}if (ReturnMain==True) //按下了返回键,返回主菜单{ReturnMain=False;/*------------------------------------第五次按键--------------------------------------*/ while(1){if (Next==True)break;if (SelectedShow==True)break;}if (Next==True) //所有菜单项已经显示完毕,返回主菜单{Next=False;ReturnMain=False;ReturnSelection=False;if (TotalDistanceShow==True) //最后一个选项已经显示完毕,返回主菜单{ReturnMain=True;}}if (SelectedShow==True){SelectedShow=False;SelectedReturn=False;Selected=False;if (ReturnSelection==True) //按下的是返回键ReturnMain=True;if (ReturnSelection==False){if (TotalDistanceShow==True){WriteCmd(LCD_CLS);DisplayString(0,0,"Total Distance");DisplayDistance();DisplayString(0x0A,1,"m");ReturnSelection=True; //按下了确定键,那么这个时候开启返回键的功能Delay(250); //延时消除抖动}}/*------------------------------------第六次按键--------------------------------------*/ while(1){if (Next==True)break;if (SelectedShow==True)break;}if (Next==True){Next=False;ReturnMain=False;ReturnSelection=False;}if (SelectedShow==True){SelectedShow=False;SelectedReturn=False;Selected=False;}continue;}while(1);}/****************************************************************************************\ ** LCD驱动模块** \****************************************************************************************//*--------------------------------- LCD初始化函数--------------------------------------*/void LCDInit(void){//三次显示模式设置LCD_Data=0;LCD_E=Disable;Delay(5);WriteCmd(LCD_Init);Delay(5);WriteCmd(LCD_Init);Delay(5);WriteCmd(LCD_Init);WriteCmd(LCD_Init); //初始化WriteCmd(LCD_CloseCtr); //关显示WriteCmd(LCD_CLS); //清屏幕WriteCmd(LCD_EnterSet); //光标移动设置WriteCmd(LCD_DispCtr); //显示开以及光标设置}/*--------------------------------- LCD模式设置函数--------------------------------------*\SetWriteCmd() 设置LCD为写命令模式SetReadCmd() 设置LCD为读命令模式SetWriteData() 设置LCD为写数据模式\*----------------------------------------------------------------------------------------*/ void SetWriteCmd(void){LCD_RW=Write;LCD_RS=Cmd;}void SetReadCmd(void){LCD_RW=Read;LCD_RS=Cmd;}void SetWriteData(void){LCD_RW=Write;LCD_RS=Data;}/*--------------------------------- LCD功能执行函数--------------------------------------*\WriteCmd() 写命令WriteData() 写数据ExecuteCmd() 执行命令SetXY() 显示定位DisplaySingleChar() 显示单个字符DisplayString() 显示一串字符IsBusy() 忙标志检测\*----------------------------------------------------------------------------------------*/ void WriteCmd(char cmd)while(IsBusy());LCD_Data=cmd;SetWriteCmd();ExecuteCmd();}void WriteData(char ddata){while(IsBusy());LCD_Data=ddata;SetWriteData();ExecuteCmd();}void ExecuteCmd(void){LCD_E=Enable;LCD_E=Disable;}void SetXY(char x,char y){if (y)x|=0x40;x|=0x80;Delay(5);WriteCmd(x);}void DisplaySingleChar(char x,char y,char cchar) {SetXY(x,y);WriteData(cchar);}void DisplayString(char x,char y,char *str){while(*str){Delay(5);DisplaySingleChar(x++,y,*str);str++;}bit IsBusy(void){LCD_Data=0xFF;SetReadCmd();ExecuteCmd();return (bit)(P1 & 0x80);}/*------------------------------------- 延时函数 -------------------------------------*/ void Delay(unsigned int time){unsigned int timeCounter = 0;for (timeCounter = time;timeCounter > 0 ;timeCounter --)DelayUs(255);}void DelayUs(unsigned int time){unsigned int timeCounter = 0;for (timeCounter = 0;timeCounter < time;timeCounter ++)_nop_();}/*******************************************************************************************\ ** LCD显示模块 ** \*******************************************************************************************/void ComputeTime(void){if (Area0 < 5)PassTime+=0.5;}void ComputeSpeedANDDistance(void){Speed=SpeedCount/4*CircleLength; //计算瞬时速度Distance+=Speed; //计算距离SpeedCount=0;}/*------------------------------------- 显示时间 ----------------------------------------*/ void DisplayTime(void){char PassTime2=0x30;char PassTime3=0x30;char PassTime4=0x30;if ((int)PassTime*100<100) //时间未够1s{PassTime1+=0;PassTime2+=(int)(PassTime*100)/10;PassTime3+=(int)(PassTime*100)%10;}else if ((int)(PassTime*100) > 100 && (int)(PassTime*100) < 1000) //够1s而未够10s{PassTime1+=(int)(PassTime*100)/100;PassTime2+=(int)(PassTime*100)/10%10;PassTime3+=(int)(PassTime*100)%10;}else{PassTime1+=(int)(PassTime*100)/1000;PassTime2+=(int)(PassTime*100)/100%10;PassTime3+=(int)(PassTime*100)/10%10;PassTime4+=(int)(PassTime*100)%10;}if ((int)(PassTime*100) < 1000){DisplaySingleChar(0x05,1,PassTime1);DisplaySingleChar(0x06,1,'.');DisplaySingleChar(0x07,1,PassTime2);DisplaySingleChar(0x08,1,PassTime3);}else{DisplaySingleChar(0x04,1,PassTime1);DisplaySingleChar(0x05,1,PassTime2);DisplaySingleChar(0x06,1,'.');DisplaySingleChar(0x07,1,PassTime3);DisplaySingleChar(0x08,1,PassTime4);}}/*------------------------------------ 显示平均速度----------------------------------------*/{int Speed1=0x30; //初始化为0的ASCII码int Speed2=0x30;int Speed3=0x30;if ((int)(Distance/PassTime*100)< 100){Speed1+=0;Speed2+=(int)(Distance/PassTime*100)/10;Speed3+=(int)(Distance/PassTime*100)%10;}else{Speed1+=(int)(Distance/PassTime*100)/100;Speed2+=(int)(Distance/PassTime*100)/10%10;Speed3+=(int)(Distance/PassTime*100)%10;}DisplaySingleChar(0x05,1,Speed1);DisplaySingleChar(0x06,1,'.');DisplaySingleChar(0x07,1,Speed2);DisplaySingleChar(0x08,1,Speed3);}/*------------------------------------- 显示路程 ----------------------------------------*/void DisplayDistance(void){int Distance1=0x30;int Distance2=0x30;int Distance3=0x30;int Distance4=0x30;if ((int)(Distance*100) < 100){Distance1+=0;Distance2+=(int)(Distance*100)/10;Distance3+=(int)(Distance*100)%10;}else if ((int)(Distance*100) > 100 && (int)(Distance*100) < 1000){Distance1+=(int)(Distance*100)/100;Distance2+=(int)(Distance*100)/10%10;Distance3+=(int)(Distance*100)%10;}else。

相关文档
最新文档