智能小车_嵌入式系统设计
基于蓝牙遥控的智能小车设计【范本模板】

《嵌入式系统设计》项目设计报告题目:基于蓝牙技术的智能遥控小车的设计专业:自动化班级:姓名:学号:指导老师:成绩:( 2015.12)摘要随着汽车工业的迅速发展,关于汽车的研究也就越来越受人关注.遥控小车起源于美国,由于政府对无线遥控小车研发的资助以及相关资助的推动作用,日本、美国、德国等工业大国在遥控小车技术上占据着明显优势.我国的无线遥控小车研究工作始于20世纪中后期,在国家的863、973等技术发展计划的重点支持下,国内已大范围地进行无线遥控小车的研究。
全国电子大赛和省内电子大赛几乎每次都有智能小车这方面的题目,全国各高校也都很重视该题目的研究,但是与国际先进还存在一定的差距。
可见其研究意义很大。
本设计就是在这样的背景下提出的。
设计的智能电动小车能够实现无线遥控,串口通讯,实时检测速度,避障碍等功能。
无线遥控实现方法包括蓝牙、红外、射频几种,其中蓝牙技术具有一定优势,目前在信息家电方面应用正在铺设。
各种家电共用遥控,并可组网与公众互联网相接,共享有用信息。
目前蓝牙技术实现无线遥控的短板在于传输距离短和芯片价格高方面.但随着科技发展,这些问题正在逐步得以解决。
无线遥控机器人有着广阔的应用前景。
无线遥控的小车,可以在危险的环境作业,人员搜索,可以在各类领域中发挥着它特殊的作用,本次设计是选择基于蓝牙遥控的多功能智能小车为对象。
控制系统以C51单片机为主控芯片,采用L298N为电机驱动芯片、HC-06蓝牙无线模块、12864液晶显示模块、四路循迹模块等构成外围扩展电路。
将自制的控制电路、控制程序和四轮小车机械相结合,制作多功能智能小车。
实验调试实现了智能小车的蓝牙无线遥控、自动避障、自动测距及各种灯光的功能。
关键词:51单片机;蓝牙遥控;智能小车目录摘要 (1)1. 绪论............................................ 错误!未定义书签。
1.1课题目的 (4)1.2课题研究内容 (4)2 .方案论证 (4)2.1 总体方案设计 (4)2.2设计系统的功能要求 (5)2.3 系统硬件方案 (5)3.系统硬件设计 (5)3.1STC89C52芯片简介 (6)3.2 STC89C52最小系统 (7)3.3电机驱动设计 (7)3.4显示电路设计 (8)3.5 蓝牙模块设计 (8)3.6 PCB图设计 (9)3.7 智能车结构分析 (10)3.7.1 底板设计 (10)3.7.2电机与底板的连接支架设计 (10)3..7.3整体装配图 (11)4.系统软件设计 (11)4.1系统的程序流程 (11)4.2蓝牙模块参数设置程序 (12)4.3蓝牙发送程序接收程序和中断程序 (12)4.4自动避障及灯光声音控制程序设计 (13)4.5液晶显示程序设计 (15)5 . 调试结果分析 (18)5.1蓝牙遥控调试及结果分析 (18)5.2避障功能调试及结果分析 (18)6.参考文献\ 附录程序 (18)1.绪论1。
嵌入式智能小车课程设计

嵌入式智能小车课程设计一、课程目标知识目标:1. 学生能理解嵌入式智能小车的基本原理,掌握小车各部件的功能和相互关系。
2. 学生能掌握嵌入式系统的基本编程方法,运用编程实现智能小车的控制功能。
3. 学生能了解传感器的工作原理,并将其应用于智能小车的环境感知。
技能目标:1. 学生能运用所学知识,设计并搭建简单的嵌入式智能小车。
2. 学生能通过编程实现对智能小车的运动控制,包括速度、方向等。
3. 学生能利用传感器采集环境信息,实现对智能小车的智能控制。
情感态度价值观目标:1. 培养学生对嵌入式系统及智能硬件的兴趣,激发学生创新意识和探索精神。
2. 培养学生团队协作意识,提高沟通与协作能力。
3. 增强学生的环保意识,培养学生对人工智能在可持续发展中的作用的认识。
课程性质:本课程为实践性较强的课程,注重理论联系实际,培养学生的动手能力和创新能力。
学生特点:六年级学生对新鲜事物充满好奇,具有一定的信息技术基础,喜欢动手实践,善于合作交流。
教学要求:结合学生特点,注重启发式教学,引导学生主动探究,提高学生解决问题的能力。
在教学过程中,关注学生的个体差异,因材施教,确保每个学生都能在课程中取得进步。
通过课程学习,使学生达到预定的知识、技能和情感态度价值观目标。
二、教学内容1. 嵌入式智能小车基础知识:- 介绍嵌入式系统的概念、发展及应用。
- 智能小车的基本结构、功能及工作原理。
2. 嵌入式系统编程:- 学习编程语言(如C语言)的基本语法。
- 掌握嵌入式系统编程方法和技巧。
- 实践编写控制智能小车的程序。
3. 传感器及其应用:- 了解常见传感器(如红外传感器、超声波传感器)的工作原理。
- 学习传感器在智能小车环境感知中的应用。
4. 智能小车设计与搭建:- 学习小车各部件的选型及组装方法。
- 实践搭建嵌入式智能小车。
5. 智能小车控制算法:- 学习简单的控制算法(如PID控制)。
- 实践编写智能小车控制程序,实现运动控制。
基于嵌入式的智能小车的设计描述

