基于ST89C52单片机的自动往返小车(含程序)
基于单片机的自动往返小车毕业设计

基于单片机的自动往返小车毕业设计基于单片机的自动往返小车摘要:本设计以一片单片机STC89C52作为核心来控制自动往返小车,其中控制芯片L298N和单片机联合控制小车的前进与后退。
路面的黑带检测使用反射式红外传感器,并通过STC89C52对输入的信号进行处理;行驶距离使用霍尔元件进行检测。
最后以动态显示的形式通过一个LCD液晶显示即时黑带个数,运行时间,实时路程等。
关键词:微控制器 L298N电机控制霍尔检测液晶显示The Automatic round-trip car based on SCMAbstract:This design use a microcontroller STC89C52 as the core to control the automatic round-trip car, the control chip L298N and single chip microcomputer to control the car forward and backward together. The reflective infrared sensor detection the black belt on the road surface, then deal with input signal processing through the STC89C52. Using the hall element to test the distance. At last displaying instant black belt, running time, real-time distance, etc through a number of LCD liquid crystal in the form of dynamic displayKeywords:MCU L298N Motor control Hall detection LED display目录摘要 (I)关键字 (I)Abstract (I)Keywords (I)0绪论 (2)1.1 设计任务 (3)1.2方案介绍 (4)2.1 系统元器件的选择与介绍 (5)2.1.1 STC89C52R芯片 (5)2.1.2 L298N芯片 (11)2.1.3霍耳传感器(HD3020) (14)2.1.4液晶LCD (15)2.2电路模块的设计 (18)2.2.1检测系统 (18)2.2.2距离计算系统 (19)2.2.3显示系统 (20)2.2.4电机驱动以及正反转控制模块 (20)3.1主程序 (21)3.2中断程序 (22)3.2.1外部中断0 (22)3.2.2外部中断1 (23)3.2.3定时器中断0 (24)3.2.4定时器中断1 (24)4总结 (21)致谢 (21)参考文献 (21)附录 (21)0绪论当今社会,随着科技发展的日新月异,特别是计算机技术突飞猛进的发展,计算机技术带来了科研和生产的许多重大飞跃,同时计算机也越来越广泛的被应用到人们的生活、工作领域的各个方面。
基于STC89C52单片机智能小车设计

基于STC89C52单片机智能小车设计一、本文概述随着科技的飞速发展,智能化、自动化已经成为现代社会发展的重要趋势。
在这一背景下,智能小车作为一种集成了控制、传感器、通信等多种技术的智能移动平台,受到了广泛的关注和研究。
本文将以STC89C52单片机为核心,探讨智能小车的设计方案,包括硬件电路的设计、控制算法的实现以及实际应用的展望。
STC89C52单片机作为一款常用的8位微控制器,具有高性价比、稳定可靠、易于编程等优点,在智能小车的设计中发挥着关键的作用。
通过合理的硬件电路设计,可以实现小车的运动控制、传感器数据采集、无线通信等功能。
同时,结合相应的控制算法,可以使小车具备自主导航、避障、路径规划等智能行为。
本文将从硬件和软件两个方面详细介绍智能小车的设计过程。
硬件方面,将重点介绍STC89C52单片机的选型、外围电路的设计以及传感器的选型与连接。
软件方面,将详细介绍小车的控制算法,包括运动控制算法、传感器数据处理算法以及无线通信协议的实现。
本文还将对智能小车的实际应用进行展望,探讨其在智能家居、工业自动化、教育娱乐等领域的应用前景。
通过本文的阐述,旨在为读者提供一个基于STC89C52单片机的智能小车设计思路和方法,为其后续的研究和开发提供参考和借鉴。
二、智能小车硬件设计智能小车的硬件设计是整个项目的基础,其设计的好坏直接影响到小车的性能和稳定性。
在本设计中,我们选择了STC89C52单片机作为小车的核心控制器,它是一款高性能、低功耗的8位CMOS微控制器,具有强大的数据处理能力和丰富的外设接口,非常适合用于智能小车的控制。
电源模块:为了提供稳定的工作电压,我们选择了LM7805三端稳压芯片来构建小车的电源模块,该芯片可以将输入的不稳定电压稳定输出为5V,为单片机和其他模块提供稳定的电源。
电机驱动模块:小车的运动需要靠电机来驱动,我们选择了两款直流电机,通过电机驱动板(如L298N)来控制电机的正反转和转速,从而控制小车的行驶方向和速度。
单片机89c52自动往返电动小汽车(电路+程序)

