基于树莓派的wifi小车的设计与实现论文_第1页
基于树莓派的wifi小车的设计与实现论文_第2页
基于树莓派的wifi小车的设计与实现论文_第3页
基于树莓派的wifi小车的设计与实现论文_第4页
基于树莓派的wifi小车的设计与实现论文_第5页
已阅读5页,还剩46页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

职场大变样社区():下载毕业设计成品全套资料,全部50元以下基于树莓派的wifi小车的设计与实现摘 要本论文有两个目的:1)实现wifi小车的基本功能:使用树莓派(单片机)以及各种电子元器件,组装完成一个智能小车,通过Python、Java、C控制树莓派(单片机)的GPIO,自己编码写出小车前进、后退、左转、右转函数,通过烧写软件将程序烧写进小车,从而实现小车的前进后退转弯功能,2)高级功能拓展:通过无线模块,自己编码写出小车遥控器控制小车电机运行的代码,实现遥控器按键对应小车电机运行的功能,从而实现遥控按键实现小车的遥控功能,可以通过遥控器控制小车前后左右运行。开发一个基于TCP/IP协议的客户端,可以使得接于同一路由器上的客户端实现实时通信。关键词:树莓派;单片机;智能;小车The Design and Implementation of Wifi Car Based On Raspberry PiAbstractThere are two-fold purposes in this study. That is, 1) the implementation of essential features for Wifi car. We first assembled a smart car using raspberry pi(Microcontrollers) and diverse kinds of electronic components, then controlled raspberries GPIO using Python, Java and C programming to drive the car, code function of run, backrun, turn left, trun right by myself, burn it by writing software to program written into the car, then make we can drive the car; 2) advanced features. Through the wireless module, we can realize the function of remote control button corresponding to the car motor running, so as to realize the remote control function of remote control buttons to achieve the car, through the remote control car running around. We developed a car control system, which is capable of TCP/IP communication between the car and other devices connected into the same wifi router. Moreover, a client based on TCP/IP protocol was developed in order to communicate in real time with other clients connected into the same router.Key words:Raspberry Pi;Microcontrollers;Intelligence;Car目 录1 绪论51.1 树莓派简介51.2 树莓派的不同版本51.3 安装与启动81.3.1 安装系统81.3.2 启动系统81.4 单片机的介绍92 采用技术介绍112.1 嵌入式系统112.2 单片机112.3 USB-TTL112.4 串口通信122.5 红外遥感122.6 C语言123 元件准备与组装133.1 所需元件133.2 电路图与原理图134 具体设计思路及代码164.1 组装小车164.2 安装电子器件164.3 安装小车驱动164.4 安装STC烧写软件174.5 程序烧写方法174.6 安装开发软件Keil_Vision4204.7 配置了解开发环境204.8 代码部分(C)214.8.1 小车前进部分214.8.2 小车后退部分224.8.3 小车左转部分244.8.4 小车右转部分254.8.5 小车前进后退254.8.6 小车前后左右264.8.7 小车综合实验274.8.8 小车遥控实验305 调试与测试335.1 进行小车前进测试335.2 进行小车后退测试335.3 进行小车左转测试345.4 进行小车右转测试345.5 进行小车前后左右综合测试35参考文献36致 谢36外文资料38中文翻译461 绪论1.1 树莓派简介树莓派(Raspberry Pi) 是一款基于 Linux 的开放式嵌入式系统,通过装载相应的 Linux 系统和相应的应用程序,实现其强大的能力,同时体积小又廉价是它的又一优势。“只有信用卡大小的卡片式电脑”便是对树莓派很深切的描述,这一卡片式电脑是为学生计算机编程教育而设计的。不要小瞧了这个体积很小的东西,有句老话说的好“麻雀虽小,五脏俱全”,这么个小东西确是视频、音频等功能样样俱全。树莓派由注册于英国的慈善组织“Raspberry Pi 基金会”开发,EbenUpton/埃厄普顿为项目带头人。2012年3月,英国剑桥大学埃本阿普顿(Eben Epton)正式发售世界上最小的台式机,这就是Raspberry Pi电脑板,中文译名树莓派。这一基金会以提升学校计算机科学及相关学科的教育,让计算机变得有趣为宗旨。基金会期望这一款电脑无论是在发展中国家还是在发达国家,会有更多的其它应用不断被开发出来,并应用到更多领域。在2006年树莓派早期概念是基于Atmel的 ATmega644单片机,首批上市的10000“台”树莓派的“板子”,由中国台湾和大陆厂家制造。这是一个小型的基于ARM的PC主板,以SD / MicroSD卡为内存硬盘,围绕1/2/4 USB接口的主板卡和一个10/100以太网接口(A型没有以太网端口)可以连接键盘,鼠标,和网线,也有在视频模拟信号和HDMI高清视频输出接口电视输出连接器,上述所有集合起来放在一个只比信用卡稍大的主板上,只需要打开电视和键盘,便可以具有PC的全部功能,我们可以执行如电子表格,文字处理,玩游戏,播放高清视频等诸多功能。树莓派B款只提供电脑板、没有内存、电源、键盘、机箱或连接。树莓派的生产是通过有生产许可的三家公司Element 14/Premier Farnell、RS Components及Egoman。这三家公司都在网上出售树莓派。现在,你可以在诸如京东、淘宝等国内网站购买到你所想要的树莓派。树莓派基金会计划提供支持Python作为主要编程语言,支持Java、BBC BASIC (通过 RISC OS 映像或者Linux的Brandy Basic克隆)、C 和Perl等编程语言。1.2 树莓派的不同版本图1-1 树莓派样图1)树莓派早期有A和B两个型号,主要区别A型:1个USB、无有线网络接口、功率2.5W,500mA、256MBRAM;B型:2个USB、支持有线网络、功率3.5W,700mA、512MBRAM。2014年7月和11月树莓派分别推出B+树莓派modelB+和A+两个型号7-8,主要区别:ModelA没有网络接口,将4个USB端口缩小到1个。另外,相对于ModelB来讲,ModelA内存容量有所缩小,并具备了更小的尺寸设计。ModelA可以说是ModelB廉价版本。虽说是廉价版本,但新型号ModelA也支持同ModelB一样的Micro SD卡读卡器、40-pin的GPI连接端口、博通BCM2385ARM11处理器、256MB的内存和HDMI输出端口。8从配置上来说,modelB+使用了和modelB相同的BCM2835芯片和512MB内存,但和前代产品相比较,B+版本的功耗更低,接口也更丰富。modelB+将通用输入输出引脚增加到了40个,USB接口也从B版本的2个增加到了4个,除此之外,modelB+的功耗降低了约0.5W到1W,旧款的SD卡插槽被换成了更美观的推入式micro SD卡槽,音频部分则采用了低噪供电。从外形上来看,USB接口被移到了主板的一边,复合视频移到了3.5mm音频口的位置,此外还增加了四个独立的安装孔。7简单来说,树莓派A型与B型的区别:树莓派A型内置256MB内存,带一个USB端口,不带有线网接口。树莓派B型内置512MB内存,带两个USB端口,带100M有线网接口。(注:在2012年10月15日前发售的B型机器内存为256MB。)2)树莓派B型与B+型的区别2014年7月,“树莓派B+”版本发布,依然采用BCM2835处理器以及和上一代树莓派相同的系统软件。内存也依然是512MB;但是在以下几处关键部件做了改进:更多的GPIO针脚,40针!(老版本是26针)更多的USB接口,比老版本多2个,4个!并且对热插拔和过流保护做了改良用Micro SD插口替换了老的SD插口更低的功耗,降低了功耗0.51W音频优化,音频电路采用了专用的低噪音电源更简洁的外形,B+版本将USB接口和电路板边沿对齐了、移除AV接口,并在主板上做了4个固定孔,方便固定3)树莓派2相比前代CPU单线程速率为提升1.5倍(up by 1.5x)Sun spider跑分提升4倍(4x faster)基于NEON的多核视频解码速率提升20倍(20x faster)SysBench整体多线程CPU分数为旧版的6倍(6x)4)树莓派2B型与树莓派B型的区别搭载900MHz的四核处理器(900MHz quad-core ARM Cortex-A7 CPU),预计性能6倍于之前的B+版本1GB LPDDR2 SDRAM,2倍于之前的B+版本与1代完全兼容由于CPU已经升级到ARM Cortex-A7系,所以树莓派2将支持运行全系列的ARM GNU/Linux发行版。包括Ubuntu甚至微软的Windows10。5)红版树莓派2013年2月国内厂商深圳韵动电子取得了该产品在国内的生产及销售权限,为了便于区分市场,树莓派基金会规定韵动电子在中国大陆销售的树莓派一律采用红色的PCB,并去掉FCC及CE标示,从此,红板树莓派便来到了国内广大的树莓派爱好者身边。6)树莓派3B型与树莓派2B型的区别搭载1.2GHz的64位四核处理器(ARM Cortex-A53 1.2GHz 64-bit quad-core ARMv8 CPU)增加802.11 b/g/n无线网卡增加低功耗蓝牙4.1适配器最大驱动电流增加至2.5A1.3 安装与启动1.3.1 安装系统1)准备工作一张2G以上的SD卡,最好是高速卡,推荐Class4以上的卡,因为卡的速度直接影响树莓派的运行速度下载树莓派Debian系统系统镜像文件Windows XP和Windows 7下安装镜像的工具2)安装实战解压下载的Debian系统系统压缩文件,得到img镜像文件将SD使用卡托或者读卡器后,连上电脑解压并运行win32diskimager工具在软件中选择Debian系统的img文件,“Device”下选择SD的盘符,然后选择“Write”,然后就开始安装系统,根据SD速度,安装过程有快有慢安装结束后会弹出完成对话框,说明安装就完成了,如果不成功,请关闭防火墙一类的软件,重新插入SD进行安装安装完成后,在Windows系统下看到SD只有74MB了,这是正常现象,因为Linux下的分区Windows下是看不到的!可以使用分区软件查看SD卡,就能看到Linux下的分区,其中Ext3区属于Linux的文件系统,就和Windows的文件系统NTFS、FAT32、FAT16一样,Swap区为Linux的虚拟内存区,主要在物理内存不够用的时候,做缓存用。1.3.2 启动系统1)最低硬件配置要求2G以上安装了树莓派系统的SD卡5V/700mA以上的USB接口电源,推荐用1.5A以上的USB接口的键盘鼠标一套HDMI线,用于接显示器,或者HDMI转VGA的,HDMI转DVI的,主要看你的显示器接口2)安装树莓派先将安装好系统的SD卡插入树莓派再将USB接口的键盘和鼠标接上树莓派接上HDMI线接上电源线,并打开电源3) 启动树莓派 图1-2 安装树莓派按照上面的步骤上电后显示器会有文字,如果显示器没有显示,可能HDMI线或者转接头有问题,请检查正常会停在用户和密码登陆界面(系统是Debian系统),请输入用户名:pi,密码:raspberry,如果你发现键盘按键没有反应,说明兼容问题,请换键盘试试步骤1后出现这个界面,可能USB接口电源不足,没法给你的键盘鼠标供电了,请换一个键盘或者配合用带电源的HUB一起使用正确输入用户和密码后,就出现以下界面,说明树莓派已经正常启动了键盘输入“startx”启动图形界面,到此为止树莓派就正常启动完成了1.4 单片机的介绍什么是单片机?在一片集成电路芯片上集成计算机所有基本部分(中央处理器CPU、存储器RAM、ROM、定时计数器T/C,输入输出接口IO、中断系统)都集成在一个芯片上,从而构成了单芯片微型计算机,即单片机,也可以叫它做小电脑。由于单片机体积小、可以很方便地装在各种电子设备、家用电器的内部,因此也叫嵌入式处理器。它主要用于控制,因此被称为微控制器(MCU)。在8位单片机之后,16位单片机也有很大发展,例如1983年Intel公司推出的MCS-96系列单片机就是其中的典型代表。与MCS-51相比,MCS-96不但字长增加一倍,而且还具有4路或8路的IO位A/D转换功能,此外,在其它性能方面也有一定的提高。近年来,随着 ARM(主要是多媒体)处理器在全球范围的流行,32位的RISC嵌入式处理器已经开始成为高中端嵌入式应用和设计的主流。嵌入式微处理器是在通用微处理器MPU的基核上,添加MPU外围单元和满足对象测控要求的外围接口电路,构成一个嵌入式应用的单芯片形态计算机系统。早期Intel公司将通用微处理器80386与定时器计数器、DMA、中断系统、串行接口、并行口、WDT及MMU存储器管理部件集成在一个芯片上,构成的386EX是典型的嵌入式微处理器。嵌入式微处理器由于其总线IO地址与微处理器构成的PC机兼容,易于开发,有较好的操作系统支持,又是单片形态的嵌入式系统,因此,在许多中小型嵌入式应用系统中广泛使用。2 采用技术介绍2.1 嵌入式系统嵌入式系统(Embedded system),是一种可以完全嵌入受控器件内部,为了实现特定的功能而产生的专用计算机系统,像现在越来越发吸引人们注意的智能家居,大部分都是嵌入式系统的应用,根据英国电气工程师协会( U.K. Institution of Electrical Engineer)的定义,嵌入式系统为控制、监视或辅助设备、机器或用于工厂运作的设备。嵌入式系统是用来控制或者监视机器、装置、工厂等大规模设备的系统。大多数人认同的嵌入式定义为:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。通常,嵌入式系统是一个控制程序存储在ROM中的嵌入式处理器控制板。一个或几个微处理器或者单片机组成了嵌入式的核心,这几个微处理器都预先编程好以用来执行少数几项任务的。与通用计算机能够运行用户选择的软件不同,嵌入式系统上的软件通常是一般不会做变动的,所以经常称为“固件”。2.2 单片机单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。2.3 USB-TTLUSB-TTL模块是一款USB转UART功能模块,专门为JASK51系列无线透传模块的应用而设计,以下介绍一下USB-TTL模块的功能特点和使用方法。1)串口数据通信2)用于测试无线透传模块是否正常工作及其基本工作特性3)可用于STC、LPC、机顶盒等串口程序烧写的芯片进行程序烧录和固件升级2.4 串口通信串行接口是一种可以将接受来自CPU的并行数据字符转换为连续的串行数据流发送出去,同时可将接受的串行数据流转换为并行的数据字符供给CPU的器件。一般完成这种功能的电路,称为串行接口电路。串口通信(Serial Communications)的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。2.5 红外遥感红外遥感(Infrared remote sensing)是指传感器工作波段限于红外波段范围之内的遥感。2.6 C语言C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。3 元件准备与组装3.1 所需元件1)树莓派B+ 1块(由于树莓派使用并不熟练,暂时先用STC89C52RC实现功能)2)8G Class-10的TF卡 1张;3)罗技C110摄像头 1个;4)4WD小车底盘 1个;5)LM2596-5.0DC降压模块 1个;6)18650电池盒(至少两节电池的) 1个;7)18650电池 2个或2个以上;8)L298n电机驱动模块 1个。9)碳刷加强型马达 4个10)抗滑车轮 4个11)红外线接收头12)可调式红外壁障模块13)高性能稳压电路模块14)超声波测距模块+舵机控制系统15)两路电机控制系统3.2 电路图与原理图图3-1 Hj-4WD原理图图3-2 电机驱动原理图图3-3 小车模块原理图4 具体设计思路及代码4.1 组装小车Step1:先把小车底板、紧固件、码盘的黄色保护纸撕掉,然后把紧固件插入小车底板;Step2:安装码盘,并把电机固定于底板;Step3:插入螺丝,把电机固定到小车底板,并拧上螺帽;Step4:手捏住电机(保护紧固件),并往里面插入轮子;Step5:确认固定好,小车组装基本完成。4.2 安装电子器件Step1:安装好STC芯片;Step2:安装18650电池盒(可安装2节18650电池);Step3:安装USB下载模块,实现串口通信功能,通过此接口,实现小车和PC之间的USBTTL通信;Step4:安装高性能稳压电路模块,实现过热保护与短路保护功能;Step5:安装舵机控制系统;Step6:安装显示数码管;Step7:安装2路电机控制系统,实现直接独立控制每一个电机的独立运行,使小车运行更加稳定,动力更强劲。小车基本装载完毕。4.3 安装小车驱动1. 开发程序之前必须完成安装USB转串口驱动(本次采用的USB转串口芯片是CH340D芯片,需要安装对应的CH340D驱动,驱动可从网上下载),直接用USB线连接电脑可以自动下载,如果不能自动下载,需要自行手动安装(从网上下载对应驱动之后,手动安装)图4-1 烧写软件图2. 驱动程序安装不成功解决办法1) 检查电脑主板USB主驱动有没有正常安装好;2) 检查驱动有没有安装正确,要安装对应自己电脑的驱动版本,如Windows 7 32位与64位的驱动并不同。3) 电脑主板USB驱动硬件接口已损坏,兼容性差,可以换一个USB重新尝试。4) 接入USB线后出现硬件无法识别,可能是因为USB接口的问题,也有一定可能是芯片装反,需要格外注意。4.4 安装STC烧写软件安装首先解压STC-ISP-V4.83.EXE文件,然后以管理员模式以及兼容模式打开STC-ISP-V4.83.exe应用程序,即可打开烧写软件。4.5 程序烧写方法1. 直接用电脑串口烧写程序,当配有电脑9针串口线时,一头接入单片机串口,别一头接到电脑主机后面的9针串口接口,还有接上单片机USB电源供电线,一头接到板USB接口上,一头接到电脑USB接口上。2. 用USB转串口线烧写程度,当配有USB转串口线时,本线需要安装驱动,装好驱动后,一头接到单片机串口上,另一头接入电脑USB接口,这个时候电脑会找到硬件,一般会自动安装好,打开设备管理器,可以看到USB转串口线的COM号,可以自行修改COM号。3. 打开软件后按软件步骤开始设置,首先要选择芯片型号。图4-2 烧写过程选择串口4. 然后打开程序文件,打开已经写好的小车代码。图4-3 打开hex文件5. 选择串行口。图4-4 选择串行口这里的串行口应该与小车连接上电脑后的设备管理器的端口号相同。图4-5 匹配串行口6. 打开小车上的下载,点击Download/下载,之后会把代码下载到芯片上,打开小车电源,小车可以根据程序代码行动。图4-6 过程附图5可能会遇到的问题以及解决办法:我在执行时,遇到以下问题:Chinese:正在尝试与 MCU/单片机 握手连接 . Chinese:连接失败,请尝试以下操作: .在单片机停电状态下,点下载按钮,再给单片机上电 .停止下载,重新选择 RS-232 串口, 接好电缆 .可能需要先将 P1.0/P1.1 短接到地 .可能外部时钟未接 .因 PLCC、PQFP 转换座引线过长而引起时钟不振荡,请调整参数 .可能要升级电脑端的 STC-ISP.exe 软件 .若仍然不成功,可能 MCU/单片机内无 ISP 系统引导码,或需退回升级,或 MCU 已损坏 .若使用 USB 转 RS-232 串口线下载,可能会遇到不兼容的问题,可以让我们帮助购买兼容的 USB 转 RS-232 串口线仍在连接中, 请给 MCU 上电如图:图4-7 下载失败1解决办法:关闭下载,重新打开下载,问题即可解决。提示如下:图4-8 下载失败2MCU Type is: STC89C52RCMCU Firmware Version: 6.6CChinese:MCU 固件版本号: 6.6CDouble speed / 双倍速: 12T/单倍速振荡放大器增益: full gain下次下载时 P1.0/P1.1 与下载无关内部扩展AUX-RAM: 允许访问(强烈推荐)下次下载用户应用程序时将数据Flash区擦除: NO用户软件启动内部看门狗后: 复位关看门狗ALE pin 仍为 ALE内部时钟频率:11.131948M.外部时钟频率:11.131948M.4.6 安装开发软件Keil_Vision4由于树莓派资料过于少,自行研究困难有点多,本次使用的芯片为51单片机,用到的软件为Keil_Vision4,51单片机开发环境的建立包括软件开发环境的建立和硬件开发环境的建立两大部分,软件开发环境的建立主要是要安装好Keil软件和USB驱动程序、ISP下载软件,硬件开发环境的建立主要是要设置好51单片机综合学习系统,并和电脑连接好。4.7 配置了解开发环境2009年2月发布Keil Vision4,Keil Vision4引入灵活的窗口管理系统,使开发人员能够使用多台监视器,并提供了视觉上的表面对窗口位置的完全控制的任何地方。新的用户界面可以更好地利用屏幕空间和更有效地组织多个窗口,提供一个整洁,高效的环境来开发应用程序。新版本支持更多最新的ARM芯片,还添加了一些其他新功能。2011年3月ARM公司发布最新集成开发环境RealView MDK开发工具中集成了最新版本的Keil Vision4,其编译器、调试工具实现与ARM器件的最完美匹配。4.8 代码部分(C)4.8.1 小车前进部分实现小车的前进操作,通过代码设置小车驱动模块IO,通过0/1信号对小车电机进行控制,实现小车电机正转,小车四个轮子的电机同时向前转动,实现小车向前运行的操作。/包含51单片机头文件,内部有各种寄存器定义#include/定义小车驱动模块输入IO口sbit IN1=P10;sbit IN2=P11;sbit IN3=P12;sbit IN4=P13;sbit IN5=P14;sbit IN6=P15;sbit IN7=P16;sbit IN8=P17;/延时函数void delay(unsigned int k) unsigned int x,y;for(x=0;xk;x+) for(y=0;y2000;y+);/*/全速前进函数 void run(void) IN1=1; IN2=0; IN3=1; IN4=0; IN5=1; IN6=0; IN7=1; IN8=0;/P1=0X55;/*/ /主函数void main(void)delay(100); run(); /调用前进函数while(1)/无限循环 run();/调用前进函数此处贴一个单片机读取的hex文件::10000300E4FDFCC3ED9FEC9E5015E4FBFA0BBB0033:0F001300010ABA07F8BBD0F50DBD00010C80E45F:0100220022BB:10002300D290C291D292C293D294C295D296C297E1:0100330022AA:10003400C290D291C292D293C294D295C296D297D0:010044002299:0F0045001200237F647E0012000312003480FB40:03000000020054A7:0C005400787FE4F6D8FD758107020045B6:00000001FF4.8.2 小车后退部分实现小车的后退操作,通过代码设置小车驱动模块IO,通过0/1信号对小车电机进行控制,实现小车电机反转,小车四个轮子的电机同时向后转动,实现小车向后运行的操作。/包含51单片机头文件,内部有各种寄存器定义#include /定义小车驱动模块输入IO口 sbit IN1=P10;sbit IN2=P11;sbit IN3=P12;sbit IN4=P13;sbit IN5=P14;sbit IN6=P15;sbit IN7=P16;sbit IN8=P17;/延时函数void delay(unsigned int k) unsigned int x,y;for(x=0;xk;x+) for(y=0;y2000;y+);/*/全速前进函数 void run(void) IN1=1; IN2=0; IN3=1; IN4=0; IN5=1; IN6=0; IN7=1; IN8=0;/P1=0X55;/*/全速后退函数 void backrun(void)IN1=0; IN2=1; IN3=0; IN4=1; IN5=0; IN6=1; IN7=0; IN8=1;/*/主函数void main(void) run(); /调用前进函数前进后再进入 无限循环 小车后退delay(100);while(1)/无限循环 backrun();/调用后退函数4.8.3 小车左转部分实现小车的左转操作,通过代码设置小车驱动模块IO,通过0/1信号对小车电机进行控制,实现小车左转,小车左侧两个电机向后转,右侧两个电机向前转,从而实现小车向左转的操作。/全速左转函数void leftrun(void)IN1=1; IN2=0; IN3=1; IN4=0; IN5=0; IN6=1; IN7=0; IN8=1;/*/主函数void main(void) run(); /调用前进函数前进后再进入 无限循环 小左转delay(100);while(1)/无限循环 leftrun();/调用左转函数4.8.4 小车右转部分实现小车的右转操作,通过代码设置小车驱动模块IO,通过0/1信号对小车电机进行控制,实现小车右转,小车右侧两个电机向后转,左侧两个电机向前转,从而实现小车向右转的操作。/全速右转函数 void rightrun(void)IN1=0; IN2=1; IN3=0; IN4=1; IN5=1; IN6=0; IN7=1; IN8=0;/*/主函数void main(void) run(); /调用前进函数前进后再进入 无限循环 小右转delay(100);while(1)/无限循环 rightrun();/调用右转函数4.8.5 小车前进后退/主函数void main(void)run();/调用前进函数前进后再进入 无限循环 前进再后退运动delay(100);while(1)/无限循环run();/调用前进函数delay(200);backrun();/调用后退函数delay(200);4.8.6 小车前后左右/电机停止转动函数 void stop(void)IN1=0; IN2=0; IN3=0; IN4=0; IN5=0; IN6=0; IN7=0; IN8=0;/P1=0X00;/*/主函数void main(void) run(); /调用前进函数前进后再进入 无限循环 前进再后退运动delay(100);while(1)/无限循环 run();/调用前进函数delay(200);backrun(); /调用后退函数delay(200);leftrun(); /调用左转函数delay(200);rightrun();/调用右转函数delay(200);stop(); /调用停止转动函数delay(800);delay(800);delay(800);delay(800);delay(800);delay(800);delay(800);delay(800);delay(800); 4.8.7 小车综合实验将前进后退左转右转函数写入头文件头文件:#ifndef _LED_H_#define _LED_H_/定义小车驱动模块输入IO口 sbit IN1=P10;sbit IN2=P11;sbit IN3=P12;sbit IN4=P13;sbit IN5=P14;sbit IN6=P15;sbit IN7=P16;sbit IN8=P17;/延时函数void delay(unsigned int k) unsigned int x,y;for(x=0;xk;x+) for(y=0;y2000;y+);/*/全速前进函数 void run(void) IN1=1; IN2=0; IN3=1; IN4=0; IN5=1; IN6=0; IN7=1; IN8=0;/P1=0X55;/*/全速后退函数 void backrun(void)IN1=0; IN2=1; IN3=0; IN4=1; IN5=0; IN6=1; IN7=0; IN8=1;/*/全速左转函数 void leftrun(void)IN1=1; IN2=0; IN3=1; IN4=0; IN5=0; IN6=1; IN7=0; IN8=1;/*/全速右转函数 void rightrun(void)IN1=0; IN2=1; IN3=0; IN4=1; IN5=1; IN6=0; IN7=1; IN8=0;/*/电机停止转动函数 void stop(void)IN1=0; IN2=0; IN3=0; IN4=0; IN5=0; IN6=0; IN7=0; IN8=0;/P1=0X00;/*/#endifMain.c#include /包含51单片机头文件,内部有各种寄存器定义#include /包含小车驱动IO口定义等函数/主函数void main(void) run(); /调用前进函数前进后再进入 无限循环 前进再后退运动delay(100);while(1)/无限循环 run();/调用前进函数delay(200);backrun(); /调用后退函数delay(200);leftrun(); /调用左转函数delay(200);rightrun();/调用右转函数delay(200);stop(); /调用停止转动函数delay(800);delay(800);delay(800);delay(800);delay(800);delay(800);delay(800);delay(800);delay(800); 4.8.8 小车遥控实验通过遥控器发送信号给小车的无线模块,信号中传输遥控器的按键信息,根据信号,调用对应的小车的前进后退函数,从而实现小车遥控。/*无线模块有7条线定义:无线摇控模块与单片机连接无线模块GND +5取自于单片机板的5V输出P0_7 与无线模块D0相连P0_6 与无线模块D1相连P0_5 与无线模块D2相连P0_4 与无线模块D3相连把无线模块插入单片机J4(LCD1602右边上J10位置有写GND VCC D3 D2 D1 D0 VT)接口中 不要接错线,否则烧坏模块*/#include/小车驱动接线定义#define Left_moto_goP1_4=1,P1_5=0,P1_6=1,P1_7=0; /左边两个电机向前走#define Left_moto_backP1_4=0,P1_5=1,P1_6=0,P1_7=1; /左边两个电机向后转#define Left_moto_StopP1_4=0,P1_5=0,P1_6=0,P1_7=0; /左边两个电机停转#define Right_moto_goP1_0=1,P1_1=0,P1_2=1,P1_3=0; /右边两个电机向前走#define Right_moto_backP1_0=0,P1_1=1,P1_2=0,P1_3=1; /右边两个电机向后走#define Right_moto_StopP1_0=0,P1_1=0,P1_2=0,P1_3=0; /右边两个电机停转/*/延时函数void delay(unsigned int k)unsigned int x,y;for(x=0;xk;x+)for(y=0;y2000;y+);/*/全速前进void run(void)Left_moto_go;/左电机往前走Right_moto_go ;/右电机往前走/全速后退void backrun(void)Left_moto_back ;/左电机往前走Right_moto_back;/右电机往前走/左转void leftrun(void)Left_moto_back ;/左电机往前走Right_moto_go ;/右电机往前走/右转void rightrun(void)Left_moto_go ;/左电机往前走Right_moto_back ;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论