找回密码
 立即注册

QQ登录

只需一步,快速开始

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

自动入库小车设计 报告+程序

[复制链接]
跳转到指定楼层
楼主
一个很好的自动入库小车设计资料


自动入库小车设计.zip (172.7 KB, 下载次数: 18)


  1. ZUOLUN BIT P1.4 ;
  2. YOULUN BIT P1.5;
  3. ZUOLUN_DIR BIT P1.6;
  4. YOULUN_DIR BIT P1.7;
  5. ZUO_CHEWEI BIT P1.0;车尾传感器信号输入端,高电平有效
  6. YOU_CHEWEI BIT P1.1;
  7. YUYIN_CLK EQU P1.2;
  8. ZUOQIAN_CHUANGANQI EQU P1.3
  9. IRCOM  EQU  20H       ;20H-23H IR使用
  10. JISHUQI_MIAOGEWEI EQU 45H;定60MS的倍数
  11. JISHUQI_MIAOSHIWEI EQU 46H ;此地址里放的是秒数;
  12. RUKU_TIME EQU 47H;
  13. TINGCHE_TIME EQU 48H;
  14. CHUKU_TIME EQU 49H;
  15. IRIN   bit  P3.6      ;遥控信号输入端
  16. FC_MARK equ P3.7; 检测返程标志
  17. ZHUANWAN_OK EQU P3.0
  18. MANSU4_MARK EQU P3.1;
  19. CHANGSU_MARK EQU P2.0;
  20. MANSU3_MARK EQU P2.1
  21. ;--------------------------
  22. org 0000h;
  23. sjmp start;
  24. org 0003h;
  25. ljmp ZUOLUN_ZHUAN;P3.2_zuolun zhong duan  ru kou
  26. org 000bh;
  27. LJMP JIANCE_TIEPIAN ;dian shi qi dang zhongduan yong ,jian ce tie pian
  28. org 0013h;
  29. ljmp YOULUN_ZHUAN;P3.3_youlun zhongduan ru kou
  30. ORG 001BH;
  31. LJMP TIMER_1;全程实现定时

  32. ;--------------------------
  33. org 0030h; 程序开始执行,初始化
  34. ;---------------------------
  35. start:mov SP,#60h;
  36.         mov P1,#00h;
  37.         mov p0,#0FFh;接语音芯片,先不说话
  38.         SETB YUYIN_CLK
  39.         MOV P3,#0FFH;
  40.         MOV TMOD,#15h ;定时器0计数检测铁片,定时器1工作定时状态
  41.         MOV TH0,#0FFH;
  42.         MOV TL0,#0FFH;
  43.         mov th1,#4Ch;定时50MS,方式1
  44.         mov tl1,#00h
  45.         mov IP,#02h;现在定时器0,检测铁片中断级别最高
  46.         mov TCON,#00h ;低电平触发,TIEPIAN,JIANCHE XIAN
  47.         mov IE,#0FH  ; 开两个外中断及两个定时器中断,关总中断
  48.         clr FC_MARK   ;此条程序是想用P2。0,返程标志检测,换速度
  49.         CLR ZHUANWAN_OK
  50.         CLR ZUO_CHEWEI;初始化停车信号位
  51.         CLR YOU_CHEWEI;
  52.         CLR MANSU4_MARK
  53.         CLR CHANGSU_MARK
  54.         CLR MANSU3_MARK
  55.         MOV JISHUQI_MIAOGEWEI,#00H;   清时间值
  56.         MOV JISHUQI_MIAOSHIWEI,#00H;
  57.         MOV RUKU_TIME,#00H;
  58.         MOV TINGCHE_TIME,#00H;
  59.         MOV CHUKU_TIME,#00H;
  60. ;------------------------------------
  61. QIDONG:   MOV   A,#00H
  62.           MOV   R0,#20H
  63. LOOP0:    MOV   @R0,A          ;20H-24H清零
  64.           INC   R0
  65.           CJNE  R0,#25H,LOOP0
  66.           SETB  IRIN
  67.           MOV  22H,#0FFH
  68. LOOP1:    CALL  IR_IN
  69.           MOV A,22H;
  70.           CJNE A,#0FFH,LOOP3;
  71.           SJMP LOOP1
  72. LOOP3:    CJNE A,#01,LOOP1;
  73.           SJMP MAIN1;

  74. ;---------------------------------------------------
  75. ; IR 译码子程序
  76. ;引导码9MS低电平,4.375MS高电平,
  77. ;8窄8宽固定码(0.5MS/0.6MS;1.5MS/0.6MS)
  78. ;8位数据码;8位数据反码,(0.5MS/0.6MS;1.5MS/0.6MS)
  79. ;---------------------------------------------------
  80. IR_IN:
  81.           MOV   R0,#IRCOM
  82. I1:      JNB  IRIN,I2       ;等待 IR 信号出现
  83.           JMP  I1
  84. I2:      MOV  R4,#20
  85. I20:     CALL  DEL
  86.           DJNZ  R4,I20
  87.           JB  IRIN,I1        ;确认IR信号出现
  88. I21:     JB  IRIN,I3        ;等 IR 变为高电平
  89.           CALL  DEL
  90.           JMP  I21
  91. I3:      MOV  R3,#0         ;8位数清为0
  92. LL:      JNB  IRIN,I4       ;等 IR 变为低电平
  93.           CALL  DEL
  94.           JMP  LL
  95. I4:      JB  IRIN,I5        ;等 IR 变为高电平
  96.           CALL  DEL
  97.           JMP  I4
  98. I5:      MOV  R2,#0         ;0.14ms 计数
  99. L1:      CALL  DEL
  100.           JB  IRIN, N1       ;等 IR 变为高电平

  101.                              ;IR=0,检查R2中的计数值
  102.           MOV  A,#8          ;0.14MS*8=1.12ms;A>8,是高电平;A<8,低电平
  103.           CLR  C
  104.           SUBB  A,R2         ;判断高低位
  105.                              ;IF C=0  BIT=0
  106.           MOV  A,@R0
  107.           RRC  A
  108.           MOV  @R0,A         ;处理完一位
  109.           INC  R3
  110.           CJNE  R3,#8,LL     ;需处理完8位
  111.           MOV  R3,#0
  112.           INC  R0            ;调整接收数据存储地址,20H-23H,22H里放的数据;
  113.           CJNE  R0,#24H,LL   ;收集到4字节了?不等就是没接收完;相等就接收完了;
  114. N1:      INC  R2
  115.           CJNE  R2,#30,L1    ;0.14ms 计数过长则时间到自动离开
  116.           RET
  117. ;---------------------------------------------------------------
  118. ; DELAY  R5*0.14MS
  119. DEL:
  120.           MOV  R5,#1       ;IR解码使用
  121. DEL0:     MOV  R6,#2
  122. DEL1:     MOV  R7,#32
  123. DEL2:     DJNZ  R7,DEL2
  124.           DJNZ  R6,DEL1
  125.           DJNZ  R5,DEL0
  126.           RET

  127. DELAY1:                    ;延时5MS
  128.          MOV  R6,#25
  129.   DL2:   MOV  R7,#100
  130.          DJNZ  R7,$
  131.          DJNZ  R6,DL2
  132.          RET
  133. ;***************************************
  134. ;            主程序
  135. ;***************************************
  136. MAIN1: MOV P0,#00010011B;准备就绪
  137.        CALL YUYIN_MAICONG;
  138.        MOV R6,#250;
  139.        YAN_YUYIN:MOV R5,#250
  140.        DJNZ R5,$;
  141.        DJNZ R6,YAN_YUYIN
  142. ;--------------------------------------
  143.       SETB EA;
  144.       setb tr1;
  145.       setb tr0;

  146. MAIN:JB ZHUANWAN_OK,FANCHENG;判断转弯是否成功,成功条入满速返回
  147.      JB FC_MARK,TING_60S ;全速前进程序
  148.      SETB ZUOLUN;
  149.      SETB YOULUN;
  150.      SJMP MAIN
  151. ;-------------------------------------停车60秒程序
  152. TING_60S:SETB EA;
  153.          SETB TR1
  154. WAIT_ZHUANWAN:MOV A,JISHUQI_MIAOSHIWEI;
  155.          CJNE A,#8,WAIT_ZHUANWAN;先暂时让车停六十秒
  156.          MOV JISHUQI_MIAOSHIWEI,#00H;再次清零,以便计返程时间
  157.          MOV JISHUQI_MIAOGEWEI,#00H;

  158.          ZHUANWAN1: mov p0,#00111111b; 播放转弯语音
  159.                    lcall YUYIN_MAICONG
  160.                ZHUANWAN:SETB ZUOLUN_DIR;
  161.                CLR  YOULUN_DIR ;
  162.                SETB ZUOLUN;
  163.                SETB YOULUN;
  164.                call YANSHI_CHANG;
  165.                JB P3.3,CHU_ZHUANWAN
  166.                CLR ZUOLUN;
  167.                CLR YOULUN;
  168.                CALL YANSHI_DUAN;
  169.                JNB P3.3,ZHUANWAN
  170.   CHU_ZHUANWAN:
  171.                CLR ZUOLUN;
  172.                CLR YOULUN;
  173.                CLR ZUOLUN_DIR
  174.                CLR YOULUN_DIR;
  175.                SETB ZHUANWAN_OK;转弯成功标志
  176.                SETB EX1;
  177.                SETB EX0;
  178.                SETB EA
  179.                SJMP MAIN
  180. ;------------------------------------慢速返回程序
  181. FANCHENG:JNB ZUO_CHEWEI,mansu4;
  182.          JNB YOU_CHEWEI,mansu4;
  183.          clr ea;两个尾灯都检测到黑线时就关中断,以后就靠尾灯来检测方向及停止
  184.          SJMP TINGCHE;
  185.   mansu4:MOV A,JISHUQI_MIAOSHIWEI;
  186.          CLR CY
  187.          CJNE A,#3,BIJIAO
  188.          SJMP MANSU

  189. BIJIAO:JC MANSU;
  190.        SJMP ZHENGCHANGSUDU

  191. ;-----------------------------------------返回时慢速4秒
  192. MANSU:SETB ZUOLUN; 刚充完电时,200/80都向外冲
  193.      SETB YOULUN;
  194.      MOV R4,#240;
  195.      DJNZ R4,$;
  196.      CLR ZUOLUN;
  197.      CLR YOULUN;
  198.      MOV R4,#90;
  199.      DJNZ R4,$;
  200.      SJMP FANCHENG
  201. ;---------------------------返回时加速程序
  202. ZHENGCHANGSUDU:CLR CY
  203.                MOV A,JISHUQI_MIAOSHIWEI;
  204.                CJNE A,#11,BIJIAO1
  205.                SJMP TINGCHE_JIANSU
  206.          BIJIAO1:JC ZHENGCHANSU;
  207.                  SJMP TINGCHE_JIANSU

  208.    ZHENGCHANSU:SETB ZUOLUN;
  209.                SETB YOULUN;
  210.                lcall dl_50us

  211.                SJMP FANCHENG
  212. ;-------------------------------------
  213. TINGCHE_JIANSU:
  214.      
  215.      SETB ZUOLUN; 刚充完电时,200/80都向外冲
  216.      SETB YOULUN;
  217.      MOV R4,#200;
  218.      DJNZ R4,$;
  219.      CLR ZUOLUN;
  220.      CLR YOULUN;
  221.      MOV R4,#112;
  222.      DJNZ R4,$;
  223.      SJMP FANCHENG
  224. ;----------------------------------跑完全程,停车
  225. TINGCHE:;jb ZUO_CHEWEI,TINGCHE;
  226. TINGCHE1:;JB YOU_CHEWEI,TINGCHE1
  227.        clr ZUOLUN_DIR
  228.        CLR YOULUN_DIR;
  229. PANTING:mov a,p1;
  230.         anl a,#03h;
  231.         cjne a,#11h,pan_tingche1;
  232.         SETB ZUOLUN;
  233.         SETB YOULUN;
  234.         LCALL TEDUAN_DELAY0;
  235.         CLR ZUOLUN;
  236.         CLR ZUOLUN;
  237.         LCALL TEDUAN_DELAY1
  238.         SJMP PANTING
  239. pan_tingche1:cjne a,#01h,pan_tingche2;
  240.         SETB ZUOLUN;
  241.         clr YOULUN;
  242.         LCALL TEDUAN_DELAY0;
  243.         CLR ZUOLUN;
  244.         CLR ZUOLUN;
  245.         LCALL TEDUAN_DELAY1
  246.         SJMP PANTING
  247. pan_tingche2:cjne a,#10h,cheditingche
  248.         clr ZUOLUN;
  249.         SETB YOULUN;
  250.         LCALL TEDUAN_DELAY0;
  251.         CLR ZUOLUN;
  252.         CLR ZUOLUN;
  253.         LCALL TEDUAN_DELAY1
  254.         SJMP PANTING                  
  255.         
  256.         ;CLR EA
  257.         ;mov r6,#15;
  258.         ;djnz r6,$
  259. cheditingche:MOV R7,#6
  260. XIANGQIAN_TIAO:SETB ZUOLUN;
  261.              SETB YOULUN;
  262.              MOV R6,#20
  263.              MOV R5,#5;
  264.              CLR ZUOLUN;
  265.              CLR YOULUN;
  266.              MOV R6,#20;
  267.              MOV R5,#2
  268.              SM:DJNZ R5,$;
  269.              DJNZ R6,SM;
  270.              DJNZ R7,XIANGQIAN_TIAO
  271.             
  272.         CLR ZUOLUN;
  273.         CLR YOULUN;
  274.         CLR ZUOLUN;
  275.         CLR YOULUN;
  276.         ;lcall yuyin;调全程跑完语音
  277.         mov p0,#01011111b;
  278.         lcall  YUYIN_MAICONG

  279.         ;LCALL DISPLAY;停车,显示全程信息
  280.         SJMP $
  281. ;-------------------------------停车时用特短延时        
  282. TEDUAN_DELAY0:MOV R4,#50
  283.               DJNZ R4,$
  284.               RET;
  285. TEDUAN_DELAY1:MOV R4,#5;
  286.               DJNZ R4,$;
  287.               RET;                  
  288. ;--------------------------------  左轮调整程序
  289. ZUOLUN_ZHUAN:PUSH A;
  290.              PUSH PSW;
  291.              NOP
  292.              NOP
  293.              NOP
  294.              NOP
  295.              NOP
  296.              NOP
  297.              jNb YOULUN,XIANGQIANPAO
  298.             ; MOV P1,#00H;两个轮全停止转动
  299.              nop;
  300.              nop;
  301.              nop;
  302.              nop;
  303.              SETB YOULUN;左轮转-调整车位置 FAN LE ,GAI LE ?
  304.              CLR  ZUOLUN
  305.              LCALL DUAN_DELAY;

  306.             ; MOV P1,#00H;
  307.              SJMP TIAOCHU
  308. XIANGQIANPAO:SETB ZUOLUN;
  309.              SETB YOULUN;
  310.      TIAOCHU:POP PSW;
  311.              POP A;
  312.              RETI;
  313. ;-----------------------------------  右轮调整
  314. YOULUN_ZHUAN:PUSH A;
  315.              PUSH PSW;
  316.              NOP
  317.              NOP
  318.              NOP
  319.              NOP
  320.              NOP
  321.              NOP
  322.              JNB ZUOLUN,XIANGQIANPAO1
  323.              ;MOV P1,#00H;两个轮全停止转动
  324.              nop;
  325.              nop;
  326.              nop;
  327.              nop;
  328.              SETB ZUOLUN;右轮转-调整车位置 FAN LE GAI LE ?
  329.              CLR  YOULUN
  330.              LCALL DUAN_DELAY;
  331.              ;MOV P1,#00H;
  332.              SJMP TIAOCHU1
  333. XIANGQIANPAO1:SETB ZUOLUN;
  334.              SETB YOULUN;
  335.     TIAOCHU1:POP PSW;
  336.              POP A;
  337.              RETI;
  338. ;-------------------------------------- 车位置调整短暂延时
  339. DUAN_DELAY:MOV R5,#30;
  340.        DL1:MOV R6,#40;
  341.        DL3:DJNZ R6,DL3;
  342.            DJNZ R5,DL1;
  343.            RET;
  344. ;-----------------------------------定时器1定时
  345. TIMER_1:CLR EA;
  346.         PUSH A;
  347.         PUSH PSW;
  348.         mov th1,#4Ch;定时60MS,方式1
  349.         mov tl1,#00h

  350.         MOV A,JISHUQI_MIAOGEWEI;
  351.         CJNE A,#20,JIAYI
  352.         MOV JISHUQI_MIAOGEWEI,#00H;
  353.         INC JISHUQI_MIAOSHIWEI;
  354.         SJMP CHU_TIME
  355.   JIAYI:INC JISHUQI_MIAOGEWEI;
  356. CHU_TIME:SETB EA;
  357.         POP PSW;
  358.         POP A
  359.         RETI
  360. ;--------------------------------------- 检测铁片程序
  361. JIANCE_TIEPIAN:CLR EA;
  362. clr ZUOLUN;
  363. CLR YOULUN
  364.                CLR EX0;停止检测黑线
  365.                CLR EX1;
  366.                CLR ET0;禁止定时器0中断,即停止检测铁片
  367.                CLR TR0;
  368.                CLR TR1;
  369.                SETB FC_MARK
  370.             ;--------------------播放入库语音
  371.             mov p0,#00101111b;
  372.             lcall YUYIN_MAICONG
  373.             ;----------------------------
  374.                MOV RUKU_TIME,JISHUQI_MIAOSHIWEI;读取入库时间
  375.                MOV JISHUQI_MIAOSHIWEI,#00H;把计数秒值清零
  376.                CLR ZUOLUN;
  377.                CLR YOULUN
  378.                RETI;
  379. ;---------------------------------------转弯时调PWM用延时
  380. YANSHI_DUAN:MOV R3,#25;
  381. YANSHIDUAN:DJNZ R3,YANSHIDUAN;
  382.             RET
  383. YANSHI_CHANG:MOV R3,#180
  384. YANSHICHANG:DJNZ R3,YANSHICHANG;
  385.              RET;
  386. ;--------------------------------------
  387. dl_50us:mov r3,#25
  388.         djnz r3,$;
  389.         ret
  390. ;----------------------------------------语音脉冲信号
  391. YUYIN_MAICONG:clr YUYIN_CLK
  392.               ;LCALL YANSHI_CHANG;
  393.               nop
  394.               nop
  395.               nop
  396.               nop
  397.               nop
  398.               NOP
  399.               NOP
  400.               setb YUYIN_CLK;
  401.               RET
  402. ;----------------------------
  403. END
复制代码


评分

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

查看全部评分

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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