当前位置: 首页 > 工学 >

电动汽车课程设计(智能小车)

工业自动化学院
《电动汽车》实习报告
(2014-2015 学年第二学期)
实习题目:智能小车设计
姓 名: 学 号: 班 级: 指导老师: 实习时间: 2016 年 6 月 20 日—2016 年 7 月 1 日 成 绩:

一、设计题目
智能小车设计

北京理工大学珠海学院 2016 届电动汽车课程设计
电动汽车 实习任务书

二、设计主要内容
(1) 广泛查找文献资料,认真研究,反复论证,精心设计技术方案。 (2) 严格遵守各项纪律,勤奋学习,认真思考,敢于挑战困难并勇于创新。 (3) 较为深入的掌握 51 单片机的体系结构、指令系统、编程方法,初步了解 51 单片机应
用系统的软硬件开发方法及手段,较熟练地掌握 51 单片机几种重要的片内外设的基 本原理及编程方法,初步掌握 51 单片机外围电路的扩展方法。 (4) 在现有车模的基础上,以 51 单片机构成小车控制核心,同时加装声光电、红外线、 超声波传感器、LED 显示等外围设备,实现对小车的速度、位置、运行状况的实时测 量,并将测量数据传送至处理器进行处理,然后由处理器根据所检测的各种数据实现 对电动车的智能控制; (5) 设计的智能小车应该能够实时显示时间、速度、里程,具有自动寻迹、寻光、避障功 能,可程控行驶速度、前进、后退、准确定位停车。并有相应的声光电设备发出相关 的提示或警示信息。 (6) 遥控方式可自选,系统通过遥控器可以控制小车的行驶方向、速度、起停等运行状态, 要求要达到一定的控制精度、距离及范围,小车行驶速度应达到 3m/s 以上。 (7) 分析结果,独立撰写设计总结报告陈述自己的观点,格式应严格遵守学校规范。内容 尽量翔实,其中必须要有自己独立的见解和认识。
三、原始资料
硬件资源:小车底盘、51 单片机系统板、PC 机。 设计指导资料:51 单片机系统板配套光盘

北京理工大学珠海学院 2016 届电动汽车课程设计
四、要求的设计成果
(1)在现有车模的基础上,以51单片机构成小车控制核心,同时加装声光电、红外线、超 声波传感器、LED显示等外围设备,实现对小车的速度、位置、运行状况的实时测量,并将 测量数据传送至处理器进行处理,然后由处理器根据所检测的各种数据实现对电动车的智能 控制。 (2)撰写说明书,要求简洁、通顺,格式规范,设计方案正确,实现技术路线明确,论述 内容完整、清楚、规范,数据、资料真实可靠,软件程序运行良好。 (3)要求有完整的电路设计原理图及软件源代码。

五、进程安排
(1)第 1 天:任务布置及相关知识讲解 (2)第 2-3 天:资料查阅与方案制定 (3)第 4-8 天:硬件设计、程序编制与调试阶段 (4)第 9 天:撰写设计报告 (5)第 10 天:答辩与考核阶段

课程设计成绩评定表

项目

比例

得分

成 平时成绩

30%

绩 答辩考核成绩

10%

评 实习报告成绩

60%



总评成绩(百分制记分) 100%

评定等级

优 良 中 及格 不及格

指导教师(签名):

2016 年 7 月 1 日

北京理工大学珠海学院 2016 届电动汽车课程设计

目录

第 1 章 设计任务 ...................................... 1

第 2 章 总体方案设计 ................................. 2
2.1 总体方案的设计思路 ......................................2 2.2 总体方案设计 ............................................2
第 3 章 系统硬件设计 ................................. 4
3.1 系统的硬件组成 ..........................................4 3.2 STC89C52 单片机介绍 .....................................4 3.3 电机驱动模块电路设计 ....................................7 3.5 报警模块电路设计........................................ 7 3.6 循迹模块电路设计 ........................................8 3.7 遥控模块电路设计 ........................................8 3.8 供电电路设计 ............................................9 第 4 章 系统软件设计...........................................10 4.1 主程序设计............................................. 10 4.2 循迹程序设计........................................... 10 4.3 遥控程序设计 ...........................................10
第 5 章 调试结果及分析 .............................. 11