摘要本设计是自动往返电动小汽车,采用AT89S51单片机来控制小汽车的前进、后退和限速,该芯片通过数码管还可以显示往返的时间和经过黑线的次数,也可以显示行驶的路程,利用传感器来检测是否到达限速区,在用单片机的pwm来调速,该设计不需要无线和有线遥控的控制,全部通过软件控制,自动往返小汽车是未来发展的趋势,环保又安全,满足社会的发展。
关键字:AT89S51;PWM;软件控制;传感器ABSTRACTThis design is:Automatically go back and forth a dynamoelectric small autocar, the adoption AT89 S51 unipole slab machine to control precession, countermarch and limit of small autocar soon, the chip approval figures tube can also display to go back and forth of the number of times in time and process black wire . May also demonstrate that the travel the distance, using the sensor examines whether to arrive at the regulating area, is using monolithic integrated circuit's pwm to modulate velocity, this design does not need wireless and the wired remote control control, through the software control, travels between the compact car is automatically completely the tendency which the future will develop, the environmental protection is also safe, satisfies social the development.Key Words:AT89S51;PWM;The software controls;Spread a feeling machine目录1系统方案的选择与论证 (7)1.1单片机的选择: (7)1.2显示器选择: (7)1.3电机制动 (7)1.4地面黑线检测模块 (8)2系统原理框图 (9)2.1显示模块 (9)2.2电机调速 (10)2.3电机驱动 (10)2.4跑道标志检测 (10)3软件流程 (11)3.1主程序流程 (11)3.2计时子程序流 (12)3.3路程速度检测子程序 (13)4总结 (14)5元件清单 (15)6参考文献 (16)附录一 (17)自动往返电动小汽车一、任务设计并制作一个能自动往返于起跑线与终点线间的小汽车。
基于STC89C52单片机的智能寻迹小车的设计与实现

基于STC89C52单片机的智能寻迹小车的设计与实现摘要:随着汽车科学技术的进步,对于智能小车的实验与设计越发重要.智能小车一致具有自动寻迹、躲避障碍物、报警等功能.其所运用的知识较为广泛,主要涉及到汽车、机械和计算机等专业.智能小车不但代表汽车技术的发展,也是学校培养机电一体化学和动手能力的主要手段。
本文所设计的小车采用STC89C52芯片作为主控制芯片,通过实时检测各个模块传感器的输入信号,利用3路红外传感器寻迹模块检测黑线实现寻迹,小车电机驱动采用L298N芯片,根据内置的程序分别控制小车左右两个直流电机运转,实现小车自动识别路线,到达终点时小车自动停止蜂鸣器发出警报。
另外,在小车上添加测速模块,利用单片机内部定时器、外部中断以及串口通信,测出小车行驶的总路程,数据通过蓝牙传感器以十六进制数的形式在手机上显示出来。
并在此基础上增添超声波模块,利用超声波的发射与接收,采用单片机IO口查询相应信号,判断小车与障碍物的距离,在距障碍物15cm左右的距离时,通过程序控制小车实现自动避障,且在绕过障碍物后回归原始路径。
关键词:单片机控制;直流电机;红外线传感器;测速模块;避障模块;本智能寻迹小车的硬件部分主要由STC89C51为主控芯片,主要包括电源模块、电机驱动模块、寻迹模块、超声波模块测距模块等,其中控制系统的大概结构如图1所示。
电机方面,本小车采用直流电机。
它的优点在于硬件电路设计简单。
当外加额定直流电压时,由于其内部由高速电机提供原始动力,带动变速齿轮组,可以产生大扭力,能够很好地控制。
转速几乎相等,调速性能较好,且性价比高。
并采用L298N驱动集成电路。
当驱动电机时,单片机可以控制与两路电机相连的IO口的逻辑电平,以达到控制小车车轮转向的目的寻迹方面,本车采用3路红外传感器寻迹模块。
外传感器寻迹模块由红外发射管和接受管组成,三个光电三极管分别放置在小车车头的左侧、右侧和正前方,红外发射管发出红外线,当发出的红外线照射到白色的平面后反射,接收管接收到反射光,经施密特触发器整形后输出低电平;当红外光遇到黑线时则被吸收,接收管没有接收到反射光,经施密特触发器整形后输出高电平。
基于 STC89C52 单片机的智能小车设计

