- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
智能小车源代码
相信看到文档的朋友都想做一个智能小车,我最近也在做这个项目,并成功完成了。喜悦之余,特把源代码与各位爱好者分享!
想学习的朋友可以看我另外一篇:智能小车各独立模块代码,里面有注释。有基础的朋友都看得懂的,在那代码的基础上,成功地合成了一个程序。
里面功能有,超声波避障,红外寻迹,自动寻光,红外遥控四个主要功能,还有数码管显示工作模式,LED灯显示电机工作状态等。
文章最后还有我的原理图。
元件的清单可看我另一篇:智能小车的元件清单(Excel)。
单片机我用的是STC89C52RC(便宜实惠哈,只是保密性不行),L298N的电机驱动,直流减速电机,普通的红外遥控器,红外寻迹模块。光敏传感器模块(技术好的朋友可以用光敏电阻加AD转换器,不过麻烦很多)。电源用12V,单片机的电源由电机驱动输出。
小车的实物图,很多东西藏???小车夹层了。
下面就是源代码了!
#include stc15.h
#include gpio.h //端口初始化,里面有个gpio();函数不用也可以
#include intrins.h
#define uchar unsigned char
#define uint unsigned int
sbit IRIN =P3^2; //红外线一体化接收头接收端
sbit light1=P2^4; //寻光传感器1
sbit TX =P2^5; //超声波接口
sbit RX =P2^6; //超声波接口
sbit light2=P2^7; //寻光传感器2
sbit red1=P2^0; //3路红外寻迹
sbit red2=P2^2;
sbit red3=P2^3;
sbit led1=P1^0; //LED灯表示方向,前进,左转,有着,后退;
sbit led2=P1^1; //这里我采用低电平驱动LED亮;
sbit led3=P1^2;
sbit led4=P1^3 ;
sbit int31=P3^4; //电机驱动接口,这里我用L298N
sbit int32=P3^5;
sbit int41=P3^6;
sbit int42=P3^7;
uchar IRTemp; //红外线按键数据存放变量
uchar IRCOM[7]={0};//存放红外解码后的32位数据
uchar time =0; //定义超声波发射时间
uchar Flag =0; //定时器中断的时间变量
uchar Buffer[3] = {0};
unsigned long s=0;
void Delay15us() //@11.0592MHz 延时15us
{
unsigned char i;
i = 39;
while (--i);
}
void Delay_140us(uchar t) //延时140 X t us
{
uchar i,j;
for(j=0; jt; j++)
{
for (i=0; i27; i++)
{
_nop_();
}
}
}
void Delay_1ms(uint t) //延时1ms
{
uint i,j;
for(i=0;it;i++)
{
for(j=0;j=100;j++)
{
_nop_();
}
}
}
void forward (void) //前进
{
// int11=1; int12=0;
// int21=1; int22=0;
int31=1; int32=0; led3=0; led1=0;
int41=1; int42=0; led4=0; led2=0;
}
void backward (void) //后退
{
// int11=0; int12=1;
// int21=0; int22=1;
int31=0; int32=1; led3=1; led1=1;
int41=0; int42=1; led4=1; led2=1;
}
void right (void) //右转
{
// int11=1; int12=0;
// int21=0; int22=0;
int31=1; int32=0; led3=0; led1=0;
int41=0; int42=0; led4=1; led2=1;
}
void left (void) //左转
{
// int11=0; int12
文档评论(0)