第 6 章 总结心得 ..................................... 12

参考文献 ............................................ 13

附录 ................................................ 14

附录 1: 附录 2:

硬件图 ........................................ 14 源程序 ........................................ 15

北京理工大学珠海学院 2016 届电动汽车课程设计
第1章 设计任务
(1)熟悉使用 DXP 2004 软件制作智能小车的 PCB 电路图。 (2)了解小车的主要硬件模块组成及原理。 (3)理解实现智能小车各功能的程序及掌握单片机程序的烧写方面; (4)设计一个智能小车,要求能够遥控实现启动,停止,前进,后退,左转, 右转。 (5)小车速度可调。当发生故障时,按下故障报警按钮,蜂鸣器响,提醒 故障。 (6)小车能够实现循迹功能,按照道路循迹行驶,车速较高,摆动幅度较 小,过弯道时,车身稳定性保持良好,没有明显存在冲出轨道的趋势。 (7)根据个人能力设计人机交互界面,例如发光管,数码管,液晶显示屏 显示等,表示小车工作状态。可加装超声波测距,躲避障碍物等功能。
-第 1 页-

北京理工大学珠海学院 2016 届电动汽车课程设计
第 2 章 总体方案设计 2.1 总体方案的设计思路
图 2.1 总体设计思路
2.2 总体方案设计
2.2.1 控制器模块介绍 根据设计要求,我认为此设计属于多输入量的复杂程序控制问题。采用单
片机作为整个系统的核心,用其控制行进中的小车,以实现其既定的性能指标。 充分分析我们的系统,其关键在于实现小车的自动控制,而在这一点上,单片 机就显现出来它的优势——控制简单、方便、快捷。这样一来,单片机就可以 充分发挥其资源丰富、有较为强大的控制功能及可位寻址操作功能、价格低廉 等优点。因此,这种方案是一种较为理想的方案。
针对本设计特点——多开关量输入的复杂程序控制系统,需要擅长处理多 开关量的标准单片机,而不能用精简 I/O 口和程序存储器的小体积单片机, D/A、A/D 功能也不必选用。根据这些分析,我选定了 P89C51RA 单片机作为本 设计的主控装置,51 单片机具有功能强大的位操作指令,I/O 口均可按位寻址, 程序空间多达 8K,对于本设计也绰绰有余,更可贵的是 51 单片机价格非常低 廉。
在综合考虑了传感器、两部电机的驱动等诸多因素后,我们决定采用一片 单片机,充分利用 STC89C52 单片机的资源。 2.2.2 电机驱动工作原理
采用功率三极管作为功率放大器的输出控制直流电机。线性型驱动的电路 结构和原理简单,加速能力强,采用由达林顿管组成 H 型桥式电路。用单片机 控制达林顿管使之工作在占空比可调的开关状态下,精确调整电动机转速。这 种电路由于工作在管子的饱和截止模式下,效率非常高,H 型桥式电路保证了 简单的实现转速和方向的控制,电子管的开关速度很快,稳定性也极强,是一 种广泛采用的 PWM 调速技术。现市面上有很多此种芯片,我选用了 L298N。
-第 2 页-

北京理工大学珠海学院 2016 届电动汽车课程设计
这种调速方式有调速特性优良、调整平滑、调速范围广、过载能力大,能 承受频繁的负载冲击,还可以实现频繁的无级快速启动、制动和反转等优点。 因此决定采用使用功率三极管作为功率放大器的输出控制直流电机。 2.2.3 寻迹模块 工作原理
采用三只红外对管,一只置于轨道中间,两只置于轨道外侧,当小车脱离 轨道时,即当置于中间的一只光电开关脱离轨道时,等待外面任一只检测到黑 线后,做出相应的转向调整,直到中间的光电开关重新检测到黑线(即回到轨 道)再恢复正向行驶。现场实测表明,小车在寻迹过程中有一定的左右摇摆不 定,虽然可调试,摇摆情况会显著变好,但依然存在,且对速度也会有相应的 影响。 2.2.4 遥控模块 工作原理
红外遥控器共有 5 个有效信号键位:分别为左、右、前、后、停止。遥控 控制信号由红外遥控器发出,由 STC89C52RC 单片机上的红外接收器接受控制 信号,经单片机内部计算分析后,将执行指令发给电机,使小车完成我们预想 的动作。
经多次试验与调试发现,红外接收的有效灵敏距离大致在 3 米左右,超过 极限距离,则会明显出现小车控制苦难的情况,同时环境也是干扰小车红外控 制的一个重要因素。
-第 3 页-