能智造与信息技术基于STC89C52单片机的智能小车设计李亚振(安阳师范学院河南安阳455000)摘要:本设计主要器件有STC89C52单片机、RZ7899驱动芯片和N20直流减速电机,使用两节锂电池共7.4V 作为系统供电,经LM7805稳压芯片降压到5V 后为单片机系统供电,通过红外循迹模块和避障模块,实现S 形曲线行驶和避障功能。
通过控制电机驱动模块控制电机输出转速,改变车辆移动状态,实现转弯。
在行驶过程中,通过蜂鸣器播放音乐或充当汽车喇叭,同时设置灯光进行照明。
软件程序采用C 语言,通过keil 软件实现对小车的控制。
通过pcb 设计和实物调试,验证了该智能小车虽设计简单,但功能强大,应用广泛。
关键词:智能小车STC89C52单片机循迹PCB 设计中图分类号:TP23文献标识码:A文章编号:1674-098X(2022)04(a)-0058-04当前,社会新工艺、新技术快速发展,人工智能技术逐步成熟,并广泛应用于工业、农业、医疗等行业。
智能小车作为人工智能领域研究的重要分支,可以代替人类在一些危险环境下完成相关工作。
本设计以STC89C52单片机作为小车控制系统的核心处理器,包括驱动、红外循迹、避障和音乐播放等模块,通过对各模块的设计,全面说明该智能小车工作的基本原理。
1系统总体设计目标本设计增添红外线遥控电路,控制智能小车运动,功能除了前进后退,还可以按照设置路线行驶并躲避障碍物,利用C 语言程序设置智能小车的运动状态,在编写代码时写入不同的音乐模块,调试实现小车的多功能运行[1]。
系统设计框图如图1所示。
2系统模块设计2.1电源输入模块本设计选用7.4V 可充电锂电池,可以循环使用,经过LM7805稳压芯片后,给单片机和外围器件提供供电。
电机驱动的芯片由7.4V 锂电池直接提供。
二极管D1起着防反接的作用,LED2作为电源指示灯,当开关SW1打开时,系统就会开始供电。
电源输入原理图如图2所示。
基于单片机STC89C52的多功能智能小车设计

