单片机教程网

电脑版
提示:原网页已由神马搜索转码, 内容由www.51hei.com提供.
查看:19929|回复:20

智能循迹小车电路图单片机程序与proteus仿真

 [复制链接]
ID:287566发表于 2018-3-4 22:24|显示全部楼层
发个智能循迹小车电路图和程序及仿真图,希望对大家有用
LM393比较器的作用:-端电平大于+端10mV,输出低电平,
相反,输出端导通,由上拉电阻R4(VCC)给输出端高电平

检测白线光电传器不导通,端口2电平为0,
检测到黑线光电传器导通,端口2电平由VCC经R6分压后得高电平
0.jpg


元件清单:
小车材料清单.jpg

仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
0.png
0.png

单片机源程序如下:
  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. uchar temp,signal,tt1;


  5. void delay_1ms(uint d)
  6. {
  7.        uint i;
  8.        while(d--)
  9.            for(i=0;i<75;i++);
  10. }

  11. void motor_run()             //电机起动
  12. {
  13.        P1=0x35;
  14.        delay_1ms(150);
  15.        P1=0x00;
  16.        delay_1ms(20);
  17. /*       ENA=1;

  18.        OUT1=0;

  19.        OUT2=1;
  20.        delay_1ms(800);
  21.        OUT2=0;
  22.        delay_1ms(200);
  23.       
  24.        ENB=1;

  25.        OUT4=0;

  26.        OUT3=1;
  27.        delay_1ms(800);
  28.        OUT3=0;
  29.        delay_1ms(200);
  30. */
  31. }
  32. void motor_left()                 //左进
  33. {
  34.        P1=0x30;
  35.        delay_1ms(150);
  36.        P1=0x00;
  37.        delay_1ms(20);
  38. }

  39. void motor_right()             //右进
  40. {
  41.        P1=0x05;
  42.        delay_1ms(150);
  43.        P1=0x00;
  44.        delay_1ms(20);
  45. }

  46. void motor_big_right()                 //粗右进
  47. {
  48.        P1=0x55;
  49.        delay_1ms(150);
  50.        P1=0x00;
  51.        delay_1ms(20);
  52. }
  53. void motor_big_left()
  54. {
  55.        P1=0x33;
  56.        delay_1ms(150);
  57.        P1=0x00;
  58.        delay_1ms(20);
  59. }
  60. void motor_stop()                           //电机停止
  61. {
  62.        P1=0x00;
  63. }
  64. void motor_back()
  65. {
  66.        P1=0x53;
  67. }
  68. void main()
  69. {
  70.        tt1=0;
  71.        EA=1;
  72.        ET1=1;
  73.        TR1=1;
  74.        TMOD=0x01;
  75.        TH1=-(1000/256);
  76.        TL1=-(1000%256);
  77.        while(1)
  78.        {

  79.              temp=P2;
  80.            signal=temp&0xff;             //得到红外反向信号
  81.            switch(signal)
  82.            {
  83.                  case 0xff:         //无偏差
  84.                        motor_run();
  85.                        break;
  86.                  case 0xfd:         //1轮右偏                

  87.                        motor_left();
  88.                        break;
  89.                  case 0xef:         //4轮左偏                  

  90.                        motor_right();
  91.                        break;
  92.                  case 0xfb:     //2轮右偏出轨
  93.                  case 0xf9:         //1、2轮右偏                                
  94.                        motor_big_left();
  95. //                       delay_1ms(10);
  96.                        break;

  97.                  case 0xdf:         //5左偏出轨                  
  98.                  case 0xcf:     //4、5轮左偏
  99.                        motor_big_right();
  100. //                       delay_1ms(10);
  101.                        break;

  102.                  case 0xfe:         //0最右偏出轨        
  103.                  case 0xfa:
  104.                        motor_big_left();
  105. //                       delay_1ms(10);
  106.                        break;

  107.                  case 0xbf:     //6最左偏出轨      
  108.                  case 0x9f:        
  109.                        motor_big_right();
  110. //                       delay_1ms(10);
  111.                        break;      
  112.                 
  113.                  case 0xeb:       //前两传感器压在黑线上
  114.                  case 0xdb:       //后两传感器压在黑线上
  115.                  case 0xbe:       //中间两传感器压在黑线上
  116.                  case 0xac:             //前四传感器压在黑线上
  117.                  case 0x9a:           //后四传感器压在黑线上
  118.                        motor_back();
  119.                        delay_1ms(200);
  120.                        motor_stop();
  121.                       
  122. //                       delay_1ms(1000);                                                                                            

  123.                  default:
  124. ……………………

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

所有资料51hei提供下载:
智能循迹小车电路图和程序及仿真图.rar(128.98 KB, 下载次数: 449)

评分

黑币 +63
收起理由
+ 5
+ 8
赞一个!
+ 50
共享资料的黑币奖励!

查看全部评分

ID:79874发表于 2018-6-26 07:17|显示全部楼层
谢谢分享
ID:359143发表于 2018-6-26 12:43|显示全部楼层
有电路图吗?
ID:349520发表于 2019-4-29 22:26|显示全部楼层
不错真厉害
ID:349520发表于 2019-4-29 22:27|显示全部楼层
是三个轮子的吗
ID:526864发表于 2019-5-4 11:45|显示全部楼层
感谢分享
ID:540727发表于 2019-5-17 17:35来自手机|显示全部楼层
楼主有实物么
ID:580160发表于 2019-7-9 09:14|显示全部楼层
赞一个
ID:581439发表于 2019-7-11 16:57|显示全部楼层
没有PCB。。。
ID:582476发表于 2019-7-11 18:07|显示全部楼层
机械渣渣最近在做,需要电路仿真,大佬可以发一份,谢谢!
ID:583531发表于 2019-7-13 16:23|显示全部楼层
这个不错
ID:440128发表于 2019-7-22 11:19|显示全部楼层
双选爱 发表于 2018-4-25 23:19
可以发一份给我吗?
邮箱:

人家凭什么发给你,明明都有为什么不直接下载?
ID:616896发表于 2019-11-17 22:16|显示全部楼层
谢谢分享
ID:673779发表于 2019-12-25 18:12|显示全部楼层
为什么我用protues8.8打不开
ID:720325发表于 2020-4-1 16:20|显示全部楼层
真好请问是怎么做的
ID:722299发表于 2020-5-18 10:31|显示全部楼层
问一下这是几个轮子的,程序4,5轮完全不懂
ID:758501发表于 2020-6-6 09:47|显示全部楼层
为什么我打不开仿真的那个文件?
ID:56932发表于 2020-6-11 22:36|显示全部楼层
谢谢分享
ID:757948发表于 2020-6-12 11:17|显示全部楼层
zhangaoxiang66 发表于 2020-6-6 09:47
为什么我打不开仿真的那个文件?

我也打不开
ID:1032785发表于 2023-5-23 10:21|显示全部楼层
整的太好了
ID:1088383发表于 2023-8-26 15:32|显示全部楼层
为什么都不用黑币下载,要发到你邮箱去

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

Powered by 单片机教程网