为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > 智能小车论文

智能小车论文

2017-10-12 46页 doc 160KB 33阅读

用户头像

is_654168

暂无简介

举报
智能小车论文智能小车论文 毕业设计(论文) 题 目 智能识别红绿灯小车设计 学 院 专 业 班 级 学 生 指导教师 前 言 随着我国科学技术的进步,智能化和自动化技术越来越普及,智能小车在工业生产和日常生活中已扮演了重要角色,如人们进行航天探测的月球车,图书馆内根据颜色进行图书分类的搬运车及车间内使用的机器人等。近年来,智能小车在野外、道路及现代物流系统中都有广泛运用,已成为人工智能领域研究和发展的热点。 智能小车,是一种集环境感知、决策规划、自动行驶等功能于一体的综合智能系统,智能小车集中运用了自动控制、模式识别、传感器技术...
智能小车论文
智能小车论文 毕业(论文) 题 目 智能识别红绿灯小车设计 学 院 专 业 班 级 学 生 指导教师 前 言 随着我国科学技术的进步,智能化和自动化技术越来越普及,智能小车在工业生产和日常生活中已扮演了重要角色,如人们进行航天探测的月球车,图书馆内根据颜色进行图书分类的搬运车及车间内使用的机器人等。近年来,智能小车在野外、道路及现代物流系统中都有广泛运用,已成为人工智能领域研究和发展的热点。 智能小车,是一种集环境感知、决策、自动行驶等功能于一体的综合智能系统,智能小车集中运用了自动控制、模式识别、传感器技术、汽车电子、电气、计算机、机械等多个学科知识,是典型的高新技术综合体[1]。智能小车在移动式机器人中占有很重要的地位,也是人们在控制领域中非常感兴趣的实验平台,在此平台上可以搭建传感器来实现更多的功能。智能小车也必将向自动搜索信息,智能处理,自主处理方向发展。 本课题研究当中,在技术方面,鉴于将要研制的颜色识别系统的特殊性,如何最大限度地减少光检测过程中的感应误差,从而降低系统本身的系统误差是研制智能红绿灯识别小车的重要。 本文通过对颜色识别的背景、发展等进行总结,并对智能小车颜色识别系统的器件选择,电路结构,硬件的组成、软件的流程及最终调试过程进行了阐述。 目 录 摘要 .................................................................. 1 第一章 绪论 .......................................................... 2 1.1 引言 ..................................................................................................................... 2 1.1.1颜色识别系统的发展现状 ....................................................................... 2 1.1.2颜色识别系统的背景及意义 ................................................................... 2 1.2 颜色识别系统相关技术发展现状 ..................................................................... 2 1.3 本文结构 ............................................................................................................. 3 第二章 硬件系统设计 .................................................. 3 2.1 硬件设计总体 ............................................................................................. 3 2.2 硬件模块设计及元件简介 ............................................................................... 4 2.2.1 主控制器模块 ........................................................................................ 4 2.2.2 颜色识别模块 ...................................................................................... 13 2.2.3 电机驱动模块 ...................................................................................... 17 2.3 智能红绿灯识别电路设计 ............................................................................. 20 2.3.1 颜色识别电路的设计 .......................................................................... 20 2.3.2 电机驱动电路的设计 .......................................................................... 21 2.3.3 红路灯电路设计 .................................................................................. 22 第三章 软件系统设计 ................................................ 22 3.1 程序总体设计思路 ........................................................................................... 22 3.2 程序流程图设计 ............................................................................................... 22 3.3 程序设计 ........................................................................................................... 23 3.3.1 颜色识别程序设计 ................................................................................ 23 3.3.2 小车行驶程序设计 ................................................................................ 24 3.3.3 红绿灯程序的设计 .............................................................................. 25 第四章 系统仿真 ..................................................... 25 4.1 proteus仿真软件介绍 ....................................................................................... 25 4.2颜色识别系统电路仿真 .................................................................................... 26 4.3仿真结果 ............................................................................................................ 27 I 第五章 系统调试 ..................................................... 27 5.1硬件调试 ............................................................................................................ 27 5.1.1颜色识别电路调试 ................................................................................. 27 5.1.2 智能小车调试 ........................................................................................ 27 5.2 综合调试 ........................................................................................................... 27 第六章 结论 ......................................................... 27 参考文献 ............................................................. 28 附录 ................................................................. 29 附录?:元件清单 .................................................................................................. 29 附录?:硬件设计原理图与PCB图 .................................................................... 30 附录?:软件程序 .................................................................................................. 30 附录?:实物图 ...................................................................................................... 37 II 摘要 本文从颜色识别系统的背景、发展及它的前景出发,设计了一款低成本、高效率、 硬件结构简单、算法简单的颜色识别方法。从智能小车颜色识别系统的设计思路出发、 对设计的器件选择、硬件结构、电路组成、算法设计,程序的编写及最后电路的焊接、 调试过程、最终成果出发,完成了对智能小车红绿灯识别系统设计的全部流程。 本设计采用TCS230颜色传感器作为颜色的识别传感器,通过对交通灯颜色的检测 确定小车的行驶状况。通过单片机STC89C52对颜色传感器信号的采集及处理控制小车 正确的行驶。在本文中首先描述了智能小车颜色识别系统的主要组成部分,并详细描写 了各个电路模块的组成。 关键词:颜色传感器;智能小车;STC89C52 ABSTRACT This paper, from the color recognition system background, the development and the prospect of its start, design a kind of low cost, high efficiency, hardware structure is simple, the color of the algorithm is simple recognition method. Intelligent car color recognition system from the viewpoint of design, the design of component selection, hardware structure, circuit composition, algorithm design, the program's writing and finally circuit welding, the debugging process, final results of the completed to the intelligent recognition system design of the car traffic lights all processes. This design USES the TCS230 color sensors as color recognition of the sensor, through to the traffic light color check to make sure the car driving conditions. Through the single chip microcomputer to the color of the sensor signal STC89C52 collection and processing control the car drive on the right. In this paper firstly describes the intelligence KEY WORDS:color sensors; Intelligent car; STC89C52 1 第一章 绪论 1.1 引言 1.1.1颜色识别系统的发展现状 颜色识别是新兴的测控技术,普通的工业应用如材料分拣,商标识别等已广泛应用。但高精密的颜色识别技术仍掌握在少数发达国家如美国,日本手中。我国在机器人视觉系统方面已取得了举世瞩目的成就,但在摄取数码影像,高分辨率的颜色识别方面仍缺乏自主研发的能力。 随着颜色传感器的广泛应用,颜色识别技术已成为仪器自动化,智能化的重要组成部分,发展前景十分广阔。 1.1.2颜色识别系统的背景及意义 颜色识别兴起的时间较晚,但在实时检测系统及自动控制方面具有重要意义,单片机及微机的引入提高了颜色识别的速度及智能化程度。国内与国外尚存在较大差距,识别的精度,灵敏度,颜色范围,快速性成为颜色识别的主要问题。深入研究传统颜色识别系统十分必要,同时对国外先进的颜色识别仪器进行了解,可以在某种程度上给我们以启示。 颜色识别在现代生产中的应用越来越广泛,无论是遥感技术,工业过程控制,材料分拣识别,图像处理,产品质检,机器人视觉系统,还是某些模糊的探测系统都需要对颜色进行探测,而颜色传感器的飞速发展,生产过程中长期由人眼起主导作用的颜色识别工作将越来越多地被颜色传感器所替代。为这上述应用的自动化实现提供了可能。 1.2 颜色识别系统相关技术发展现状 颜色识别是新兴的测控技术,普通的工业应用如材料分拣,商标识别等已广泛应用。但高精密的颜色识别技术仍掌握在少数发达国家如美国,日本手中。我国在机器人视觉系统方面已取得了举世瞩目的成就,但在摄取数码影像,高分辨率的颜色识别方面仍缺乏自主研发的能力。 随着颜色传感器的广泛应用,颜色识别技术已成为仪器自动化,智能化的重要组成部分,发展前景十分广阔。 2 1.3 本文结构 本论文是在确定此次设计的功能和要实现的功能后,将具体工作分为了硬件部分和软件部分。其中硬件部分又分为车道识别模块,数据处理模块,小车驱动模块,电源模块。最后对这些功能模块的设计和实现、最终系统调试的说明。论文分为七个大章: 第1章,绪论,对颜色识别系统的背景、发展等进行简单的描述; 第2章,介绍了本系统的硬件选择方案和一些器件的简单描述,最后着重介绍了颜色识别电路和小车的驱动电路; 第3章,从本系统的软件设计出发,描述了软件的设计流程及一些子函数; 第4章,从系统的调试方面简单介绍了在制作过程中进行的一些需要注意的问题及他们的调试方法、过程; 第5章,总结及感想; 第二章 硬件系统设计 2.1 硬件设计总体方案 小车部分采用STC89C52单片机作为主控制器,红绿灯识别电路使用集成的TCS230颜色传感器,主体由玩具电动车改装而成。通过TCS230检测红绿灯状态,反馈回单片机,单片机处理返回数据后做出是否继续前行的指令 红绿灯设计:该系统也是由STC89C52单片机作为主控制器,用LED发光二极管发出红色和绿色来模拟交通灯的状态。 小车识别红绿灯的流程如图2-1所示: 3 小车前进并检测交 通灯状态 红灯点绿灯点 亮 亮 小车停止前小车继续 进,继续检测前进穿过 交通灯状态 路口 图2-1 小车识别交通灯流程 2.2 硬件模块设计及元件简介 2.2.1 主控制器模块 凌阳系列单片机可以实现各种复杂的逻辑功能,模块大,密度高,它将所有器件集成在一块芯片上,减少了体积,提高了稳定性。凌阳系列单片机提高了系统的处理速度,适合作为大规模实时系统的控制核心。 凌阳系列单片机具有功能强、效率高的指令系统:μ’nSPTM的指令系统的指令格式紧凑,执行迅速,并且其指令结构提供了对高级语言的支持,这可以大大缩短产品的开发时间。低功耗、低电压:μ’nSPTM家族采用CMOS制造工艺,同时增加了软件激发的弱振方式,空闲方式和掉电方式,极大地降低了其功耗,另外,μ’nSPTM家族的工作电压范围大,能在低电压供电时正常工作,且能用电池供电,这对于其在野外作业等领域中的应用具有特殊的意义。 STC89C52是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 具有以下标准功能: 8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口。另外 STC89X52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空 4 闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35Mhz,6T/12T可选。 综上所述,凌阳单片机虽然性能更好,但价格比较昂贵,且本设计不需要很复杂的运算,所以本设计选用更便宜,更易用的STC89C52单片机。 U1 140P10VCC239P11P00338P12P01437P13P02536P14P03635P15P04734P16P05833P17P06932RESETP071031P30/RXDEA/VP1130P31/TXDALE/P1229P32/INT0PSEN1328P33/INT1P271427P34/T0P261526P35/T1P251625P36WRP241724P37/RDP231823X2P221922X1P212021GNDP20 STC89C52 图2-2 STC89C52单片机引脚图 单片机是美国STC公司最新推出的一种新型51内核的单片机。片内含有Flash程序存储器、SRAM、UART、SPI、PWM等模块。 (一)STC89C52主要功能、性能参数如下: (1)内置标准51内核,机器周期:增强型为6时钟,普通型为12时钟; (2)工作频率范围:0~40MHZ,相当于普通8051的0~80MHZ; (3)STC89C52RC对应Flash空间:4KB; (4)内部存储器(RAM):512B; (5)定时器\计数器:3个16位; (6)通用异步通信口(UART)1个; (7)中断源:8个; (8)有ISP(在系统可编程)\IAP(在应用可编程),无需专用编程器\仿真器; (9)通用I\O口:32\36个; 5 (10)工作电压:3.8~5.5V; (11)外形封装:40脚PDIP、44脚PLCC和PQFP等。 (二)STC89C52单片机的引脚说明: VCC:供电电压。 GND:接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。 P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断0) P3.3 /INT1(外部中断1) P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输入) P3.6 /WR(外部数据存储器写选通) 6 P3.7 /RD(外部数据存储器读选通) P3口同时为闪烁编程和编程校验接收一些控制信号。 I/O口作为输入口时有两种工作方式,即所谓的读端口与读引脚。读端口时实际上并不从外部读入数据,而是把端口锁存器的内容读入到内部总线,经过某种运算或变换后再写回到端口锁存器。只有读端口时才真正地把外部的数据读入到内部总线。上面图中的两个三角形表示的就是输入缓冲器CPU将根据不同的指令分别发出读端口或读引脚信号以完成不同的操作。这是由硬件自动完成的,不需要我们操心,1然后再实行读引脚操作,否则就可能读入出错,为什么看上面的图,如果不对端口置1端口锁存器原来的状态有可能为0Q端为0Q^为1加到场效应管栅极的信号为1,该场效应管就导通对地呈现低阻抗,此时即使引脚上输入的信号为1,也会因端口的低阻抗而使信号变低使得外加的1信号读入后不一定是1。若先执行置1操作,则可以使场效应管截止引脚信号直接加到三态缓冲器中实现正确的读入,由于在输入操作时还必须附加一个准备动作,所以这类I/O口被称为准双向口。89C51的P0/P1/P2/P3口作为输入时都是准双向口。接下来让我们再看另一个问题,从图中可以看出这四个端口还有一个差别,除了P1口外P0P2P3口都还有其他的功能。 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 /EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 7 XTAL2:来自反向振荡器的输出。 (三)STC89C52单片机最小系统: 最小系统包括单片机及其所需的必要的电源、时钟、复位等部件,能使单片机始终处于正常的运行状态。电源、时钟等电路是使单片机能运行的必备条件,可以将最小系统作为应用系统的核心部分,通过对其进行存储器扩展、A/D扩展等,使单片机完成较复杂的功能。 STC89C52是片内有ROM/EPROM的单片机,因此,这种芯片构成的最小系统简单)可靠。用STC89C52单片机构成最小应用系统时,只要将单片机接上时钟电路和复位电路即可,结构如图2-3所示,由于集成度的限制,最小应用系统只能用作一些小型的控制单元。 时钟电路 I/ STC89C52单片机 O 口 复位电路 图2-3 单片机最小系统原理框图 (1) 时钟电路 STC89C52单片机的时钟信号通常有两种方式产生:一是内部时钟方式,二是外部时钟方式。内部时钟方式如图2-4所示。在STC89C52单片机内部有一振荡电路,只要在单片机的XTAL1(18)和XTAL2(19)引脚外接石英晶体(简称晶振),就构成了自激振荡器并在单片机内部产生时钟脉冲信号。图中电容C1和C2的作用是稳定频率和快速起振,电容值在5~30pF,典型值为30pF。晶振CYS的振荡频率范围在1.2~12MHz间选择,典型值为12MHz和6MHz。 C2 18 30pF Y1 11.0592MHzC3 19 30pF 图2-4 STC89C52内部时钟电路 8 (2) 复位电路 当在STC89C52单片机的RST引脚引入高电平并保持2个机器周期时,单片机内部就执行复位操作(若该引脚持续保持高电平,单片机就处于循环复位状态)。 复位电路通常采用上电自动复位和按钮复位两种方式。 最简单的上电自动复位电路中上电自动复位是通过外部复位电路的电容充放电来实现的。只要Vcc的上升时间不超过1ms,就可以实现自动上电复位。 除了上电复位外,有时还需要按键手动复位。本设计就是用的按键手动复位。按键手动复位有电平方式和脉冲方式两种。其中电平复位是通过RST(9)端与电源Vcc接通而实现的。按键手动复位电路见图2-5。时钟频率用11.0592MHZ时C取10uF,R取10kΩ。 VCCS4 9 C1 10uFR1 10k 图2-5 STC89C52复位电路 (四) STC89C52中断技术概述 中断技术主要用于实时监测与控制,要求单片机能及时地响应中断请求源提出的服务请求,并作出快速响应、及时处理。这是由片内的中断系统来实现的。当中断请求源发出中断请求时,如果中断请求被允许,单片机暂时中止当前正在执行的主程序,转到中断服务处理程序处理中断服务请求。中断服务处理程序处理完中断服务请求后,再回到原来被中止的程序之处(断点),继续执行被中断的主程序。 图2-6为整个中断响应和处理过程。 图2-6 中断响应和处理过程 9 如果单片机没有中断系统,单片机的大量时间可能会浪费在查询是否有服务请求发生的定时查询操作上。采用中断技术完全消除了单片机在查询方式中的等待现象,大大地提高了单片机的工作效率和实时性。 (五) STC89C52中断系统结构 (1)中断系统结构图如图2-7所示。 图2-7 STC89C52的中断系统结构示意图 中断系统有5个中断请求源(简称中断源),两个中断优先级,可实现两级中断服务程序嵌套。 每一中断源可用软件独立控制为允许中断或关中断状态,中断优先级均可用软件来设置。 由图2-7可见,STC89C52中断系统共有5个中断请求源: 10 ?INT0 ——外部中断请求0,中断请求信号由INT0 引脚输入,中断请求标志为IE0。 ?INT1——外部中断请求1,中断请求信号由INT1引脚输入,中断请求标志为IE1。 ?定时器/计数器T0计数溢出发出的中断请求,中断请求标志为TF0。 ?定时器/计数器T1计数溢出发出的中断请求,中断请求标志为TF1。 ?串行口中断请求,中断请求标志为发送中断TI或接收中断RI。 (2)中断请求标志寄存器 5个中断请求源的中断请求标志分别由TCON和SCON的相应位锁存。 (六)TCON寄存器 为定时器/计数器的控制寄存器,字节地址为88H,可位寻址。特殊功能寄存器TCON的格式如表2-1所示。 表2-1 特殊功能寄存器TCON的格式 TCON各标志位功能如下: ?TF1—定时器/计数器T1的溢出中断请求标志位。 当T1计数产生溢出时,由硬件使TF1置“1”,向CPU申请中断。CPU响应TF1中断时,TF1标志由硬件自动清“0”,TF1也可由软件清“0”。 ?TF0—定时器/计数器T0的溢出中断请求标志位,功能与TF1类似。 ?IE1—外部中断请求1的中断请求标志位。 ?IE0—外部中断请求0中断请求标志位,功能与IE1类似。 ?IT1—选择外部中断请求1为跳沿触发还是电平触发。IT1=0,电平触发方式,引脚 上低电平有效,并把IE1置“1”。转向中断服务程序时,由硬件自动把IE1清“0”。 ?IT1=1,跳沿触发方式,加到引脚 上的外部中断请求输入信号电平从高到低的负跳变有效,并把IE1置“1”。转向中断服务程序时,由硬件自动把IE1清“0”。 11 ?IT0—选择外部中断请求0为跳沿触发方式还是电平触发方式,其意义与IT1类似。 注:STC89C52复位后,TCON被清“0”,5个中断源的中断请求标志均为0。 (七)SCON寄存器 串行口控制寄存器,字节地址为98H,可位寻址。 低二位锁存串行口的发送中断和接收中断的中断请求标志TI和RI,格式如表2-2所示。 表2-2 SCON中的中断请求标志位 各标志位的功能: ?TI—串行口的发送中断请求标志位。每发送完一帧串行数据后,TI自动置“1”。TI标志必须由软件清“0”。 ?RI—串行口接收中断请求标志位。串行口接收完一个串行数据帧,硬件自动使RI中断请求标志置“1”。必须在中断服务程序中用指令对RI清“0”。 (八)中断允许寄存器IE STC89C52的对各中断源的开放或屏蔽,是由中断允许寄存器IE控制的。 IE字节地址为A8H,可位寻址,格式如表2-3所示。 表2-3 中断允许寄存器IE的格式 12 IE对中断的开放和关闭实现两级控制。 有一个总的开关中断控制位EA(IE.7位), EA=0时,所有的中断请求被屏蔽; EA=1时,开放中断,但5个中断源的中断请求是否允许,还要由IE中的低5位所 对应的5个中断请求允许控制位的状态来决定。 IE中各位功能如下: ?EA—中断允许总开关控制位。 EA=0,所有的中断请求被屏蔽。 EA=1,所有的中断请求被开放。 ?ES——串行口中断允许位。 ES=0,禁止串行口中断。 ES=1,允许串行口中断。 ?ET1——定时器/计数器T1的溢出中断允许位。 ET1=0,禁止T1溢出中断。 ET1=1,允许T1溢出中断。 ?EX1——外部中断1中断允许位。 EX1=0,禁止外部中断1中断。 EX1=1,允许外部中断1中断。 ?ET0——定时器/计数器T0的溢出中断允许位。 ET0=0,禁止T0溢出中断。 ET0=1,允许T0溢出中断。 ?EX0——外部中断0中断允许位。 EX0=0,禁止外部中断0中断。 EX0=1,允许外部中断0中断。 2.2.2 颜色识别模块 采用摄像头进行红绿灯颜色的识别,这种方案识别比较准确,但是摄像头成本较高, 且操作、使用和程序控制过于复杂,暂不适合用于本设计。 13 TCS230是美国TAOS公司生产的一种可编程彩色光到频率的传感器。该传感器具有分辨率高、可编程的颜色选择与输出定标、单电源供电等特点;输出为数字量,可直接与微处理器连接。因为其接口简单,控制容易,程序容易编写,所以本设计选用TCS230颜色传感器检测红绿灯状态。 (一)TCS230简介 随着现代工业生产向高速化、自动化方向的发展,生产过程中长期以来由人眼起主导作用的颜色识别工作将越来越多地被相应的颜色传感器所替代。例如:图书馆使用颜色区分对文献进行分类,能够极大地提高排架管理和统计等工作;在包装行业,产生包装利用不同的颜色和装潢来表示其不同的性质或用途。目前的颜色传感器通常是在独立的光电二极管上覆盖经过修正的红、绿、蓝滤波片,然后对输出信号进行相应的处理,才能将颜色信号识别出来;有的将两者集合起来,但是输出模拟信号,需要一个A/D电路进行采集,对该信号进一步处理,才能进行识别,增加了电路的复杂性,并且存在较大的识别误差,影响了识别的效果。TAOS(Texas Advanced Optoelectronic Solutions)公司最新推出的颜色传感器TCS230,不仅能够实现颜色的识别与检测,与以前的颜色传感器相比,还具有许多优良的新特性。 (二)TCS230的结构框图与特点 TCS230是TAOS公司推出的可编程彩色光到频率的转换器,它把可配置的硅光电二极管与电流频率转换器集成在一个单一的CMOS电路上,同时在单一芯片上集成了红绿蓝(RGB)三种滤光器,是业界第一个有数字兼容接口的RGB彩色传感器,TCS230的输出信号是数字量,可以驱动标准的TTL或CMOS逻辑输入,因此可直接与微处理器或其他逻辑电路相连接,由于输出的是数字量,并且能够实现每个彩色信道10位以上的转换精度,因而不再需要A/D转换电路,使电路变得更简单,图3-8是TCS230的引脚和功能框图。 图2-8 TCS230的引脚和功能框图 14 图3-8中,TCS230采用8引脚的SOIC表面贴装式封装,在单一芯片上集成有64个光电二极管,这些二极管分为四种类型,其16个光电二极管带有红色滤波器;16个光电二极管带有绿色滤波器;16个光电二极管带有蓝色滤波器,其余16个不带有任何滤波器,可以透过全部的光信息,这些光电二极管在芯片内是交叉排列的,能够最大限度地减少入射光辐射的不均匀性,从而增加颜色识别的精确度;另一方面,相同颜色的16个光电二极管是并联连接的,均匀分布在二极管阵列中,可以消除颜色的位置误差。工作时,通过两个可编程的引脚来动态选择所需要的滤波器,该传感器的典型输出频率范围从2Hz,500kHz,用户还可以通过两个可编程引脚来选择100,、20,或2,的输出比例因子,或电源关断模式。输出比例因子使传感器的输出能够适应不同的测量范围,提高了它的适应能力。例如,当使用低速的频率计数器时,就可以选择小的定标值,使TCS230的输出频率和计数器相匹配。 从图3-8可知:当入射光投射到TCS230上时,通过光电二极管控制引脚S2、S3的不同组合,可以选择不同的滤波器;经过电流到频率转换器后输出不同频率的方波(占空比是50,),不同的颜色和光强对应不同频率的方波;还可以通过输出定标控制引脚S0、S1,选择不同的输出比例因子,对输出频率范围进行调整,以适应不同的需求。 (三)下面简要介绍TCS230芯片各个引脚的功能及它的一些组合选项。 S0、S1用于选择输出比例因子或电源关断模式;S2、S3用于选择滤波器的类型;OE 是频率输出使能引脚,可以控制输出的状态,当有多个芯片引脚共用微处理器的输出引脚时,也可以作为片选信号,OUT是频率输出引脚,GND是芯片的接地引脚,VCC为芯片提供工作电压,表3-4和表3-5是S0、S1及S2、S3的可用组合。 S0 S1 输出频率分频比例 L L 掉电 L H 2% H L 20% H H 100% 表2-4 S0、S1组合输出频率范围 15 S2 S3 光电二极管类型 L L 红色 L H 蓝色 H L 清除(无滤波器) H H 绿色 表2-5 S2、S3组合控制光电二极管 (四)TCS230识别颜色的原理 由上面的介绍可知,这种可编程的彩色光到频率转换器适合于色度计测量应用领域,如彩色打印、医疗诊断、计算机彩色监视器校准以及油漆、纺织品、化妆品和印刷材料的过程控制和色彩配合。下面以TCS230在液体颜色识别中的应用为例,介绍它的具体使用。首先了解一些光与颜色的知识。 (五)三原色的感应原理 通常所看到的物体颜色,实际上是物体表面吸收了照射到它上面的白光(日光)中的一部分有色成分,而反射出的另一部分有色光在人眼中的反应。白色是由各种频率的可见光混合在一起构成的,也就是说白光中包含着各种颜色的色光(如红R、黄Y、绿G、青V、蓝B、紫P)。根据德国物理学家赫姆霍兹(Helinholtz)的三原色理论可知,各种颜色是由不同比例的三原色(红、绿、蓝)混合而成的。 (六)TCS230识别颜色的原理 由三原色感应原理可知,如果知道构成各种颜色的三原色的值,就能够知道所测试物体的颜色。对于TCS230来说,当选定一个颜色滤波器时,它只允许某种特定的原色通过,阻止其他原色的通过。例如:当选择红色滤波器时,入射光中只有红色可以通过,蓝色和绿色都被阻止,这样就可以得到红色光的光强;同时,选择其他的滤波器,就可以得到蓝色光和绿色光的光强。通过这三个值,就可以投射到TCS230传感器上的光的颜色。 (七)白平衡和颜色识别原理 白平衡就是告诉系统什么是白色。从理论上讲,白色是由等量的红色、绿色和蓝色混合而成的;但实际上,白色中的三原色并不完全相等,并且对于TCS230的光传感器来说,它对这三种基本色的敏感性是不相同的,导致TCS230的RGB输出并不相等, 16 因此在测试前必须进行白平衡调整,使得TCS230对所检测的"白色"中的三原色是相等的。进行白平衡调整是为后续的颜色识别作准备。在本装置中,白平衡调整的具体步骤和方法如下:将空的试管放置在传感器的上方,试管的上方放置一个白色的光源,使入射光能够穿过试管照射到TCS230上;根据前面所介绍的方法,依次选通红色、绿色和蓝色滤波器,分别测得红色、绿色和蓝色的值,然后就可计算出需要的3个调整参数。 当TCS230识别颜色时,就用这3个参数对所测颜色的R、G和B进行调整。这里有两种方法来计算调整参数:1、依次选通三颜色的滤波器,然后对TCS230的输出脉冲依次进行计数。当计数到255时停止计数,分别计算每个通道所用的时间,这些时间对应于实际测试时TCS230每种滤波器所采用的时间基准,在这段时间内所测得的脉冲数就是所对应的R、G和B的值。2、设置定时器为一固定时间 (例如10ms),然后选通三种颜色的滤波器,计算这段时间内TCS230的输出脉冲数,计算出一个比例因子,通过这个比例因子可以把这些脉冲数变为255。在实际测试时,室外同样的时间进行计数,把测得的脉冲数再乘以求得的比例因子,然后就可以得到所对应的R、G和B的值。 (八)应用中需要注意的问题 1、颜色识别时要避免外界光线的干扰,否则会影响颜色识别的结果,最好把传感器、光源等放置在一个密闭、无反射的箱子中进行测试。 2、对光源没有特殊的要求,但是光源发出的光要尽量集中,否则会造成传感器之间的相互干扰。 3、当第1次使用TCS230时,或TCS230识别模块重启、更换光源等情况时,都需要进行白平衡调整。 2.2.3 电机驱动模块 L298N是ST公司生产的一种高电压、大电流电机驱动芯片。该芯片采用15脚封装。主要特点是:工作电压高,最高工作电压可达46V;输出电流大,瞬间峰值电流可达3A,持续工作电流为2A;额定功率25W。因其外围电路简单,且控制引脚能很好的和单片机连接切控制简单,所以本设计选用L298N作为直流电机驱动器。 图2-9所示为一个典型的直流电机控制电路。电路得名于“H桥驱动电路”是因为它的形状酷似字母H。4个三极管组成H的4条垂直腿,而电机就是H中的横杠。 如图2-9所示,H桥式电机驱动电路包括4个三极管和一个电机。要使电机运转, 17 必须导通对角线上的一对三极管。根据不同三极管对的导通情况,电流可能会从左至右或从右至左流过电机,从而控制电机的转向。 VCC Q1Q3 M Q2Q4 图2-9 H桥驱动电路 要使电机运转,必须使对角线上的一对三极管导通。例如,图2-10所示,当Q1管和Q4管导通时,电流就从电源正极经Q1从左至右穿过电机,然后再经Q4回到电源负极。按图中电流箭头所示,该流向的电流将驱动电机顺时针转动。当三极管Q1和Q4导通时,电流将从左至右流过电机,从而驱动电机按特定方向转动(电机周围的箭头指示为顺时针方向)。 VCC Q1Q3 导通 M Q2Q4 导通 图2-10 H桥电路驱动电机顺时针转动 图2-11为另一对三极管Q2和Q3导通的情况,电流将从右至左流过电机。当三极管Q2和Q3导通时,电流将从右至左流过电机,从而驱动电机沿另一方向转动(电机 18 周围的箭头表示为逆时针方向)。 VCC Q1Q3 导通 M Q2Q4 导通 图2-11 H桥驱动电机逆时针转动 驱动电机时,保证H桥上两个同侧的三极管不会同时导通非常重要。如果三极管Q1和Q2同时导通,那么电流就会从正极穿过两个三极管直接回到负极。此时,电路中除了三极管外没有其他任何负载,因此电路上的电流就可能达到最大值(该电流仅受电源性能限制),甚至烧坏三极管。基于上述原因,在实际驱动电路中通常要用硬件电路方便地控制三极管的开关。 基于这种考虑的改进电路,它在基本H桥电路的基础上增加了4个与门和2个非门。4个与门同一个“使能”导通信号相接,这样,用这一个信号就能控制整个电路的开关。而2个非门通过提供一种方向输人,可以保证任何时候在H桥的同侧腿上都只有一个三极管能导通。 VCC Q1Q3EN ANDAND M Q2Q4 ANDANDRightLeft 图2-12 具有使能控制和方向逻辑的H桥电路 19 通过查找资料,发现具有两个H桥电路的电机驱动芯片L298N。它能驱动两路直流电机,因此在小车上用一片就足够了。 图2-13 L298N引脚图 L298N是ST公司生产的一种高电压、大电流电机驱动芯片。该芯片采用15脚封装。主要特点是:工作电压高,最高工作电压可达46V;输出电流大,瞬间峰值电流可达3A,持续工作电流为2A;额定功率25W。内含两个H桥的高电压大电流全桥式驱动器,可以用来驱动直流电动机和步进电动机、继电器线圈等感性负载;采用标准逻辑电平信号控制;具有两个使能控制端,在不受输入信号影响的情况下允许或禁止器件工作有一个逻辑电源输入端,使内部逻辑电路部分在低电压下工作;可以外接检测电阻,将变化量反馈给控制电路。 2.3 智能红绿灯识别电路设计 2.3.1 颜色识别电路的设计 本系统颜色识别选用的是TCS230,我们根据本设计的要求,使其完成检测红绿灯的功能,将其8个引脚全部引出,与单片机相连接。电路图如图2-14所示。 20 VCC D1D2D3D4VCCLEDLEDLEDLEDVCC R1R210k10kC1 4.7uFR5R6R7R8U2VCC33033033033018S2S0S227S3S1S3R436OUTOEOUT45VCC1kVSSVDDR310kTCS230 VCCQ18S0LED_CON7S16S25S34OUT3LED_CON21 图2-14 TCS230电路图 2.3.2 电机驱动电路的设计 对于小车的直流电机驱动我们的是L298N专用电机驱动芯片,它有十五个引脚。含有四个输入,四个输出和两个使能端。对于小车,我们要控制它前进和停止的动作,对于控制小车,有两种方式控制,一种是对L298N两路的使能端一直给高,在前进时,四路输入控制成前进状态,而在停止时,则将四路输入都置高或都置低,从而实现小车的停止;还有一种控制方式就是四路输入都置成前进的状态,当车辆前进时把使能端都置高,而需要小车停止时就将使能端都置低。 本设计采用第二种控制方法,因为控制使能端比控制输入端更容易。 L298N驱动电机的电路图如图2-15所示。 1kR9VCC GREEN R101N40071N40071N40071N4007C41k0.1uFRED电机1U?152IN1OUT1273IN2OUT21013IN3OUT31214IN4OUT4161EN ASEN A21115EN BSEN B电机2R11L298N(15)1N40071N40071N40071N40071k REDR12 1kGREEN 图2-15 L298N驱动电机的电路图 21 从上图中可以看出INA1、INA2、ENA、INB1、INB2和ENB和单片机I/O口相连接,SENA、SENB和GND接地,9脚和4脚接电源,OUT1、OUT2、OUT3和OUT4分别与对应的电机相连接。电路分别接了电机状态指示灯,用来指示电机运行状态。 2.3.3 红绿灯电路设计 因本设计中小车是根据红绿灯的指示状态来工作的,所以红绿灯的电路也是很重要的,红绿灯光源的质量直接影响到颜色识别电路的准确度,所以本设计中红绿灯的光源采用高亮度,高寿命的LED发光二极管。 红绿灯的电路如图2-16所示。 图2-16 红绿灯电路图 本电路同样采用STC89C52单片机作为控制器,采用简单的外围电路和程序,即可完成交通红绿灯的切换。 第三章 软件系统设计 3.1 程序总体设计思路 本设计的程序既要实现对颜色信号的采集,又要实现根据颜色的信息算出小车将要进行的动作,还要根据小车将要进行的动作来驱动小车的行驶等功能。 3.2 程序流程图设计 开始 初始化(小车前 进、设定TCS230 输出、定时器) 同时白平衡,确22 定比例因子 进行颜色测试 红色 绿色 小车停止,继续判 断红绿灯状态 否 灯是否变为绿色 是 小车继续前 进通过路口 小车通过路口 结束 上图为智能小车颜色识别系统的总流程图。首先是实现系统的初始化,包括蜂鸣器响、启动小车前进、定时器以及白平衡的初始化,以便于系统的正常工作;然后控制颜色传感器采集当前的交通灯状态信息并反馈给单片机;单片机对反馈回来的交通灯状态信息进行判断,反馈的信息是否异常,如无异常,则通过固定算法对状态信息进行处理,然后根据的处理得到的结果决定小车是否通过路口,从而驱动小车行驶。 3.3 程序设计 3.3.1 颜色识别程序设计 颜色识别程序的流程图如下: 开始 颜色传感器 识别颜色 23 单片机接收 颜色信息 结束 本程序是将颜色传感器设置完成后进行颜色识别,识别后将颜色数据反馈回单片机 等待处理。 3.3.2 小车行驶程序设计 小车行驶的程序流程图如下: 开始 初始化开 始前进 判断颜色 红绿 色 色 停止 前进 结束 24 单片机根据颜色传感器返回的数据准确的做出小车行驶状态的指令。确保交通安全。 3.3.3 红绿灯程序的设计 红绿灯的程序流程图如下: 开始 初始化 定时器 打开 否 是否到达定时时间 是 切换红绿 灯点亮 结束 红绿灯程序用定时器控制红灯和绿灯的循环点亮来模仿交通灯的状态。 第四章 系统仿真 4.1 proteus仿真软件介绍 proteus软件是来自英国Labcenter electronics公司的EDA工具软件,Proteus软件有近20年的历史,在全球广泛使用,除了其具有和其它EDA工具一样的原理布图、PCB自动或人工布线及电路仿真的功能外,其革命性的功能是,他的电路仿真是互动的,针对微处理器的应用,还可以直接在基于原理图的虚拟原型上编程,并实现软件源码级的实时调试,如有显示及输出,还能看到运行后输入输出的效果,配合系统配置的虚拟仪器如示波器、逻辑分析仪等,Proteus能够很容易的为用户建立了完备的电子设计开发环境。 Proteus 产品系列也包含了革命性的VSM技术,用户可以对基于微控制器的设计 25 连同所有的周围电子器件一起仿真。不愧为一款非常优秀的单片机仿真软件。 Proteus组合了高级原理布图、混合模式SPICE仿真,PCB设计以及自动布线来实现一个完整的电子设计系统。此系统受益于15年来的持续开发,被《电子世界》在其对PCB设计系统的比较文章中评为最好产品—“The Route to PCB CAD”。Proteus 产品系列也 用户可以对基于微控制器的设计连同所有的周围电子器包含了我们革命性的VSM技术, 件一起仿真。用户甚至可以实时采用诸如LED/LCD、键盘、RS232终端等动态外设模型来对设计进行交互仿真。 其功能模块:—个易用而又功能强大的ISIS原理布图工具;PROSPICE混合模型SPICE仿真; ARES PCB设计. PROSPICE 仿真器的一个扩展PROTEUS VSM:便于包括所有相关的器件的基于微处理器设计的协同仿真。此外,还可以结合微控制器软件使用动态的键盘,开关,按钮,LEDs甚至LCD显示CPU模型. 》支持许多通用的微控制器,如PIC,***R,HC11以及8051. 》交互的装置模型包括:LED和LCD显示,RS232终端,通用键盘, 包括寄存器和存储器,断点和单步模式 》强大的调试工具, 》IAR C-SPY 和Keil uVision2等开发工具的源层调试 》应用特殊模型的DLL界面-提供有关元件库的全部文件 Proteus与其它单片机仿真软件不同的是,它不仅能仿真单片机CPU的工作情况,也能仿真单片机外围电路或没有单片机参与的其它电路的工作情况。因此在仿真和程序调试时,关心的不再是某些语句执行时单片机寄存器和存储器内容的改变,而是从工程的角度直接看程序运行和电路工作的过程和结果。对于这样的仿真实验,从某种意义上讲,是弥补了实验和工程应用间脱节的矛盾和现象。 4.2颜色识别系统电路仿真 26 4.3仿真结果 由于Proteus 仿真软件的软件库不够丰富,因此有些元件在元件库里面没有模型,故不能进行全部仿真智能识别颜色系统。 下图为小车驱动电机的仿真 从上图可以看出L298N的输入为高低高低,而ENA、ENB都为高电平表示两个电机都是正向行驶的。 第五章 系统调试 5.1硬件调试 5.1.1颜色识别电路调试 5.1.2 智能小车调试 5.2 综合调试 第六章 结论 经过几个月的奋战,论文的文字叙述已经完成。开始进行相关图形的绘制工作和电路的设计工作。在设计电路初期,由于没有设计经验,觉得无从下手,空有很多设计思想,却不知道应该选哪个,经过导师的指导,我的设计渐渐有了头绪,通过查阅资料,逐渐确立系统方案。方案中颜色识别用TCS230颜色传感器,控制器用常用的STC89C52 27 单片机。 当我终于完成了所有打字、绘图、排版、校对的任务后整个人都很累,但同时看着电脑荧屏上的毕业设计稿件我的心里是甜的,我觉得这一切都值了。这次毕业论文的制作过程是我的一次再学习,再提高的过程。在论文中我充分地运用了大学期间所学到的知识。 我不会忘记这难忘的几个月的时间。毕业论文的制作给了我难忘的回忆。在我徜徉书海查找资料的日子里,面对无数书本的罗列,最难忘的是每次找到资料时的激动和兴奋;亲手设计电路图的时间里,记忆最深的是每一步小小思路实现时那幸福的心情;为了论文我曾赶稿到深夜,但看着亲手打出的一字一句,心里满满的只有喜悦毫无疲惫。这段旅程看似荆棘密布,实则蕴藏着无尽的宝藏。我从资料的收集中,掌握了很多单片机、传感器的知识,让我对我所学过的知识有所巩固和提高,并且让我对当今单片机、传感器的最新发展技术有所了解。在整个过程中,我学到了新知识,增长了见识。在今后的日子里,我仍然要不断地充实自己,争取在所学领域有所作为。 脚踏实地,认真严谨,实事求是的学习态度,不怕困难、坚持不懈、吃苦耐劳的精神是我在这次设计中最大的收益。我想这是一次意志的磨练,是对我实际能力的一次提升,也会对我未来的学习和工作有很大的帮助。 在这次毕业设计中也使我们的同学关系更进一步了,同学之间互相帮助,有什么不懂的大家在一起商量,听听不同的看法对我们更好的理解知识,所以在这里非常感谢帮助我的同学。 在此更要感谢我的导师和专业老师,是你们的细心指导和关怀,使我能够顺利的完成毕业论文。在我的学业和论文的研究工作中无不倾注着老师们辛勤的汗水和心血。老师的严谨治学态度、渊博的知识、无私的奉献精神使我深受启迪。从尊敬的导师身上,我不仅学到了扎实、宽广的专业知识,也学到了做人的道理。在此我要向我的导师致以最衷心的感谢和深深的敬意。 参考文献 [1] 张宪 宋立军. 传感器与测控电路[M].化学工业出版社.2011 28 [2] 颜利彪 范蟠果(基于单片机的简易智能电动车(电子技术. 2004. [3]童诗白,华成英 主编.模拟电子技术基础(第4版) 高等教育出版社 [4]肖海荣.张吉卫.基于89C52单片机的智能电动车电控系统设计 [J] .山东交通学院学报.2004(1) 单片机应用与接口技术.机械工业出版社 [5]周坚 等编著. [6]韩俊淑 韩佳文等 智能车辆的研究及发展.世界汽车.2003年9期 [7]范立南,谢子殿主编.单片机原理及应用教程[M].北京:北京大学出版社.2006 [8]黄惠媛,李润国主编.单片机原理与接口技术[M].北京:海洋出版社.2006 [9]邓岳,周辉,谈英姿.基于MC9S12DG128单片机智能车设计与实现 [J] -实验室研究与探索.2008(1) [10]肖海荣.张吉卫.基于89C52单片机的智能电动车电控系统设计 [J] -山东交通学院学报.2004(1) [11] Jayanta Mukherjee a,*, Manfred K. Lang b, S.K. Mitra. Demosaicing of images obtained from single-chip imaging sensors in YUV color space. [J]. 2005 王嘉楠 边天剑.智能小车研究与设计. 科技致富向导.2011年26期 [12] 李瀚霖 [13] 贾伯年 俞朴 宋爱国.传感器技术[M].东南大学出版社.20070201 [14] 胡健主编.单片机原理及接口技术实践教程[M].北京:机械工业出版社.2004 附录 附录?:元件清单 元件 数量 元件 数量 元件 数量 直流电机 2只 玩具小车 1辆 单片机 2片 排针 若干 二极管 若干 电容 若干 颜色传感器 1只 LED 若干 万用板 2块 11.0592M晶振 1只 杜邦线 若干 电阻 若干 蜂鸣器 1个 1N4007 若干 其他元件 若干 29 附录?:硬件设计原理图 VCC D1D2D3D4VCCVCCLEDLEDLEDLEDVCCR1R210k10kC1R14Ring4.7uF1kR5R6R7R8U2VCC330330330330S218S0S2S327S1S3R436OUTOEOUTVCC451kVSSVDDR310kTCS230 VCCQ1U18S0139S0LED_CON7P10P00S1238S16P11P01S2337S25P12P02S3436S34P13P03EN535OUT3P14P04OUT634LED_CON2P15P057331P16P06LED_CON832P17P071kR9INB1VCC1321INT1P20ENB1222INT0P21GREENINB223P22ENA1524T1P23R101N40071N40071N40071N4007INA11425T0P24C4INA2261kP25C2C30.1uF3127EA/VPP26RED30pF30pF28Ring电机1P2719U?X1118INA152X2IN1OUT1211.0592MHzINA273IN2OUT2910INB11013RESETRXDIN3OUT3S11INB21214VCCTXDIN4OUT411730ENA61RDALE/PEN ASEN A210uFC51629ENB1115WRPSENEN BSEN B电机2R11STC89C52L298N(15)1N40071N40071N40071N400710k1kR13REDR121kGREEN 附录?:软件程序 #include #include #include typedef unsigned char uchar; typedef unsigned int uint; /****************引脚定义*********************/ sbit tcs230_s2 = P1^2; //TCS3200 S2 sbit tcs230_s3 = P1^3; //TCS3200 S3 sbit tcs230_s0 = P1^0; //TCS3200 S0 模块内部默认上拉 sbit tcs230_s1 = P1^1; //TCS3200 S1 模块内部默认上拉 30 sbit tcs230_en = P1^4; //TCS3200 OE 模块内部接地 sbit LED = P1^7; //定义电机控制端 sbit ENA=P2^3;//左电机输出使能 sbit ENB=P2^1;//右电机输出使能 sbit INA1=P2^4;//左电机控制端1 sbit INA2=P2^5;//左电机控制端2 sbit INB1=P2^0;//右电机控制端1 sbit INB2=P2^2;//右电机控制端2 sbit Ring=P2^7;//蜂鸣器 /**************变量、常量定义*****************/ uint rb,gb,bb;//RGB值 uint ryz,gyz,byz;//分别定义红色因子 绿色因子 蓝色因子 /**************延时函数******************************/ void delay(unsigned int k) { unsigned int i,j; for(i=0;i0;j--) for(k=250;k>0;k--); } /******************************************* * 函数名称: baipingheng() * 函数功能: 白平衡子程序 * 入口参数: 无 * 出口参数: 无 /********************************************/ void baipingheng() { /**************求取红色因子************/ TH0=(65536-10000)/256; TL0=(65536-10000)%256; TH1=0; TL1=0; tcs230_s2=0; tcs230_s3=0;//选择红色滤光器 tcs230_en=0; TR0=1;//10毫秒开始计时 TR1=1;//开始计数 while(TF0==0);//等待定时器溢出 TF0=0;//清楚定时器0溢出标志 TR0=0;//关闭定时0 TR1=0; 32 ryz=TH1*256+TL1;//其实这里的比例因子应该为255/(TH1*256+TL1) //TH1*256+TL1(把T1里的二进制计数值转换为10进制时就这 样算)就相当于cishu=((TH1<<8)|TL1);是外部中断1计数模式获取指定时间内的脉冲个 数 /**************求取蓝色因子*******************/ TH0=(65536-10000)/256; TL0=(65536-10000)%256; TH1=0; TL1=0; tcs230_s2=0; tcs230_s3=1;//选择蓝色滤光器 TR0=1;//10毫秒开始计时 TR1=1;//开始计数 while(TF0==0);//等待定时器溢出 TF0=0;//清楚定时器0溢出标志 TR0=0;//关闭定时0 TR1=0; byz=TH1*256+TL1;//其实这里的比例因子应该为255/(TH1*256+TL1) /**************求绿色因子*********************/ TH0=(65536-10000)/256; TL0=(65536-10000)%256; TH1=0; TL1=0; tcs230_s2=1; tcs230_s3=1;//选择绿色滤光器 TR0=1;//10毫秒开始计时 TR1=1;//开始计数 while(TF0==0);//等待定时器溢出 33 TF0=0;//清楚定时器0溢出标志 TR0=0;//关闭定时0 TR1=0; tcs230_en=1; gyz=TH1*256+TL1;//其实这里的比例因子应该为255/(TH1*256+TL1) } /******************************************* * 函数名称: yanseshib() * 函数功能: 颜色识别子程序 * 入口参数: 无 * 出口参数: 无 /********************************************/ void yanseshib() { /*********求R值**************/ TH0=(65536-10000)/256; TL0=(65536-10000)%256; TH1=0; TL1=0; tcs230_s2=0; tcs230_s3=0;//选择红色滤光器 tcs230_en=0; TR0=1;//10毫秒开始计时 TR1=1;//开始计数 while(TF0==0);//等待定时器溢出 TF0=0;//清楚定时器0溢出标志 TR0=0;//关闭定时0 TR1=0; rb=(unsigned long)(TH1*256+TL1)*255/ryz; if(rb>255)rb=255;//判断RGB值是否合法 34 /***********求B值****************/ TH0=(65536-10000)/256; TL0=(65536-10000)%256; TH1=0; TL1=0; tcs230_s2=0; tcs230_s3=1;//选择蓝色滤光器 TR0=1;//10毫秒开始计时 TR1=1;//开始计数 while(TF0==0);//等待定时器溢出 TF0=0;//清楚定时器0溢出标志 TR0=0;//关闭定时0 TR1=0; bb=(unsigned long)(TH1*256+TL1)*255/byz; if(bb>255)bb=255;//判断RGB值是否合法 /***********求G值***********************/ TH0=(65536-10000)/256; TL0=(65536-10000)%256; TH1=0; TL1=0; tcs230_s2=1; tcs230_s3=1;//选择绿色滤光器 TR0=1;//10毫秒开始计时 TR1=1;//开始计数 while(TF0==0);//等待定时器溢出 TF0=0;//清楚定时器0溢出标志 TR0=0;//关闭定时0 TR1=0; 35 tcs230_en=1; gb=(unsigned long)(TH1*256+TL1)*255/gyz; if(gb>255)gb=255;//判断RGB值是否合法 } /******************************************* * 函数名称: main() * 函数功能: 主函数 程序入口 * 入口参数: 无 * 出口参数: 无 /********************************************/ void main() { delay(10); LED = 0; //蜂鸣器滴两声 Ring=0;delay1();Ring=1;delay1(); Ring=0;delay1();Ring=1;delay1(); //控制电机转动,即小车前进 ENA=1;ENB=1; INA1=0;INA2=1; INB1=0;INB2=1; tcs230_s0=1; tcs230_s1=1; //选择输出比例因子100% 全频率输出 TMOD=0x51; //设定T0以工作方式1定时10毫秒 T0为延时 T1为计 数 baipingheng();//上电时先白平衡一次 while(1) { yanseshib();//颜色测试 36 if((rb>=170)&&(bb<=100)&&(gb<=100)) //(rb>=100)||(bb<=50)||(gb<=50) { ENA=0;ENB=0;//停止 } else if((gb>=0)&&(rb<=170)&&(bb>=0)) { ENA=1;ENB=1;//前行 } } } 附录?:实物图 37
/
本文档为【智能小车论文】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索