毕业设计(论文)题目基于单片机STC89C52的多功能智能小车设计学院机电工程学院专业班级机电092 班学生姓名指导老师成绩2013年 6 月 15 日摘要本文介绍了一种利用AT89S52单片机为控制核心,结合多种传感器以及PID算法实现无线控制、循迹、寻光和自动跟踪的智能小车。
智能小车通过无线遥控实现前进后退和转向行驶。
利用反射式光电传感器检测黑线实现小车循迹,利用超声波传感器检测道路上移动的目标,控制电动小汽车的自动跟踪它,整个系统具有自动寻迹、寻光和速度测试功能。
其中,控制部分采用STC89C52 STC89C52是一款8位单片机,它的易用性和多功能性受到了广大使用者的好评。
电机驱动采用常用的PWM方式进行电机的调速控制,小车的速度通过液晶屏来显示。
整个系统的电路结构较简单,可靠性能高,能满足各种设计的要求。
随着我国高科技水平的不断提高和工业自动化进程的不断推进,智能小车被广泛应用于各种玩具和其他产品的设计中,极大地丰富了人们的生活。
关键词: 单片机;PWM调速;循迹跟踪;寻光AbstractThis paper introduced an kind of intelligent car that use AT89S52 SCM as control core , combine with multiple sensors and PID control algorithm to achieve the function that wireless control ,find track,search light and follow-up tracing .the electrical caruse wireless control to make car go forward, go backward or turn around. the electrical car uses reflective photoelectric sensor to detect black line to achieve track-finding, uses ultrasonic sensors to detect moving target on the road to following it automatically.The entire system has the function that trace route automatically,find light and test speed .Among them, STC89S52 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.KEY WORDS: SCM;PWM speed adjusting; Track finding and follow-up tracing; Find light目录摘要 (I)ABSTRACT (II)第1章绪论 (1)1.1选题的背景与意义 (1)1.1.1 国外智能车辆的现状研究 (1)1.1.2 国内智能车辆的现状研究 (1)1.1.3 选题意义 (2)1.2本设计的内容及意义 (2)1.2.1 设计的内容 (2)1.2.2 本设计的意义 (3)1.3主要难点和解决的方法 (3)1.4研究方法、手段及步骤 (3)第2章方案设计与论证 (5)2.1创新点 (5)2.2总体体设计方案 (5)2.3小车的方案设计与论证 (6)2.4驱动电机模块的选定 (6)2.5寻迹传感器模块的选定 (7)2.6光源传感器模块的选定 (7)2.7电源模块的选定 (7)2.8跟踪模块选定 (8)2.9控制方式选定 (8)2.10最终方案 (9)第3章机械系统的设计 (10)3.1小车车体 (10)3.2减速电机 (10)3.2.1 减速电机安装 (10)3.2.2 减速电机的安装校核 (12)3.2万向轮 (14)3.2.1 万向轮组装 (14)3.2.2 万向轮轮轴的安装校核 (15)3.3模块组装 (16)3.3.1循迹模块组装 (16)3.3.2 寻光模块的组装 (17)3.3.3 超声波距离传感的固定 (17)3.3.4 电源的放置 (18)3.3.5 主板模块的安装 (18)3.4小车整体组装图 (19)第4章硬件设计 (22)4.1系统工作原理及功能简介 (22)4.2单片机控制电路 (22)4.3电机驱动电路 (24)4.3.1 驱动电路 (24)4.3.2 PWM调速原理 (26)4.4循迹检测电路 (26)4.5稳压电路 (28)4.5.1稳压芯片简介 (28)4.5.2系统供电单元介绍 (28)4.6光源检测电路 (29)4.7自动跟踪 (30)4.7.1 超声波传感器检测电路 (30)4.7.2.超声波测距原理 (31)4.8液晶显示电路 (32)4.9智能小车整体设计 (33)第5章智能小车软件部分 (36)5.1软件调试平台 (36)5.2系统软件流程 (37)5.3系统软件各模块程序 (38)5.3.1 主程序 (38)5.3.2 宏定义 (39)5.3.3 红外接收 (40)5.3.4蓝牙接收 (41)5.3.5 循迹 (42)5.3.6 自动跟踪 (43)5.3.7 寻光 (45)5.4手机上位机 (48)5.4.1 概述 (48)5.4.2 功能 (48)5.4.3 实现界面 (49)5.4.4 程序流程图 (49)第6章调试 (51)6.1调试方法 (51)6.2测试结果与分析 (51)参考文献 (53)致谢 (55)第1章绪论1.1选题的背景与意义智能化作为现代社会发展的趋势,是以后的发展方向,他可以按照自己设定的模式在一个设定环境里自动的运行,不需要人为管理,便可以完成设想所要达到的目的。
89c52的单片机自动往返电动小汽车设计报告

1. 设计任务:设计并制作了一个自动往返小汽车,其行驶路线满足所需的要求。
要求:基本要求:(1)分区控制:如(图1)所示:(图1)车辆从起跑线出发(出发前,车体不得超出起跑线)。
在第一个路程C~D区(3~6米)以低速行驶,通过时间不低于10s;第二个路程D~E区(2米)以高速行驶,通过时间不得多于4秒;第三个路程E~F区(3~6米)以低速行驶,通过时间不低于8s。
发挥部分(1)自动记录、显示一次往返时间(记录显示装置要求安装在车上)。
(2)自动记录、显示行驶距离(记录显示装置要求安装在车上)。
(3)其它特色与创新。
2. 方案设计:(图2)路面检测模块:路面黑线检测模块采用反射式红外发射--接收器,在车底的前部和中部安装了两个反射式红外传感器.LCD显示模块:采用1602LCD,由单片机的总线模式连接。
为节约电源电量并且不影响LCD的功能,LCD的背光用单片机进行控制,使LCD的背光在小车行驶的过程中不亮,因为我们不必看其显示;在其它我们需要看显示的内容的时候LCD背光亮。
测速模块:采用采用霍尔开关元器件A44E检测轮子上的小磁铁从而给单片机中断脉冲,达到测量速度的作用。
霍尔元件具有体积小,频率响应宽度大,动态特性好,对外围电路要求简单,使用寿命长,价格低廉等特点,电源要求不高,安装也较为方便。
霍尔开关只对一定强度的磁场起作用,抗干扰能力强,因此可以在车轮上安装小磁铁,而将霍尔器件安装在固定轴上,通过对脉冲的计数进行车速测量。
其原理图接线如(图3)所示:(图3)控速模块:采用由双极性管组成的H桥电路。
用单片机控制晶体管使之工作在占空比可调的开关状态,精确调整电机转速。
这种电路由于工作在管子的饱和截止模式下,效率非常高;H桥电路保证了可以简单地实现转速和方向的控制;电子开关的速度很快,稳定性也很高,是一种广泛采用的调速技术。
其电路原理图如(图4)所示:(图4)3. 程序框图:单片机主程序框图、速度感应程序框图和铁片感应程序框图分别如(图7)所示。
基于STC89C52单片机的智能循迹小车设计

