单片机教程网

电脑版
提示:原网页已由神马搜索转码, 内容由www.51hei.com提供.
上一页
1/2
下一页
查看:34363|回复:54
打印上一主题下一主题

入门级51单片机智能小车 可实现多种功能,程序简单易懂

 [复制链接]
跳转到指定楼层
楼主
ID:264081发表于 2017-12-22 20:52|只看该作者|只看大图回帖奖励
视频演示:


可以实现避障,红外跟随,蓝牙控制,寻迹

效果图片:


红外跟随程序:
  1. #include<reg52.h>

  2. #define uint unsigned int
  3. #define uchar unsigned char
  4.     
  5. uchar zkb_left1,zkb_right1,zkb_left2,zkb_right2,i1,j1,i2,j2; //占空比标志

  6. sbit IN1=P1^0;     //电机控制端口
  7. sbit IN2=P1^1;
  8. sbit IN3=P1^2;
  9. sbit IN4=P1^3;
  10. sbit IN5=P1^4;    
  11. sbit IN6=P1^5;
  12. sbit IN7=P1^6;
  13. sbit IN8=P1^7;

  14. sbit hw1=P2^4;     //红外传感器端口
  15. sbit hw2=P2^3;


  16. sbit zkba=P0^0;       //占空比控制端
  17. sbit zkbb=P0^1;
  18. sbit zkbc=P0^2;       //占空比控制端
  19. sbit zkbd=P0^3;

  20. void delay_ms(uint z)       //延时函数
  21. {
  22.      uchar x,y;
  23.      for(x=z;x>0;x--)
  24.          for(y=110;y>0;y--);
  25. }

  26. void init()       //初始化函数
  27. {
  28.      TMOD=0x01;
  29.      TH0=(65536-100)/256;
  30.      TL0=(65536-100)%256     ;
  31.      EA=1;
  32.      ET0=1;
  33.      TR0=1;
  34.      zkba=1;
  35.      zkbb=1;
  36.      zkbc=1;
  37.      zkbd=1;
  38. }

  39. void time0() interrupt 1   //中断服务函数
  40. {
  41.      i1++;j1++;i2++;j2++;           //进入中断i,j自加1
  42.      if(i1<zkb_right1)     {zkbb=1;}     //如果i小于设定值,使能端置1,否则置0
  43.      else zkbb=0;
  44.      if(i1==40)     {zkbb=~zkbb;i1=0;}  //如果i加到40;使能端取反,i置0

  45.      if(j1<zkb_left1)     {zkba=1;}
  46.      else zkba=0;
  47.      if(j1==40)     {zkba=~zkba;j1=0;}
  48.     
  49.      if(i2<zkb_right2)     {zkbd=1;}     //如果i小于设定值,使能端置1,否则置0
  50.      else zkbd=0;
  51.      if(i2==40)     {zkbd=~zkbd;i2=0;}  //如果i加到40;使能端取反,i置0

  52.      if(j2<zkb_left2)     {zkbc=1;}
  53.      else zkbc=0;
  54.      if(j2==40)     {zkbc=~zkbc;j2=0;}    
  55.     
  56.     
  57.      TH0=(65536-100)/256;       //定时器0重装初值
  58.      TL0=(65536-100)%256;
  59. }

  60. void go()       //前进函数
  61. {
  62.      zkb_left1=8;
  63.      zkb_right1=8;
  64.      zkb_left2=8;
  65.      zkb_right2=8;
  66.     
  67.      IN1=1;     IN2=0;          
  68.      IN3=1;     IN4=0;
  69.      IN5=1;     IN6=0;          
  70.      IN7=1;     IN8=0;
  71. }
  72. void back()       //后退函数
  73. {
  74.      zkb_left1=8;
  75.      zkb_right1=8;
  76.      zkb_left2=8;
  77.      zkb_right2=8;
  78.     
  79.      IN1=0;     IN2=1;
  80.      IN3=0;     IN4=1;
  81.      IN5=0;     IN6=1;
  82.      IN7=0;     IN8=1;
  83. }
  84. void left()         //左转弯函数,
  85. {
  86.      zkb_left1=10;   //设置一个速度
  87.      zkb_right1=10;
  88.      zkb_left2=10;  
  89.      zkb_right2=10;
  90.     
  91.      IN1=0;     IN2=1;     //
  92.      IN3=1;     IN4=0;
  93.      IN5=0;     IN6=1;    
  94.      IN7=1;     IN8=0;
  95. }
  96. void right()         //右转弯函数
  97. {
  98.      zkb_left1=10;         //设置一个速度
  99.      zkb_right1=10;
  100.      zkb_left2=10;        
  101.      zkb_right2=10;
  102.     
  103.      IN1=1;     IN2=0;       //
  104.      IN3=0;     IN4=1;
  105.      IN5=1;     IN6=0;       //
  106.      IN7=0;     IN8=1;
  107. }
  108. void stop()         //停止函数
  109. {
  110.      IN1=0;     IN2=0;
  111.      IN3=0;     IN4=0;
  112.      IN5=0;     IN6=0;
  113.      IN7=0;     IN8=0;    
  114. }


  115. void gensui()       //
  116. {
  117.      uchar flag;       //定义一个标志位,用于状态判断
  118.      if(hw1==1& hw2==1)       //
  119.      {flag=0;}
  120.        else if(hw1==0& hw2==0)     //
  121.      {flag=1;}
  122.        else if(hw1==1& hw2==0)     //
  123.      {flag=2;}
  124.        else if(hw1==0& hw2==1)     //
  125.      {flag=3;}
  126.          else flag=4;   //其他情况标志位置0
  127.      switch (flag)
  128.      {
  129.          case 0: go(); break;     //情况0,前进
  130.          case 1: stop(); break;     //情况1,前进
  131.          case 2: left(); break;     //情况2,左转
  132.          case 3: right(); break;     //
  133.          case 4: stop(); break;     //情况4,右转
  134.          default: stop(); break;     //
  135.      }
  136. }

  137. void main()
  138. {
  139.      init();
  140.      delay_ms(1);
  141.      while(1)
  142.      {
  143.          gensui();
  144.      }
  145. }

