使用的12C5A60S2单片机,白底黑线寻迹,自己想出来的信号判断方法,让你扔掉靠多个if else判断路况的写法
单片机源程序如下:
- #ifndef _CONTROL_H
- #define _CONTROL_H
- extern uchar temp1;
- extern uchar temp2;//temp2左侧灯数据变量
- uchar i;
- int v=230;//直线跑时的速度 方案1:255 方案2:230
- //方案一
- /*
- int code table1[]={0,255,255,255};//1.普通弯道左轮速度 2.锐角弯道左轮速度 3.直角弯道左轮速度
- int code table2[]={0,80,140,130};//1.普通弯道左轮速度 2.锐角弯道左轮倒转 3.直角弯道左轮倒转
- int code table3[]={0,255,255,250};//1.普通弯道右轮速度 2.锐角弯道右轮速度 3.直角弯道右轮速度
- int code table4[]={0,80,140,130};//1.普通弯道右轮倒转 2.锐角弯道右轮倒转 3.直角弯道右轮倒转
- */
- //方案二
- int code table1[]={0,230,230,230};//1.普通弯道左轮速度 2.锐角弯道左轮速度 3.直角弯道左轮速度
- int code table2[]={0, 70,140,140}; //1.普通弯道左轮倒转 2.锐角弯道左轮倒转 3.直角弯道左轮倒转
- int code table3[]={0,230,230,230};//1.普通弯道右轮速度 2.锐角弯道右轮速度 3.直角弯道右轮速度
- int code table4[]={0, 70,140,140}; //1.普通弯道右轮倒转 2.锐角弯道右轮倒转 3.直角弯道右轮倒转
- void control()
- {
- detect();
- if(temp1>temp2)//左拐情形
- {
- i=temp1-temp2;
- switch(i)
- {
- case 1 : PWM_SET(0,table2[i],0,table3[i]);break; //普通弯道
- case 2 : PWM_SET(1,table2[i],0,table3[i]);break; //锐角弯道
- case 3 : PWM_SET(1,table2[i],0,table3[i]);delayms(40);break;//直角弯道
- default : break;
- }
- while(led3);
- }
- else if(temp1<temp2)//右拐
- {
- i=temp2-temp1;
- switch(i)
- {
- case 1 : PWM_SET(0,table1[i],0,table4[i]);break;
- case 2 : PWM_SET(0,table1[i],1,table4[i]);break;
- case 3 : PWM_SET(0,table1[i],1,table4[i]);delayms(40);break;
- default : break;
- }
- while(led3);
- }
- else
- {
- if(!temp1)//直走和停止
- {
- PWM_SET(0,v,0,v-2);
- delayms(66);
- detect();
- if(!temp1&&!temp2)
- {
- PWM_SET(0,0,0,0);
- while(1);
- }
- else
- {
- PWM_SET(0,v,0,v-2);
- }
- }
- else
- {
- PWM_SET(0,v,0,v-2);
- }
- }
- }
- /**********************************************
- 根据两侧灯读回的数据值来进行电机控制
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
源程序如下:
- #include<12c5a60s2.h>
- #include<stdio.h>
- #include<sbitdef.h>
- #include<yanshi.h>
- #include<pwm.h>
- #include<zhuanquan.h>
- #include<detect.h>
- #include<lanya.h>
- #include<xunji.h>
- uchar flag=0;
- void main()
- {
- flag=0;
- PWM_clock_init();
- lanyainit();
- while(1)
- {
- if(!flag)
- {
- xunji1();
- lanya();
- }
- else
- {
- xunji2();
- }
- }
- }
复制代码
所有资料51hei提供下载:
决赛程序.zip
(28.89 KB, 下载次数: 28)
|