|
使用的12C5A60S2單片機(jī),白底黑線尋跡,自己想出來的信號判斷方法,讓你扔掉靠多個if else判斷路況的寫法
單片機(jī)源程序如下:
- #ifndef _CONTROL_H
- #define _CONTROL_H
- extern uchar temp1;
- extern uchar temp2;//temp2左側(cè)燈數(shù)據(jù)變量
- 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.銳角彎道左輪倒轉(zhuǎn) 3.直角彎道左輪倒轉(zhuǎn)
- int code table3[]={0,255,255,250};//1.普通彎道右輪速度 2.銳角彎道右輪速度 3.直角彎道右輪速度
- int code table4[]={0,80,140,130};//1.普通彎道右輪倒轉(zhuǎn) 2.銳角彎道右輪倒轉(zhuǎn) 3.直角彎道右輪倒轉(zhuǎn)
- */
- //方案二
- int code table1[]={0,230,230,230};//1.普通彎道左輪速度 2.銳角彎道左輪速度 3.直角彎道左輪速度
- int code table2[]={0, 70,140,140}; //1.普通彎道左輪倒轉(zhuǎn) 2.銳角彎道左輪倒轉(zhuǎn) 3.直角彎道左輪倒轉(zhuǎn)
- int code table3[]={0,230,230,230};//1.普通彎道右輪速度 2.銳角彎道右輪速度 3.直角彎道右輪速度
- int code table4[]={0, 70,140,140}; //1.普通彎道右輪倒轉(zhuǎn) 2.銳角彎道右輪倒轉(zhuǎn) 3.直角彎道右輪倒轉(zhuǎn)
- 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);
- }
- }
- }
- /**********************************************
- 根據(jù)兩側(cè)燈讀回的數(shù)據(jù)值來進(jìn)行電機(jī)控制
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
源程序如下:
- #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();
- }
- }
- }
復(fù)制代碼
所有資料51hei提供下載:
決賽程序.zip
(28.89 KB, 下載次數(shù): 28)
2017-11-11 14:18 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|
|