欢迎来到课桌文档! | 帮助中心 课桌文档-建筑工程资料库
课桌文档
全部分类
  • 党建之窗>
  • 感悟体会>
  • 百家争鸣>
  • 教育整顿>
  • 文笔提升>
  • 热门分类>
  • 计划总结>
  • 致辞演讲>
  • 在线阅读>
  • ImageVerifierCode 换一换
    首页 课桌文档 > 资源分类 > DOC文档下载  

    简易智能小车设计报告.doc

    • 资源ID:19271       资源大小:2.85MB        全文页数:23页
    • 资源格式: DOC        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    简易智能小车设计报告.doc

    目 录摘要 1第1章 绪论21.1 简易智能小车的概述21.1 主要研究工作3第2章 硬件电路设计32.1 总体方案的设计32.2 LPC2103的简介32.3 单元电路的设计52.3.1控制系统模块52.3.2键盘显示板模块62.3.3稳压电源模块72.3.4驱动电路模块8第3章 软件设计103.1 EasyJTAG-H 仿真器的使用103.2 软件程序编写10第4章 调试 184.1 电路焊接与检查184.2 键盘显示板的调试184.2 执行电路的调试18第5章 结论19致谢19参考文献20附录21附录1 实物图21附录2 元器件清单表2222 / 23摘 要:本次课程设计采用ARM7系列LPC2103作为智能小车的检测和控制核心。利用PWM技术动态控制电动机的转速,来实现直流调速的功能模块。通过键盘显示板上的八个按键,实现小车不同方向的行驶,实现ARM与键盘显示板的人机对话。关键词:LPC2103、键盘显示板、L298整流电路、直流电机、稳压电源。第1章 绪 论1.1简易智能小车的概述LPC2103 是一个基于支持实时仿真的 16/32 位 ARM7 TDMI-S CPU的微控制器,并带有32kB 的嵌入高速 Flash 存储器,128 位宽度的存储器接口和独特的加速结构使 32 位代码能够在最大时钟速率下运行。 较小的封装和极低的功耗使 LPC2103 适用于访问控制器和 POS 机等小型应用系统中;由于内置了宽范围的串行通信接口2个UART、 SPI、 SSP和2个I2C和8KB的片内SRAM,LPC2103 也适合用在通信网关和协议转换器中。32/16 位定时器、增强型 10 位 ADC、定时器输出匹配PWM特性、 多达13个边沿、电平触发的外部中断、 32条高速GPIO,使得LPC2103微控制器特别适用于工业控制和医疗系统中。1.2 主要研究工作1、 掌握各种H桥来驱动电机的常用方法,理解各种H桥的驱动原理本;学会自己制作稳压电源,掌握对原器件要求的选择;掌握键盘显示板的电路以及应用,对74HC164芯片及L298芯片功能作用的认识。2、 熟练使用ARM7系列LPC2103开发板,熟习ARM7系列的开发板的工作特性和功能模块,对LPC2103开发板的GPIO、PWM、定时器的捕获及匹配、SPI这几个模块的熟练掌握,学会使用ADS的开发环境开发和调试程序及EasyJTAG-H 仿真器,学会使用键盘显示板实现人机对话第2章 硬件电路设计2.1 总体方案设计基于ARM7系列LPC2103开发板的功能特性以及我们的设计目的,我们选择LPC2103作为本课程设计的控制器,它能够很好的实现该课题设计的要求;我们使用L298来驱动直流电机的转动;我们使用三端稳压集成电路7805、7812做成的稳压电源作为电机、L298H桥的工作电源;由于普通直流电机体积小,力矩大,速度快,并且电路相对简单,因此采用直流电机作为动力源。我们使用74HC164是串行输入,并行输出的8位移位寄存器做成的键盘显示板结合ARM的SPI模块实现了人机对话的功能模块。总体方案如图2-1。L298ARM2103键盘显示板稳压电源变压器直流电动机图2.1.1 总体设计方案2.2 LPC2103的简介ARM内核采用精简指令集计算机RISC体系结构,具有大量的通用寄存器,指令格式使用统一和长度固定,寻址方式简单,内含2套指令系统ARM指令集和Thumb指令集。极低的功耗,适合对功耗要求较高的应用,如便携式产品。 能够提供0.9MIPS/MHz的三级流水线结构。LPC2103有丰富的接口资源、处理速度快、内部存储空间大及具备功率控制模块,是一种低耗器件,因此本设计微处理选用LPC2103。 LPC2103内嵌32KB的高速Flash存储器和8KB的RAM,具有丰富的外设资源:2个32位定时器<带捕获、匹配通道>;1个10位DAC;7个PWM 通道;47路GPIO;4个边沿或电平触发的外部中断;具有独立电源和时钟的RTC;多个串行接口<UART、I2C、SPI、SSP>。它内含向量中断控制器,可配置中断优先级和向量地址,片内Boot装载程序可以实现在系统/在应用编程<ISP/IAP>,通过片内PLL可实现60MHz的CPU操作频率,具有空闲和掉电2种低功耗模式,并且可通过外部中断唤醒。LPC2131具体特性有:<1> 16/32 位 ARM7 TDMI-S微控制器,超小 LQFP48 封装; <2> 8KB 的片内静态 RAM 和 32KB 的片内 Flash 程序存储器。128 位宽度接口/加速器可实现高达 70 MHz 工作频率; <3> 通过片内 boot 装载程序实现在系统/在应用编程ISP/IAP。单个 Flash 扇区或整片擦除时间为 100ms,256 字节编程时间为 1ms; <4> 嵌入式 ICE RT 通过片内 RealMonitor软件提供实时调试; <5> 10 位 A/D 转换器提供 8 路模拟输入每个通道的转换时间低至 2.44us,以及特定的结果寄存器来最大限度地减少中断开销; <6> 2 个32 位定时器/外部事件计数器带 7 路捕获和 7 路比较通道; <7> 2 个16 位定时器/外部事件计数器带 3 路捕获和 7 路比较通道; <8> 低功耗实时时钟RTC具有独立的电源和特定的 32KHz时钟输入; <9> 多个串行接口,包括2个UART 16C550协议标准、 2个高速I2C总线400 Kbit/s、SPI和具有缓冲作用和数据长度可变功能的 SSP; <10> 向量中断控制器VIC,可配置优先级和向量地址; <11> 多达 32 个通用 I/O口可承受 5V电压; <12> 多达 13 个边沿、电平触发的外部中断管脚; <13> 通过一个可编程的片内 PLL100us 的设置时间可实现最大为 70MHz 的CPU操作频率,其具有 10MHz25MHz 的输入频率; <14> 片内集成振荡器与外部晶体的操作频率范围为 125MHz; <15> 低功耗模式包括空闲模式、带 RTC的睡眠模式和掉电模式; <16> 可通过个别使能/禁止外围功能和外围时钟分频来优化额外功耗; <17>通过外部中断或 RTC 将处理器从掉电模式中唤醒。图2.2.1 ARM系列LPC2103的MCU引脚2.3 单元电路的设计2.3.1控制系统模块1 LPC2103电源电路LPC2103 控制器需要双电源供电,1.8V内核电压和 3.3V功能外设电压,EasyARM2103开发板的电源电路如图 2.2所示。5V电源由变压器或USB电源线输入,二极管 1N5819 可以防止电源反接。电路采用SPX1117 系列LDO芯片SPX1117M-3.3 和SPX1117M-1.8 将电压稳至3.3V和1.8V,0 欧的电阻用来隔离数字电源和模拟电源、数字地和模拟地。 SPX1117 系列 LDO芯片是 EXAR 公司生产的低压差芯片,其特点是输出电流大,输出电压精度高,稳定性高,宽电压输入这里选择的是 5V输入 。此系列LDO芯片的输出电流高达 800mA,输出电压的精度在±1之内,可广泛应用于手持式仪表、数字家电、工业控制等领域。注意在电路输入输出端接一个 10F 的电容,可改善瞬态响应和稳定性。图2.3.1 ARM系列LPC2103的电源电路图2.3.2 ARM系列LPC2103的复位电路2.3.2 键盘显示板键盘显示原理:此系统中所选用的数码显示电路主要由两个四位七段数码管和两个74HC164及部分其他元件组成,74HC164是串行输入,并行输出的8位移位寄存器CMOS型,其功能为:当CLEAR为高电平时CK每来一个上升跳,输出右移一位.当CLEAR为低电平时,输出清零。图2.3.2.1 数码管显示电路原理图下图中左边74HC164控制两个四位七段数码管的位码,右边74HC164控制两个四位七段数码管的段码,图2.3.2.2 74HC164逻辑符号表图 图2.3.2.3 74HC164引脚图2.3.3 稳压电源模块图2.3.3.1 稳压电源模块交流电经过全桥电路在经过电容滤波,在经过稳压电源芯片做成稳压电路,输出电压5V、12V的直流电源。图2.3.3.2 稳压电源实物图2.3.4驱动电路模块本次设计采用L298H驱动电路,其电路原理图如下:图2.3 4.1 L298电路原理图其焊接成的实物图如下:图2.3 4.2 L298电路原理图L298 芯片是一种高压、大电流双全桥式驱动器,其设计是为接受标准 TTL 逻辑电平信号和驱动电感负载的, 例如继电器、 圆筒形线圈、 直流电动机和步进电动机。具有两抑制输人来使器件不受输入信号影响。每桥的三级管的射极是连接在一起的, 相应外接线端可用来连接外设传感电阻。可安置另一输入电源, 使逻辑能在低电压下工作。 L298 芯片是具有 15 个引出脚的多瓦数直插式封装的集成芯片。引脚19、20接ARM7系列LPC2103的两路PWM来控制整个电路的导通、断开、速度的大小,当PWM输出为高电平时,整个电路处于导通,实现电机可以转动;当PWM输出为低电平时,整个电路断开,实现电机不能转动;当PWM的占空比发生变化时,实现电机的速度发生大小改变。综上所述:实现了电机的驱动,分别使用了ARM上的P0.13、P0.14、P0.15、P0.16作为GPIO控制两个电机的正反转;分别使用ARM上的P0.19、P0.20作为PWM来控制电机的转速。图2.3.4.3 不同占空比下的输出波形第3章 软件程序设计3.1 EasyJTAG-H 仿真器的使用EasyJTAG-H 仿真器是一款新型的仿真器,目前,可以支持 LPC21037 微控制器和部分ARM9 芯片,支持 ADS1.2 集成开发环境,支持单步、全速及断点等调试功能,支持下载程序到片内 FLASH 和特定型号的片外 FLASH,采用 ARM 公司提出的标准 20 脚 JTAG 仿调试接口。这款仿真器需要 H-JTAG软件调试代理的支持。3.2 软件程序编写#include "config.h"uint32 LeftLow = 50,RightLow = 50,HZ = 100;/初始化左右占空比为50%,频率为100HZ/*/#define key 1<<5/定时器中断标志uint8 T0Flag = FALSE;uint8 DATA9; uint32 i=0; /用于记录刷新的位数,显示器共有八位,每显示一位就i+,显示下一位,直到i = 7时就令i=0;重新从第一位显示起 uint32 display=8; uint32 keydown=9;/按键位置寄存/段码,其中的digitable10为不显示任何内容 const uint8 digitable13=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40,0x80;/位码const uint8 selectable8=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;/*/ void DelayNS <uint32 uiDly> uint32 i; for < uiDly > 0; uiDly-> for<i = 0; i < 50000; i+> /* 函数名称:Timer0_InitExt<>* 功能描述:TIMER0 初始化* 入口参数:无* 出口参数:无*/void Timer0_InitExt<void> T0TC = 0; /* 定时器设置为0 */ T0PR = 0; /* 时钟不分频 */ T0MCR = 0x03; /* 设置T0MR0匹配后复位T0TC,并产生中断标志 */ T0MR0 = Fpclk/400; /* 2.5毫秒定时 刷新频率为50HZ */ T0TCR = 0x01; /* 启动定时器 */* 函数名称:IRQ_Timer0<>* 功能描述:TIMER0 中断服务程序* 入口参数:无* 出口参数:无*/void _irq IRQ_Timer0<void> T0Flag = TRUE; / T0中断标志置位 T0IR = 0x01; / 清除中断标志 VICVectAddr = 0;/* 函数名称:IRQ_Init<>* 功能描述:设置定时器0中断IRQ* 入口参数:无* 出口参数:无*/void IRQ_Init<void> VICIntSelect = 0x00; / 所有中断通道设置为IRQ中断 VICVectCntl0 = 0x20 | 0x04; / 设置定时器0中断通道分配最高优先级 VICVectAddr0 = <uint32>IRQ_Timer0; / 设置中断服务程序地址 VICIntEnable = 1 << 0x04; / 使能定时器0中断/* Function name: Timer1Init* Descriptions: 定时器1初始化* input parameters: 无* ouput parameters: 无* Returned value: 无*/void Timer1Init<void> T1TCR = 0x02; /* 定时器0复位 */ T1PR = 0; /* 不设时钟分频 */ PWM1CON = 0x0C; /* 使能PWM输出*/ T1MCR = 0x02; /* 设置T0MR0匹配后复位T0TC */ T1MR0 = Fpclk /HZ ; /* 设置PWM输出的周期*/ T1MR2 = T1MR0 *LeftLow /HZ; /* 设置PWM1.2输出占空比为50 */ T1MR3 = T1MR0 *RightLow /HZ; /* 设置PWM1.3输出占空比为25 */ T1TCR = 0x01; /* 启动定时器0 */* 函数名称:void CONVBIT<uint32 num,uint32 place>* 功能描述:* 入口参数:显示的数的内容<num>,显示内容在数组中的位置* 出口参数:无*/void CONVBIT<uint32 num> DATA0 = num%10; DATA1 = num%100/10; DATA2 = num%1000/100; DATA3 = num%10000/1000; DATA4 = num%100000/10000; DATA5 = num%1000000/100000; DATA6 = num%10000000/1000000; DATA7 = num/10000000; DATA8 = 10; /黑码/* 函数名称:MSPI_Init<>* 函数功能:初始化SPI接口,设置为主机。* 入口参数:无* 出口参数:无*/void MSPI_Init<void> SPI_SPCCR = 0x08; / 设置SPI时钟分频 SPI_SPCR = <0 << 3> | / CPHA = 0, 数据在SCK 的第一个时钟沿采样 <1 << 4> | / CPOL = 1, SCK 为低有效 <1 << 5> | / MSTR = 1, SPI 处于主模式 <0 << 6> | / LSBF = 0, SPI 数据传输MSB <位7>在先 <0 << 7> / SPIE = 0, SPI 中断被禁止/* 函数名称:MSPI_SendData<>* 函数功能:向SPI总线发送数据。* 入口参数:data 待发送的数据* 出口参数:*/void MSPI_SendData<uint8 data> SPI_SPDR = data; while< 0 = <SPI_SPSR & 0x80>> / 等待SPIF置位,即等待数据发送完毕void PwmHzChange<void> /占空比上限检查if<LeftLow>HZ> LeftLow=HZ-3; if<RightLow>HZ> RightLow=HZ-3; /占空比下限检查 if<LeftLow < 1> LeftLow=1; if<RightLow<1> RightLow=1; /Low越大转速越慢 T1MR2 = T1MR0*LeftLow /HZ; /左轮/* 设置PWM1.2输出占空比为50 */ T1MR3 = T1MR0*RightLow /HZ;/右轮/占空比为:高电平=1-RightHigh/100 /* 设置PWM1.3输出占空比为25 */void PINInit<> PINSEL0 = 0X00;PINSEL1 = 0X00;PINSEL1 = <PINSEL1 & <<0x03 << 6>>> | <0x02 << 6>/P0.19/左轮 /* 选择MAT1.2输出 */ PINSEL1 = <PINSEL1 & <<0x03 << 8>>> | <0x02 << 8>/P0.20/右轮 /* 选择MAT1.3输出 */ IO0DIR=1<<16|1<<15|1<<14|1<<13|1<<1;/GPIO为输出 PINSEL0 = <0x01 << 8> | /设置P0.4脚为SCK<SPI0> <0x01 << 12> /设置P0.6脚为MISO<SPI0>,其它都为默认GPIO功能 IO0DIR &= <<0x01 << 5>> /P0.5为GPIO输入 /*左转弯*/void TurnLeft<>IO0SET = 1<<16;/右轮顺时针转IO0CLR = 1<<15;IO0SET = 1<<13;/左轮停止转动IO0SET = 1<<14;/*左急转弯*/void TurnNowLeft<>IO0SET = 1<<16;/右轮顺时针转IO0CLR = 1<<15;IO0SET = 1<<14;/左轮逆时针转IO0CLR = 1<<13;/*右转弯*/void TurnRight<>IO0SET = 1<<15;/右轮停止IO0SET = 1<<16;IO0SET = 1<<13;/左轮顺时针转IO0CLR = 1<<14;/*右急转弯*/void TurnNowRight<>IO0SET = 1<<15;/右轮逆时针转IO0CLR = 1<<16;IO0SET = 1<<13;/左轮顺时针转IO0CLR = 1<<14;/*走直线*/void RunLine<>IO0SET = 1<<16;/右轮逆时针转IO0CLR = 1<<15;IO0SET = 1<<13;/左轮逆时针转IO0CLR = 1<<14;void RunBack<>IO0SET = 1<<16;/右轮逆时针转IO0CLR = 1<<15;IO0SET = 1<<14;/左轮逆时针转IO0CLR = 1<<13;/* Function name: main* Descriptions: 定时器1PWM输出* input parameters: 无* ouput parameters: 无* Returned value: 无*/int main <void> PINInit<> Timer1Init<> / 定时器1初始化,发PWM波 MSPI_Init<> / 初始化SPI接口 Timer0_InitExt<> /定时器初始化 IRQEnable<> / IRQ中断使能 IRQ_Init<> / 设置及开启定时器0中断RunLine<> display = 12345678; while<1> if<T0Flag=TRUE>/2.5ms到 T0Flag = FALSE; CONVBIT<display> IO0CLR = 1<<1; MSPI_SendData<digitableDATAi> /其他位不带小数点 MSPI_SendData<selectablei> / 发送显示位码 IO0SET = 1<<1; if<<IO0PIN&<key>>!=0> /无键按下 if <keydown = i>/键按下之后放开防止一键多发 /display=keydown*10000000+keydown*1000000+keydown*100000+keydown*10000+keydown*1000+keydown*100+keydown*10+keydown; switch<keydown> case 0:/按下则确定为修改态 TurnLeft<> display=11111111;break; case 1:/按下则移动一位 TurnNowLeft<> display=22222222;break; case 2:/闪烁位值增加 TurnRight<> display=33333333; break; case 3:/确定修改键 TurnNowRight<>display=44444444; break; case 4:/确定修改键 display=55555555; break; case 5:/确定修改键 display=66666666; break; case 6:/确定修改键 display=77777777; break; case 7:/确定修改键 display=88888888; break; keydown =0x09;/恢复为无键按下,重要的一步,在此出过错 else if<<IO0PIN&<key>>=0>/有键按下 DelayNS<10> if<<IO0PIN&<key>>=0> keydown = i;

    注意事项

    本文(简易智能小车设计报告.doc)为本站会员(夺命阿水)主动上传,课桌文档仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知课桌文档(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-1

    经营许可证:宁B2-20210002

    宁公网安备 64010402000986号

    课桌文档
    收起
    展开