久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
飛思卡爾智能車最終完整程序 具有很高的參考價值
[打印本頁]
作者:
51hei學(xué)習(xí)技術(shù)中
時間:
2016-10-18 16:22
標題:
飛思卡爾智能車最終完整程序 具有很高的參考價值
0.png
(58.03 KB, 下載次數(shù): 146)
下載附件
2016-10-18 16:21 上傳
這個是一個2等獎的作品,毫無保留飛思卡爾智能車全部源碼下載:
飛思卡爾智能車最終完整程序 具有很高的參考價值.rar
(14.08 KB, 下載次數(shù): 224)
2016-10-18 16:21 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
主程序:
#include <hidef.h> /* common defines and
macros */
#include <mc9s12dg128.h> /* derivative
information */
//#include "PWM.h"
//#include "AD.h"
#include "control.h"
#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"
word AD_wData[9]; //全局變量存放 AD0,AD1,AD2的結(jié)果
word sum[9]; //初始化時為求平均值,全白中,各個燈的FF次的電壓和
word avrg0[9]; //全白時各個燈的平均電壓
word summ[9];//初始化時為求平均值,全黑中,各個燈的FF次的電壓和
word avrg1[9]; //全黑時各個燈的平均電壓
word ss[9]; //實際采集來的各個燈的電壓
word s[9]; // 實際采集來的各個燈的電壓
word sum2[8];//用于存放兩兩燈電壓之和
word k; //用于存放比較出的最大值
uint h=1500;//轉(zhuǎn)角大小
int flag = 0;//標志中間燈是否第一次在黑道附近
int flagg=0;//標志0燈從哪邊感應(yīng)到黑道
int flagg1=0;//標志8燈從哪邊感應(yīng)到黑道
int flagg0=0;//標志是左邊還是右邊出道
int j=0;
dword i;
dword m;
dword s0;
dword s1;
dword p11=0;//以下四個變量用于記錄黑道處于同一側(cè)的時間
dword p12=0;
dword p21=0;
dword p22=0;
word max0[9]=0;//初始化時采集來的黑道的值
int g=0;//為過濾算法使用
word cha[9];//用來存放黑白電壓差
int ffgg0=0;//標志是否用中間板采的數(shù)據(jù)
int ffgg1=0;//標志是否用中間板采的數(shù)據(jù)
word sum0=0; //初始化時采集來9個燈的全白電壓和
//word sum1=0; //實際采集來的左4個燈的電壓和
//word sum22=0; //實際采集來的右4個燈的電壓和
int fla=0;//標志是出道還是入道
void AD_Init();
void PWM_Init();
void PWM_Init1();
//void PID();
void AD_Init(void) //AD初始化
{
//控制寄存器2: 上電,標志位快速清零,開中斷
ATD0CTL2 = (ATD0CTL2_ADPU_MASK|ATD0CTL2_AFFC_MASK|ATD0CTL2_ASCIE_MASK);
ATD1CTL2 = (ATD1CTL2_ADPU_MASK|ATD1CTL2_AFFC_MASK|ATD1CTL2_ASCIE_MASK);
//控制寄存器3:轉(zhuǎn)換序列長度為3
ATD0CTL3 =0x78;// (ATD0CTL3_S2C_MASK|ATD0CTL3_S1C_MASK);
ATD1CTL3 =0x78;// (ATD1CTL3_S2C_MASK|ATD1CTL3_S1C_MASK);
//控制寄存器4:
ATD0CTL4 = (ATD0CTL4_SRES8_MASK|ATD0CTL4_PRS1_MASK|ATD0CTL4_PRS0_MASK);
ATD1CTL4 = (ATD1CTL4_SRES8_MASK|ATD1CTL4_PRS1_MASK|ATD1CTL4_PRS0_MASK);
//控制寄存器5:
ATD0CTL5 = (ATD0CTL5_DJM_MASK|ATD0CTL5_SCAN_MASK|ATD0CTL5_MULT_MASK);
ATD1CTL5 = (ATD1CTL5_DJM_MASK|ATD1CTL5_SCAN_MASK|ATD1CTL5_MULT_MASK);
ATD0DIEN=0x00; // 禁止數(shù)字輸入緩沖
ATD1DIEN=0x00; // 禁止數(shù)字輸入緩沖
}
#pragma CODE_SEG NON_BANKED //中斷服務(wù)程序
#pragma TRAP_PROC
void interrupt 22 Int_AD0(void)
{
AD_wData[0] = ATD0DR0; //將結(jié)果寄存器中的值存放到數(shù)組中
AD_wData[1] = ATD0DR1; //將結(jié)果寄存器中的值存放到數(shù)組中
AD_wData[2] = ATD0DR2; //將結(jié)果寄存器中的值存放到數(shù)組中
AD_wData[3] = ATD0DR3;
AD_wData[4] = ATD0DR4;
AD_wData[5] = ATD0DR5;
AD_wData[6] = ATD0DR6;
AD_wData[7] = ATD0DR7;
AD_wData[8] = ATD1DR0;
}
#pragma CODE_SEG DEFAULT
word max(word a,word b,word c,word d,word e,word
f,word r,word w) {
word maxx=0;
if(a>maxx)maxx=a;
if(b>maxx)maxx=b;
if(c>maxx)maxx=c;
if(d>maxx)maxx=d;
if(e>maxx)maxx=e;
if(f>maxx)maxx=f;
if(r>maxx)maxx=r;
if(w>maxx)maxx=w;
return maxx;
}
void delay0(){
for(i=0;i<0xFFFF;i++)
for(m=0;m<0x05;m++);
}
void delay1(){
for(i=0;i<0xFFFF;i++);
// for(i=0;i<0xFFFF;i++);
}
void main(void)
{
AD_Init(); //AD 初始化
DDRB = 0xFF;
DDRA_BIT6=0; //A_BIT6口作為第二塊板左邊傳感器的輸入口
DDRA_BIT7=0; //A_BIT7口作為第二塊板右邊傳感器的輸入口
PORTB = 0xFF;
p=0;
for(j=0;j<9;j++)
{
AD_wData[j] = 0; //全局變量初始化
sum[j]=0;
avrg0[j]=0;
avrg1[j]=0;
summ[j]=0;
}
for(j=0;j<9;j++) {
max0[j]=0;ss[j]=0;
}
for(j=0;j<8;j++)
sum2[j]=0;
EnableInterrupts; //開AD中斷
for(i=0;i<0xFFFF;i++);
for(i=0;i<0xFF;i++) //只能是FF,防止下面sum溢出
{
for(j=0;j<9;j++)
//采集白道路信息
{
sum[j]=sum[j]+AD_wData[j];
}
}
for(i=0;i<9;i++) {
sum0=sum0+sum[i]/0xFF;
avrg0[i]=sum[i]/0xFF;
}
PORTB=sum[0]/0xFF; //顯示0通道采集到的值
delay0();
PORTB=0x00;//顯示馬上得進行黑道信息采集了
delay1();
for(j=0;j<9;j++){
for(m=0;m<0xFF;m++){
summ[j]=summ[j]+AD_wData[j];
}
avrg1[j]=summ[j]/0xFF;
PORTB=avrg1[j]; //顯示采來的黑道信息
cha[j]=avrg1[j]-avrg0[j];
delay0();
PORTB=0x00; //顯示馬上得進行下一次黑道信息采集了
delay1();
}
PORTB=0x00;
//燈全亮,提示車馬上就可以跑了
delay1();
PWM_Init() ;
PWM_Init1(1500,1,200);
for(i=0;i<0xFFF;i++);
// delay1();
for(;;)
{
int f=0;
u3=100;
if(flagk1==1){
p21=0;
flagk2=0;
p11++;
if(p11==0xFFF)flagkk1=1;
}else if(flagk2==1){
p11=0;
flagk1=0;
p21++;
if(p21==0xFFF)flagkk2=1;
}
for(f=0;f<9;f++){
s[f]=AD_wData[f];
ss[f]=s[f]-(avrg0[f]-0x50); //當(dāng)前值減去初始白道值,以便比較
}
for(f=0;f<8;f++)sum2[f]=ss[f]+ss[f+1]; //兩兩燈電壓之和
//減去1.6V防止溢出*******************
if(AD_wData[0]<0xC0&& AD_wData[1]<0xC0&& AD_wData[2]<0xC0&&AD_wData[3]<0xC0&&
AD_wData[4]<0xC0&&AD_wData[5]<0xC0&&AD_wData[6]<0xC0&&AD_wData[7]<0xC0&&
AD_wData[8]<0xC0){
if(sum2[0]<0xC0&&sum2[1]<0xC0&&sum2[2]<0xC0&&sum2[3]<0xC0&&
sum2[4]<0xC0&&sum2[5]<0xC0&&sum2[6]<0xC0&&sum2[7]<0xD0){
fla=1;
if(flagg0==1)
{
for(i=0;i<0xFF;i++);
PWM_Init1(1140,u1,200);
flagk1=1;
flagkk2=0;
for(;;){
if(AD_wData[4]>0xB0||AD_wData[5]>0xB0||AD_wData[6]>0xB0||
AD_wData[7]>0xB0||AD_wData[8]>0xB0){
flagg0=0;
break;
}
}
}
else if(flagg0==2){
for(i=0;i<0xFF;i++);
PWM_Init1(1860,u1,200);
flagk1=0;
flagkk2=1;
for(;;)if(AD_wData[0]>0xB0||AD_wData[1]>0xB0||
AD_wData[2]>0xB0||AD_wData[3]>0xB0||AD_wData[4]>0xB0){
flagg0=0;
break;
}
}
}else{
}
}else{
if(s[0]-(avrg0[0]-0x13)<0x40 && s[1]-(avrg0[1]-0x13)<0x40 &&
s[2]-(avrg0[2]-0x13)<0x40 && s[3]-(avrg0[3]-0x13)<0x40 &&
s[4]-(avrg0[4]-0x13)<0x40 && s[5]-(avrg0[5]-0x13)<0x40 &&
s[6]-(avrg0[6]-0x13)<0x40 && s[7]-(avrg0[7]-0x13)<0x40 &&
s[8]-(avrg0[8]-0x13)<0x40)
///////////注意調(diào)整該值36***************
{
/* if(PORTA_BIT6!=0||PORTA_BIT7!=0){
if(PORTA_BIT6!
=0&&PORTA_BIT7==0)PWM_Init1(1900,200,1);
else if(PORTA_BIT7!=0&&PORTA_BIT6==0)
PWM_Init1(1100,200,1);
}
*/
}else{
k=max(sum2[0],sum2[1],sum2[2],sum2[3],sum2[4],sum2[5],sum2[6],sum2[7]);
//誰兩和最大,黑道就在誰兩之間
if(k==sum2[0]){
p=0;
flagg0=2;
if(fla==1)
control_11();
else if(fla==0) control_1();
}
else{
if(k==sum2[1]){
p=0;
p1=0;
fla=0;
control_2(s[1],s[2],ss[1],ss[2],cha[1],cha[2],avrg0[1],avrg0[2]);
}
else{if(k==sum2[2]){
p=0;
p1=0;
fla=0;
control_3(s[2],s[3],ss[2],ss[3],cha[2],cha[3],avrg0[2],avrg0[3]);
}
else{if(k==sum2[3]){
p=0;
p1=0;
fla=0;
control_4(s[3],s[4],ss[3],ss[4],cha[3],cha[4],avrg0[3],avrg0[4]);
}
else{if(k==sum2[4]){
fla=0;
p1=0;
control_5(s[4],s[5],ss[4],ss[5],cha[4],cha[5],avrg0[4],avrg0[5]);
}
else{if(k==sum2[5]){
fla=0;
p1=0;
control_6(s[5],s[6],ss[5],ss[6],cha[5],cha[6],avrg0[5],avrg0[6]);
}
else{if(k==sum2[6]){
p=0;
p1=0;
fla=0;
control_7(s[6],s[7],ss[6],ss[7],cha[6],cha[7],avrg0[6],avrg0[7]);
}
else{if(k==sum2[7]){
p=0;
flagg0=1;
if(fla==0)
control_8();
else if(fla==1)
control_88();
} else{
}
}
}
}
}
}
}
}
}
}
}
}
復(fù)制代碼
作者:
長安丿
時間:
2016-10-23 00:16
這做出來效果是只跑黑道嗎?
作者:
Feng爸爸
時間:
2016-11-17 09:34
這個能干什么?
作者:
機器人制作
時間:
2016-12-13 17:18
樓主,有聯(lián)系方式嗎
作者:
213123213
時間:
2017-2-25 21:20
真假?
作者:
213123213
時間:
2017-2-25 21:22
這個文件是哪個組別的作品?光電四輪?
作者:
925302604
時間:
2017-4-23 11:16
厲害
作者:
i子昊
時間:
2017-7-10 10:18
好棒好棒哦,謝謝
作者:
leikes
時間:
2018-3-25 15:47
謝謝樓主分享,新人注冊,黑幣不足5555555555
作者:
qq944960260
時間:
2018-3-27 19:21
謝謝樓主分享,新人注冊,黑幣不足5555555555
作者:
你我都懵懵懂懂
時間:
2018-4-4 21:11
謝謝共享
作者:
始終33
時間:
2018-4-6 22:51
樓主你這樣真的好吧 祖?zhèn)鞔a并不能真正給新手帶來技術(shù)
作者:
安奕啊啊啊
時間:
2018-11-20 19:42
這是尋跡小車》/?
作者:
mcu_mpu
時間:
2018-11-23 12:14
好東西,學(xué)習(xí)下。
作者:
79186905
時間:
2019-3-2 09:43
謝謝分享
作者:
1235486
時間:
2019-6-20 22:47
謝謝樓主
作者:
薇草6
時間:
2019-7-4 18:49
垃圾啥都沒有
作者:
#塵風(fēng)
時間:
2019-11-25 21:22
剛注冊,新人報道,不過樓主好厲害
作者:
#塵風(fēng)
時間:
2019-11-25 21:24
剛注冊,新人報道,不過樓主好厲害
作者:
小黑MZ
時間:
2019-12-6 09:57
謝謝大佬
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
精品亚洲一区二区三区
|
亚洲欧美精品一区二区
|
国产精品久久久久久久成人午夜
|
欧美视频免费看
|
99热视
|
狠狠干网
|
亚洲午夜视频在线观看
|
国产一级片免费观看
|
久久少妇
|
久久久综合网
|
最新日韩在线
|
日韩色av
|
毛片网站在线播放
|
日韩欧美亚洲
|
国产福利一区二区三区
|
黄色片免费在线观看
|
夜夜狠狠擅视频
|
宅男的天堂
|
欧美日韩免费一区二区三区
|
国产美女自拍视频
|
中文字幕日韩高清
|
性久久久久
|
欧美一区二区三区的
|
一区二区黄色
|
欧美a在线观看
|
欧美一级黄
|
久久一区二区视频
|
五月婷婷综合网
|
色综合久久88
|
日本欧美在线
|
午夜黄色大片
|
久久精品视频国产
|
国产成年妇视频
|
中文字幕一区在线观看
|
欧美亚洲在线观看
|
国产欧美日韩综合精品
|
色综合五月天
|
亚洲区一区二
|
国产丝袜一区
|
日韩高清精品免费观看
|
日韩国产精品视频
|