基于嵌入式的智能小车的设计描述下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。
文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!本店铺为大家提供各种类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor. I hope that after you download it, it can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you! In addition, this shop provides you with various types of practical materials, such as educational essays, diary appreciation, sentence excerpts, ancient poems, classic articles, topic composition, work summary, word parsing, copy excerpts, other materials and so on, want to know different data formats and writing methods, please pay attention!随着人工智能技术的发展,智能小车在日常生活中得到了越来越广泛的应用。
嵌入式技术的智能小车的设计

嵌入式技术的智能小车的设计
嵌入式技术的智能小车的设计是一项复杂的系统工程,主要集成电机控制、传感器技术、计算机视觉技术、避障技术、语音技术等多种先进技术,以实现小车的各种智能功能。
嵌入式技术的智能小车的设计中,最重要的部分是选择合适的电机控制系统,由于小车的负载比较小,因此必须选择能够支持低功耗、低成本、高效率的电机控制系统,来实现小车的高效率运动。
传感器技术是嵌入式技术的智能小车的设计中另外一个重点内容,小车必须装备适当数量的传感器,来实现室外环境的监测、小车路径规划以及避障行为等功能。
常见的传感器包括红外传感器、光电对射传感器、陀螺仪传感器、超声波传感器、光流传感器等,可以根据不同的应用场景选择相应的传感器,以更好地实现各种智能功能。
计算机视觉技术在智能小车的设计中也扮演着重要的角色,尤其是在室外环境下,往往需要小车获取复杂的外部信息,以便精确地导航和避障。
小车上安装计算机视觉系统,以检测周围环境,并捕捉室外物体,根据检测结果,及时进行路径调整或是避障,以避免碰撞和损坏。
最后,语音技术也是智能小车的设计中一个重要的部分,语音技术可以方便地控制小车的行为,以及实现人机交互功能。
智能小车装备语音技术,可以实现语音识别和有限状态机,根据语音输入指令,来控制小车的行为,可以将小车设计需求,快速实现智能化。
因此,嵌入式技术的智能小车的设计考虑了电机控制、传感器技术、计算机视觉技术、避障技术以及语音技术等多个因素,结合实际的技术特性和应用场景,以确定小车的设计和实现智能功能的具体方案。
只有这样,才能使智能小车拥有足够的智能特性,真正实现自主行驶和避障交互的智能机器。
医用智能轨道物流小车嵌入式控制系统设计

医用智能轨道物流小车嵌入式控制系统设计赵昆;臧铁钢;郑博文【摘要】This paper designs a kind of embedded controlling system based on S3C6410 for medical intelligent track vehicle. It is driven by hub motor and RFID technology is adopted in its location. The controller interacts with other objects by Zigbee wireless module. It is used to divide the task structure of the controller rationally based on requirement of the system real-time and dividing principles for multitasking system. The experiment results show that this controlling system is characteristic of high reliability, good real-time control and high efficiency.%设计了一种基于S3C6410处理器的医用智能轨道物流小车控制系统.该轨道小车采用轮毂电机驱动,基于RFID的路径识别技术作为定位方案,并且使用了ZigBee无线技术来与中央控制器和系统中的其他对象进行交互.根据控制系统实时性和多任务划分的原则,合理划分了小车控制系统的任务组成结构.经试验验证该小车控制系统实时性好,可靠性高,能够高效率完成物流任务.【期刊名称】《机械制造与自动化》【年(卷),期】2017(046)004【总页数】3页(P192-194)【关键词】医用智能轨道物流小车;RFID;ZigBee【作者】赵昆;臧铁钢;郑博文【作者单位】南京航空航天大学机械电子工程系,江苏南京210016;南京航空航天大学机械电子工程系,江苏南京210016;南京航空航天大学机械电子工程系,江苏南京210016【正文语种】中文【中图分类】TP273医院轨道物流传输系统是指在中央计算机的控制下,利用行驶在专用轨道上的智能载物小车,在位于不同物流任务频繁的科室中的站点之间进行物品传输的系统[1-2]。
智能小车控制系统设计实现

