红外遥控小车设计报告Word文档格式.docx
- 文档编号:16706807
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:13
- 大小:213.94KB
红外遥控小车设计报告Word文档格式.docx
《红外遥控小车设计报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《红外遥控小车设计报告Word文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
1.最小系统部分如下图所示:
复位电路采取按键复位电路。
晶振的作用则是为系统提供基本的时钟信号
2.红外接受电路采用hs0038红外接收器,电路图如下
3.小车驱动电路采用L298N来控制电机:
四、软件设计
红外专用的延迟函数:
主函数部分如下
五、调试以及结果
1.第一次小车无法起动。
后发现原因是因为把hs0038的3个口弄错,误把第一个引脚当作GND,导致无法通过红外遥控小车行走。
后发现1为输出端,2为GND,3为VCC。
修改线路后成功通过遥控控制小车前后左右行走。
2.小车左轮部分齿轮在1个地方有时会卡住无法转动,需要人工转动下带动左轮转动,经过除尘、添加润滑油等措施后,卡住现象稍有减少,但无法完全避免。
六、总结
通过这次实验,我们锻炼了自己的动手能力,了解了遥控小车的原理及制作过程,使我们的团队意识增强,经过几天的努力,完成了模块的设计与制作,完成了整个系统的编程、组装与调试。
基本上满足竞赛的要求,使用模块时,综合考虑电路的简单、电路的成本、以及电路的性能。
此次设计仍有一些问题没有得到完全解决,对一些器件的应用还不是很熟悉,因此在今后的学习中,更要好好学习知识,增加技能训练。
比如红外传感器的原理与应用的知识,光敏二极管的原理与应用电路等,当我们遇到不懂不会的问题时,我们能通过图书馆、网络等各种渠道学习想要知道的知识,有时候虽然只是一个很简单的小车模块,但使我们认识到自己所学的专业知识在实践中所出现的很大的不足。
在实际的设计当中也应注意到的许多问题,如在焊接时应提前布线、制图,以免在调试过程时无从下手。
虽然在这次设计中对于知识的运用和衔接还不够熟练,但是我们将在以后的工作和学习中继续努力、不断完善。
学习自己的专业知识,加强自己的动手实践,努力提高自己的专业技能,能在今后的生活学习中更好的应用。
七、附录
原理图如下:
PCB板图如下
源程序如下:
#include<
reg52.h>
#defineucharunsignedchar
#defineuintunsignedint
sbitled1=P0^0;
//
sbitled2=P0^1;
sbitled3=P0^2;
sbitled4=P0^3;
sbitPWM_0=P1^4;
//定义直流电机的控制端口
sbitPWM_1=P1^6;
sbitPWM_3=P1^5;
sbitPWM_4=P1^7;
sbitIRIN=P3^3;
//红外接收器数据线
ucharCYCLE;
//定义周期
ucharPWM_ON;
//定义低电平时间
ucharPWM_FF;
ucharPWM_3T;
ucharPWM_4T;
ucharIRCOM[7];
voidDelay_1ms(uinti)
{
ucharx,j;
for(j=0;
j<
i;
j++)
for(x=0;
x<
=148;
x++);
}
/*********************红外专用延迟函数**********************************/
voiddelay(ucharx)//x*0.14MS
uchari;
while(x--)
{
for(i=0;
i<
13;
i++){}
}
/*****************红外遥控键盘函数*************/
voidkey()
{
if((IRCOM[2]==0x18))//按数字键2上
{
Delay_1ms(20);
if(IRCOM[2]==0x18)
PWM_ON=10;
PWM_FF=10;
PWM_3T=0;
PWM_4T=0;
led1=0;
led2=1;
led3=1;
led4=1;
while(!
IRCOM[2]);
}
}
if((IRCOM[2]==0x52))//按数字键8下
{
Delay_1ms(20);
if(IRCOM[2]==0x52)
led1=1;
led2=0;
//
PWM_ON=0;
PWM_FF=0;
PWM_3T=10;
PWM_4T=10;
}
if((IRCOM[2]==0x08))//按数字键4左
if(IRCOM[2]==0x08)
led3=0;
PWM_FF=10;
while(!
}
if((IRCOM[2]==0x5a))//按数字键6右
if(IRCOM[2]==0x5a)
led4=0;
if((IRCOM[2]==0x1c))//按数字键5停
if(IRCOM[2]==0x1c)
voidTime0(void)
TMOD|=0x01;
//定时器设置1msin12Mcrystal
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
//定时1mS
IE=0x82;
//打开中断
TR0=1;
//定时器打开
/***********定时器0、1,外部中断1初始化*****************/
voidTime(void)
TMOD=0x11;
//TH1=0x4c;
//对TH0TL0赋值
//TL1=0x00;
//使定时器0.05秒中断一次
//ET1=1;
ET0=1;
EX1=1;
EA=1;
TR0=1;
//TR1=1;
IRIN=1;
//红外I/O口初始化
main()
led1=1;
led2=1;
led3=1;
led4=1;
CYCLE=10;
//时间可以调整这个是10步调整周期10ms8位PWM就是256步
PWM_0=0;
PWM_1=0;
Time();
//中断初始化
while
(1)
/********************************/
/*定时中断*/
voidtim(void)interrupt1using1
staticunsignedcharcount;
//定时1mS
if(count==PWM_ON)
PWM_0=1;
//直流电机转
if(count==PWM_FF)
PWM_1=1;
}
if(count==PWM_3T)
PWM_3=1;
if(count==PWM_4T)
PWM_4=1;
count++;
if(count==CYCLE)
count=0;
if(PWM_ON!
=0)//如果左右时间是0保持原来状态
PWM_0=0;
//直流电机不转
}
if(PWM_FF!
PWM_1=0;
if(PWM_3T!
PWM_3=0;
if(PWM_4T!
PWM_4=0;
/********************************************************************/
/*********红外外部中断1函数***********/
voidIR_IN()interrupt2using0
unsignedcharj,k,N=0;
EX1=0;
delay(15);
if(IRIN==1)
{
EX1=1;
return;
}
//确认IR信号出现
while(!
IRIN)//等IR变为高电平,跳过9ms的前导低电平信号。
{delay
(1);
}
for(j=0;
4;
j++)//收集四组数据
for(k=0;
k<
8;
k++)//每组数据有8位
while(IRIN)//等IR变为低电平,跳过4.5ms的前导高电平信号。
IRIN)//等IR变为高电平
while(IRIN)//计算IR高电平时长
delay
(1);
N++;
if(N>
=30)
{
EX1=1;
return;
}//0.14ms计数过长自动离开。
}//高电平计数完毕
IRCOM[j]=IRCOM[j]>
>
1;
//数据最高位补“0”
if(N>
=8){IRCOM[j]=IRCOM[j]|0x80;
}//数据最高位补“1”
N=0;
}//endfork
}//endforj
if(IRCOM[2]!
=~IRCOM[3])
EX1=1;
key();
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 红外 遥控 小车 设计 报告