一个很好的自动入库小车设计资料
自动入库小车设计.zip
(172.7 KB, 下载次数: 18)
- ZUOLUN BIT P1.4 ;
- YOULUN BIT P1.5;
- ZUOLUN_DIR BIT P1.6;
- YOULUN_DIR BIT P1.7;
- ZUO_CHEWEI BIT P1.0;车尾传感器信号输入端,高电平有效
- YOU_CHEWEI BIT P1.1;
- YUYIN_CLK EQU P1.2;
- ZUOQIAN_CHUANGANQI EQU P1.3
- IRCOM EQU 20H ;20H-23H IR使用
- JISHUQI_MIAOGEWEI EQU 45H;定60MS的倍数
- JISHUQI_MIAOSHIWEI EQU 46H ;此地址里放的是秒数;
- RUKU_TIME EQU 47H;
- TINGCHE_TIME EQU 48H;
- CHUKU_TIME EQU 49H;
- IRIN bit P3.6 ;遥控信号输入端
- FC_MARK equ P3.7; 检测返程标志
- ZHUANWAN_OK EQU P3.0
- MANSU4_MARK EQU P3.1;
- CHANGSU_MARK EQU P2.0;
- MANSU3_MARK EQU P2.1
- ;--------------------------
- org 0000h;
- sjmp start;
- org 0003h;
- ljmp ZUOLUN_ZHUAN;P3.2_zuolun zhong duan ru kou
- org 000bh;
- LJMP JIANCE_TIEPIAN ;dian shi qi dang zhongduan yong ,jian ce tie pian
- org 0013h;
- ljmp YOULUN_ZHUAN;P3.3_youlun zhongduan ru kou
- ORG 001BH;
- LJMP TIMER_1;全程实现定时
- ;--------------------------
- org 0030h; 程序开始执行,初始化
- ;---------------------------
- start:mov SP,#60h;
- mov P1,#00h;
- mov p0,#0FFh;接语音芯片,先不说话
- SETB YUYIN_CLK
- MOV P3,#0FFH;
- MOV TMOD,#15h ;定时器0计数检测铁片,定时器1工作定时状态
- MOV TH0,#0FFH;
- MOV TL0,#0FFH;
- mov th1,#4Ch;定时50MS,方式1
- mov tl1,#00h
- mov IP,#02h;现在定时器0,检测铁片中断级别最高
- mov TCON,#00h ;低电平触发,TIEPIAN,JIANCHE XIAN
- mov IE,#0FH ; 开两个外中断及两个定时器中断,关总中断
- clr FC_MARK ;此条程序是想用P2。0,返程标志检测,换速度
- CLR ZHUANWAN_OK
- CLR ZUO_CHEWEI;初始化停车信号位
- CLR YOU_CHEWEI;
- CLR MANSU4_MARK
- CLR CHANGSU_MARK
- CLR MANSU3_MARK
- MOV JISHUQI_MIAOGEWEI,#00H; 清时间值
- MOV JISHUQI_MIAOSHIWEI,#00H;
- MOV RUKU_TIME,#00H;
- MOV TINGCHE_TIME,#00H;
- MOV CHUKU_TIME,#00H;
- ;------------------------------------
- QIDONG: MOV A,#00H
- MOV R0,#20H
- LOOP0: MOV @R0,A ;20H-24H清零
- INC R0
- CJNE R0,#25H,LOOP0
- SETB IRIN
- MOV 22H,#0FFH
- LOOP1: CALL IR_IN
- MOV A,22H;
- CJNE A,#0FFH,LOOP3;
- SJMP LOOP1
- LOOP3: CJNE A,#01,LOOP1;
- SJMP MAIN1;
- ;---------------------------------------------------
- ; IR 译码子程序
- ;引导码9MS低电平,4.375MS高电平,
- ;8窄8宽固定码(0.5MS/0.6MS;1.5MS/0.6MS)
- ;8位数据码;8位数据反码,(0.5MS/0.6MS;1.5MS/0.6MS)
- ;---------------------------------------------------
- IR_IN:
- MOV R0,#IRCOM
- I1: JNB IRIN,I2 ;等待 IR 信号出现
- JMP I1
- I2: MOV R4,#20
- I20: CALL DEL
- DJNZ R4,I20
- JB IRIN,I1 ;确认IR信号出现
- I21: JB IRIN,I3 ;等 IR 变为高电平
- CALL DEL
- JMP I21
- I3: MOV R3,#0 ;8位数清为0
- LL: JNB IRIN,I4 ;等 IR 变为低电平
- CALL DEL
- JMP LL
- I4: JB IRIN,I5 ;等 IR 变为高电平
- CALL DEL
- JMP I4
- I5: MOV R2,#0 ;0.14ms 计数
- L1: CALL DEL
- JB IRIN, N1 ;等 IR 变为高电平
- ;IR=0,检查R2中的计数值
- MOV A,#8 ;0.14MS*8=1.12ms;A>8,是高电平;A<8,低电平
- CLR C
- SUBB A,R2 ;判断高低位
- ;IF C=0 BIT=0
- MOV A,@R0
- RRC A
- MOV @R0,A ;处理完一位
- INC R3
- CJNE R3,#8,LL ;需处理完8位
- MOV R3,#0
- INC R0 ;调整接收数据存储地址,20H-23H,22H里放的数据;
- CJNE R0,#24H,LL ;收集到4字节了?不等就是没接收完;相等就接收完了;
- N1: INC R2
- CJNE R2,#30,L1 ;0.14ms 计数过长则时间到自动离开
- RET
- ;---------------------------------------------------------------
- ; DELAY R5*0.14MS
- DEL:
- MOV R5,#1 ;IR解码使用
- DEL0: MOV R6,#2
- DEL1: MOV R7,#32
- DEL2: DJNZ R7,DEL2
- DJNZ R6,DEL1
- DJNZ R5,DEL0
- RET
- DELAY1: ;延时5MS
- MOV R6,#25
- DL2: MOV R7,#100
- DJNZ R7,$
- DJNZ R6,DL2
- RET
- ;***************************************
- ; 主程序
- ;***************************************
- MAIN1: MOV P0,#00010011B;准备就绪
- CALL YUYIN_MAICONG;
- MOV R6,#250;
- YAN_YUYIN:MOV R5,#250
- DJNZ R5,$;
- DJNZ R6,YAN_YUYIN
- ;--------------------------------------
- SETB EA;
- setb tr1;
- setb tr0;
- MAIN:JB ZHUANWAN_OK,FANCHENG;判断转弯是否成功,成功条入满速返回
- JB FC_MARK,TING_60S ;全速前进程序
- SETB ZUOLUN;
- SETB YOULUN;
- SJMP MAIN
- ;-------------------------------------停车60秒程序
- TING_60S:SETB EA;
- SETB TR1
- WAIT_ZHUANWAN:MOV A,JISHUQI_MIAOSHIWEI;
- CJNE A,#8,WAIT_ZHUANWAN;先暂时让车停六十秒
- MOV JISHUQI_MIAOSHIWEI,#00H;再次清零,以便计返程时间
- MOV JISHUQI_MIAOGEWEI,#00H;
- ZHUANWAN1: mov p0,#00111111b; 播放转弯语音
- lcall YUYIN_MAICONG
- ZHUANWAN:SETB ZUOLUN_DIR;
- CLR YOULUN_DIR ;
- SETB ZUOLUN;
- SETB YOULUN;
- call YANSHI_CHANG;
- JB P3.3,CHU_ZHUANWAN
- CLR ZUOLUN;
- CLR YOULUN;
- CALL YANSHI_DUAN;
- JNB P3.3,ZHUANWAN
- CHU_ZHUANWAN:
- CLR ZUOLUN;
- CLR YOULUN;
- CLR ZUOLUN_DIR
- CLR YOULUN_DIR;
- SETB ZHUANWAN_OK;转弯成功标志
- SETB EX1;
- SETB EX0;
- SETB EA
- SJMP MAIN
- ;------------------------------------慢速返回程序
- FANCHENG:JNB ZUO_CHEWEI,mansu4;
- JNB YOU_CHEWEI,mansu4;
- clr ea;两个尾灯都检测到黑线时就关中断,以后就靠尾灯来检测方向及停止
- SJMP TINGCHE;
- mansu4:MOV A,JISHUQI_MIAOSHIWEI;
- CLR CY
- CJNE A,#3,BIJIAO
- SJMP MANSU
- BIJIAO:JC MANSU;
- SJMP ZHENGCHANGSUDU
- ;-----------------------------------------返回时慢速4秒
- MANSU:SETB ZUOLUN; 刚充完电时,200/80都向外冲
- SETB YOULUN;
- MOV R4,#240;
- DJNZ R4,$;
- CLR ZUOLUN;
- CLR YOULUN;
- MOV R4,#90;
- DJNZ R4,$;
- SJMP FANCHENG
- ;---------------------------返回时加速程序
- ZHENGCHANGSUDU:CLR CY
- MOV A,JISHUQI_MIAOSHIWEI;
- CJNE A,#11,BIJIAO1
- SJMP TINGCHE_JIANSU
- BIJIAO1:JC ZHENGCHANSU;
- SJMP TINGCHE_JIANSU
- ZHENGCHANSU:SETB ZUOLUN;
- SETB YOULUN;
- lcall dl_50us
- SJMP FANCHENG
- ;-------------------------------------
- TINGCHE_JIANSU:
-
- SETB ZUOLUN; 刚充完电时,200/80都向外冲
- SETB YOULUN;
- MOV R4,#200;
- DJNZ R4,$;
- CLR ZUOLUN;
- CLR YOULUN;
- MOV R4,#112;
- DJNZ R4,$;
- SJMP FANCHENG
- ;----------------------------------跑完全程,停车
- TINGCHE:;jb ZUO_CHEWEI,TINGCHE;
- TINGCHE1:;JB YOU_CHEWEI,TINGCHE1
- clr ZUOLUN_DIR
- CLR YOULUN_DIR;
- PANTING:mov a,p1;
- anl a,#03h;
- cjne a,#11h,pan_tingche1;
- SETB ZUOLUN;
- SETB YOULUN;
- LCALL TEDUAN_DELAY0;
- CLR ZUOLUN;
- CLR ZUOLUN;
- LCALL TEDUAN_DELAY1
- SJMP PANTING
- pan_tingche1:cjne a,#01h,pan_tingche2;
- SETB ZUOLUN;
- clr YOULUN;
- LCALL TEDUAN_DELAY0;
- CLR ZUOLUN;
- CLR ZUOLUN;
- LCALL TEDUAN_DELAY1
- SJMP PANTING
- pan_tingche2:cjne a,#10h,cheditingche
- clr ZUOLUN;
- SETB YOULUN;
- LCALL TEDUAN_DELAY0;
- CLR ZUOLUN;
- CLR ZUOLUN;
- LCALL TEDUAN_DELAY1
- SJMP PANTING
-
- ;CLR EA
- ;mov r6,#15;
- ;djnz r6,$
- cheditingche:MOV R7,#6
- XIANGQIAN_TIAO:SETB ZUOLUN;
- SETB YOULUN;
- MOV R6,#20
- MOV R5,#5;
- CLR ZUOLUN;
- CLR YOULUN;
- MOV R6,#20;
- MOV R5,#2
- SM:DJNZ R5,$;
- DJNZ R6,SM;
- DJNZ R7,XIANGQIAN_TIAO
-
- CLR ZUOLUN;
- CLR YOULUN;
- CLR ZUOLUN;
- CLR YOULUN;
- ;lcall yuyin;调全程跑完语音
- mov p0,#01011111b;
- lcall YUYIN_MAICONG
- ;LCALL DISPLAY;停车,显示全程信息
- SJMP $
- ;-------------------------------停车时用特短延时
- TEDUAN_DELAY0:MOV R4,#50
- DJNZ R4,$
- RET;
- TEDUAN_DELAY1:MOV R4,#5;
- DJNZ R4,$;
- RET;
- ;-------------------------------- 左轮调整程序
- ZUOLUN_ZHUAN:PUSH A;
- PUSH PSW;
- NOP
- NOP
- NOP
- NOP
- NOP
- NOP
- jNb YOULUN,XIANGQIANPAO
- ; MOV P1,#00H;两个轮全停止转动
- nop;
- nop;
- nop;
- nop;
- SETB YOULUN;左轮转-调整车位置 FAN LE ,GAI LE ?
- CLR ZUOLUN
- LCALL DUAN_DELAY;
- ; MOV P1,#00H;
- SJMP TIAOCHU
- XIANGQIANPAO:SETB ZUOLUN;
- SETB YOULUN;
- TIAOCHU:POP PSW;
- POP A;
- RETI;
- ;----------------------------------- 右轮调整
- YOULUN_ZHUAN:PUSH A;
- PUSH PSW;
- NOP
- NOP
- NOP
- NOP
- NOP
- NOP
- JNB ZUOLUN,XIANGQIANPAO1
- ;MOV P1,#00H;两个轮全停止转动
- nop;
- nop;
- nop;
- nop;
- SETB ZUOLUN;右轮转-调整车位置 FAN LE GAI LE ?
- CLR YOULUN
- LCALL DUAN_DELAY;
- ;MOV P1,#00H;
- SJMP TIAOCHU1
- XIANGQIANPAO1:SETB ZUOLUN;
- SETB YOULUN;
- TIAOCHU1:POP PSW;
- POP A;
- RETI;
- ;-------------------------------------- 车位置调整短暂延时
- DUAN_DELAY:MOV R5,#30;
- DL1:MOV R6,#40;
- DL3:DJNZ R6,DL3;
- DJNZ R5,DL1;
- RET;
- ;-----------------------------------定时器1定时
- TIMER_1:CLR EA;
- PUSH A;
- PUSH PSW;
- mov th1,#4Ch;定时60MS,方式1
- mov tl1,#00h
- MOV A,JISHUQI_MIAOGEWEI;
- CJNE A,#20,JIAYI
- MOV JISHUQI_MIAOGEWEI,#00H;
- INC JISHUQI_MIAOSHIWEI;
- SJMP CHU_TIME
- JIAYI:INC JISHUQI_MIAOGEWEI;
- CHU_TIME:SETB EA;
- POP PSW;
- POP A
- RETI
- ;--------------------------------------- 检测铁片程序
- JIANCE_TIEPIAN:CLR EA;
- clr ZUOLUN;
- CLR YOULUN
- CLR EX0;停止检测黑线
- CLR EX1;
- CLR ET0;禁止定时器0中断,即停止检测铁片
- CLR TR0;
- CLR TR1;
- SETB FC_MARK
- ;--------------------播放入库语音
- mov p0,#00101111b;
- lcall YUYIN_MAICONG
- ;----------------------------
- MOV RUKU_TIME,JISHUQI_MIAOSHIWEI;读取入库时间
- MOV JISHUQI_MIAOSHIWEI,#00H;把计数秒值清零
- CLR ZUOLUN;
- CLR YOULUN
- RETI;
- ;---------------------------------------转弯时调PWM用延时
- YANSHI_DUAN:MOV R3,#25;
- YANSHIDUAN:DJNZ R3,YANSHIDUAN;
- RET
- YANSHI_CHANG:MOV R3,#180
- YANSHICHANG:DJNZ R3,YANSHICHANG;
- RET;
- ;--------------------------------------
- dl_50us:mov r3,#25
- djnz r3,$;
- ret
- ;----------------------------------------语音脉冲信号
- YUYIN_MAICONG:clr YUYIN_CLK
- ;LCALL YANSHI_CHANG;
- nop
- nop
- nop
- nop
- nop
- NOP
- NOP
- setb YUYIN_CLK;
- RET
- ;----------------------------
- END
复制代码
|