自动往返行驶小汽车的设计.docx
- 文档编号:12016050
- 上传时间:2023-04-16
- 格式:DOCX
- 页数:16
- 大小:40.46KB
自动往返行驶小汽车的设计.docx
《自动往返行驶小汽车的设计.docx》由会员分享,可在线阅读,更多相关《自动往返行驶小汽车的设计.docx(16页珍藏版)》请在冰豆网上搜索。
自动往返行驶小汽车的设计
自动往返行驶小汽车的设计
本设计的小汔车能在如图81所示的跑道上自动往返行驶,车子从起跑线出发后到达终点线停车10秒钟,然后返回到起点停止。
在限速区行驶时间要求大于8秒,终点线停车与最后停车时要求车子中心点与黑线的误差尽量小。
车子能自动记录时间及里程并在车上显示。
跑道宽为0.5米,两侧挡板高度大于0.2米,跑道表面贴有白纸,在B、C、D、E、F、
G处画有2cm宽的黑线。
ABCDEFG
H
0.5米
限速区
1米0.5米
36米
2米36米
1米
0.5米
起跑线终点线
图81跑道顶视图
1系统硬件电路的设计
控制系统设计采用AT89C52单片机。
显示系统采用三位LED数码管显示里程数,四位
LED数码管显示一次往返的时间。
电机正反转采用桥式驱动控制,二档电压调速。
里程记录采用霍尔传感器,跑道标志线采用光敏管检测并使用软件整形消抖措施。
使用四个靠轮解决小汽车与挡板的碰擦问题,单片机、电机独立稳压电源供电。
(1)电机驱动电路
采用两对互补三极管,利用单片机16、17脚电位的高低去控制三极管的截止和导通状态,从而实现小汽车驱动马达的正反转功能。
为了防止马达转动时对单片机的干扰影响,提高单片机的稳定性,在马达的两端加了抗干扰电容。
(2)电压调速电路
电机驱动电压由AT89C52单片机的P1.7和P1.6分别控制。
当P1.7为0,P1.6为1
时,电机驱动电压为+7.5v,小车进入高速行驶状态;当P1.7为1,P1.6为0时,电机驱
动电压为+4.3v,小车进入低速行驶状态。
当P1.0为高电位时,马达供电三极管D880截止,关闭马达电源实现停车功能;当P1.0为0时,D880输出电机驱动电压,小车按单片机的指令执行各种功能。
(3)传感脉冲检测电路由霍尔元件里程检测、跑道标志光电管检测两部分组成,电路图如下图。
用于里程累计的脉冲信号由霍尔元件检测。
此装置安装在后左轮,车轮每转一周就由霍尔元件产生一个低电平脉冲,单片机外部中断1产生中断,从而使里程脉冲数累计一次,根据本小车轮子的周长,每转6周为1米,所以每累计6个脉冲就是1米。
用于检测跑道标志的脉冲信号由光敏二极管、发光二极管电路组成。
当小车在白纸上时,输出为高电平;当遇到黑条时,输出低电平脉冲,作中断计数判断用。
(4)LED显示电路
对多位LED显示器采用动态扫描的方法进行显示,系统采用七位数码管显示,前三位数码管显示的数值表示里程,显示的范围为1m—999m。
后四位数码管的数值表示一次往返过程中所需的总时间,其中前两位表示分,后两位表示秒。
往返到起点时显示的数值是一次往返的总时间。
P0口作段码数据输出,P2为扫描输出口。
2系统内存资源的分配
20H—24H内存单元作为里程计数用(23H为跑道条数存放单元),采用10进制计数,最
大计数值为999米。
70H—73H为时间计数单元,采用10进制BCD码计数,最大记录时间为
59分59秒。
显示数据在70H—76H单元中,其中74H—76H单元内为里程显示数据。
为了标志是终点停车还是起点停车,用位地址30H(即35H.0位)的位值作为判断标志。
3系统主要程序的设计
(1)初始化程序
主要完成70H—76H、20H—23H等单元的清零,设置T1为16位定时模式,开放T1、外中断0、外中断1的中断等。
(2)主程序主要完成初始化工作,设定小汽车的初始运行状态,最后循环调用显示程序,程序流程
图见图8-6。
(3)外中断0服务程序其任务是根据小车到达黑道的位置控制小车的运行状态,其程序流程图见图8-7。
中断0开始关中断跑道数加1
开始初始化置快车状态
置前进状态
打开电机电源
调用显示子程序
第6条
?
N
第3条
N?
第4条
N?
第5条
?
N
延时7ms
开中断中断返回
Y
停止
Y
慢车
Y快车
Y
慢车
图86主程序流图
图87小车状态控制流程图
(4)慢车子程序
慢车子程序执行时,先对电机进行反相驱动约150ms,使其刹车,然后改供低电压,使电机慢速转动。
(5)停止子程序
当执行停车时,先对黑道计数器单元23H清零,再反相驱动刹车后关电机电源,然后延
时10秒,对30H位取反,以判断是终点停车还是起点停车。
若是起点停车,计时单元清零。
最后设小车初始运动状态。
(6)里程计数处理程序(外中断1服务程序)
里程计数器采用10进制计数,最大计数值为999米,当退出时将计数值移入74H—76H显示数据存储单元。
(7)计时程序
与设计实例2的时钟程序相同。
(8)延时程序
延时程序均采用调用显示子程序的方法,以改善LED显示的效果。
以下是自动往返小汽车控制系统完整源程序:
主程序和中断程序入口
ORG0000H;程序执行起始地址LJMPSTART;跳至START
ORG0003H;外中断0入口
LJMPINTEX0;跳至INTEX0中断服务程序ORG000BH;定时器T0中断入口
RETI;中断返回
ORG0013H;外中断1入口
LJMPINTEX1;跳至INTEX1中断服务程序ORG001BH;定时器T1中断入口
LJMPINTT1;跳至INTT1中断服务程序
ORG0023H;串口中断入口RETI;中断返回
ORG002BH;定时器T2中断入口
RETI;中断返回
初始化程序
CLEARMEMIO:
MOVR0,#70H;清70H-76H显示单元MOVR7,#07H;循环次数
ML0:
MOV@R0,#00H;清0
INCR0;下一地址
DJNZR7,ML0;未完再循环
MOVTMOD,#10H;T1为16位定时器
MOVR4,#14H;1秒定时用(50毫秒20次)MOVTL1,#0B0H;50毫秒定时用初值
MOVTH1,#3CH;
MOV20H,#00H;清0操作MOV21H,#00H;
MOV22H,#00H;
MOV23H,#00H;MOV24H,#00H;
CLR30H;清停车标志SETBET1;开T1中断SETBEX1;开外中断1
SETBIT1;外中断1采用边沿触发
SETBIT0;外中断0优先级为1(最高)
SETBEX0;开外中断0
SETBEA;开总中断允许SETBTR1;开启定时器T1
RET;子程序返回
主程序
START:
LCALLCLEARMEMIO;上电初始化SETBP1.6;选择7.5V输出CLRP1.7;选择7.5V输出SETBP3.7;前进状态
CLRP3.6;前进状态
CLRP1.0;电机供电开始MAIN:
LCALLDISP;LED显示一次
MCS51系列单片机设计实例
LJMPMAIN;转MAIN循环
NOP;PC值出错处理NOP
LJMPSTART;重新初始化
外中断0服务程序,用作跑道位置处理
23H作跑道计数器
INTEX0:
PUSHACC;堆栈保护
PUSHPSW;
CLREX0;关中断
LCALLDISP;LED显示一次(延时抗干扰)JBP3.2,IN0RET;P3.2为1退出(干扰)
INC23H;跑道计数器加1
MOVA,23H;数据入A
CJNEA,#06H,JUDGE1;不是第6道转JUDGE1
LCALLSTOP;是第6道,停车LJMPIN0RET;转中断退出
JUDGE1:
CJNEA,#03H,JUDGE2;不是第3道转JUDGE2
LCALLSTOPSLOW;是第3道,变慢车LJMPIN0RET;转中断退出
JUDGE2:
CJNEA,#04H,JUDGE3;不是第4道转JUDGE3
LCALLFAST;是第4道,变快车LJMPIN0RET;转中断退出
JUDGE3:
CJNEA,#05H,IN0RET;不是第5道转INORET退出LCALLSTOPSLOW;是第5道,变慢车
IN0RET:
CLRIE0;清外中断0中断标志
POPPSW;恢复现场POPACC;
LCALLDL7MS;延时7毫秒(抗干扰)SETBEX0;开外中断0
RETI;中断返回
慢车控制子程序
STOPSLOW:
CLRP1.6;关7.5V电源
CPLP3.6;反向驱动(刹车)CPLP3.7;反向驱动
LCALLDS50MS;刹车时间(可根据试车情况调整)LCALLDS50MS;
LCALLDS50MS;
CPLP3.6;正向驱动
CPLP3.7;正向驱动
SETBP1.7;开4.3V电源RET;返回
快车控制子程序
FAST:
CLRP1.7;关4.3V电源SETBP1.6;开7.5V电源RET;返回
停车控制程序
STOP:
MOV23H,#00H;跑道计数单元清0
CPLP3.6;反向驱动(刹车)CPLP3.7;反向驱动(刹车)LCALLDS50MS;刹车时间
LCALLDS50MS;刹车时间(可调整)SETBP1.0;关电机电源
SETBPT1;定时器T1为高优先级LCALLDS10S;停车10秒
CLRPT1;恢复T1为低优先级
SETBP1.6;开7.5V电源(高速)CLRP1.7;关4.3V
CLRP1.0;电机电源开
CPL30H;停车点位置判断标志取反
JB30H,STREN;为1(中途停车)转STRENLCALLCLR00;是终点,调复0程序
STREN:
RET;返回
计时清0程序
CLR00:
MOV70H,#00H;计时单元清0
MOV71H,#00H;计时单元清0
MOV72H,#00H;计时单元清0
MOV73H,#00H;计时单元清0
RET;返回
外中断1程序,里程计数用
20H、21H、22H、24H作计数器
NTEX1:
PUSHACC;堆栈保护PUSHPSW;
CLREX1;关外中断1
INC20H;圈加1
LLLL:
MOVA,20H;判断是否满6圈
CJNEA,#06H,LLL;不满6圈转LLL退出
MOV20H,#00H;满6圈清0进位(6圈为1米)INC21H;上位加1
MOVA,21H;判断是否满10
CJNEA,#0AH,LLL;不满10转LLL
MOV21H,#00H;满10清0进1位INC22H;高位加1
MOVA,22H;判断是否满10
CJNEA,#0AH,LLL;不满10转LLL
MOV22H,#00H;满10清0进1位INC24H;高位加1
MOVA,24H;判断是否满10
CJNEA,#0AH,LLL;不满10转LLLMOV24H,#00H;满10清0
LLL:
MOV74H,21H;将里程数移入显示单元(个位)MOV75H,22H;将里程数移入显示单元(十位)MOV76H,24H;将里程数移入显示单元(百位)
IN1RET:
POPPSW;恢复堆栈POPACC;
SETBEX1;开外中断1
RETI;中断返回
时间计时器程序
(T1定时中断服务程序)
INTT1:
PUSHACC;堆栈保护PUSHPSW;
MOVTL1,#0B0H;赋50毫秒定时初值MOVTH1,#3CH;
DECR4;减1
MOVA,R4;
JNZRETT0;不为0转RETT0
MOVR4,#14H;为0(1秒到)重赋初值MOVR0,#71H;地址指向71H
ACALLADD1;加1秒操作
MOVA,R3;
CLRC;
CJNEA,#60H,CC;是否为60秒?
CC:
JCRETT0;小于60转RETT0
ACALLCLR0;大于或等于60清0
MOVR0,#73H;指向分计时地址单元
ACALLADD1;分加1
MOVA,R3;CLRC;
CJNEA,#60H,CCC;是否为60分?
CCC:
JCRETT0;小于60转RETT0
ACALLCLR0;大于或等于60分计时单元清0
RETT0:
POPPSW;恢复堆栈POPACC;
RETI;中断返回
;
加1操作程序
ADD1:
MOVA,@R0;取计数值
DECR0;指向低一个地址
SWAPA;计数值高低四位交换ORLA,@R0;相或组合成一个数据ADDA,#01H;加1
DAA;十进制调整MOVR3,A;暂存R3内ANLA,#0FH;高四位变0
MOV@R0,A;放回低地址
MOVA,R3;取回R3内数据INCR0;地址加1
SWAPA;高低四位交换
ANLA,#0FH;高四位为0
MOV@R0,A;放回原地址RET;返回
清0程序
CLR0:
CLRA;清A
MOV@R0,A;对应地址单元清0
DECR0;指向低一地址
MOV@R0,A;清0
RET;返回
显示程序
DISP:
MOVR1,#70H;显示数据首址
MOVR5,#0FEH;扫描字
PLAY:
MOVA,R5;扫描字入AMOVP2,A;从P2口输出MOVA,@R1;取显示数据MOVDPTR,#TAB;取段码表首址
MOVCA,@A+DPTR;查数据对应段码MOVP0,A;段码从P0口输出
LCALLDL1MS;点亮1毫秒
INCR1;指向下显示数地址MOVA,R5;扫描字入A
JNBACC.6,ENDOUT;ACC.6=0转ENDOUT结束RLA;循环左移
MOVR5,A;放回A
AJMPPLAY;转PLAY再显示
ENDOUT:
MOVP2,#0FFH;显示结束处理。
P2口置1
RET;子程序结束
;
;LED共阴段码表(0-9)
TAB:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
;
;1毫秒延时程序
DL1MS:
MOVR6,#14HDL1:
MOVR7,#19HDL2:
DJNZR7,DL2
DJNZR6,DL1
RET
;
;延时程序,用调用显示程序实现,可使LED显示稳定DS50MS:
LCALLDISP;(7毫秒)
LCALLDISP
LCALLDISPDS20MS:
LCALLDISPLCALLDISP
LCALLDISPRET
;
;10秒延时程序,用调用显示程序实现,可使LED显示不熄灭
DS10S:
MOVR2,#08H;(8*11*16*7=9956毫秒)
TI0:
MOVR0,#0B0H
TI1:
LCALLDISPDJNZR0,TI1
DJNZR2,TI0
RET
;7毫秒延时程序,跑道计数器抗干扰用
DL7MS:
SETBPX1;外中断1置高优先级MOVR2,#0EH;赋定时值
DL11:
LCALLDISP;调用显示程序DJNZR2,DL11;循环
CLRPX1;外中断1恢复低优先级
RET;返回
;
END;程序结束
单片机程序应用设计作业
班级:
机制08-1
学号:
2号
姓名:
万文辉
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 自动 往返 行驶 小汽车 设计