最最簡單的51循跡程序
單片機源程序如下:
- #include<reg52.h>
- #include<intrins.h>
- #define uint unsigned int
- #define uchar unsigned char
- sbit DO = P3^1;
- sbit AO = P3^2;
- sbit beef = P3^4;
- sbit s1=P1^0;
- sbit s2=P1^1;
- sbit s3=P1^2;
- sbit s4=P1^3;
- sbit ENA=P2^0;
- sbit ENB=P2^1;
- sbit l1=P1^4;
- sbit l2=P1^5;
- sbit r1=P1^6;
- sbit r2=P1^7;
- sbit bzy=P0^3;
- sbit bzz=P0^4;
- uchar t=0;
- uchar zkb1=0;
- uchar zkb2=0;
- sbit smg1=P2^4;
- sbit smg2=P2^5;
- sbit smg3=P2^6;
- sbit smg4=P2^7;
- sbit in=P2^3;
- sbit out=P2^2;
- uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
- uchar code table1[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
- uint a,b,c,d,h,i,j;
- uint f,g,e;
- void cijiance();
- void delay20us()
- {
- uchar a;
- for(a=0;a<100;a++);
- }
- void delayms(uint xms)
- {
- uint i,j;
- for(i=xms;i>0;i--)
- for(j=110;j>0;j--);
- }
- void init ()
- {
- EA = 1;
- TMOD = 0x11;
- TH0 =(65536 - 100) / 256;
- TL0 = (65536 - 100)% 256;
- ET0 = 1;
- TR0 = 1;
-
- }
- void time ()interrupt 1
- {
- TH0 =(65536 - 100) / 256;
- TL0 = (65536 - 100)% 256;
- ++t;
- if (t<zkb1)
- {
- ENA=1;
- }
- else
- {
- ENA=0;
- }
- if(t<zkb2)
- {
- ENB=1;
- }
- else
- {
- ENB=0;
- }
- if(t>=200)
- {
- t=0;
- }
- }
- void T0_time() interrupt 3
- {
- TH0=0;
- TL0=0;
- g++;
- }
- void ceju()
- {
-
- out=0;
- TH0=0;
- TL0=0;
- while(1)
- {
- g=0;
- in=0;
- out=1;
- delay20us();
- out=0;
- while(in==0);
- TR0=1;
- while(in==1);
- while(1)
- {
- h=TH0;
- i=TL0;
- j=TH0;
- if(h==j)
- break;
- }
- f=TH0*256+TL0;
- e=((f+g*65536)*18)/1000;
- d=e%1000%100%10;
- c=e%1000%100/10;
- b=e%1000/100;
- a=e/1000;
- TR0=0;
- TL0=0;
- TH0=0;
- if(b>0)
- {
- c=c+1;
- }
- smg1=0;
- P0=table[d];
- delayms(1);
- smg1=1;
- P0=0xff;
- smg2=0;
- P0=table[c];
- delayms(1);
- smg2=1;
- P0=0xff;
- smg3=0;
- P0=table1[b];
- delayms(1);
- smg3=1;
- P0=0xff;
- smg4=0;
- P0=table[a];
- delayms(1);
- smg4=1;
- P0=0xff;
- }
- }
- void ltx()
- {
- zkb1=30;
- zkb2=60;
- s1=1;s2=0;
- s3=1;s4=0;
- }
- void rtx()
- {
- zkb1=60;
- zkb2=30;
- s1=0;s2=1;
- s3=0;s4=1;
- }
- void ltd()
- {
- zkb1=40;
- zkb2=65;
- s1=1;s2=0;
- s3=1;s4=0;
- }
- void rtd()
- {
- zkb1=60;
- zkb2=40;
- s1=0;s2=1;
- s3=0;s4=1;
- }
- void stop2()
- {
- s1=0;s2=0;
- s3=0;s4=0;
- zkb1=14;
- zkb2=14;
- }
- void qianjin()
- {
- s1=0;s2=1;
- s3=1;s4=0;
- zkb1=55;
- zkb2=52;
- }
- void qianjin1()
- {
- s1=0;s2=1;
- s3=1;s4=0;
- zkb1=54;
- zkb2=52;
- }
- void xunji ()
- {
- if(l1==1&&l2==0&&r1==0&&r2==0)
- {
- ltd();
- }
- if(l1==0&&l2==0&&r1==1&&r2==0)
- {
- rtd();
- }
- if(l1==0&&l2==1&&r1==0&&r2==0)
- {
- ltd();
- }
- if(l1==0&&l2==0&&r1==0&&r2==1)
- {
- rtd();
- }
- if(l1==1&&l2==1&&r1==1&&r2==1)
- {
- qianjin();
- delayms(50);
- if(l1==1&&l2==1&&r1==1&&r2==1)
- {
- stop2();
- ceju();
- }
- else
- {
- if(l1==0&&l2==0&&r1==0&&r2==0)
- {
- qianjin();
- }
- }
- }
- if(bzz==1&&l1==0&&l2==0&&r1==0&&r2==0&&bzy==1&&bzz==1)
- {
- qianjin1();
- }
- // if(l1==0&&l2==0&&r1==0&&r2==0&&bzy==0&&bzz==1)
- // {
- // ltd();
- // delayms(300);
- // qianjin();
- // delayms(200);
- // rtd();
- // delayms(300);
- // }
- if(l1==0&&l2==0&&r1==0&&r2==0&&bzy==0&&bzz==1)
- {
- ltx();
- delayms(100);
- stop2();
- delayms(200);
- qianjin();
- delayms(500);
- stop2();
- delayms(200);
- rtx();
- delayms(400);
- stop2();
- delayms(200);
- qianjin();
- delayms(400);
- stop2();
- delayms(200);
- ltx();
- delayms(200);
-
- }
- //if(l1==0&&l2==0&&r1==0&&r2==0&&bzy==1&&bzz==0)
- // {
- // rtx();
- // delayms(300);
- // stop2();
- // delayms(200);
- // qianjin();
- // delayms(600);
- // stop2();
- // delayms(200);
- // ltx();
- // delayms(400);
- // stop2();
- // delayms(200);
- // qianjin();
- // delayms(600);
- //
- // }
- cijiance();
- }
- void cijiance()
- {
- if(DO==1)
- {
- delayms(10);
- beef=1;
- }
- else if (DO==0)
- {
- delayms(10);
- beef=0;
- }
- }
- void main ()
- {
- init();
- s1=0;s2=1;
- s3=1;s4=0;
- zkb1=15;
- zkb2=14;
- while(1)
- {
- xunji();
- }
- }
復制代碼
所有資料51hei提供下載:
循跡小車.rar
(48.52 KB, 下載次數: 21)
2018-11-12 19:04 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|