您好,欢迎来到六九路网。
搜索
您的当前位置:首页智能避障小车系统

智能避障小车系统

来源:六九路网


西安邮电学院

单片机课程设计报告书

题目:智能小车避障系统

院系名称 : 学生姓名 : 专业名称 : 班 级 : 时

间 :

自动化学院

2011年 9月 16 日至9 月 30 日

智能小车避障系统

一、设计目的

1、 通过本次课程设计加深对单片机课程的全面认识和掌握,对单片机课程的应用进一步的了解。

2、 掌握定时器、外部中断的设置和编程原理。

3、 通过此次课程设计能够将单片机软硬件结合起来,对程序进行编辑,校验。

二、功能概述

智能小车采用前轮驱动,前轮左右两边各用一个电机驱动,分别控制两个轮子的转动从而达到转向的目的,后轮是万向轮,起支撑的作用。将三个红外线光电传感器分别装在车体的左中右,当车的左边的传感器检测到障碍物时,主控芯片控制右轮电机停止左轮转动,车向右方转向,当车的右边传感器检测到障碍物时,主控芯片控制左轮电机停止转动,车向左方转向,当前面有障碍物时规定车右转。于此三、设计器材 器件 STC80C52 直流电机 驱动7960 车模

四、设计方案及分析

个数 1 2 2 1 器件 ST188 个数 1 晶振(12M) 1 电容、电阻 若干 开关 2 1.单片机最小系统电路

单片机最小系统电路如图所示,由主控器STCC52、时钟电路和复位电路三部分组成。单片机STCC52作为核心控制器控制着整个系统的工作,而时钟电路负责产生单片机工作所必需的时钟信号,复位电路使得单片机能够正常、有序、稳定地工作。

图 单片机最小系统

2. 时钟电路

STCC52 单片机芯片内部设有一个由反向放大器所构成的振荡器。19脚(XTAL1)为振荡器反相放大器和内部时钟发生电路的输入端,18脚(XTAL2)为振荡器反相放大器的输出端。在XTAL1和XTAL2引脚上外接定时元器件,内部振荡电路就会产生自激振荡。本系统采用的定时元器件为石英晶体(晶振)和电容组成的并联谐振回路。晶振频率为12MHz,电容大小为33pF,时钟电路如图所示。

图 时钟电路(晶振)

3.复位电路

STCC52的复位是由外部的复位电路来实现的,复位电路通常采用上电复位和按钮复位两种方式,本设计采用的是最按钮复位电路,其电路图如图所示。

图 复位电路

4.基于脉冲调制的反射式红外线发射接受器

脉冲调制的反射式红外线发射接受器。由于采用该有交流分量的调制信号,则可大幅度减少外界干扰;另外红外线接受官的最大工作电流取决于平均电流。如果采用占空比小的调制信号,再品均电流不变的情况下,顺势电流很大(50—100mA),则大大提高了信噪比。

并且其反应灵敏,外围电路也很简单。它的优点是消除了外界光线的干扰提高了灵敏度。

避障电路采用漫反射式光电开关进行避障。光电开关是集发射头和接收头于一体的检测开关,其工作原理是根据发射头发出的光束,被障碍物反射,接收头据此做出判断是否有障碍物。当有光线反射回来时,输出低电平;当没有光线反射回来时,输出高电平。单片机根据接收头电平的高低做出相应控制,避免小车碰到障碍物,由于接收管输出TTL电平,有利于单片机对信号的处理。

5、电机驱动电路

采用普通的直流电机。直流电机具有优良的调速特性,调速平滑、方便。调整范围广;过载能力强,能承受频繁的冲击负载,可实现频

繁的无极快速启动、制动和反转。能满足各种不容的特殊运行要求。 五、源程序:

#include int chz,chy,feng; sbit INZ=P2^7 ; sbit INY=P2^6; void main()

{ if(chz==1&&chy==1) {INZ=1; INY=1; }

else{if(chz==0&&chy==1) { INZ=1; INY=0; feng=0; }

if(chy==0&&chz==1) { INY=0;

INZ=1; feng=0; } } }

六、设计结果 1.方案图

红外线光电传感器 电机驱动 电 机 信 号转换 LED 显 示 单片机处理

2.总体电路原理图

3.软件流程图

开始 数码管的初始化 定时器,计数器中断初始化 N 定时器定时500ms Y 继续等待定时计数 定时器0定时标志位清0 计数器1清0

4.软件设计

#include // 宏定义

#define uint unsigned int #define uchar unsigned char sbit count = P3^5; // 常量 #define wei1 0x01 #define wei2 0x02 #define wei3 0x04 #define wei4 0x08 // 变量

int turn=0,turn_time=0; // 显示数组 uchar reveal[10]= { 0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09 };

// 初始化函数及子函数 void Init_cnt(void); void Reveal(uint x); void delay(uint z);

///////////////////////////////////////////////////

数码管显示 结束 // 主函数 /////////////////////////////////////////////////// void main() { turn = 0; count = 1; P2 = 0x00; P1 = 0x00; Init_cnt(); while(1) { Reveal(turn/5*2); } }

// 中断

