标题: 入门级51单片机智能小车 可实现多种功能,程序简单易懂 [打印本页]

作者: 电信覃    时间: 2017-12-22 20:52
标题: 入门级51单片机智能小车 可实现多种功能,程序简单易懂
视频演示:
http://v.youku.com/v_show/id_XMzI1NDM3MDg1Mg==.html

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

效果图片:


红外跟随程序:
  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, 下载次数: 597)



作者: ruguowoshidj    时间: 2017-12-30 00:32
楼主,可以分享一波吗
作者: 电信覃    时间: 2017-12-31 08:47
ruguowoshidj 发表于 2017-12-30 00:32
楼主,可以分享一波吗

代码已经发出来了
作者: 学徒工--静    时间: 2018-1-2 20:10
谢谢分享  学习下

作者: jason233    时间: 2018-1-4 13:45
这一波操作很溜~学习了
作者: liuchaocccc    时间: 2018-3-16 16:24
里面不是  坑
作者: weweas    时间: 2018-3-17 07:44
楼主很强势,点个赞

作者: 981283943    时间: 2018-3-22 18:49
谢谢楼主,很强
作者: 电信覃    时间: 2018-3-31 23:00
liuchaocctv 发表于 2018-3-16 16:24
里面不是  坑

怎么会不是,哪里出问题了吧
作者: 多少个地方    时间: 2018-4-11 11:58
谢谢楼主
作者: 孤舟    时间: 2018-4-20 15:38

谢谢分享  学习下
作者: 51zs    时间: 2018-4-22 16:03
楼主,我想问一下,跟随用的什么红外模块啊,谢谢
作者: 51zs    时间: 2018-4-22 16:52
有人做出来了吗
作者: LGX123    时间: 2018-5-14 22:10
这几种功能的程序是在一个总程序里面的还是各个程序分开的?
作者: 电子哎嗨    时间: 2018-5-16 22:55
正在找这个
作者: 手可摘星辰1    时间: 2018-5-31 22:53
赞一个
作者: 1205693382    时间: 2018-6-13 18:13
请问楼主这里边是教程还是只有代码?


我是新手能看懂不?
作者: 电信覃    时间: 2018-6-14 21:39
1205693382 发表于 2018-6-13 18:13
请问楼主这里边是教程还是只有代码?

没有教程哦,不过这些程序很容易看懂的
作者: eydms    时间: 2018-6-22 23:52
感谢楼主的分享
作者: 99九十九    时间: 2018-6-25 09:32
l厉害了,感谢楼主分享
作者: HXXXX    时间: 2018-6-25 09:49
IO好像不够用  是IO口公用了还是扩展了IO口???楼主很急啊!!
作者: niuniniu    时间: 2018-6-25 16:49
红外跟随

作者: 拣尽寒枝不肯栖    时间: 2018-10-30 23:50
有小车的电路图吗?
作者: ZHWDPJ    时间: 2018-11-2 12:42
好厉害
作者: onroll    时间: 2018-11-2 17:22

谢谢分享
作者: 黄明强    时间: 2018-11-2 22:28
楼主,电路原理图可以分享吗?
作者: billions    时间: 2018-11-6 20:42
很给力哟
作者: bhljh    时间: 2018-11-17 11:06
很好,学习了。
作者: F图书馆之子    时间: 2018-11-18 21:22
很给力!顶!真棒!
作者: 无私的人    时间: 2018-11-18 23:53
厉害
作者: 红不    时间: 2018-12-8 16:32
非常感谢!!!!!!

作者: LZSL    时间: 2018-12-13 09:12
很棒的东西,谢谢楼主,帮了大忙
作者: yuanlinlin    时间: 2018-12-16 00:58
非常给力,谢谢分享!
作者: 18603457869    时间: 2018-12-18 23:11
谢谢楼主无私分享,真的很有用!
作者: Broadlearn    时间: 2018-12-23 12:17
都用的哪些配件,有清单吗?发下学习。
作者: SHERLOCK永恒    时间: 2019-3-2 11:49
好!!!
作者: agsnjack    时间: 2019-3-5 17:58
ruguowoshidj 发表于 2017-12-30 00:32
**** 作者被禁止或删除 内容自动屏蔽 ****

望分享
作者: 2356321489    时间: 2019-3-7 21:50
没有黑币气死了,我也想学
作者: 2356321489    时间: 2019-3-9 21:28
终于下载上了,可蓝牙控制应该怎么能了

希望能帮忙,谢谢

作者: 华少爷    时间: 2019-3-26 09:46
谢谢,正需要呢
作者: 19971101    时间: 2019-5-17 15:27
谢谢,正在需要
作者: 18234167578    时间: 2019-5-17 17:14
楼主,有电路图么
作者: 18234167578    时间: 2019-5-17 17:17
楼主实物清单可以发一下吗
作者: 一个紫果子    时间: 2019-12-5 19:13
挺好的
作者: zy2811608262    时间: 2019-12-16 07:18
四个程序都烧进去吗?楼主硬件买了些啥可以分享一下吗
作者: 冰激凌太烫    时间: 2019-12-29 09:48
有用!!
作者: 云启    时间: 2020-3-10 22:28
不错啊这个,就是看到那个万能板上的焊锡有点肉痛
作者: jiangtao568917    时间: 2020-3-13 21:42
正需要呢 真好
作者: LXR_1    时间: 2020-6-20 09:54
正需要
作者: lidongming111    时间: 2020-7-25 17:55
楼主,除了跟随还有其他函数分享吗,想看看其他功能,还有谢谢楼主
作者: lidongming111    时间: 2020-9-13 16:18
楼主,你的打包程序rar中,寻迹和避障直接整合就行了吗?除了端口
作者: gzgy    时间: 2024-5-8 08:12
看了示例代码,下载学习,谢谢分享!
作者: zctwss321    时间: 2024-5-25 18:47
各种模块的链接 , 能发一下吗?  想买点模块, 然后自己组装
作者: zctwss321    时间: 2024-5-25 18:52
LGX123 发表于 2018-5-14 22:10
这几种功能的程序是在一个总程序里面的还是各个程序分开的?

各个模块的程序独立存在的,  根本不是那种综合性的程序,  原理图也没有分享
作者: zctwss321    时间: 2024-5-25 18:52
楼主, 你这程序是各个模块的程序独立存在的,  根本不是那种综合性的程序,  原理图也没有分享
作者: 小谭NO1    时间: 2024-7-16 22:35
避障怎么不是超声波避障,看楼主的小车图有舵机+超声波啊
作者: xhlcp2011    时间: 2024-8-30 10:54
感谢分享




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1