51hei截圖20201108020155.png (162.93 KB, 下載次數: 29)
下載附件
藍牙遙控
2020-11-8 02:02 上傳
51hei截圖20201108020230.png (197.08 KB, 下載次數: 33)
下載附件
整體
2020-11-8 02:02 上傳
小車有兩種模式可通過藍牙軟件切換
單片機源程序如下:
- /**************
- 作者 : 卑微小趙
- ************/
- #include <reg52.h>
- #define uc unsigned char
- #define ui unsigned int
-
- #define LCDIO P2
- sbit LCD1602_RS=P1^2;
- sbit LCD1602_RW=P1^1;
- sbit LCD1602_EN=P1^0;
- sbit q1=P0^3;
- sbit q1_1=P1^3;
- sbit q2=P1^5;
- sbit q2_2=P1^4;
- sbit h1=P0^1;
- sbit h1_1=P0^2;
- sbit h2=P1^6;
- sbit h2_2=P1^7;
- sbit n1=P0^0;
- sbit n2=P0^1;
- sbit n3=P0^2;
- sbit n4=P0^7;
- sbit yn1=P0^6;
- sbit yn2=P0^7;
- sbit zn1=P0^4;
- sbit zn2=P0^5;
- sbit fm=P0^0;
- sbit hw1=P3^7;
- sbit hw2=P3^6;
- sbit hw3=P3^5;
- sbit hw4=P3^4;
- #define qian q1=1; q1_1=0; q2=1; q2_2=0; h1=1; h1_1=0; h2=1; h2_2=0;
- #define hou q1=0; q1_1=1; q2=0; q2_2=1; h1=0; h1_1=1; h2=0; h2_2=1;
- #define zuo q1=0; q1_1=1; q2=1; q2_2=0; h1=0; h1_1=1; h2=1; h2_2=0;
- #define you q1=1; q1_1=0; q2=0; q2_2=1; h1=1; h1_1=0; h2=0; h2_2=1;
- #define tin h1=1; h1_1=1; h2=1; h2_2=1; q1=1; q1_1=1; q2=1; q2_2=1;
- #define n1k yn1=1; yn2=1;
- #define n1g yn1=0; yn2=0;
- #define n2k zn1=1; zn2=1;
- #define n2g zn1=0; zn2=0;
- uc receiveData;
- uc jj=0,ll=0;
- uc kk=0,mm=0;
- uc b=0;
- bit h=0;
- uc bb=0;
- void delay(ui shi)
- {
- while(shi--);
- }
- void LCD_Busy(void) //1602判忙
- {
- uc i;
- LCDIO=0xff;
- LCD1602_RS=0;
- LCD1602_RW=1;
- for(i=0;i<200;i++)
- {
- LCD1602_EN=0;
- LCD1602_EN=1;
- if(!(LCDIO&0x80))break;
- }
- LCD1602_EN=0;
- LCD1602_RW=0;
- }
- void LCD_en_command(uc command)
- {
- LCD_Busy();
- LCD1602_RS=0;
- LCDIO=command;
- LCD1602_EN=1;
- LCD1602_EN=0;
- }
-
- void LCD_en_dat(uc dat)
- {
- LCD_Busy();
- LCD1602_RS=1;
- LCDIO=dat;
- LCD1602_EN=1;
- LCD1602_EN=0;
- }
- void LCD_set_xy( uc x, uc y )
- {
- uc address;
- x&=0x0f;
- if (y == 0)
- address = 0x80 + x;
- else
- address = 0xC0 + x;
- LCD_en_command(address);
- }
- void LCD_write_char( uc x,uc y,uc dat)
- {
- LCD_set_xy( x, y );
- LCD_en_dat(dat);
- }
- void LCD_write_string(uc X,uc Y,uc *s)
- {
- LCD_set_xy( X, Y );
- while (*s)
- {
- LCD_en_dat(*s);
- s ++;
- }
- }
- void LCD_init(void)//1602初始化
- {
- LCD1602_EN=0;
- LCD_en_command(0x38);
- LCD_en_command(0x0C);
- LCD_en_command(0x01);
- }
- void pwm1()
- {
- you;
- n1k;
- delay(8000);
- n1g;
- delay(5000);
- }
- void pwm2()
- {
- zuo;
- n2k;
- delay(8000);
- n2g;
- delay(5000);
- }
- void pwm3()
- {
- qian;
- n1k; n2k;
- delay(500);
- n1g; n2g;
- delay(3000);
- }
- void pwm4()
- {
- hou;
- n1k; n2k;
- delay(500);
- n1g; n2g;
- delay(3000);
- }
- void pwm5()
- {
- you;
- n1k;
- delay(5000);
- n1g;
- delay(4000);
- }
- void pwm6()
- {
- zuo;
- n2k;
- delay(5000);
- n2g;
- delay(4000);
- }
- void biz()
- {
- pwm3();
- if(hw1==0||hw4==0){pwm5();}
- if(hw2==0||hw3==0){pwm6();}
- if(hw1==0&&hw3==0){pwm3();}
- if(hw2==0&&hw4==4){pwm4();}
- }
- void kongzhi()
- {
- switch(bb)
- {
- case 0:if(kk==1){pwm2();} else{n1k;n2k; qian;} if(mm==1){pwm1();} else{n1k;n2k; qian;} if((jj==0&&kk==0)||(jj==0&&mm==0)){bb=4;} break;
- case 1:if(kk==1){pwm1();} else{n1k;n2k; hou;} if(mm==1){pwm2();}else{n1k;n2k; hou;} if((ll==0&&kk==0)||(ll==0&&mm==0)){bb=4;} break;
- case 2:if(jj==1){n1k; n2k;qian;}else{n1k; n2k; zuo;} if(ll==1){n1k; n2k;hou;}else{n1k; n2k; zuo;} if(kk==0) {bb=4;} break;
- case 3:if(jj==1){n1k; n2k;qian;}else{n1k; n2k; you;} if(ll==1){n1k; n2k;hou;}else{n1k; n2k; you;} if(mm==0) {bb=4;} break;
- case 4: tin; break;
- }
-
- }
- void moshi()
- {
- if(h==0){kongzhi();}
- if(h==1){biz();}
- }
- void tishi()
- {
- if(b==1){fm=0; delay(4000); fm=1;delay(40000);fm=0; delay(4000); fm=1;delay(40000); b=0;}
- }
- void ckinit()
- {SCON=0x50;//設定串口工作方式0101 0000
-
- PCON=0x00;
-
- TMOD=0x20;
-
- EA=1;
-
- ES=1;
-
- TL1=0xfd;//波特率9600
-
- TH1=0xfd;
-
- TR1=1;
-
- }
- void init()
- {
- ckinit();
- LCD_init();
- LCD_write_string(0,0,"inti");
- delay(50000);
- qian;
- LCD_write_string(0,0,"inti.");
- delay(50000);
- LCD_write_string(0,0,"inti..");
- delay(50000);
- LCD_write_string(0,0,"inti...");
- delay(50000);
- LCD_write_string(0,0,"inti....");
- delay(50000);
- LCD_write_string(0,0,"inti.....");
- delay(50000);
- tin;
- LCD_write_string(0,0,"ok ");
-
- fm=0; delay(30000); fm=1; delay(30000);
- LCD_write_string(0,0," ");
- fm=0; delay(30000); LCD_write_string(0,0,"ok "); fm=1; delay(30000);fm=0;LCD_write_string(0,0," "); delay(30000);LCD_write_string(0,0,"ok "); fm=1; LCD_write_string(0,0,"remote control ");
- }
- void main()
- {
- init();
- while(1)
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
上程序
111.7z
(817.61 KB, 下載次數: 48)
2020-11-8 02:07 上傳
點擊文件名下載附件
51程序 下載積分: 黑幣 -5
|