关键词:智能小车;控制系统;设计和实现1智能小车控制系统概述智能小车控制系统是一个综合、复杂的系统,其既有多种技术,也含有嵌入式的软件设备和硬件设备、图像识别、自动控制和电力传动、机械结构等技术知识,智能小车的控制系统主要是围绕嵌入式控制系统进行的,将其作为操控的中心,并借助计算机系统,最终完成自动造作和控制的过程[1]。
智能小车的控制系统流程图见图1所示。
2智能小车的设计和实现2.1智能小车的硬件设计硬件设计是保证智能小车平稳运行的必要条件,它关系着控制系统的精度和稳定性,因此在设计时需要用在模块化设计思想,该研究是通过采取硬件系统K60芯片作为核心控制器,并通过图像采集模块和电机、舵机驱动模块、测速模块、电源模块等组成硬件设计系统图,见图2。
首先,电源电路设计,该设计时智能小车的动力来源,为小车运行提供不断的电力,一般采取7.3V、容量为2000mAh的可充电型的镍铬电池作为电源,但是其不能直接为控制器传输电力,需要在转变电路后才可以进行传输。
转变电路可以保证控制器直接对电池内的电压进行调节,保证不同模块可以正常工作和运行,智能小车主要是依靠控制电力和电机驱动进行转变的。
其次是K60最小系统板,在设计时需要将K60的管脚部分做成最小系统的单独电路板,这样可以简化电路板的设计,促使调试更加顺利,K60系统板主要由K60芯片、复位电路、时钟电路、JTAG下载电路、电源滤波电路组成。
再其次是电机驱动电路,该电路是在集成芯片的驱动下进行的,可以为控制器更其他模块提供较大的电流最终集成电机驱动芯片,但是要特别注意这部分因为在电机驱动过程中有较大的分功率,会导致小车在进行调试时因为过大的电流导致小车电路发生堵塞现象,而使小车电路被烧毁,因此需要设计者避免这种现象,可以将驱动电路做成驱动板[2]。
最后是舵机接口电路。
在智能小车设计中,舵机主要保证小车可以顺利转向,因此舵机的运行电压、转向动作、转向速度都是需要考虑的因素,一般选择舵机时主要选择Futaba3010,选择供电电压为6V。
智能小车设计 (2)

智能小车设计引言智能小车是一种具备自主导航和智能控制功能的机械装置,广泛应用于工业、农业、物流和家居等领域。
本文将介绍智能小车的设计原理、硬件组成和软件控制等方面内容,以帮助读者了解智能小车的基本知识和设计过程。
设计原理智能小车的设计原理基于嵌入式系统和机器人技术。
它通过激光雷达、摄像头、超声波传感器等传感器获取周围环境信息,利用这些信息进行地图构建和路径规划,从而实现自主导航功能。
同时,智能小车还可以通过电机驱动轮子进行移动,通过各种控制算法实现具体的功能需求。
硬件组成智能小车的硬件组成主要包括以下几个模块:1. 控制中心控制中心是智能小车的大脑,它可以是一个单片机、处理器或者微控制器。
控制中心负责接收传感器的数据,进行数据处理和决策,并通过电机驱动实现小车的运动控制。
2. 传感器模块传感器模块是智能小车的感知器官,它可以包括激光雷达、摄像头、超声波传感器等。
这些传感器可以实时获取周围环境的信息,如障碍物位置、地图构建等,并将这些信息传输给控制中心进行处理。
3. 电机驱动模块电机驱动模块用于控制小车的运动。
一般情况下,智能小车使用直流电机或步进电机作为动力源,通过电机驱动器实现精确的运动控制。
控制中心可以根据传感器模块获取的环境信息控制电机的转动方向和速度,从而实现小车的导航和移动。
4. 电源模块电源模块为智能小车提供所需的电能。
根据小车的功耗情况,可以选择使用锂电池、酸性电池或者太阳能电池等不同类型的电源。
电源模块需要能够提供稳定的电压和电流,以保证智能小车的正常运行。
软件控制智能小车的软件控制是实现其智能功能的关键。
软件控制主要涉及以下几个方面:1. 嵌入式软件嵌入式软件是指运行在智能小车控制中心的软件,它主要负责接收传感器数据、进行数据处理和决策,并控制电机驱动模块实现小车的运动。
嵌入式软件一般使用C/C++语言编写,具备高效性和实时性。
2. 算法设计算法设计是智能小车设计的核心。
包括地图构建算法、路径规划算法、避障算法等。
智能寻迹小车

