- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于单片机寻迹小车
哈尔滨工业大学(威海)单片机课程设计
循迹智能小车 班级: 姓名: 学号: 指导老师: 日期: 2013.7.2 哈尔滨工业大学(威海)
二零一三年制
目录
方案寻迹传感器光电编码器寻迹传感器简介:此模块是为智能小车、等自动化机械装置提供一种多用途的红外线探测系统的解决方案。使用红外线发射和接收管等分立元器件组成探头,并使用LM339 电压比较器做为核心器件构成中控电路。此系统具有的多种探测功能能极大的满足客各种自动化、智能化的小型系统的应用。特性:? 易于安装,使用简便?4 路分别独立工作,工作时不受数量限制?中控板与探头分开,安装位置不受限制?模块高度≤10 毫米?安全工作电压范围在 3伏特至 6 伏特之间?4 路全开工作电流 30 毫安至 55 毫安之间?VCC、GND:电源接线端IN(1—4)、OUT:探头与中控板连接端OUT1、OUT2、OUT3、OUT4:? 对应输出端LED1、LED2、LED3、LED4:? 对应输出指示R1、R2、R3、R4:? 对应比较电压调节?输出端为集电极开路,板载 5.1 千欧上拉电阻
2.3光电编码器描述: HC-020K测速传感器是一款宽电压、高分辨率、短响应速度、开关量输出的测速模组,配合黑色码盘可以测量电机转速(所测电机的规格,和码盘有关。现在提供的码盘D型孔内径为4mm。可以用于输出轴为直径4mm的电机,就是我们配套的TT马达,黄色外壳白色轴的电机)。在小车上,有两路轮子是没有加装齿轮的,通过使用D型孔码盘,我们可以很方便的安装码盘到坦克轮的转动轴上,如图2所示;由于使用的是20线的码盘,坦克车轮直径为4.7cm,我们就可以计算该码盘能检测到的最小精度为:3.14*4.7cm/20 0.74 cm 7.4 mm。 Keil4是美国Keil Software公司出品的C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil4软件提供丰富的库函数和功能强大的集成开发调试工具。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil4 生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。C51开发中除必要的硬件外,同样离不开软件,我们写的源程序要变为C51可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。随着C51开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件除了致力于单片机的编程开发平台外,还针对目前最流行C51开发项目出品了Keil4软件平台以及支持在线调试的串口烧写。从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision4)将这些部份组合在一起。
3.2程序流程图
3.4 实际程序
/***********************************************/
/*功能:四路循迹,遇到黑线输入给单片机信号为1
/***********************************************/
#include
#define uint unsigned int
#define uchar unsigned char
sbit P10 P1^0; //控制左电机
sbit P11 P1^1;//控制左电机
sbit P12 P1^2;//控制右电机
sbit P13 P1^3;//控制右电机
sbit P14 P1^4;//寻迹右
sbit P15 P1^5;//寻迹右中
sbit P16 P1^6;//寻迹左中
sbit P17 P1^7;//寻迹左
uint num 0;
uchar flag 0;
int i;
void forward P10 1;P11 0;P12 1;P13 0;
void leftturn P10 1;P11 1;P12 1;P13 0;
void rightturn P10 1;P11 0;P12 1;P13 1;
void stop P10 1;P11 1;P12 1;P13 1;
void main while 1 num P10xF0;
switch num case 0x80: //1000 黑线为1 leftturn ; flag 1; break; case 0xc0: //1100 leftturn ; flag 1; break; case 0x40: //0100 leftturn ; flag 1;
文档评论(0)