1智能循 迹小 车 总体 硬 件结构 设计 及工 作原 理简 介
11 . 智能循迹小车总体硬件结构设计 本设计 中 , 能循迹小车是 由主控 制模块 、 迹模块 、 智 循 电机驱动模块 、 电 源模块和其他外围电路组成 , 其总体硬件结构框图如图 1 所示 。 。
在本设计 中, 以 S C 9 5 为主控模块 , 是 T 8C 2 采用模块化 设计的方法 , 以红 外光 电传感器作为循迹模块 , 并采用 L 9 D芯 片控制输 出直接驱动直流 电机 23 作为 电机驱动模块。电源模块用 4 1 v的电池供电 , L 85 节 . 5 经 7 0 稳压模块后 , 输 出电压稳定在+ V从而向各个模块供 电。 5,
h t :w t / ww.n sn t n p/ d z .e . c T l 8 — 5 — 6 0 6 5 9 9 4 e g n ehooy电 脑 知 识 与技术 o p t K o l ea dTc nlg e d
采mstc89c52单片机为主控制芯片结合直流电机传盛器电潭电路噩其他外围电肆i乏计实观7小车沿黑色轨进行走曲智能错进小车其中一p丰循进才能由红外式光电传感嚣完成小车的驱动功能由l293d驱动电路完成
I S l O —3 4 S N O 9 0 4
E ma l e u @C C .e .B — i: d f C Cn t C
1 . 2智能小车工作原理简介 本设计 中, 循迹指的是小车在 白色地板上沿着 2m宽 的黑线行走 。红外 c 图 1 智能循迹小车总体硬 件结构图
传感器 的发射管发 出红外线 , 由接收管接收。同时 , 接收 的物理量被转化成 电信号 , 经过信号放大电路处理 , 由单片机 的P , 1P 0 P ,2 口输入 , 经过处理后 , 信号 由 P 0 P 1P 2 2 , 2 ,2 2 ,2 ,2 , 3 P 4 P 5口输 出给电机驱 动电路 的L 9 D芯片 , 而达到驱 动小 车行走 和循迹 的 目 P 23 从 的。循迹 时 , 由于红外线在 白色地板 和黑线 上的反射 系数不同 , 以可以根据三极管接收红外线 的强弱来决定小车 的走 向。本设 所 计采用三对红外传感器 , 采用 “ 一字型” n 分布。中间传感器接 收不 到反射 回来 的红外线 , 而左右两个传感器能接收到反射 回来 的红 外线 , 则小车直线前进 ; 当左边和 中间 ( 只有左 边) 或 的传感器接 收不到反射回来的红外线 , 只有 右边 传感 器能接收到时 , 明小车 说 向右偏离黑色轨道 , 则小车 向左转动 ; 同理 , 当中间和右边 ( 只有 右边 ) 或 的传感器接收不 到反射 回来 的红外线 , 只有左边传感器能 接收到时 , 明小车 向左偏 离黑 色轨道 , 说 则小车向右转动 , 而实现 自动循迹 。本设计中红外传感器离地面垂直距 离为 8m, 从 c 能在没 有强烈 日光干扰或在有 日光灯的房间里 , 完全能满 足探测要求 , 具有很好 的可靠性与抗 干扰能力 。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基本原理:1.电机驱动调速模块方案一:采用电阻网络或数字电位器调整电动机的分压,从而达到调速的目的。
但是电阻络只能实现有级调速,而数字电阻的元器件价格昂贵。
更主要的问题在于一般电动机的电阻较小,但电流很大;分压不仅会降低效率,而且很难实现。
方案二:采用继电器对电动机的开或关进行控制,通过开关的切换对小车的速度进行调整。
方案的优点是电路较为简单,缺点是继电器的响应时间慢,机械结构易损坏,寿命较短,可靠性不高。
方案三:采用达林顿管TIP4组成的PWM电路。
用单片机控制达林顿管使之工作在占空比可调的状态,精确调整电机转速。
方案四:采用L298N来控制电机的正转和反转来实现小车的前进和后退。
加上单片机的程序PWM,实现整车的加速与减速,精确小车的速度。
基于上述理论分析,拟选择方案四。
2.路面黑带检测模块黑带检测的原理是:红外光线照射到路面并反射,由于黑带和白纸的系数不同,可根据接的红外线的强弱判断是否到达黑带。
方案一:可见光发光二极管与光敏二极管组成的发射—接收电路。
这种方案的缺点在于其他环境光源会对光敏二极管的工作产生很大的干扰,一旦外界光亮条件改变,很可能造成误判和漏判;虽然产生超高亮发光二极管可以降低一定的干扰,但这又将增加额外的功率损耗。
方案二:反射式的红外发射—接收器。
由于采用红外管代替普通可见光管,可以降低环境干扰。
基于上述理论分析,拟选择方案二。
3. 电源选择方案一:所有器件采用电源供电,这样供电电路比较简单;但是由于电动机启动瞬时电流很大,会造成电压不稳,干扰严重,缺点十分明显。
方案二:双电源供电,将电动机驱动电源与单片机以及周边电路电源完全隔离,这样做虽然不如单电源方便灵活,但可以将电动机驱动所造成的干扰彻底消除,提高了系统的稳定性。
基于上述理论分析,拟选择方案二。
4. 控制单元模块方案一:采用纯数字电路该方案外部检测采用光电转换,系统控制部分采用数字电路译码对小车电动机两端电压调整,来控制小车的运行。
时间和行程用加法器进行计数。
此系统的设计将会使电路过于复杂,调试时需要改变硬件电路,机动性差。
方案二:用单片机控制用光电检测不同的信号,并经单片机对其处理,传送给L298信号,使其控制电机的正转和反转,配合PWM程序控制,来实现加速减速和刹车。
通过单片机内部定数器/计数器进行定时、计数,在用单片机串行输入/输出口进行显示控制。
此方案电路成熟、工作稳定、容易实现控制。
为能更好的实现题目的各种设计要求,所以我们选用第二种方案。
用单片机进行控制。
其工作框图如下:1. 光电检测部分:我们采用反射式光电检测电路对跑道上的黑线进行检测,并用两个遮光套管套住发光管和接收管以一定的角度紧贴跑道,这样可以消除外界光线的干扰。
为了加强可靠性采用槽型光耦检测轮子转动的行程。
用LM358电压比较器输出高低电平检测信号。
如图所示:2. STC89C52单片机基本系统此系统以89C52为核心,每检测到一个黑带由光电检测部分产生一个的脉冲,使单片机产生一个外部中断1,定义检测黑带数的变量加1,同时车轮每转一圈,霍尔元件输出一个脉冲,是安单片机产生一个外部中断0,定义圈数的变量加1.通过P3.0和P3.1控制L298来控制电机的正转与反转及刹车。
当P3.0输出低电平,P3.1输出高电平时,电机正转,相反则电机反转,当P3.0和P3.1都是低电平时,使电动机被短路,提高了刹车效率,基本杜绝了由于制动惯性造成的小车的前冲现象。
通过P0口进行两个数码管的位选,P2口进行段码输出,其中一个数码管显示行驶时间,另外一个数码管显示行驶路程。
如图所示:3. L298N 电动机驱动模块部分该电路采用电动机驱动芯片L298来控制电动机的正转与反转,加以第二路电机电源保证了电动机启动时有足够的电流。
在试验中控制电压为单片机输出的高低电平直接控制。
具体电路图连接如下:4. 电源部分由于电动机工作电流大,需要选用内阻小,供电电流强,质量轻,可反复使用的经济型电池,我们选用镍铬可充电电池组。
为使单片机工作稳定,避免电动机开关机和其转动时对其电源的影响,在此用两个电池组和稳压块7805分别为89C52和电动机驱动显示部分分别进行供电。
保证小车工作和显示的稳定性。
5.软件设计部分单片机控制电路主要由一片STC89C52组成,通过P3口控制小车正转与反转,刹车,加速减速,通过两个四联数码管控制显示时间和里程以及小车行驶的时间。
其中P0口进行位选,P2口进行显示段码输出。
该系统采用上电复位加上手动复位联合复位系统进行初始化,单片机通过P3.0,P3.1输出脉冲控制电机正转反转以及刹车,当P3.0,P3.1分别输出01是电动机正转,输出10时电动机反转,输出00时电动机两边短路,小车立即刹车。
流程图如下:(1)外部中断0车轮美转一次,霍尔元件产生一个脉冲P3.14,通过下降沿触发外部中断0,并且在每进行一次外部中断记录圈数的变量加1.(2)外中断1光电检测每检测到一条黑带就产生一个脉冲输入P3.2口,通过下降沿的方式触发外中断1,每中断一次记录黑带的变量加1,当检测到第五条黑带时,p1.0=1,p1.1=1,小车的电动机由于短路刹车,当检测到第九条黑带时,小车再次刹车同时关掉所有中断 。
(3)定时器中断0使用定时器T0产生5ms定时中断,每次执行该中断前要先给定时器0赋初值,定时器中断每执行一次,变量加1。
当i=200时,即每当计时1秒时,时间变量t加1,速度等于一秒转的圈数和小车车轮的周长相乘。
(4)定时器中断1主要用来产生不同的占空比的波型进行高低速控制,每次执行时,定时器1要赋初值(5)主程序主程序主要用来控制两个四联数码管的显示,通过循环语句不断的调用显示程序,使两个四联数码管按位不断循环亮点,当小车行驶时动态显示时间和路程,小车停止时显示小车行驶过程中的时间和路程。
6.安装与调试自动小车为玩具遥控小汽车的改装品,在改装的过程中最重要的是考虑设计光电检测管的位置,检测黑带的光电管放在车体的中央,用遮光管将其以一定反射角度压到跑道上。
路程检测用槽型光耦,放在小车的从动轮上。
轮子的周长约为21.6厘米,在轮子上用了一个霍尔元件,每转一圈一个脉冲。
在组装前对每一个单元电路进行测试,以保证外部硬件电路的无误,有利于最后的统调。
调整是以点到线,最后到整体调试的方法。
在调整的过程中我们发现了许多问题,如响应中断的次数的调整等。
并且为了小车碰到墙壁不至于停车,我们在小车的四角上都加上了导向轮,导向轮用随身听的压带轮制作即可。
7.附录元器件及程序如下:基本元器件列表一个STC89C52单片机2个四位共阳数码管一个L298N芯片一个LM358一个霍尔元件和小磁钢片光点接收管一对晶振(12M)及30pf电容开关电阻10k 100欧姆1k 20k可调附录程序:#include<reg52.h> //包含头文件#define uint unsigned int //宏常量定义#define uchar unsigned char //宏常量定义sbit dianji1=P1^0; //P1_0设置为电机控制一sbit dianji2=P1^1; //P1_1设置为电机控制二sbit hdjc=P3^2; //P3_2设置为黑带检测位uchar code duma[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};//段编码uchar code dianduma[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10}; //带小数点段编码uchar code wema[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00,0xff};//位编码uchar num,ge,shi,bai,qian; //定义几个字符型变量uint miao,lc,heidai=0; //定义几个整形变量long int qs; //定义一个长整形变量用来记录小车所转的圈数void fenwei(uint); //声明一个分位函数用来把要显示的数分位void shuma(uchar,uchar) ; //声明一个数码上显示函数用来在数码管上显示数据void shumadian(uchar,uchar); //声明另一个数码显示函数用来显示带小数点的数据void miaoxianshi(uint); //声明一个显示时间的函数void lcxs(uint); //声明一个显示路程的函数void djkz(); //声明一个电机控制函数void delay(uchar); //声明一个延时函数void delay10s(); //声明另一个延时函数用来延时十秒钟/*————————————————主函数———————————————————*/void main(){EA=1; //打开总中断ET0=1; //打开定时器中断0EX0=1; //打开外部中断1IT0=1; //外部中断0设置为跳变沿触发方式EX1=1; //打开外部中断1IT1=1; //外部中断1设置为跳变沿触发方式TMOD=0x01; //设置定时器0为方式1TH0=(65536-500)/256; //定时器0高八位装初值TL0=(65536-500)%256; //定时器0低八位装初值TR0=1; //打开定时器0while(1) //进入主循环{djkz(); //进入电机控制函数}}/*————————————————显示分位———————————————————*///函数功能:把需要在数码管上显示的数据分位,// 即把数据的个、十、百、千位分别分// 离出来//函数入口参数:整形x,储存需要分位的数据//函数返回值:无void fenwei(uint x){ge=x%10;shi=(x%100)/10;bai=(x%1000)/100;qian=x/1000;}/*————————————————数码显示———————————————————*///函数功能:将需要显示的数据显示在数码管上//函数入口参数:字符型x,储存显示数据// 字符型y,储存要显示的位置//函数返回值:无void shuma(uchar x,uchar y){P0=wema[8];P2=duma[x];P0=wema[y];delay(5);}/*————————————————带小数点数码显示———————————————————*///函数功能:将需要显示的数据显示在数码管上//函数入口参数:字符型x,储存显示数据// 字符型y,储存要显示的位置//函数返回值:无void shumadian(uchar x,uchar y){P0=wema[8];P2=dianduma[x];P0=wema[y];delay(5);}/*————————————————时间显示———————————————————*///函数功能:将定时器0输出的时间显示在数码管上//函数入口参数:整型x,要显示的时间//函数返回值:无void miaoxianshi(uint x){fenwei(x);shuma(ge,3);shuma(shi,2);shumadian(bai,1);shuma(qian,0);}/*————————————————路程显示———————————————————*///函数功能:将外部中断1输出的路程显示在数码// 管上//函数入口参数:整形z:要显示的路程//函数返回值:无void lcxs(uint z){fenwei(z);shuma(ge,7);shuma(shi,6);shumadian(bai,5);shuma(qian,4);}/*————————————————电机控制———————————————————*///函数功能:控制电机运转//函数入口参数:无//函数返回值:无void djkz(){uchar n=20,m=60;switch(heidai){case 0:case 1:case 2:dianji1=1;dianji2=0;miaoxianshi(miao);lcxs(lc);break;case 3:while(m--){dianji1=0;dianji2=1;delay(70);dianji1=0;dianji2=0;delay(30);miaoxianshi(miao);lcxs(lc);}while(heidai==3){dianji1=1;dianji2=0;delay(13);dianji1=0;dianji2=0;delay(1);miaoxianshi(miao);lcxs(lc);}break;case 4:while(heidai==4){dianji1=1;dianji2=0;delay(25);dianji1=0;dianji2=0;delay(1);miaoxianshi(miao);lcxs(lc);}break;case 5:while(n--){dianji1=0;dianji2=1;delay(50);dianji1=0;dianji2=0;delay(50);miaoxianshi(miao);lcxs(lc);}dianji1=1;dianji2=1;delay10s();while(heidai==5){dianji1=0;dianji2=1;}break;case 6:dianji1=0;dianji2=1;miaoxianshi(miao);lcxs(lc);break;case 7:while(n--){dianji1=1;dianji2=0;delay(50);dianji1=0;dianji2=0;delay(50);miaoxianshi(miao);lcxs(lc);}while(heidai==7){dianji1=0;dianji2=1;delay(90);dianji1=0;dianji2=0;delay(1);miaoxianshi(miao);lcxs(lc);}break;case 8:dianji1=0;dianji2=1;miaoxianshi(miao);lcxs(lc);break;case 9:while(n--){dianji1=1;dianji2=0;delay(50);dianji1=0;dianji2=0;delay(50);miaoxianshi(miao);lcxs(lc);}dianji1=1;dianji2=1;TR0=0;while(1){miaoxianshi(miao);lcxs(lc);}break;default:break;}}/*————————————————延时函数———————————————————*///函数功能:延时//函数入口参数:字符型x,储存延时时间的长短//函数返回值:无void delay(uchar x){uchar a,b;for(a=x;a>0;a--)for(b=50;b>0;b--);}/*————————————————延时函数(延时十秒)———————————————————*///函数功能:延时十秒钟//函数入口参数:无//函数返回值:无void delay10s(){uint a,b;for(a=15;a>0;a--)for(b=123;b>0;b--){miaoxianshi(miao);lcxs(lc);}}/*————————————————外部中断0———————————————————*///函数功能:外部中断0,用来检测黑带//函数入口参数:无//函数返回值:无void ext0() interrupt 0{delay(50);if(hdjc==0)heidai++;}/*————————————————定时器中断0———————————————————*///函数功能:定时器中断0,用来记录时间//函数入口参数:无//函数返回值:无void time0() interrupt 1{TH0=(65536-500)/256;TL0=(65536-500)%256;num++;if(num==20){num=0;miao++;}}/*————————————————外部中断1———————————————————*///函数功能:外部中断1,记录车轮转过的圈数//函数入口参数:无//函数返回值:无void ext1() interrupt 2{qs++;lc=(int)(qs*21.6);}。