引言概述:智能寻迹小车是一种结合了人工智能和机械工程的创新产品。
它能够根据预设的轨迹自动行驶并进行导航,具有很高的便捷性和灵活性,适用于各种环境和任务。
在本文中,将对智能寻迹小车的设计原理、工作模式、技术优势和应用前景进行详细阐述。
正文内容:一、设计原理1.1 感知模块的设计智能寻迹小车的感知模块采用多种传感器进行环境感知,包括视觉传感器、红外线传感器和超声波传感器。
视觉传感器用于识别道路标志和障碍物,红外线传感器用于进行物体跟踪,超声波传感器用于进行距离测量。
1.2 控制模块的设计智能寻迹小车的控制模块采用嵌入式系统,实现对感知模块的数据处理和运动控制。
通过运用机器学习算法,控制模块能够学习和记忆不同轨迹的特征,从而实现自主导航和寻迹功能。
二、工作模式2.1 自主导航模式智能寻迹小车在自主导航模式下,可以根据预设的轨迹进行自动行驶,不需要人工干预。
它能够通过感知模块实时获得周围环境的信息,并根据这些信息做出相应的决策和控制。
2.2 手动遥控模式智能寻迹小车还可以切换到手动遥控模式,由人工遥控进行操作。
在这种模式下,小车的控制将完全依赖于操作者的指令,可以实时控制小车的速度和方向。
三、技术优势3.1 高精度的轨迹识别智能寻迹小车的感知模块采用先进的图像处理算法和目标识别技术,能够准确地识别出道路标志,并对轨迹进行跟踪,从而实现高精度的轨迹识别和导航。
3.2 自动避障和防碰撞智能寻迹小车的感知模块不仅可以识别道路标志,还能够探测到前方的障碍物,并实时进行避障和防碰撞。
这种智能寻迹小车能够确保行驶的安全性和可靠性。
3.3 强大的自学习能力智能寻迹小车的控制模块具有强大的自学习能力,可以通过机器学习算法不断学习和适应不同的环境和任务,提高智能寻迹小车的导航精度和性能。
四、应用前景4.1 物流领域智能寻迹小车在物流领域有着广阔的应用前景。
它能够自动化完成货物运输和仓储管理任务,提高物流效率和准确性。
4.2 安防领域智能寻迹小车可以在安防领域进行侦查和监控,通过自主导航和环境感知功能,实现对重要区域的巡逻和监测。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
智能小车是在动态不确定环境下对人工智能的考验,是以各种工控目的为载体的高科技对抗,是培养信息、自动化领域科技人才的重要手段,同时也是展示高科技水平的生动窗口和促进科技成果实用化和产业化的有效途径。
智能小车的研究融入了机器人学、机电一体化技术、通讯与计算机技术、视觉与传感器技术、智能控制与决策等多学科的研究成果,反映出一个国家信息与自动化技术的综合实力。
所以本论文对智能小车的研究意义重大。
一、总体设计方案 (2)1.总体方案 (2)2.平台选取 (2)3.可行性论证 (3)二、软件编码 (3)1.PWM模块 (3)2.红外线接收模块 (8)3.红外探头模块 (16)三、程序调试 (25)四、小结 (25)一、总体设计方案1.总体方案智能小车可在自主行驶和人工控制两种模式之间切换,并实现自动避障。
通过PWM输出驱动步进电机来实现小车的行驶,改变PWM的周期、占空比、正反则可以实现前进、后退、转弯、加速、减速等行为。
通过红外探头检测前方障碍实现自动避障。
外接红外线接收器,可以通过自制的红外线遥控来控制小车的行为。
2.平台选取EasyARM1138开发板开发板搭载Luminary LM3S1138芯片,为32位ARM Cortex –M3内核(ARM v7架构),50Mhz运行频率。
拥有7组GPIO,可配置为输入、输出、开漏、弱上拉等模式。
4个32位Timer,每个都个拆分为2个独立子定时器。
6路16位PWM,通过CCP管脚能产生高达25Mhz的方波。
自制车架车轮用步进电机精确控制,步进电机用放大电路驱动,受PWM信号控制。
锂离子电池给放大电路和开发板供电。
车架前方有红外探头,通过即时返回数据进行判断实现自动避障。
开发板外接红外线接收头,实现红外线人工控制。
编程开发平台IAR Embedded WorkbenchIAR是LM3S系列适配的开发平台之一,适合用C语言和库函数进行编程,操作简单,较易上手。
3.可行性论证LM3S1138芯片的资源比较丰富,自带Timer产生PWM方波。
智能小车的速度要求低于步进电机的最高速度,并能通过步进电机实现精准控制,每个脉冲转动一个固定角度,因此步进电机适合作为驱动。
红外线控制通过芯片对突发接收的信号进行解码,获取红外遥控的控制信息,红外解码使用流行的方案。
车架前方装有四个探头,四路信号的触发顺序可作为障碍判断的依据。
二、软件编程1.PWM模块#include <hw_types.h>#include <hw_memmap.h>#include <hw_ints.h>#include <hw_sysctl.h>#include <hw_gpio.h>#include <hw_timer.h>#include <interrupt.h>#include <sysctl.h>#include <gpio.h>#include <timer.h>#include “LM3S1138_PinMap.H”/* 定义按键 */#define KEY_PORT SYSCTL_PERIPH_GPIOG#define KEY_PIN GPIO_PORTG_BASE , GPIO_PIN_5#define keyGet() GPIOPinRead(KEY_PIN)// 定义全局的系统时钟变量unsigned long TheSysClock = 12000000UL;/**************************************************************** ** Function name: jtagWait** Descriptions: 防止JTAG失效,KEY=PG5** input parameters: 无** output parameters: 无** Returned value: 无** Created by: 张伟杰** Created Date: 2014.05.15****************************************************************/ void jtagWait(void){SysCtlPeripheralEnable(KEY_PORT); /* 使能KEY所在的GPIO端口 */GPIOPinTypeGPIOInput(KEY_PIN); /* 设置KEY所在管脚为输入 */if ( keyGet() == 0x00 ) { /* 如果复位时按下KEY,则进入 */for (;;); /* 死循环,以等待JTAG连接 */}SysCtlPeripheralDisable(KEY_PORT); /*禁止KEY所在的GPIO端口 */}/****************************************************************** Function name: Timer_0_Init** Descriptions: 初始化Timer0** input parameters: 无** output parameters: 无** Returned value: 无** Created by: 张伟杰** Created Date: 2014.05.15****************************************************************/void Timer_0_Init(void){SysCtlPeripheralEnable(CCP0_PERIPH); /*使能CCP0所在的GPIO端口PB0 */GPIOPinTypeTimer(CCP0_PORT,CCP0_PIN); /* 配置CCP0管脚为PWM输出 */SysCtlPeripheralEnable(CCP1_PERIPH); /*使能CCP1所在的GPIO端口PF6 */GPIOPinTypeTimer(CCP1_PORT,CCP1_PIN); /* 配置CCP1管脚为PWM输出 */SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER0); /*使能定时器模块 */TimerConfigure(TIMER0_BASE , TIMER_CFG_16_BIT_PAIR|TIMER_CFG_A_PWM|TIMER_CFG_B_PWM);/* 配置定时器为双16位PWM *///TimerControlLevel(TIMER0_BASE , TIMER_BOTH , false); /* 控制PWM输出反相 */}/****************************************************************** Function name: Timer_0_Level_1** Descriptions: 左右轮一档** input parameters: 无** output parameters: 无** Returned value: 无** Created by: 张伟杰** Created Date: 2014.05.15****************************************************************/void Timer_0_Level_1(void){//TimerPrescaleSet(TIMER0_BASE , TIMER_BOTH,99); /* 设置预分频值*/TimerControlLevel(TIMER0_BASE,TIMER_BOTH,true);TimerLoadSet(TIMER0_BASE , TIMER_BOTH , 60000); /* 设置定时器初值,AB均为50Hz */TimerMatchSet(TIMER0_BASE , TIMER_A , 6000); /* 设置TimerA的PWM匹配值 */TimerMatchSet(TIMER0_BASE , TIMER_B , 6000); /* 设置TimerB的PWM匹配值 */TimerEnable(TIMER0_BASE , TIMER_BOTH); /* 使能定时器计数,PWM开始输出 */}// 系统初始化void SystemInit(void){SysCtlLDOSet(SYSCTL_LDO_2_50V); //设置LDO输出电压SysCtlClockSet(SYSCTL_USE_OSC | //系统时钟设置,采用主振荡器SYSCTL_OSC_MAIN |SYSCTL_XTAL_6MHZ |SYSCTL_SYSDIV_1);/*SysCtlLDOSet(SYSCTL_LDO_2_75V); //配置PLL前须将LDO电压设置为2.75VSysCtlClockSet(SYSCTL_USE_PLL | //系统时钟设置,采用PLLSYSCTL_OSC_MAIN | //主振荡器SYSCTL_XTAL_6MHZ | //外接6MHz晶振SYSCTL_SYSDIV_10);// 分频结果为20MHz*/TheSysClock = SysCtlClockGet(); //获取系统时钟,单位:Hz }int main(void){jtagWait(); /* 防止JTAG失效,重要! */SystemInit();Timer_0_Init(); /* 定时器初始化 */Timer_0_Level_1();for (;;);2.红外接收器模块#include <hw_types.h>#include <hw_memmap.h>#include <hw_ints.h>#include <hw_sysctl.h>#include <hw_gpio.h>#include <hw_timer.h>#include <interrupt.h>#include <sysctl.h>#include <gpio.h>#include <timer.h>#include <systick.h>#include “LM3S1138_PinMap.H”/* 定义按键 */#define KEY_PORT SYSCTL_PERIPH_GPIOG#define KEY_PIN GPIO_PORTG_BASE , GPIO_PIN_5 #define keyGet() GPIOPinRead(KEY_PIN)#define IR_PORT SYSCTL_PERIPH_GPIOF#define IR_PIN GPIO_PORTF_BASE , GPIO_PIN_1// 定义全局的系统时钟变量unsigned long TheSysClock = 12000000UL;unsigned IR_flag = 0;unsigned long IR_code_32[32];unsigned long IR_code_8 = 0;unsigned a;int Time_Get( );void Delay_100_us( );/**************************************************************** ** Function name: jtagWait** Descriptions: 防止JTAG失效,KEY=PG5** input parameters: 无** output parameters: 无** Returned value: 无** Created by: 张伟杰** Created Date: 2014.05.15****************************************************************/ void jtagWait(void){SysCtlPeripheralEnable(KEY_PORT); /* 使能KEY所在的GPIO端口 */GPIOPinTypeGPIOInput(KEY_PIN); /* 设置KEY所在管脚为输入 */if ( keyGet() == 0x00 ) { /* 如果复位时按下KEY,则进入 */for (;;); /* 死循环,以等待JTAG连接 */}SysCtlPeripheralDisable(KEY_PORT); /* 禁止KEY所在的GPIO端口 */}/**************************************************************** ** Function name: IR_Int_Init** Descriptions: 初始化IR端口和中断** input parameters: 无** output parameters: 无** Returned value: 无** Created by: 张伟杰** Created Date: 2014.05.18****************************************************************/ void IR_Int_Init(void){SysCtlPeripheralEnable(IR_PORT);GPIOPinTypeGPIOInput(IR_PIN);GPIOIntTypeSet(IR_PIN,GPIO_LOW_LEVEL);GPIOPinIntEnable(IR_PIN);IntEnable(INT_GPIOF);IntMasterEnable();}// 系统初始化void SystemInit(void){SysCtlLDOSet(SYSCTL_LDO_2_50V); // 设置LDO输出电压SysCtlClockSet(SYSCTL_USE_OSC | // 系统时钟设置,采用主振荡器SYSCTL_OSC_MAIN |SYSCTL_XTAL_6MHZ |SYSCTL_SYSDIV_1);/*SysCtlLDOSet(SYSCTL_LDO_2_75V); // 配置PLL前须将LDO电压设置为2.75VSysCtlClockSet(SYSCTL_USE_PLL | // 系统时钟设置,采用PLLSYSCTL_OSC_MAIN | // 主振荡器SYSCTL_XTAL_6MHZ | // 外接6MHz晶振SYSCTL_SYSDIV_10);// 分频结果为20MHz*/TheSysClock = SysCtlClockGet(); //获取系统时钟,单位:Hz}int main(void){jtagWait(); /* 防止JTAG失效,重要! */SystemInit();IR_Int_Init();while(1){if(IR_flag == 1){IR_flag = 0;for(a = 18 ; a < 26 ; a++){IR_code_8 = IR_code_8 << 1 + IR_code_32[a];}if (IR_code_8 == 101){SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);// 使能GPIOD端口GPIOPinTypeGPIOOutput(GPIO_PORTD_BASE , GPIO_PIN_0);// 设置PD0为输入类型 //forwordGPIOPinWrite(GPIO_PORTD_BASE , GPIO_PIN_0 , 0x00);// PD0输出低电平}IR_code_8 = 0;//switch(IR_code_8)//{//case/*00000*/101:SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD); // 使能GPIOD端口// GPIOPinTypeGPIOOutput(GPIO_PORTD_BASE ,GPIO_PIN_0); // 设置PD0为输入类型//forword// GPIOPinWrite(GPIO_PORTD_BASE ,GPIO_PIN_0 , 0x00); // PD0输出低电平//case /*0000*/1101://back//case /*0000*/1000://left//case /*0000*/1010://right//case /*0000*/1001://stop//case /*000*/10100://level_1//case /*000*/10101://level_2//case /*000*/10110://level_3//default ://}//IR_code_8 = 0;}}}/****************************************************************** Function name: GPIO_PORT_F_ISR** Descriptions: GPIOF的中断服务** input parameters: 无** output parameters: 无** Returned value: 无** Created by: 张伟杰** Created Date: 2014.05.18****************************************************************/ void GPIO_PORT_F_ISR(void){unsigned ulStatus;unsigned gap = 0;unsigned start_flag = 0;unsigned data;unsigned I = 0;unsigned code_flag = 0;ulStatus = GPIOPinIntStatus(IR_PORT,false);//GPIOPinIntClear(IR_PORT,ulStatus); //消除中断//if(ulStatus && GPIO_PIN_1)//{while(1){if(GPIOPinRead(IR_PORT,ulStatus) == 1){gap = Time_Get();if(gap >=50) //不正常的起始高电平时间{break;}if(gap >=10 && gap <=20 ) //接收数据“1”{data = 1;code_flag = 1;}else if(gap >=2 && gap <=8 ) //接收数据“0”{data = 0;code_flag = 1;}else if(gap >=40 && gap <=50 ) //正常的其实高电平时间{start_flag = 1;}if(start_flag && code_flag) //code_flag和start_flag均为1{IR_code_32[i] = data;i++;if(I >= 32){IR_flag = 1;break;}}}}//}GPIOPinIntClear(IR_PORT,ulStatus); //消除中断}/**************************************************************** ** Function name: Time_Get** Descriptions: 获取延时时间** input parameters: 无** output parameters: 无** Returned value: t(gap = 100t(us))** Created by: 张伟杰** Created Date: 2014.05.18****************************************************************/ int Time_Get(t){t = 0;while(GPIOPinRead(IR_PIN) == 1){//while(1)//{Delay_100_us();t = t + 1;if(t >= 50){return t;}}return t;}/**************************************************************** ** Function name: Delay_100_us** Descriptions: 延时100us** input parameters: 无** output parameters: 无** Returned value: 无** Created by: 张伟杰** Created Date: 2014.05.18****************************************************************/ void Delay_100_us(void){unsigned ulValue;SysTickPeriodSet(600);SysTickEnable();do{ulValue = SysTickValueGet();}while(ulValue > 0);SysTickDisable();}3.红外探头模块#include <hw_types.h>#include <hw_memmap.h>#include <hw_ints.h>#include <hw_sysctl.h>#include <hw_gpio.h>#include <hw_timer.h>#include <interrupt.h>#include <sysctl.h>#include <gpio.h>#include <timer.h>#include <systick.h>#include “LM3S1138_PinMap.H”/* 定义按键 */#define KEY_PORT SYSCTL_PERIPH_GPIOG#define KEY_PIN GPIO_PORTG_BASE , GPIO_PIN_5#define keyGet() GPIOPinRead(KEY_PIN)#define IR_PORT SYSCTL_PERIPH_GPIOF#define IR_PIN GPIO_PORTF_BASE , GPIO_PIN_1// 定义全局的系统时钟变量unsigned long TheSysClock = 12000000UL;unsigned IR_flag = 0;unsigned long IR_code_32[32];unsigned long IR_code_8 = 0;unsigned a;int Time_Get( );void Delay_100_us( );/**************************************************************** ** Function name: jtagWait** Descriptions: 防止JTAG失效,KEY=PG5** input parameters: 无** output parameters: 无** Returned value: 无** Created by: 张伟杰** Created Date: 2014.05.15****************************************************************/ void jtagWait(void){SysCtlPeripheralEnable(KEY_PORT); /*使能KEY所在的GPIO端口 */GPIOPinTypeGPIOInput(KEY_PIN); /* 设置KEY所在管脚为输入 */if ( keyGet() == 0x00 ) { /* 如果复位时按下KEY,则进入 */for (;;); /* 死循环,以等待JTAG连接 */}SysCtlPeripheralDisable(KEY_PORT); /* 禁止KEY所在的GPIO端口 */}/**************************************************************** ** Function name: IR_Int_Init** Descriptions: 初始化IR端口和中断** input parameters: 无** output parameters: 无** Returned value: 无** Created by: 张伟杰** Created Date: 2014.05.18****************************************************************/ void IR_Int_Init(void){SysCtlPeripheralEnable(IR_PORT);GPIOPinTypeGPIOInput(IR_PIN);GPIOIntTypeSet(IR_PIN,GPIO_LOW_LEVEL);GPIOPinIntEnable(IR_PIN);IntEnable(INT_GPIOF);IntMasterEnable();}// 系统初始化void SystemInit(void){SysCtlLDOSet(SYSCTL_LDO_2_50V); // 设置LDO输出电压SysCtlClockSet(SYSCTL_USE_OSC | // 系统时钟设置,采用主振荡器SYSCTL_OSC_MAIN |SYSCTL_XTAL_6MHZ |SYSCTL_SYSDIV_1);/*SysCtlLDOSet(SYSCTL_LDO_2_75V); // 配置PLL前须将LDO电压设置为2.75VSysCtlClockSet(SYSCTL_USE_PLL | // 系统时钟设置,采用PLLSYSCTL_OSC_MAIN | // 主振荡器SYSCTL_XTAL_6MHZ | // 外接6MHz晶振SYSCTL_SYSDIV_10);// 分频结果为20MHz*/TheSysClock = SysCtlClockGet(); // 获取系统时钟,单位:Hz}int main(void){jtagWait(); /* 防止JTAG失效,重要! */SystemInit();IR_Int_Init();while(1){if(IR_flag == 1){IR_flag = 0;for(a = 18 ; a < 26 ; a++){IR_code_8 = IR_code_8 << 1 + IR_code_32[a];}if (IR_code_8 == 101){SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);// 使能GPIOD端口GPIOPinTypeGPIOOutput(GPIO_PORTD_BASE , GPIO_PIN_0); // 设置PD0为输入类型 //forwordGPIOPinWrite(GPIO_PORTD_BASE , GPIO_PIN_0 , 0x00);// PD0输出低电平}IR_code_8 = 0;//switch(IR_code_8)//{//case/*00000*/101:SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);// 使能GPIOD端口// GPIOPinTypeGPIOOutput(GPIO_PORTD_BASE , GPIO_PIN_0); // 设置PD0为输入类型//forword// GPIOPinWrite(GPIO_PORTD_BASE , GPIO_PIN_0 , 0x00); // PD0输出低电平//case /*0000*/1101://back//case /*0000*/1000://left//case /*0000*/1010://right//case /*0000*/1001://stop//case /*000*/10100://level_1//case /*000*/10101://level_2//case /*000*/10110://level_3//default ://}//IR_code_8 = 0;}}}/**************************************************************** ** Function name: GPIO_PORT_F_ISR** Descriptions: GPIOF的中断服务** input parameters: 无** output parameters: 无** Returned value: 无** Created by: 张伟杰** Created Date: 2014.05.18****************************************************************/ void GPIO_PORT_F_ISR(void){unsigned ulStatus;unsigned gap = 0;unsigned start_flag = 0;unsigned data;unsigned I = 0;unsigned code_flag = 0;ulStatus = GPIOPinIntStatus(IR_PORT,false);//GPIOPinIntClear(IR_PORT,ulStatus); //消除中断//if(ulStatus && GPIO_PIN_1)//{while(1){if(GPIOPinRead(IR_PORT,ulStatus) == 1){gap = Time_Get();if(gap >=50) //不正常的起始高电平时间{break;}if(gap >=10 && gap <=20 ) //接收数据“1”{data = 1;code_flag = 1;}else if(gap >=2 && gap <=8 ) //接收数据“0”{data = 0;code_flag = 1;}else if(gap >=40 && gap <=50 ) //正常的其实高电平时间{start_flag = 1;}if(start_flag && code_flag) //code_flag和start_flag均为1{IR_code_32[i] = data;i++;if(I >= 32){IR_flag = 1;break;}}}}//}GPIOPinIntClear(IR_PORT,ulStatus); //消除中断}/****************************************************************** Function name: Time_Get** Descriptions: 获取延时时间** input parameters: 无** output parameters: 无** Returned value: t(gap = 100t(us))** Created by: 张伟杰** Created Date: 2014.05.18****************************************************************/int Time_Get(t){t = 0;while(GPIOPinRead(IR_PIN) == 1){//while(1)//{Delay_100_us();t = t + 1;if(t >= 50){return t;}}return t;}/**************************************************************** ** Function name: Delay_100_us** Descriptions: 延时100us** input parameters: 无** output parameters: 无** Returned value: 无** Created by: 张伟杰** Created Date: 2014.05.18****************************************************************/ void Delay_100_us(void){unsigned ulValue;SysTickPeriodSet(600);SysTickEnable();do{ulValue = SysTickValueGet();}while(ulValue > 0);SysTickDisable();}三、程序调试调试PWM信号时,由于板上晶振为6Mhz,装载值和匹配值最大为65535,可以设置出需要的周期和占空比。