标题:
简易自动入库小车设计制作源码+报告
[打印本页]
作者:
a664254710
时间:
2017-8-31 10:17
标题:
简易自动入库小车设计制作源码+报告
我们设计制作了一个具有寻线功能的简易自动入库小车。主要功能如下:遥控启动;自动入库功能(沿着黑线进入车库),并伴随灯光提示;检测车库中心所放置的铁片并停车,伴随语音和灯光提示,计算并显示入库,停留和出库所用的时间。
为使小车运行更加灵活可靠,我们采用了后轮用两个直流电机分别驱动,前轮采用自制的万向轮的驱动方式,采用L298双通道直流电机驱动芯片作为主控电路,将红外传感器采集的信号,经单片机处理后 ,控制驱动电机的PWM的占空比和方向,从而实现了题目要求的一系列动作,通过红外遥控启车,显示时间,和实时语音提示功能的实现,增加了作品的趣味性,技术性和智能程度;另外通过自制的霍尔金属传感器和自制万向轮的使用,更好的减轻了整车的重量,增加了小车的灵活性。
0.png
(49.86 KB, 下载次数: 124)
下载附件
2017-8-31 17:43 上传
设计报告内容截图:
0.png
(41.73 KB, 下载次数: 126)
下载附件
2017-8-31 17:50 上传
目录
一、设计要求和主要指标………………………………………… 2
1、任务………………………………………………………………2
2、要求………………………………………………………………2
3、主要指标…………………………………………………………3
二、设计制作报告……………………………………………………4
摘要、关键词…………………………………………………………4
1、总体方案设计……………………………………………………4
2、硬件模块电路设计……………………………………………… 5
3、软件程序设计……………………………………………………11
4、调试及性能分析…………………………………………………17
5、结论………………………………………………………………17
6、参考文献………………………………………………………… 18
单片机源程序如下:
ZUOLUN BIT P1.5 ;
YOULUN BIT P1.4;
ZUOLUN_DIR BIT P1.6;
YOULUN_DIR BIT P1.7;
ZUO_CHEWEI BIT P1.0;车尾传感器信号输入端,高电平有效
YOU_CHEWEI BIT P1.1;
YUYIN_CLK BIT P3.5;
shachedeng bit p3.7
;-----------------------------
ZUOQIAN_CHUANGANQI EQU P1.3
;-----------------------------------
JISHUQI_MIAOGEWEI EQU 45H;定60MS的倍数
JISHUQI_MIAOSHIWEI EQU 46H ;此地址里放的是秒数;
RUKU_TIME EQU 47H;
TINGCHE_TIME EQU 48H;
CHUKU_TIME EQU 49H;
;--------------------------------------
IRCOM EQU 20H ;20H-23H IR使用
IRIN bit P3.6 ;遥控信号输入端
;---------------------------------------
FC_MARK bit 05h; 检测返程标志
ZHUANWAN_OK BIT 00H
HUI_5S EQU 52H
shachedeng0 equ 53h
shachedeng1 equ 54h
;---------------------------
DISPLAY_CLOCKGE EQU P3.0;左数码管锁存端
DISPLAY_CLOCKSHI EQU P3.1;右数码管锁存端
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;全程实现定时
;--------------------------
org 0030h; 程序开始执行,初始化
;---------------------------
start:mov SP,#60h;
mov P1,#00h;
; SETB P1.2
MOV P3,#0FFH;
MOV TMOD,#15h ;定时器0计数检测铁片,定时器1工作定时状态
MOV TH0,#0FFH;
MOV TL0,#0FFH;
mov th1,#4Ch;定时50MS,方式1
mov tl1,#00h
mov IP,#0Ah;现在定时器0,检测铁片中断级别最高
mov TCON,#00h ;DI DIAN PIAN CHU FA
mov IE,#0FH ; 开两个外中断及两个定时器中断,关总中断
clr FC_MARK ;此条程序是想用P2。0,返程标志检测,换速度
CLR ZHUANWAN_OK
CLR ZUO_CHEWEI;初始化停车信号位
CLR YOU_CHEWEI;
CLR XIAOYIN4511
MOV HUI_5S,#00H
;;;;;;;;;;;;;;;;;;;;;;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;
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;接语音芯片,先不说话
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 译码子程序
;引导码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 P1.2,MAIN1
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,#00011110B;车辆启动
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; 全速前进程序
JB FC_MARK,TING_60S
SJMP MAIN
;-----------------------------------------停车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;先暂时让车停六十秒
CLR TR1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SETB ZANTING_OVER
MOV JISHUQI_MIAOSHIWEI,#00H;再次清零,以便计返程时间
MOV JISHUQI_MIAOGEWEI,#00H;
;---------------------------------------转弯程序
ZHUANWAN1: mov p0,#01011010b; 播放转弯语音
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
;--------------------------------转弯已完成,准备跳出转弯程序
CHU_ZHUANWAN:
CLR ZUOLUN;
CLR YOULUN;
CLR ZUOLUN_DIR
CLR YOULUN_DIR;
MOV R4,#250
DJNZ R4,$
SETB ZHUANWAN_OK ;转弯成功标志
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;与来时一样的速度返回
SETB YOULUN;
CALL YAN_1
CLR ZUOLUN
CLR YOULUN;
CALL YAN_2;
SJMP FANCHENG
;***************************************
;*************************************************************
;--------------------------------------掉显示程序时延时
DELAY_1S:MOV R4,#250
Z3:MOV R5,#250
Z2:MOV R6,#8
Z1:DJNZ R6,Z1
DJNZ R5,Z2
DJNZ R4,Z3
RET
;-------------------------------停车时用特短延时
TEDUAN_DELAY0:MOV R4,#20
DJNZ R4,$
RET;
TEDUAN_DELAY1:MOV R4,#40;
DJNZ R4,$;
RET;
;-------------------------------- 左轮调整程序
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
[attach]79450[/attach]
作者:
lemon0210
时间:
2017-9-27 10:47
怎么没看到附件资料呢
作者:
zwthb
时间:
2017-10-11 12:42
看看这个程序怎么写
作者:
haoshijie
时间:
2018-5-7 21:13
汇编语言
作者:
haoshijie
时间:
2018-5-7 21:14
唉,汇编语言
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1