智能循迹小车实训报告 - 图文(4)

2020-04-16 12:40

Left_moto_back; //左电机往后走 Right_moto_back; //右电机往后走 }

//左转

void leftrun(void) {

push_val_left=5; push_val_right=5;

Right_moto_go ; //右电机往前走 Left_moto_back; //左电机往后走 }

//右转

void rightrun(void) {

push_val_left=5; push_val_right=5;

Left_moto_go ; //左电机往前走 Right_moto_back ; //右电机往后走 }

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

/* 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; // Left_moto_pwm1=1; } else {

Left_moto_pwm=0;

// Left_moto_pwm1=0; }

if(pwm_val_left>=20) pwm_val_left=0; }

else {

Left_moto_pwm=0; // Left_moto_pwm1=0; } }

/******************************************************************/ /* 右电机调速 */ void pwm_out_right_moto(void) {

if(Right_moto_stop) {

if(pwm_val_right<=push_val_right) {

Right_moto_pwm=1; // Right_moto_pwm1=1; } else { Right_moto_pwm=0; // Right_moto_pwm1=0; }

if(pwm_val_right>=20) pwm_val_right=0; }

else {

Right_moto_pwm=0; // Right_moto_pwm1=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

//主函数

void main(void) {

unsigned char i;

P1=0X00; //关电车电机

//本实验学习的按键启动知识 B: for(i=0;i<50;i++) //判断K4是否按下 { delay(1); //1ms内判断50次,如果其中有一次被判断到K4没按下,便重新检测 if(P3_7!=0)//当K4按下时,启动小车前进,如有不明,请看慧净51单片机视频教程 goto B; //跳转到标号B,重新检测 }

//本实验学习的知识蜂鸣器,注意要在HJ-4WD头文件里定义IO口

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

delay(50);

BUZZ=1;//响50ms后关闭蜂鸣器 TMOD=0X01; TH0= 0XFc; //1ms定时 TL0= 0X18; TR0= 1; ET0= 1; EA = 1; //开总中断 while(1) //无限循环 { //有信号为0 没有信号为1

if(Left_1_led==0&&Right_1_led==0&&Left_2_led==1&&Right_2_led==1||Left_1_led==1&&Right_1_led==1&&Left_2_led==1&&Right_2_led==1) run(); //调用前进函数 else { if(Left_2_led==1&&Right_2_led==0) //右边检测到红外信号 { leftrun(); //调用小车左转函数 } if(Right_2_led==1&&Left_2_led==0) //左边检测到红外信号 { rightrun(); //调用小车右转函数 } if(Right_2_led==0&&Left_2_led==0) //两边传感器同时检测到红外 { backrun(); //调用电机后退函数 delay(50); //后退50毫秒 rightrun(); //调用电机右转函数 delay(30); }

if(Left_1_led==1&&Right_1_led==0&&Left_2_led==1&&Right_2_led==1) //左边检测到黑线 { leftrun(); //调用小车左转 函数 }

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

rightrun(); //调用小车右转 函数 } } } }

3功能调试与总结 3.1 功能调试 3.1.1调试内容

在前进和后退实训中,调试的内容相对较少,主要的原因是不需要调试传感器了,也不用检测黑线运动需要调试的只有左右电机的转速,相对而言还是比较轻松的。

调试时应小心谨慎,电路安装完毕后,首先应检查电路各部分的接线是否正确,检查电源、地线、信号线、元器件的引脚之间有无短路,器件有无接错。

3.1.2 测试方法

关于循迹和避障实训,测试的方法主要是走路线,实验板上的线路,能够顺利正反走完,基本上就可以判定已经实现了功能。 3.2 主要工作与总结


智能循迹小车实训报告 - 图文(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:项目时间管理计算练习题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: