找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2751|回复: 3
打印 上一主题 下一主题
收起左侧

51单片机蓝牙小车程序

[复制链接]
跳转到指定楼层
楼主


小车有两种模式可通过蓝牙软件切换
单片机源程序如下:
  1. /**************
  2. 作者 : 卑微小赵
  3. ************/
  4. #include <reg52.h>
  5. #define uc unsigned char
  6. #define ui unsigned int
  7.        
  8. #define  LCDIO     P2       


  9. sbit LCD1602_RS=P1^2;   
  10. sbit LCD1602_RW=P1^1;   
  11. sbit LCD1602_EN=P1^0;

  12. sbit q1=P0^3;
  13. sbit q1_1=P1^3;

  14. sbit q2=P1^5;
  15. sbit q2_2=P1^4;

  16. sbit h1=P0^1;
  17. sbit h1_1=P0^2;

  18. sbit h2=P1^6;
  19. sbit h2_2=P1^7;

  20. sbit n1=P0^0;
  21. sbit n2=P0^1;
  22. sbit n3=P0^2;
  23. sbit n4=P0^7;

  24. sbit yn1=P0^6;
  25. sbit yn2=P0^7;

  26. sbit zn1=P0^4;
  27. sbit zn2=P0^5;

  28. sbit fm=P0^0;

  29. sbit hw1=P3^7;
  30. sbit hw2=P3^6;
  31. sbit hw3=P3^5;
  32. sbit hw4=P3^4;

  33. #define qian  q1=1; q1_1=0; q2=1; q2_2=0; h1=1; h1_1=0; h2=1; h2_2=0;
  34. #define hou   q1=0; q1_1=1; q2=0; q2_2=1; h1=0; h1_1=1; h2=0; h2_2=1;
  35. #define zuo   q1=0; q1_1=1; q2=1; q2_2=0; h1=0; h1_1=1; h2=1; h2_2=0;
  36. #define you   q1=1; q1_1=0; q2=0; q2_2=1; h1=1; h1_1=0; h2=0; h2_2=1;
  37. #define tin   h1=1; h1_1=1; h2=1; h2_2=1; q1=1; q1_1=1; q2=1; q2_2=1;


  38. #define n1k yn1=1; yn2=1;
  39. #define n1g yn1=0; yn2=0;
  40. #define n2k zn1=1; zn2=1;
  41. #define n2g zn1=0; zn2=0;

  42. uc receiveData;
  43. uc jj=0,ll=0;
  44. uc kk=0,mm=0;
  45. uc b=0;
  46. bit h=0;

  47. uc bb=0;

  48. void delay(ui shi)
  49. {
  50.         while(shi--);
  51. }

  52. void LCD_Busy(void) //1602判忙
  53. {

  54.         uc i;
  55.         LCDIO=0xff;
  56.         LCD1602_RS=0;   
  57.         LCD1602_RW=1;
  58.         for(i=0;i<200;i++)
  59.         {
  60.                 LCD1602_EN=0;
  61.                 LCD1602_EN=1;
  62.                 if(!(LCDIO&0x80))break;
  63.         }
  64.         LCD1602_EN=0;
  65.         LCD1602_RW=0;
  66. }

  67. void LCD_en_command(uc command)
  68. {
  69.         LCD_Busy();
  70.         LCD1602_RS=0;   
  71.         LCDIO=command;
  72.         LCD1602_EN=1;
  73.         LCD1602_EN=0;
  74. }

  75. void LCD_en_dat(uc dat)
  76. {
  77.         LCD_Busy();
  78.         LCD1602_RS=1;
  79.         LCDIO=dat;
  80.         LCD1602_EN=1;
  81.         LCD1602_EN=0;
  82. }


  83. void LCD_set_xy( uc x, uc y )
  84. {
  85.         uc address;
  86.         x&=0x0f;
  87.         if (y == 0)
  88.          address = 0x80 + x;
  89.         else
  90.          address = 0xC0 + x;
  91.         LCD_en_command(address);
  92. }


  93. void LCD_write_char( uc x,uc y,uc dat)
  94. {
  95.         LCD_set_xy( x, y );
  96.         LCD_en_dat(dat);
  97. }

  98. void LCD_write_string(uc X,uc Y,uc *s)
  99. {
  100.         LCD_set_xy( X, Y );
  101.         while (*s)   
  102.         {
  103.             LCD_en_dat(*s);  
  104.             s ++;         
  105.         }
  106. }


  107. void LCD_init(void)//1602初始化
  108. {
  109.         LCD1602_EN=0;         
  110.         LCD_en_command(0x38);  
  111.         LCD_en_command(0x0C);   
  112.         LCD_en_command(0x01);   
  113. }

  114. void pwm1()
  115. {
  116.         you;
  117.         n1k;
  118.         delay(8000);
  119.         n1g;
  120.         delay(5000);
  121. }

  122. void pwm2()
  123. {
  124.         zuo;
  125.         n2k;
  126.         delay(8000);
  127.         n2g;
  128.         delay(5000);
  129. }




  130. void pwm3()
  131. {
  132.         qian;
  133.         n1k; n2k;
  134.         delay(500);
  135.         n1g; n2g;
  136.         delay(3000);
  137. }

  138. void pwm4()
  139. {
  140.         hou;
  141.         n1k; n2k;
  142.         delay(500);
  143.         n1g; n2g;
  144.         delay(3000);
  145. }

  146. void pwm5()
  147. {
  148.         you;
  149.         n1k;
  150.         delay(5000);
  151.         n1g;
  152.         delay(4000);
  153. }

  154. void pwm6()
  155. {
  156.         zuo;
  157.         n2k;
  158.         delay(5000);
  159.         n2g;
  160.         delay(4000);
  161. }


  162. void biz()
  163. {
  164.         pwm3();
  165.         if(hw1==0||hw4==0){pwm5();}
  166.         if(hw2==0||hw3==0){pwm6();}
  167.         if(hw1==0&&hw3==0){pwm3();}
  168.         if(hw2==0&&hw4==4){pwm4();}
  169. }

  170. void kongzhi()
  171. {
  172.         switch(bb)
  173.         {
  174.                 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;
  175.                 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;
  176.                 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;
  177.                 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;
  178.                 case 4: tin; break;
  179.         }
  180.                        
  181. }
  182. void moshi()
  183. {
  184.         if(h==0){kongzhi();}
  185.         if(h==1){biz();}
  186. }

  187. void tishi()
  188. {
  189.         if(b==1){fm=0; delay(4000); fm=1;delay(40000);fm=0; delay(4000); fm=1;delay(40000); b=0;}
  190. }

  191. void ckinit()
  192. {SCON=0x50;//设定串口工作方式0101 0000

  193. PCON=0x00;

  194. TMOD=0x20;

  195. EA=1;

  196. ES=1;

  197. TL1=0xfd;//波特率9600

  198. TH1=0xfd;

  199. TR1=1;

  200. }


  201. void init()
  202. {
  203.         ckinit();
  204.         LCD_init();
  205.         LCD_write_string(0,0,"inti");
  206.         delay(50000);
  207.         qian;
  208.         LCD_write_string(0,0,"inti.");
  209.         delay(50000);
  210.         LCD_write_string(0,0,"inti..");
  211.         delay(50000);
  212.         LCD_write_string(0,0,"inti...");
  213.         delay(50000);
  214.         LCD_write_string(0,0,"inti....");
  215.         delay(50000);
  216.         LCD_write_string(0,0,"inti.....");
  217.         delay(50000);
  218.         tin;
  219.         LCD_write_string(0,0,"ok         ");
  220.        
  221.         fm=0; delay(30000); fm=1; delay(30000);
  222.         LCD_write_string(0,0,"         ");
  223.         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 ");
  224. }

  225. void main()
  226. {
  227.         init();
  228.         while(1)
  229. ……………………

  230. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

上程序
111.7z (817.61 KB, 下载次数: 48)



评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:840461 发表于 2020-11-8 09:59 | 只看该作者
thank you for sharing
回复

使用道具 举报

板凳
ID:670608 发表于 2020-11-8 17:43 | 只看该作者

希望能一起学习
回复

使用道具 举报

地板
ID:841696 发表于 2020-11-11 13:50 | 只看该作者

thank you for sharing
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表