北京理工大学珠海学院 2016 届电动汽车课程设计
第 3 章 系统硬件设计
3.1 系统的硬件组成
设计的主要硬件组成有:单片机开发板、遥控器、小车底盘、驱动电机、万 向轮、PC 机、液晶显示屏、超声波模块等。
3.2 STC89C52 单片机介绍
STC89C52RC 单片机是宏晶科技推出的新一代高速/低功耗/超强抗干扰的 单片机,指令代码完全兼容传统 8051 单片机,12 时钟/机器周期和 6 时钟/机 器周期可以任意选择。
主要特性如下: ? 增强型 8051 单片机,6 时钟/机器周期和 12 时钟/机器周期可以任意选择,
指令代码完全兼容传统 8051。 ? 工作电压:5.5V~3.3V(5V 单片机)/3.8V~2.0V(3V 单片机)。 ? 工作频率范围:0~40MHz,相当于普通 8051 的 0~80MHz,实际工作频率
可达 48MHz。 ? 用户应用程序空间为 8K 字节 ? 片上集成 512 字节 RAM ? 通用 I/O 口(32 个),复位后为:P1/P2/P3/P4 是准双向口/弱上拉,P0
口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为 I/O 口用 时,需加上拉电阻。 ? ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用 仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程序,数秒即 可完成一片。 ? 具有 EEPROM 功能。 ? 具有看门狗功能。 ? 共 3 个 16 位定时器/计数器,即定时器 T0、T1、T2。 ? 外部中断 4 路,下降沿中断或低电平触发电路,Power Down 模式可由外 部中断低电平触发中断方式唤醒。 ? 通用异步串行口(UART),还可用定时器软件实现多个 UART ? 工作温度范围:-40~+85℃(工业级)/0~75℃(商业级)。 ? PDIP 封装 STC89C52RC 单片机的工作模式 ? 掉电模式:典型功耗<0.1μ A,可由外部中断唤醒,中断返回后,继续执行 原程序,掉电模式可由外部中断唤醒,适用于水表、气表等电池供电系统 及便携设备。 ? 空闲模式:典型功耗 2mA。 ? 正常工作模式:典型功耗 4Ma~7mA。
-第 4 页-

北京理工大学珠海学院 2016 届电动汽车课程设计
时钟电路 STC89C52 内部有一个用于构成振荡器的高增益反相放大器。定时元件通 常采用石英晶体和电容组成的并联谐振回路。晶体振荡频率可以在 1.2~ 12MHz 之间选择,电容值在 5~30pF 之间选择,电容值的大小可对频率起微调 的作用。
图 3.1 时钟电路 复位及复位电路 复位是单片机的初始化操作。其主要功能是把 PC 初始化为 0000H,使单 片机从 0000H 单元开始执行程序。除了进入系统的正常初始化之外,当由于程 序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需按复位键重 新启动。RST 引脚是复位信号的输入端。复位信号是高电平有效,其有效时间 应持续 24 个振荡周期(即二个机器周期)以上。
图 3.2 复位电路
-第 5 页-

