坦克尋跡測速計時
單片機源程序如下:
- #include<reg52.h>
- unsigned int i=0;
- sbit P36=P3^6;
- sbit P10=P1^0; //循跡口
- sbit P11=P1^1;
- sbit P12=P1^2;
- sbit P14=P1^4; //電機口
- sbit P15=P1^5;
- sbit P16=P1^6;
- sbit P17=P1^7;
- unsigned char j,time;
- unsigned int kop,dr;
- unsigned char a[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
- unsigned char c[4]={0xff,0xff,0xff,0xff},d[4];
- void delay(unsigned char z) //延時子程序
- {
- unsigned char j;
- while(z--)
- for(j=123;j>0;j--);
- }
- void main()
- {
- TMOD=0x15; // 打開定時器和計數(shù)器
- TH0=0x00;
- TL0=0x00;
-
- TH1=0XFc; //1ms
- TL1=0X18;
- EA = 1;
- ET0=1;
- ET1=1;
- TR1 = 1;
- TR0 = 1;
- while(1)
- {
- if(P10==0&&P11==0&&P12==0)
- {
- TR0=0; //顯示時間 停
- P0=d[0];
- P2=0XFE;
- delay(1);
- P0=d[3];
- P2=0XFB;
- delay(3);
- P0=d[2]; //顯示測速 停
- P2=0XFD;
- delay(3);
- P0=d[3];
- P2=0XF7;
- delay(3);
- P14=1;P15=1;P16=1; P17=1;
- }
- }
- }
- void timer1() interrupt 3 //中斷 服務程序
- {
- unsigned int qq=0,ww=0;
- TH1=0XFc;
- TL1=0X18;//1ms
- i++;
- switch(i%4)
- {
- case 0:P0=c[0],P2=0XFE;d[0]=c[0];break;
- case 1:P0=c[1],P2=0XFD;d[1]=c[1];break;
- case 2:P0=c[2],P2=0XFB;d[2]=c[2]; break;
- case 3:P0=c[3],P2=0XF7;d[3]=c[3]; break;
- default:break;
- }
- P14=1;P15=1;P16=1; P17=1;
-
- if(P10==0&&P11==0&&P12==0) //全測到
- dr=0;
- if(P10==1&&P11==0&&P12==1) //中間測到
- dr=1;
- if(P10==0&&P11==1&&P12==1) //左邊測到
- dr=2;
- if(P10==1&&P11==1&&P12==0) //右邊測到
- dr=3;
- if(P10==0&&P11==0&&P12==1) //左兩測到
- dr=4;
- if(P10==1&&P11==0&&P12==0) //右兩測到
- dr=5;
-
- switch(dr)
- {
- case 0:P14=1,P15=1,P16=1,P17=1,TR1=0;break; //全測到 停
-
- case 1:P14=0,P15=1,P16=0,P17=1;break; //直走
-
- case 2:P14=1,P15=1,P16=0,P17=1,ww=1;break; //左拐
-
- case 3:P14=0,P15=1,P16=1,P17=1,qq=1;break; //右拐
-
- case 4:P14=1,P15=0,P16=0,P17=1,ww=1;break; //左兩測到 左拐
-
- case 5:P14=0,P15=1,P16=1,P17=0,qq=1;break; //右兩測到 右拐
- }
- /*跑出跑道外記憶 回到跑道內(nèi) */
- if(dr==2&&ww==1||dr==4&&ww==1) //單邊或雙邊 測到跑出去
- {
- qq=0;
- P14=1;P15=1;P16=0;P17=1;
- }
- if(dr==3&&qq==1||dr==5&&qq==1)
- {
- ww=0;
- P14=0;P15=1;P16=1;P17=1;
- }
- if(i==1000) //1s
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
0.png (51.31 KB, 下載次數(shù): 70)
下載附件
2017-5-23 17:09 上傳
所有資料51hei提供下載:
坦克 循跡 計時 測速.rar
(14.45 KB, 下載次數(shù): 7)
2017-5-23 11:30 上傳
點擊文件名下載附件
坦克尋跡 下載積分: 黑幣 -5
|