|
我們?cè)O(shè)計(jì)制作了一個(gè)具有尋線(xiàn)功能的簡(jiǎn)易自動(dòng)入庫(kù)小車(chē)。主要功能如下:遙控啟動(dòng);自動(dòng)入庫(kù)功能(沿著黑線(xiàn)進(jìn)入車(chē)庫(kù)),并伴隨燈光提示;檢測(cè)車(chē)庫(kù)中心所放置的鐵片并停車(chē),伴隨語(yǔ)音和燈光提示,計(jì)算并顯示入庫(kù),停留和出庫(kù)所用的時(shí)間。
為使小車(chē)運(yùn)行更加靈活可靠,我們采用了后輪用兩個(gè)直流電機(jī)分別驅(qū)動(dòng),前輪采用自制的萬(wàn)向輪的驅(qū)動(dòng)方式,采用L298雙通道直流電機(jī)驅(qū)動(dòng)芯片作為主控電路,將紅外傳感器采集的信號(hào),經(jīng)單片機(jī)處理后 ,控制驅(qū)動(dòng)電機(jī)的PWM的占空比和方向,從而實(shí)現(xiàn)了題目要求的一系列動(dòng)作,通過(guò)紅外遙控啟車(chē),顯示時(shí)間,和實(shí)時(shí)語(yǔ)音提示功能的實(shí)現(xiàn),增加了作品的趣味性,技術(shù)性和智能程度;另外通過(guò)自制的霍爾金屬傳感器和自制萬(wàn)向輪的使用,更好的減輕了整車(chē)的重量,增加了小車(chē)的靈活性。
設(shè)計(jì)報(bào)告內(nèi)容截圖:
目錄
一、設(shè)計(jì)要求和主要指標(biāo)………………………………………… 2
1、任務(wù)………………………………………………………………2
2、要求………………………………………………………………2
3、主要指標(biāo)…………………………………………………………3
二、設(shè)計(jì)制作報(bào)告……………………………………………………4
摘要、關(guān)鍵詞…………………………………………………………4
1、總體方案設(shè)計(jì)……………………………………………………4
2、硬件模塊電路設(shè)計(jì)……………………………………………… 5
3、軟件程序設(shè)計(jì)……………………………………………………11
4、調(diào)試及性能分析…………………………………………………17
5、結(jié)論………………………………………………………………17
6、參考文獻(xiàn)………………………………………………………… 18
單片機(jī)源程序如下:
- ZUOLUN BIT P1.5 ;
- YOULUN BIT P1.4;
- ZUOLUN_DIR BIT P1.6;
- YOULUN_DIR BIT P1.7;
- ZUO_CHEWEI BIT P1.0;車(chē)尾傳感器信號(hào)輸入端,高電平有效
- YOU_CHEWEI BIT P1.1;
- YUYIN_CLK BIT P3.5;
- shachedeng bit p3.7
- ;-----------------------------
- ZUOQIAN_CHUANGANQI EQU P1.3
- ;-----------------------------------
- JISHUQI_MIAOGEWEI EQU 45H;定60MS的倍數(shù)
- JISHUQI_MIAOSHIWEI EQU 46H ;此地址里放的是秒數(shù);
- RUKU_TIME EQU 47H;
- TINGCHE_TIME EQU 48H;
- CHUKU_TIME EQU 49H;
- ;--------------------------------------
- IRCOM EQU 20H ;20H-23H IR使用
- IRIN bit P3.6 ;遙控信號(hào)輸入端
- ;---------------------------------------
- FC_MARK bit 05h; 檢測(cè)返程標(biāo)志
- ZHUANWAN_OK BIT 00H
- HUI_5S EQU 52H
- shachedeng0 equ 53h
- shachedeng1 equ 54h
- ;---------------------------
- DISPLAY_CLOCKGE EQU P3.0;左數(shù)碼管鎖存端
- DISPLAY_CLOCKSHI EQU P3.1;右數(shù)碼管鎖存端
- DATA_DISPLAY EQU 50H
- ZANTING_OVER BIT 08H
- XIAOYIN4511 BIT P1.3
- ;--------------------------
- ;*********************************************
- ;--------------------------
- 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;全程實(shí)現(xiàn)定時(shí)
- ;--------------------------
- org 0030h; 程序開(kāi)始執(zhí)行,初始化
- ;---------------------------
- start:mov SP,#60h;
- mov P1,#00h;
- ; SETB P1.2
- MOV P3,#0FFH;
- MOV TMOD,#15h ;定時(shí)器0計(jì)數(shù)檢測(cè)鐵片,定時(shí)器1工作定時(shí)狀態(tài)
- MOV TH0,#0FFH;
- MOV TL0,#0FFH;
- mov th1,#4Ch;定時(shí)50MS,方式1
- mov tl1,#00h
- mov IP,#0Ah;現(xiàn)在定時(shí)器0,檢測(cè)鐵片中斷級(jí)別最高
- mov TCON,#00h ;DI DIAN PIAN CHU FA
- mov IE,#0FH ; 開(kāi)兩個(gè)外中斷及兩個(gè)定時(shí)器中斷,關(guān)總中斷
- clr FC_MARK ;此條程序是想用P2。0,返程標(biāo)志檢測(cè),換速度
- CLR ZHUANWAN_OK
- CLR ZUO_CHEWEI;初始化停車(chē)信號(hào)位
- CLR YOU_CHEWEI;
- CLR XIAOYIN4511
- MOV HUI_5S,#00H
- ;;;;;;;;;;;;;;;;;;;;;;CLR MANSU4_MARK
- ;;;;;;;;;;;;;;;;;;;;;CLR CHANGSU_MARK
- ;;;;;;;;;;;;;;;;;;;;;;CLR MANSU3_MARK
- MOV JISHUQI_MIAOGEWEI,#00H; 清時(shí)間值
- MOV JISHUQI_MIAOSHIWEI,#00H;
- MOV RUKU_TIME,#00H;
- MOV TINGCHE_TIME,#00H;
- MOV CHUKU_TIME,#00H;
- MOV DATA_DISPLAY,#00H
- mov shachedeng0,#100
- mov shachedeng1,#1
- setb shachedeng
- MOV B,#10
- CLR ZANTING_OVER
- SETB ZUO_CHEWEI
- SETB YOU_CHEWEI
- SETB P1.2
- mov p0,#00h;接語(yǔ)音芯片,先不說(shuō)話(huà)
- LCALL YUYIN_MAICONG;
- ;------------------------------------
- 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 譯碼子程序
- ;引導(dǎo)碼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 P1.2,MAIN1
- JNB IRIN,I2 ;等待 IR 信號(hào)出現(xiàn)
- JMP I1
- I2: MOV R4,#20
- I20: CALL DEL
- DJNZ R4,I20
- JB IRIN,I1 ;確認(rèn)IR信號(hào)出現(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 計(jì)數(shù)
- L1: CALL DEL
- JB IRIN, N1 ;等 IR 變?yōu)楦唠娖?br />
- ;IR=0,檢查R2中的計(jì)數(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ù)存儲(chǔ)地址,20H-23H,22H里放的數(shù)據(jù);
- CJNE R0,#24H,LL ;收集到4字節(jié)了?不等就是沒(méi)接收完;相等就接收完了;
- N1: INC R2
- CJNE R2,#30,L1 ;0.14ms 計(jì)數(shù)過(guò)長(zhǎng)則時(shí)間到自動(dòng)離開(kāi)
- 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: ;延時(shí)5MS
- MOV R6,#25
- DL2: MOV R7,#100
- DJNZ R7,$
- DJNZ R6,DL2
- RET
- ;***************************************
- ; 主程序
- ;***************************************
- MAIN1: MOV P0,#00011110B;車(chē)輛啟動(dòng)
- LCALL YUYIN_MAICONG;
- MOV DATA_DISPLAY,RUKU_TIME
- call DISPLAY
- call shachedengcx
- SJMP ZHU
- ;--------------------------------------
- ZHU:SETB EA;
- setb tr1;
- setb tr0;
- SETB XIAOYIN4511
- ;--------------------------------------
- MAIN:
- MOV A,RUKU_TIME
- CJNE A,#8,BI
- CHANGSU:SETB ZUOLUN;
- SETB YOULUN;
- CALL YAN_1
- CALL YAN_2;
- CLR ZUOLUN
- CLR YOULUN;
- CALL YAN_2;
- SJMP MAIN
- BI:JC CHANGSU
- MAIN_JIANSU:
- SETB ZUOLUN;
- SETB YOULUN
- CALL YAN_1;
- CLR ZUOLUN
- CLR YOULUN
- CALL YAN_1;
- CALL YAN_1
- JB ZHUANWAN_OK,FANCHENG; 全速前進(jìn)程序
- JB FC_MARK,TING_60S
- SJMP MAIN
- ;-----------------------------------------停車(chē)60秒程序
- TING_60S:SETB EA;
- SETB TR1
- SETB ET1
- CLR EX0;
- CLR EX1;
- MOV JISHUQI_MIAOSHIWEI,#00H
- ; MOV P0,#01010011B
- ;CALL YUYIN_CLK;
- WAIT_ZHUANWAN: MOV TINGCHE_TIME,JISHUQI_MIAOSHIWEI;
- MOV DATA_DISPLAY,TINGCHE_TIME
- LCALL DISPLAY
- MOV A,JISHUQI_MIAOSHIWEI
- CJNE A,#61,WAIT_ZHUANWAN;先暫時(shí)讓車(chē)停六十秒
- CLR TR1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- SETB ZANTING_OVER
- MOV JISHUQI_MIAOSHIWEI,#00H;再次清零,以便計(jì)返程時(shí)間
- MOV JISHUQI_MIAOGEWEI,#00H;
- ;---------------------------------------轉(zhuǎn)彎程序
- ZHUANWAN1: mov p0,#01011010b; 播放轉(zhuǎn)彎語(yǔ)音
- lcall YUYIN_MAICONG
- MOV DISPLAY,CHUKU_TIME
- LCALL DISPLAY
- SETB TR1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ZHUANWAN:CLR ZUOLUN_DIR;
- SETB 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
- ;--------------------------------轉(zhuǎn)彎已完成,準(zhǔn)備跳出轉(zhuǎn)彎程序
- CHU_ZHUANWAN:
- CLR ZUOLUN;
- CLR YOULUN;
- CLR ZUOLUN_DIR
- CLR YOULUN_DIR;
- MOV R4,#250
- DJNZ R4,$
- SETB ZHUANWAN_OK ;轉(zhuǎn)彎成功標(biāo)志
- SETB EX1;
- SETB EX0;
- SETB TR1
- SETB EA
- SETB SHACHEDENG
- LJMP MAIN
- ;*************************************************************
- ;------------------------------------返回程序
- FANCHENG:
- MOV HUI_5S,CHUKU_TIME
- MOV A,CHUKU_TIME
- FANCHENG_ZC:SETB ZUOLUN;與來(lái)時(shí)一樣的速度返回
- SETB YOULUN;
- CALL YAN_1
- CLR ZUOLUN
- CLR YOULUN;
- CALL YAN_2;
- SJMP FANCHENG
- ;***************************************
- ;*************************************************************
- ;--------------------------------------掉顯示程序時(shí)延時(shí)
- DELAY_1S:MOV R4,#250
- Z3:MOV R5,#250
- Z2:MOV R6,#8
- Z1:DJNZ R6,Z1
- DJNZ R5,Z2
- DJNZ R4,Z3
- RET
- ;-------------------------------停車(chē)時(shí)用特短延時(shí)
- TEDUAN_DELAY0:MOV R4,#20
- DJNZ R4,$
- RET;
- TEDUAN_DELAY1:MOV R4,#40;
- DJNZ R4,$;
- RET;
- ;-------------------------------- 左輪調(diào)整程序
- ……………………
- …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
|
|