北京理工大学珠海学院 2016 届电动汽车课程设计
芯片引脚 ①主电源引脚(2 根) VCC(Pin40):电源输入,接+5V 电源 GND(Pin20):接地线 ②外接晶振引脚(2 根) XTAL1(Pin19):片内振荡电路的输入端 XTAL2(Pin20):片内振荡电路的 输出端 ③控制引脚(4 根) RST/VPP(Pin9):复位引脚,引脚上出现 2 个机器周期的高电平将使单片 机复位。 ALE/PROG(Pin30):地址锁存允许信号 PSEN(Pin29):外部存储器读选通 信号 EA/VPP(Pin31):程序存储器的内外部选通,接低电平从外部程序存储器 读指令,如果接高电平则从内部程序存储器读指令。 ④可编程输入/输出引脚(32 根) STC89C52 单片机有 4 组 8 位的可编程 I/O 口,分别位 P0、P1、P2、P3 口, 每个口有 8 位(8 根引脚),共 32 根。 PO 口(Pin39~Pin32):8 位双向 I/O 口线,名称为 P0.0~P0.7 P1 口(Pin1~Pin8):8 位准双向 I/O 口线,名称为 P1.0~P1.7 P2 口(Pin21~Pin28):8 位准双向 I/O 口线,名称为 P2.0~P2.7 P3 口(Pin10~Pin17):8 位准双向 I/O 口线,名称为 P3.0~P3.7
图 3.3 STC89C52RC 引脚图
-第 6 页-

北京理工大学珠海学院 2016 届电动汽车课程设计
3.3 电机驱动模块电路设计
图 3.4 电机驱动电路模块
3.5 报警模块电路设计
图 3.5 报警电路模块
-第 7 页-

北京理工大学珠海学院 2016 届电动汽车课程设计
3.6 循迹模块电路设计
图 3.6 循迹电路模块
3.7 遥控模块电路设计
图 3.7 红外接收电路模块
-第 8 页-

北京理工大学珠海学院 2016 届电动汽车课程设计
3.8 供电电路设计
图 3.8 供电系统电路
-第 9 页-

北京理工大学珠海学院 2016 届电动汽车课程设计
第 4 章 系统软件设计
系统的软件设计分为对双直流电机的控制和对传感器信号的处理其关键 部分在于对直流电机的控制,前轮电机的正转和反转分别决定小汽车方向的左 拐弯、右拐弯及直线行驶。在检测黑线过程中,单片机始终使用增量控制的方 案,即在调整拐弯或速度控制以及纠偏的过程中,路面信号采样速度、行驶速 度、方向调整幅度等都是需要随时调整的,而且都是以一定步进值连续增加或 者连续减少这些参数值的。传感器部分的控制主要负责从外界采集信息,不同 的信息对应不同的处理方案。系统流程图如图 4.1 所示。
图 4.1 系统流程图
4.1 主程序设计
程序内容见附录。
4.2 循迹程序设计
程序内容见附录。(主要注意部分是 PWM 的调试)
4.3 遥控程序设计
程序内容见附录。(小车在实现转弯后会马上回复直线行走程序)
-第 10 页-

北京理工大学珠海学院 2016 届电动汽车课程设计
第 5 章 调试结果及分析
循迹黑线 循迹功能的实现主要调试的是主要电机转速及程序中的 PWM 调试部分及传 感器的灵敏度。最理想的状况是小车能快速且稳定地按照黑色路线行走。 在调试过程中,因为每次调节 PWM,所以几乎都要调节一次传感器灵敏度电 阻,从而实现理想的黑线循迹。 调试结果(PWM 最大为 20): (1) 前进时:左右电机为 8; (2) 左转时:右电机占空比为 8,左电机停止运转; (3) 右转时:左电机占空比为 8,右电机停止运转; 主要结果分析:传感器灵敏度正常,小车速度较快且摆动幅度较小,循迹 功能正常,不会冲出跑道。 红外遥控控制 红外遥控控制部分的程序和传感器灵敏度都没问题。程序主要包括左右电机 左右停转,单边电机运转,左右电机同时运转等。命令智能小车完成前进、后退、 左转、右转等动作。 红外遥控功能实现的注意事项: (1)排除循迹、蔽障信号输入干扰; (2)使用遥控器时要注意拿掉电池上的塑胶片; (3)尽量避免在有红外光线干扰的环境下使用; 主要结果分析:遥控器主要的灵敏控制极限范围在 3-4 米之间。
-第 11 页-

