标题:
自动入库小车设计 报告+程序
[打印本页]
作者:
德玛西亚1234
时间:
2016-5-13 18:37
标题:
自动入库小车设计 报告+程序
一个很好的自动入库小车设计资料
0.png
(74.65 KB, 下载次数: 99)
下载附件
2016-5-16 00:59 上传
自动入库小车设计.zip
(172.7 KB, 下载次数: 18)
2016-5-13 18:37 上传
点击文件名下载附件
下载积分: 黑币 -5
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
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1