一個很好的自動入庫小車設計資料
0.png (74.65 KB, 下載次數(shù): 99)
下載附件
2016-5-16 00:59 上傳
自動入庫小車設計.zip
(172.7 KB, 下載次數(shù): 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的倍數(shù)
- JISHUQI_MIAOSHIWEI EQU 46H ;此地址里放的是秒數(shù);
- 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;全程實現(xiàn)定時
- ;--------------------------
- org 0030h; 程序開始執(zhí)行,初始化
- ;---------------------------
- start:mov SP,#60h;
- mov P1,#00h;
- mov p0,#0FFh;接語音芯片,先不說話
- SETB YUYIN_CLK
- MOV P3,#0FFH;
- MOV TMOD,#15h ;定時器0計數(shù)檢測鐵片,定時器1工作定時狀態(tài)
- MOV TH0,#0FFH;
- MOV TL0,#0FFH;
- mov th1,#4Ch;定時50MS,方式1
- mov tl1,#00h
- mov IP,#02h;現(xiàn)在定時器0,檢測鐵片中斷級別最高
- mov TCON,#00h ;低電平觸發(fā),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位數(shù)據(jù)碼;8位數(shù)據(jù)反碼,(0.5MS/0.6MS;1.5MS/0.6MS)
- ;---------------------------------------------------
- IR_IN:
- MOV R0,#IRCOM
- I1: JNB IRIN,I2 ;等待 IR 信號出現(xiàn)
- JMP I1
- I2: MOV R4,#20
- I20: CALL DEL
- DJNZ R4,I20
- JB IRIN,I1 ;確認IR信號出現(xiàn)
- I21: JB IRIN,I3 ;等 IR 變?yōu)楦唠娖?br />
- CALL DEL
- JMP I21
- I3: MOV R3,#0 ;8位數(shù)清為0
- LL: JNB IRIN,I4 ;等 IR 變?yōu)榈碗娖?br />
- CALL DEL
- JMP LL
- I4: JB IRIN,I5 ;等 IR 變?yōu)楦唠娖?br />
- CALL DEL
- JMP I4
- I5: MOV R2,#0 ;0.14ms 計數(shù)
- L1: CALL DEL
- JB IRIN, N1 ;等 IR 變?yōu)楦唠娖?br />
- ;IR=0,檢查R2中的計數(shù)值
- 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 ;調(diào)整接收數(shù)據(jù)存儲地址,20H-23H,22H里放的數(shù)據(jù);
- CJNE R0,#24H,LL ;收集到4字節(jié)了?不等就是沒接收完;相等就接收完了;
- N1: INC R2
- CJNE R2,#30,L1 ;0.14ms 計數(shù)過長則時間到自動離開
- 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;判斷轉(zhuǎn)彎是否成功,成功條入滿速返回
- 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; 播放轉(zhuǎn)彎語音
- 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;轉(zhuǎn)彎成功標志
- 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;調(diào)全程跑完語音
- 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;
- ;-------------------------------- 左輪調(diào)整程序
- ZUOLUN_ZHUAN:PUSH A;
- PUSH PSW;
- NOP
- NOP
- NOP
- NOP
- NOP
- NOP
- jNb YOULUN,XIANGQIANPAO
- ; MOV P1,#00H;兩個輪全停止轉(zhuǎn)動
- nop;
- nop;
- nop;
- nop;
- SETB YOULUN;左輪轉(zhuǎn)-調(diào)整車位置 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;
- ;----------------------------------- 右輪調(diào)整
- YOULUN_ZHUAN:PUSH A;
- PUSH PSW;
- NOP
- NOP
- NOP
- NOP
- NOP
- NOP
- JNB ZUOLUN,XIANGQIANPAO1
- ;MOV P1,#00H;兩個輪全停止轉(zhuǎn)動
- nop;
- nop;
- nop;
- nop;
- SETB ZUOLUN;右輪轉(zhuǎn)-調(diào)整車位置 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;
- ;-------------------------------------- 車位置調(diào)整短暫延時
- 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;把計數(shù)秒值清零
- CLR ZUOLUN;
- CLR YOULUN
- RETI;
- ;---------------------------------------轉(zhuǎn)彎時調(diào)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
復制代碼
|