北京理工大学珠海学院 2016 届电动汽车课程设计
第 6 章 总结心得
本次课程设计我学到了很多东西,如循迹功能和红外控制功能分别由哪些 模块组成;在红外遥控控制过程中,循迹信号和蔽障信号会干扰到遥控控制, 如果程序部分不加入 PWM 电机调试,电机会一般默认以最高速运转;同时还掌 握了用 DXP 2004 软件画 PCB 电路板的技能。
在整个过程中,受益最深的是在调试阶段。在调试阶段中,很熟练的了解 了各个器件的功能,在测试中也明白各个电路实现什么功能等。
该设计通过单片机控制 PWM 直流电机驱动以及与多个传感器的配合应用, 实现了两辆小车按规定跑道进行交替领跑功能。在经过多次实验后,基本达到 了预期的效果。但是其智能化程度还远远不够,车体设计以及程序设计方面都 有待于继续完善,以使两辆小车行驶速度更快,更平稳。
通过这次课程设计,加深了我对电子方面的兴趣,使我对电子知识有了更 深的了解,同时也提高了我们自主学习的能力、动手操作的能力,很多事情, 都是在做后才发觉有没有意义,有没有收获。我想我会在今后的学习生活中学 习更多、更深,我也会做得更好。
-第 12 页-

北京理工大学珠海学院 2016 届电动汽车课程设计
参考文献
[1] 谢自美·电子线路设计.试验.测试 [M] ·华中科技大学出版社,2004 [2] 宗光华·机器人的创意设计与实践 [M] ·北京航空航天大学出版社,2004 [3] 肖景和·红外线热释电与超声波遥控电路[M] ·人民邮电出版社,2003 [4] 靳 桅·单片机原理及应用[M] ·西南交通大学出版社,2004 [5] 王毅编·单片机器件手册[M] ·人民邮电出版社,1994 [6] 何立民 .单片机应用技术选编(8) ·北京航空航天大学出版社,2000 [7] 丹尼斯 .克拉克机·器人设计与控制[M] ·科学出版社,2004 [8] 苏凯等 .MCS-51 系列单片机系统原理与设计.冶金工业出版社,2003 [9] 杨帮文·新编传感器实用宝典[M] ·机械工业出版社,2005 [10] 周坚编·单片机 C 语言轻松入门[M] ·北京航空航天大学出版社,2006 [11] 张毅坤 .单片微型计算机原理及应用 . 西安电子科技大学出版社,1998 [12] 张立科 .单片机典型模块设计实例导航 .人民邮电出版社, 2004 [13] 李光飞 .单片机课程设计实例指导 .北京航空航天大学出版社, 2004 [14] 张 鑫 .单片机原理及应用 .电子工业出版社,2005.8 [15] 何立民 .MCS-51 系列单片机应用系统设计系统配置与接口技术
北京航空航天大学出版社,1990 [16] 任 涛 .闪速存储器数据及应用简明速查手册 .电子工业出版社,1997 [17] 张毅刚 .MCS-51 单片机应用设计 .哈尔滨工业电子出版社,1996 [18] 邬宽明 .单片机外围器件实用手册 .北京航空航天大学出版社,1998 [19] 王幸之 .单片机应用系统抗干扰技术 .北京航空航天大学出版社,2000 [20] 张 凯 .MCS-51 单片机综合系统及其设计开发 .科学出版社,1996
-第 13 页-

北京理工大学珠海学院 2016 届电动汽车课程设计

附录 1: 硬件图

附录

硬件图 1-智能小车底盘电路图
硬件图 2-STC89CRC 单片机系统电路图
-第 14 页-

北京理工大学珠海学院 2016 届电动汽车课程设计

附录 2: 源程序

1.循迹程序

#include<AT89X52.H> //包含 51 单片机头文件,内部有各种寄存器定义

#include<HJ-4WD_PWM.H> //包含 HL-1 蓝牙智能小车驱动 IO 口定义等函数

//主函数

void main(void)