void cnt0() interrupt 1 { TH0 = (65536-50000) /256; TL0 = (65536-50000) %256; turn_time++; if(turn_time==10) { turn_time=0; turn = TH1*256+TL1; TH1 = 0; TL1 = 0; } }

void cnt1() interrupt 3 { TH1 = 0; TL1 = 0; }

// 初始化 void Init_cnt (void) {

TMOD = 0x51; TH0 = (65536-50000) /256; TL0 = (65536-50000) %256; EA = 1; TH1 = 0; TL1 = 0; ET0 = 1;

TR0 = 1;

//

ET1 = 1;

TR1 = 1; }

// 子函数

void Reveal(uint x) //a b c d分别传送数码管显示的(从左数)1 2 3 4位 { uint a,b,c,d; a=x/1000; b=x%1000/100; c=x%100/10; d=x%10; P1=wei1; P2=reveal[a]; delay(1); P1=wei2; P2=reveal[b]; delay(1); P1=wei3; P2=reveal[c]; delay(1); P1=wei4; P2=reveal[d]; delay(1); }

void delay(uint z) { int x,y; for(x=110;x>0;x--) for(y=z;y>0;y--); }

七、设计体会与收获

徐舒:

这次课程设计相对以前来说,综合性更强,结合了软硬件,对我们的团队合作要求更高。我们进行了分工合作,我主要负责硬件部分。

开始通过查找资料,了解了有关智能小车避障的原理。由于以前做过类似实验,所以上手较快。连接好仿真图后,几经的修改,仿真实现了。接下来就开始焊板子了。先是对整块板子的排版,再进行各个模块的焊接。焊接中要极其认真,否则出错一点就可能导致功能不能实现。连接好电路,接上电源,发现正常避障,经过我们共同排查,都一一解决了。经过几天的努力,我们成功实现了小车避障

的功能。

通过本次课程设计,我对单片机的工作原理和应用有了深入的理解,掌握了单片机系统硬件设计的基本方法。做一个课程设计不仅要全面的分析和解决在设计时出现的问题。我深刻体会到单片机技术应用领域的广泛,也让我了解到单片机技术对当今人们生活的重要性。所以对于我们学习这个专业的学生来说,就要求我们不断的去了解最新的设计和理论知识,那样才能让我们在本领域有一定的成绩。

范春燕:

在本次电机测速课程设计中,我们三个人一组。我主要负责的是软件部分。其实一开始,我觉得写程序很难,因为以前总是改别人的程序。但最后发现其实写起来也并没你想象的那么难。我们程序的算法是通过定时器T0定时1S,然后通过计数器1记出1S内的总脉冲数,然后用总脉冲数除以叶轮的叶数,就是转速了。其中,我们是通过利用传感器ST151来计脉冲数的。ST151内部是由一个发光二极管和光敏三极管组成的,在平常没东西挡在他们之间时,它总是输出高电平,一旦有东西通过,它就变成低电平了。

在此次课程设计中我不但克服了平常不爱写程序的坏习惯,还学会了与小组其他成员的沟通和协作,如果没有我们之间的默契合作,我想就不会有我们现在的结果。

所以,我想说其实没有什么事是做不到的,只要你想干成他,你就能成功。

刘蕊玲:

在这次的课程设计中,我主要负责的是硬件方面,刚开始拿到题目的时候我们大体上把主要的硬件流程讨论出来,然后就是在网上搜集资料,主要是直流电机这部分,由于题目要求我们测的是两种速度,所以本来是想用单片机控制的,但是通过查找资料得到电机的速度与所加的电压是成比例的,也就是说我们可以通过改变电机的电压来实现速度的变换,这样就可以不用通过单片机来实现了,更加容易理解整个题目了。在课程设计的过程中也遇到了很多问题,比如:数码管的显示刚开始不是很亮,我们通过三极管使信号能得以放大才让数码管显示正常、还有那个ST151的使用,我们要给它串电阻,但是电阻值是通过多次的尝试才测出来的等等。焊接的时候有时候一不小心就会把管脚弄错所以要很细心才

行。

总之,经过几天的努力终于是做出来了,这点我还是很高兴的,当然通过这次的课设我也学到了很多,在软件方面我的基础有点不好,总是觉得那有点难时不时的就退缩,所以以后会在软件编程方面多努力。还有就是我觉得在对于团队合作上,我们要多听听队员的看法,相互讨论这样才能更快更有效的解决许多问题,毕竟个人能力还是有限的。

最后我想说,不管遇到什么问题我们应该冷静思考,相信自己一定能克服并且会做的更好。

参考文献

[1] 彭介华编.电子技术课程设计指导[M].北京:高等教育出版社,1997 [2] 张建华主编.数字电子技术[M].第2版.北京:机械工业出版社,2000 [3] 常健生主编.检测与转换技术[M].第3版.北京:机械工业出版社,2003 [4] 张毅刚主编.单片机原理及应用[M].北京:高等教育出版社,2003

[5] 欧阳文主编.ATMEL系列单片机的原理与开发实践[M].北京:中国电力出版社,2007

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 69lv.com 版权所有 湘ICP备2023021910号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务