复制代码


全部资料51hei下载地址:
源程序打包.rar(87.95 KB, 下载次数: 588)


评分

黑币 +15
收起理由
+ 5
很给力!
+ 5
这个太给力!!!! 会一直关注楼主
+ 5
很给力!

查看全部评分

沙发
ID:269089发表于 2017-12-30 00:32来自手机|只看该作者
楼主,可以分享一波吗
板凳
ID:264081发表于 2017-12-31 08:47|只看该作者
ruguowoshidj 发表于 2017-12-30 00:32
楼主,可以分享一波吗

代码已经发出来了
地板
ID:202586发表于 2018-1-2 20:10|只看该作者
谢谢分享  学习下
5#
ID:271338发表于 2018-1-4 13:45|只看该作者
这一波操作很溜~学习了
6#
ID:284774发表于 2018-3-16 16:24|只看该作者
里面不是  坑
7#
ID:285079发表于 2018-3-17 07:44|只看该作者
楼主很强势,点个赞
8#
ID:289779发表于 2018-3-22 18:49|只看该作者
谢谢楼主,很强
9#
ID:264081发表于 2018-3-31 23:00|只看该作者

怎么会不是,哪里出问题了吧
10#
ID:305541发表于 2018-4-11 11:58|只看该作者
谢谢楼主
11#
ID:258650发表于 2018-4-20 15:38|只看该作者

谢谢分享  学习下
12#
ID:305648发表于 2018-4-22 16:03来自手机|只看该作者
楼主,我想问一下,跟随用的什么红外模块啊,谢谢
13#
ID:305648发表于 2018-4-22 16:52来自手机|只看该作者
有人做出来了吗
14#
ID:309758发表于 2018-5-14 22:10|只看该作者
这几种功能的程序是在一个总程序里面的还是各个程序分开的?
15#
ID:331717发表于 2018-5-16 22:55|只看该作者
正在找这个
16#
ID:335277发表于 2018-5-31 22:53|只看该作者
赞一个
17#
ID:349966发表于 2018-6-13 18:13|只看该作者
请问楼主这里边是教程还是只有代码?


我是新手能看懂不?
18#
ID:264081发表于 2018-6-14 21:39|只看该作者
1205693382 发表于 2018-6-13 18:13
请问楼主这里边是教程还是只有代码?

没有教程哦,不过这些程序很容易看懂的
19#
ID:356094发表于 2018-6-22 23:52|只看该作者
感谢楼主的分享
20#
ID:358191发表于 2018-6-25 09:32|只看该作者
l厉害了,感谢楼主分享
21#
ID:283315发表于 2018-6-25 09:49|只看该作者
IO好像不够用  是IO口公用了还是扩展了IO口???楼主很急啊!!
22#
ID:353118发表于 2018-6-25 16:49|只看该作者
红外跟随
23#
ID:396124发表于 2018-10-30 23:50|只看该作者
有小车的电路图吗?
24#
ID:419603发表于 2018-11-2 12:42|只看该作者
好厉害
25#
ID:418342发表于 2018-11-2 17:22|只看该作者

谢谢分享
26#
ID:328975发表于 2018-11-2 22:28|只看该作者
楼主,电路原理图可以分享吗?
27#
ID:421919发表于 2018-11-6 20:42|只看该作者
很给力哟
28#
ID:428050发表于 2018-11-17 11:06|只看该作者
很好,学习了。
29#
ID:428221发表于 2018-11-18 21:22|只看该作者
很给力!顶!真棒!
30#
ID:428947发表于 2018-11-18 23:53来自手机|只看该作者
厉害
31#
ID:280485发表于 2018-12-8 16:32|只看该作者
非常感谢!!!!!!
32#
ID:435490发表于 2018-12-13 09:12|只看该作者
很棒的东西,谢谢楼主,帮了大忙
33#
ID:436621发表于 2018-12-16 00:58|只看该作者
非常给力,谢谢分享!
34#
ID:445186发表于 2018-12-18 23:11来自手机|只看该作者
谢谢楼主无私分享,真的很有用!
35#
ID:444919发表于 2018-12-23 12:17|只看该作者
都用的哪些配件,有清单吗?发下学习。
36#
ID:482513发表于 2019-3-2 11:49|只看该作者
好!!!
37#
ID:485051发表于 2019-3-5 17:58|只看该作者
ruguowoshidj 发表于 2017-12-30 00:32
**** 作者被禁止或删除 内容自动屏蔽 ****

望分享
38#
ID:486550发表于 2019-3-7 21:50|只看该作者
没有黑币气死了,我也想学
39#
ID:486550发表于 2019-3-9 21:28|只看该作者
终于下载上了,可蓝牙控制应该怎么能了

希望能帮忙,谢谢
40#
ID:495022发表于 2019-3-26 09:46|只看该作者
谢谢,正需要呢

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

Powered by 单片机教程网