{

unsigned char i;

P1=0X00; //关电机

for(i=0;i<50;i++) //判断 K4 是否按下

{

delay(1); //1ms 内判断 50 次,如果其中有一次被判断到 K4 没按下,

便重新检测

if(P3_7!=0)//当 K4 按下时,启动小车前进

goto B; //跳转到标号 B,重新检测

}

BUZZ=0;//50 次检测 K4 确认是按下之后,蜂鸣器发出“滴”声响,

然后启动小车。

delay(50);

BUZZ=1;//响 50ms 后关闭蜂鸣器

TMOD=0X01;

TH0= 0XFc;

//1ms 定时

TL0= 0X18;

TR0= 1;

ET0= 1;

EA = 1;

//开总中断

while(1) //无限循环

-第 15 页-

北京理工大学珠海学院 2016 届电动汽车课程设计

{

if(Left_1_led==0&&Right_1_led==0)

run(); //调用前进函数

else

{

if(Left_1_led==1&&Right_1_led==0)//左边检测到黑线

{

leftrun();

//调用小车左转 函数

}

if(Right_1_led==1&&Left_1_led==0) //右边检测到黑线

{

rightrun();

//调用小车右转 函数

}}}}

左右车轮调试程序

//hj-4ws_pwm.h

#ifndef _LED_H_

#define _LED_H_

sbit IN1=P1^2;

sbit IN2=P1^3;

sbit IN3=P1^6;

sbit IN4=P1^7;

sbit EN1=P1^4;

sbit EN2=P1^5;

sbit BUZZ=P2^3; //蜂鸣器接线定义

#define Left_1_led

P3_3 // 左传感器

#define Right_1_led

P3_2 //右传感器

#define Left_moto_pwm

P1_5 //PWM 信号端

#define Right_moto_pwm P1_4 //PWM 信号端

-第 16 页-

北京理工大学珠海学院 2016 届电动汽车课程设计

#define Left_moto_go

{P1_2=0,P1_3=1;} //左电机向前走

#define Left_moto_back {P1_2=1,P1_3=0;} //左边电机向后转

#define Left_moto_Stop {P1_5=0;} //左边电机停转

#define Right_moto_go {P1_6=1,P1_7=0;} //右边电机向前走

#define Right_moto_back {P1_6=0,P1_7=1;} //右边电机向后走

#define Right_moto_Stop {P1_4=0;} //右边电机停转

unsigned char pwm_val_left =0;//变量定义

unsigned char push_val_left =0;// 左电机占空比 N/20

unsigned char pwm_val_right =0;

unsigned char push_val_right=0;// 右电机占空比 N/20

bit Right_moto_stop=1;

bit Left_moto_stop =1;

unsigned int time=0;

/***********************************************/

//延时函数

void delay(unsigned int k)

{

unsigned int x,y;

for(x=0;x<k;x++)

for(y=0;y<2000;y++);

}

/**********************************************/

//前速前进

void run(void)

{

push_val_left=8; //速度调节变量 0-20。。。0 最小,20 最大

push_val_right=8;

Left_moto_go ; //左电机往前走

-第 17 页-

北京理工大学珠海学院 2016 届电动汽车课程设计
Right_moto_go ; //右电机往前走 } //左转
void leftrun(void) {
push_val_right=8; Right_moto_go ; //右电机往前走 Left_moto_Stop ; //左电机停止 } //右转 void rightrun(void) { push_val_left=8; Left_moto_go ; //左电机往前走 Right_moto_Stop ; //右电机往前走 } /* PWM 调制电机转速 */ /* 左电机调速 */ /*调节 push_val_left 的值改变电机转速,占空比*/ void pwm_out_left_moto(void) { if(Left_moto_stop) { if(pwm_val_left<=push_val_left) {
Left_moto_pwm=1; } else
-第 18 页-

北京理工大学珠海学院 2016 届电动汽车课程设计
{ Left_moto_pwm=0;
} if(pwm_val_left>=20)
pwm_val_left=0; } else {
Left_moto_pwm=0; } } /* 右电机调速 */ void pwm_out_right_moto(void) { if(Right_moto_stop) { if(pwm_val_right<=push_val_right) {
Right_moto_pwm=1; } else {
Right_moto_pwm=0; } if(pwm_val_right>=20) pwm_val_right=0; } else
-第 19 页-

北京理工大学珠海学院 2016 届电动汽车课程设计

{

Right_moto_pwm=0;

}

}

/*TIMER0 中断服务子函数产生 PWM 信号*/

void timer0()interrupt 1 using 2

{

TH0=0XFc;

//1Ms 定时

TL0=0X18;

time++;

pwm_val_left++;

pwm_val_right++;

pwm_out_left_moto();

pwm_out_right_moto();

}

#endif

2. 遥控程序

#include<AT89x51.H>

#define Left_moto_go

{P1_2=0,P1_3=1;} //左边电机向前走

#define Left_moto_back {P1_2=1,P1_3=0;} //左边电机向后转

#define Left_moto_Stop {P1_2=0,P1_3=0;} //左边电机停转

#define Right_moto_go {P1_6=1,P1_7=0;} //右边电机向前走

#define Right_moto_back {P1_6=0,P1_7=1;} //右边电机向后走

#define Right_moto_Stop {P1_6=0,P1_7=0;} //右边电机停转

#define Imax 14000 //此处为晶振为 11.0592 时的取值,

#define Imin 8000 //如用其它频率的晶振时,

#define Inum1 1450 //要改变相应的取值。

-第 20 页-

北京理工大学珠海学院 2016 届电动汽车课程设计

#define Inum2 700

#define Inum3 3000

unsigned char f=0;

unsigned char Im[4]={0x00,0x00,0x00,0x00};

unsigned char show[2]={0,0};

unsigned long m,Tc;

unsigned char IrOK;

/******************************************************/

//延时函数

void delay(unsigned int k)

{

unsigned int x,y;

for(x=0;x<k;x++)

for(y=0;y<2000;y++);

}

/****************************************************/

//外部中断解码程序

void intersvr0(void) interrupt 1 using 1

{

Tc=TH0*256+TL0;

//提取中断时间间隔时长

TH0=0; TL0=0;

//定时中断重新置零

if((Tc>Imin)&&(Tc<Imax))

{

m=0; f=1;return;

}

//找到启始码

if(f==1)

{

-第 21 页-

北京理工大学珠海学院 2016 届电动汽车课程设计
if(Tc>Inum1&&Tc<Inum3) { Im[m/8]=Im[m/8]>>1|0x80; m++;
} if(Tc>Inum2&&Tc<Inum1)
{ Im[m/8]=Im[m/8]>>1; m++; //取码 } if(m==32) { m=0; f=0; if(Im[2]==~Im[3]) {
IrOK=1; }
else IrOK=0; //取码完成后判断读码是否正确 }
//准备读下一码 } } //前速前进
void run(void) {
Left_moto_go ; //左电机往前走 Right_moto_go ; //右电机往前走 } //前速后退 void backrun(void)
-第 22 页-

北京理工大学珠海学院 2016 届电动汽车课程设计

{

Left_moto_back ; //左电机后退

Right_moto_back ; //右电机后退

}

//右转

void rightrun(void)

{

Left_moto_go ; //左电机前进

Right_moto_Stop ; //右电机停止

}

//左转

void Leftrun(void)

{

Left_moto_Stop ; //左电机停止

Right_moto_go ; //右电机前进

}

//STOP

void stoprun(void)

{

Left_moto_Stop ; //左电机停止

Right_moto_Stop ; //右电机停止

}

/*--主函数--*/

void main(void)

{

m=0; f=0; IT0=1; EX0=1; TMOD=0x11; TH0=0; TL0=0;

TR0=1;EA=1;delay(100);

while(1)

/*无限循环*/

-第 23 页-

北京理工大学珠海学院 2016 届电动汽车课程设计

{ if(IrOK==1) { switch(Im[2]) { case 0x18: run();break; case 0x52: backrun();break; case 0x08: leftrun();break; case 0x5A: rightrun();break; case 0x1C: stoprun();break; default:break; } IrOK=0; }}}

//前进 //后退 //左转 //右转 //停止

-第 24 页-




友情链接: year2525网 工作范文网 QS-ISP 138资料网 528200 工作范文网 baothai 表格模版