《单片机原理及应用》
课程设计报告书
课题名称
姓 名 学 号
专 业 指导教师 红外避障小车
机电与控制工程学院
年 月 日
任 务 书
设计一个小车,运用红外线检测,能实现避障。
要求:1 没有障碍物时正常前进,
2 前方有障碍物时能绕过障碍物。
目 录
1、绪论……………………………………………………………………3
2、方案论证(规划、选定)…………………………………………… 4
3.方案说明(设计)……………………………………………………… 12
4、硬件方案设计………………………………………………………… 13
5、软件方案设计………………………………………………………… 20
6、调试……………………………………………………………………21
7、技术小结(结束语)………………………………………………… 22
8.致谢…………………………………………………...............................22
9、参考文献………………………………………………………………22
10、附录(源程序代码、电路图等)…………………………………………22
绪论
随着生产自动化的发展需要,机器人已经越来越广泛地应用到生产自动化上,随着科学技术的发展,机器人的传感器种类也越来越多,其中红外传感器已经成为自动行走和驾驶的重要部件。红外的典型应用领域为自主式智能导航系统,机器人要实现自动避障功能就必须要感知障碍物,感知障碍物相当给机器人一个视觉功能。
随着微电子技术的不断发展,微处理器芯片的集成程度越来越高,单片机已可以在一块芯片上同时集成CPU、存储器、定时器、并行和串行接口、看门狗、前置放大器、A/D转换器、D/A转换器等多种电路,这就很容易将计算机技术与测量控制技术结合,组成智能化测量控制系统。这种技术促使机器人技术也有了突飞猛进的发展。本次课程设计我会详细地向大家介绍红外避障小车的设计及制作。
二、方案论证
1.壁障模块
在壁障模块中,可以选择超声波壁障。其优点是反应速度灵敏,距离远,受外界干扰小。但是,在本设计中,题目所要求是距离是20cm,如果利用超声波传感器进行壁障的话,由于空间小声波在小空间不同方向里会进行多次反射,左右前后的传感器之间相互干扰,使控制中心不能明确判断出那个方位遇到了障碍物,从而动作紊乱,不能实现要求。
使用红外接收头和发射管配合,利用38k频率解决灵敏度问题。38K调制和发射电路。使用一个定时器的快速PWM模式产生38K调制信号,通过剩余的四个施密特触发器(有2个已经用在光电编码部分)缓冲,推动8050三极管和红外发光管来发射已经调制的红外线。其中2个1N4148接单片机IO脚,控制左右红外发光管轮流发射。后面串接的可见光LED是为了方便用户调试而设置的,让用户知道当前是否在发射红外线。通过调节PWM的占空比,调节红外发光管的亮度,从而实现调节感知障碍物距离的功能。但是实际测试结果不尽人意。灵敏度太高。加衰减电路比较麻烦,调试不易。且价格也贵。
利用红外传感器,其优点是对近距离的障碍物反应速度灵敏,不同方位的传感器之间信号不会相互干扰,造成误动作。缺点是距离近,易受到自然光的干扰。经过两种传感器性能对
比与题目要求的综合考虑分析,最终选择红外传感器作为小车的眼睛,进行壁障。
LM567是一种廉价的音频锁相环集成电路,利用它可以构造性能较好的反射式光电传感器。
如下页图所示,由LM567的内部振荡器提供方波信号,点亮探头的LED,由探头的光敏管接收反射光。经三极管放大,转换成电压信号后送到LM567的内部鉴相器2(输出鉴相器)同步解调,然后由LM567内部的比较器转换为数字输出。 并联负反馈放大电路有着稳定的增益和低的输入阻抗,能消除光敏管结电容的影响,获得良好的高频特性。
100R电位器 用于调节放大器增益以调节灵敏度。
这个电路的缺点是当多个探头同时使用时因为频率接近,一旦相邻单元的光斑出现部分重合就会有差拍干扰造成输出抖动。另外,567输出鉴相器的参考信号是从振荡电容端引出的,与发射和接收信号几乎是正交的,解调效率非常低,前级需要高倍放大。
意探头的连线要短,如果连线较长要分别屏蔽,最好把电路板跟探头做在一起。否则发射管连线上大幅度的脉冲信号会感应耦合到接收端,导致在没有接收光的情况下也误认为收到了光信号,这种同频干扰无法用电路板上的设计来消除
电路图如下图:
但为了使用方便,改用成品。(成品如下图)
2.2、电机驱动模块
在电机驱动模块中,由于电机的功率不大,我们可以
选择使用电桥驱动,电路图如下:
其优点是电路简单,成本高。但是由于缺少保护电路,只要控制出现错误,就很容易烧坏晶体管,晶体管的价格也不菲,便宜货又电流太小,不足以承受小车的功率,使整个电路瘫痪。 然而,使用集成电路LM298,由于集成程度高,内包含稳定的数字电路,就算在编写程序的时候错误或者其他原因使控制端口同时输出通过一种电平,不容易烧坏芯片,使整个电路瘫痪。同时芯片还有使能端,容易控制,且稳定。特有的PWN调制功能端,使电机更容易控制。也使得程序在减速的过程特别是保持左右电机速度平衡的程序编写上变得更加简洁容易。
15脚Multiwatt封装的L298N,内部同样4通道逻辑驱动电路。可以方便的驱动两个直流电机,或一个两相步进电机。
L298N可接受标准TTL逻辑电平信号VSS,VSS可接4
.5~7 V电压。4脚VS接电源电压,VS电压范围VIH为+2.5~46 V。输出电流可达2.5 A,可驱动电感性负载。1脚和15脚下管的发射极分别单独引出以便接入电流采样电阻,形成电流传感信号。L298可驱动2个电动机,OUT1,OUT2和OUT3,OUT4之间可分别接电动机,本实验装置我们选用驱动一台电动机。5,7,10,12脚接输入控制电平,控制电机的正反转。EnA,EnB接控制使能端,控制电机的停转。
经过综合分析考虑,最终决定使用LM298作为本设计
的驱动芯片。其电路连接图如下:
为了方便单片机供电,电机驱动模块采用了集成的驱动模板,可以从电路板上抽取5v电压给单片机供电,从而减少了一路电源,也减轻了小车重量。
模块接线方法:IN1-IN4接单片机,
ENA,ENB 可以用跳线帽选择直接接高电平或者用单片 机控制,IN1-IN4提供4个跳线帽选择是否接上10K 的 上拉电阻,OUT1-OUT2接直流电机1,OUT3-OUT4接电 机2,VCC,GND 分别接电池盒正负极,当VCC 电压大 于6V 时,+5为输出,可以方便给5V 的单片机供电, 当VCC 电压小于6V 时,需拔掉5V_EN 跳线帽,外部给 +5提供一个5V 电压保证298N 芯片的正常工作。
2.3 控制模块
我们经常使用的单片机有AT89S51、AT89S52、AT89C52. 但因AT系列单片机下载程序是需要专门下载器比较麻烦,所以我选用的是STC89C52RC单片机,这种单片机下载程序时比较方便,通过STC串口下载软件很方便的就可以把编译好的程序烧写到单片机上。 STC89C52RC引脚图如下:
三、方案说明 3.1整体构思
小车沿直线行驶,当探测到前方有障碍物时停止,再后退,然后右转弯,最后继续前进,如此反复。 3.2,总体设计方案和框图
本设计以AT89C2051单片机作为检测和控制核心,用红外光电开头探测障碍物,RP5履带式坦克底盘作车体。框图如下:
四、硬件方案设计
本系统硬件部分由单片机单元,红外传感器单元,电机驱动单元,蜂鸣器单元,键盘输入单元及电源单元组成。 1,单片机单元
本系统采用AT89C2051单片机作为中央处理器,其主要任务是扫描键盘输入的信号启动小车,读P3.5判断前方有无障碍物,并执行相关动作(本设计中P3.5=0时,前方有障碍;P3.5=1时前方无障碍),P1.4----P1.7是电机驱动口;P3.7是蜂鸣器信号输出;P3.5接红外传感器。 4.2红外传感器单元
在供电情况下,前方无障碍物时,OUT输出为高电平1,前方有障碍物时,OUT输出为低电平0. 4.3 电机驱动单元
L298N接收标准的TTL逻辑电平信号,可驱动36V,2A以下的电机。2,
7,10,15接输入控制电平;3,6和11,14脚分别接两只电机,1,9脚接控制使能端,控制电机停转,单片机输出两组PWM信号,每一组PWM信号用来控制一个电机的转速。
现以其中一组电机为例来说明:2,7脚输入高/低或低/高,实现电机的正/反转
2,7脚均为高或均为低,实现电机停转
1
脚为高电电平时,2,7脚输入才有效,反之输入无效(所以在本系统中将1和9脚接高电平),也可以在1脚输入PWM信号,通过调整PWM的占空比来实现电机的无级调速(本系统中未使用)。 4.4蜂鸣器单元
设计为上电蜂鸣,按启动按键和有障碍物时蜂鸣一次。由三极管,蜂鸣器和电阻组成。
4.5键盘输入单元
设计两只按键,S2启动,由单片机扫描P3.4,此脚为低电平时启动;S1是停止,刚开始想通过编程来实现,后来在与朋友交流时,决定把S1装在复位电路中,这个办法既简单又有效。
4.6电源电路
系统采用两组电压供电,+7.2V是电机驱动电压,+5V供给单片机,L298N
及蜂鸣器电路等。 4.7 系统硬件连接图
五. 软件方案设计
5.1
5.2 程序设计
由于系统要实现的功能比较简单,所以程序也比较简单。想要实现小车的前进,停止,后退和右转弯,单片机在各个阶段P1口的状态如下: P1=01100000=60H(十六进
制), P1.7=0 P1.6=1 P1.5=1 P 1.4=0 , 小车前进 P1=10010000=90H(十六进
制), P1.7=1 P1.6=0 P1.5=0 P1.4=1, 小车后退
21
P1=00000000=00H(十六进
制), P1.7=0 P1.6=0 P1.5=0 P1.4=0, 小车停止 P1=01010000=50H(十六进
制), P1.7=0 P1.6=1 P1.5=0 P1.4=1, 小车右转
六.调试
通过改变延时程序来改变速度的大小。下表为小车运行的情况: 小车调试情况
七 技术小结
本系统以单片机C52芯片为核心部件,利用光电检测技术,红外避障,配合一套独特的软件算法实现了电动小车的沿跑道行驶、电机的方向和速度控制、躲避挡板等功能,最终使小车完成题目中要求的各项任务。在系统设计过程中,充分发挥52板软件编程方便灵活的特点,结合电子电路知识设计电路,以满足系统设计的要求。
当检测到障碍物时,红外光敏二极管接收到反射回来
22
红外光,其输出立即发生高低点平转换,该信号经放大器放大后送到单片机进行分析处理。然后将处理后的结果发送到电机驱动模块,进行校正。控制其向右转,向左转和后退。 八. 致谢
本设计能够顺利完成,还承蒙皮老师和雷老师以及身边的很多同学的指导和帮助。在设计过程中,老师给予了悉心的指导,最重要的是给了我解决问题的思路和方法。在此,我对老师表示最真挚的感谢!同时感谢所有帮助过我的同学! 九.参考文献
[1] 张鑫.单片机原理及应用[M].北京:电子工业出版社,2005.8. [2] 邱关源、罗先觉.电路[M].北京:高等教育出版社,2006.5.
[3] 康光华.电子技术基础.数字部分[M].北京:高等教育出版社,2006.1. [4] 康光华.电子技术基础.模拟部分[M].北京:高等教育出版社,2006.1. [5] 祁伟, 杨亭. 单片机C51程序设计教程与实验[M].北京:北京航空航天大学出版社,2006.
[6] 楼然苗.李光飞.单片机课程设计指导[M].北京:北京航空航天大学出版社,2007.4
十.附录
源程序
ORG 000H ,开机初始化 MOV A,#00H
MOV P1,A ,P1口清零 LCALL BING ,上电蜂鸣 START:MOV C, P3.4
23
MOV 22H,C
JB 22H,START ,按键扫描
LCALL BING ,按下按键时蜂鸣 JNB 22H,QIDONG ,按下按键转QIDONG QIDONG:LCALL DEL ,延时启动 LCALL DEL LCALL DEL
DETECT:MOV C,P3.5 ,检测程序 MOV 24H,C
JB 24H,ADVAN JNB 24H,STOP
ADVAN:MOV A,#60H MOV P1,A LCALL DEL
AJMP DETECT STOP:LCALL BING MOV A,#00H MOV P1,A
LCALL DEL LCALL DEL LCALL DEL LCALL DEL LCALL DEL
RETRE:MOV A,#90H MOV P1,A
LCALL DEL LCALL DEL LCALL DEL LCALL DEL LCALL DEL LCALL DEL
RIGHT:MOV A,#50H MOV P1,A
LCALL DEL LCALL DEL LCALL DEL LCALL DEL LCALL DEL
AJMP DETECT BING:CLR P3.7 LCALL DEL1
,前进子程序 ,返回检测程序
,停止子程序,调蜂鸣程序 ,此处可设置停止时间 ,后退子程序 ,此处可设置后退时间 ,右转子程序 ,此处可设置右转弯时间 ,一个避障动作结束,返回检测程序 ,蜂鸣器蜂鸣子程序 24
SETB P3.7
RET DEL:MOV R7,#220 ,延时子程序 D2:MOV R6,#220 DJNZ R6,$ DJNZ R7,D2 RET
DEL1:MOV R4,#200 ,延时子程序 D1:MOV R3,#200 DJNZ R3,$ DJNZ R4,D1 RET
END
25
,程序结束
26
《单片机原理及应用》
课程设计报告书
课题名称
姓 名 学 号
专 业 指导教师 红外避障小车
机电与控制工程学院
年 月 日
任 务 书
设计一个小车,运用红外线检测,能实现避障。
要求:1 没有障碍物时正常前进,
2 前方有障碍物时能绕过障碍物。
目 录
1、绪论……………………………………………………………………3
2、方案论证(规划、选定)…………………………………………… 4
3.方案说明(设计)……………………………………………………… 12
4、硬件方案设计………………………………………………………… 13
5、软件方案设计………………………………………………………… 20
6、调试……………………………………………………………………21
7、技术小结(结束语)………………………………………………… 22
8.致谢…………………………………………………...............................22
9、参考文献………………………………………………………………22
10、附录(源程序代码、电路图等)…………………………………………22
绪论
随着生产自动化的发展需要,机器人已经越来越广泛地应用到生产自动化上,随着科学技术的发展,机器人的传感器种类也越来越多,其中红外传感器已经成为自动行走和驾驶的重要部件。红外的典型应用领域为自主式智能导航系统,机器人要实现自动避障功能就必须要感知障碍物,感知障碍物相当给机器人一个视觉功能。
随着微电子技术的不断发展,微处理器芯片的集成程度越来越高,单片机已可以在一块芯片上同时集成CPU、存储器、定时器、并行和串行接口、看门狗、前置放大器、A/D转换器、D/A转换器等多种电路,这就很容易将计算机技术与测量控制技术结合,组成智能化测量控制系统。这种技术促使机器人技术也有了突飞猛进的发展。本次课程设计我会详细地向大家介绍红外避障小车的设计及制作。
二、方案论证
1.壁障模块
在壁障模块中,可以选择超声波壁障。其优点是反应速度灵敏,距离远,受外界干扰小。但是,在本设计中,题目所要求是距离是20cm,如果利用超声波传感器进行壁障的话,由于空间小声波在小空间不同方向里会进行多次反射,左右前后的传感器之间相互干扰,使控制中心不能明确判断出那个方位遇到了障碍物,从而动作紊乱,不能实现要求。
使用红外接收头和发射管配合,利用38k频率解决灵敏度问题。38K调制和发射电路。使用一个定时器的快速PWM模式产生38K调制信号,通过剩余的四个施密特触发器(有2个已经用在光电编码部分)缓冲,推动8050三极管和红外发光管来发射已经调制的红外线。其中2个1N4148接单片机IO脚,控制左右红外发光管轮流发射。后面串接的可见光LED是为了方便用户调试而设置的,让用户知道当前是否在发射红外线。通过调节PWM的占空比,调节红外发光管的亮度,从而实现调节感知障碍物距离的功能。但是实际测试结果不尽人意。灵敏度太高。加衰减电路比较麻烦,调试不易。且价格也贵。
利用红外传感器,其优点是对近距离的障碍物反应速度灵敏,不同方位的传感器之间信号不会相互干扰,造成误动作。缺点是距离近,易受到自然光的干扰。经过两种传感器性能对
比与题目要求的综合考虑分析,最终选择红外传感器作为小车的眼睛,进行壁障。
LM567是一种廉价的音频锁相环集成电路,利用它可以构造性能较好的反射式光电传感器。
如下页图所示,由LM567的内部振荡器提供方波信号,点亮探头的LED,由探头的光敏管接收反射光。经三极管放大,转换成电压信号后送到LM567的内部鉴相器2(输出鉴相器)同步解调,然后由LM567内部的比较器转换为数字输出。 并联负反馈放大电路有着稳定的增益和低的输入阻抗,能消除光敏管结电容的影响,获得良好的高频特性。
100R电位器 用于调节放大器增益以调节灵敏度。
这个电路的缺点是当多个探头同时使用时因为频率接近,一旦相邻单元的光斑出现部分重合就会有差拍干扰造成输出抖动。另外,567输出鉴相器的参考信号是从振荡电容端引出的,与发射和接收信号几乎是正交的,解调效率非常低,前级需要高倍放大。
意探头的连线要短,如果连线较长要分别屏蔽,最好把电路板跟探头做在一起。否则发射管连线上大幅度的脉冲信号会感应耦合到接收端,导致在没有接收光的情况下也误认为收到了光信号,这种同频干扰无法用电路板上的设计来消除
电路图如下图:
但为了使用方便,改用成品。(成品如下图)
2.2、电机驱动模块
在电机驱动模块中,由于电机的功率不大,我们可以
选择使用电桥驱动,电路图如下:
其优点是电路简单,成本高。但是由于缺少保护电路,只要控制出现错误,就很容易烧坏晶体管,晶体管的价格也不菲,便宜货又电流太小,不足以承受小车的功率,使整个电路瘫痪。 然而,使用集成电路LM298,由于集成程度高,内包含稳定的数字电路,就算在编写程序的时候错误或者其他原因使控制端口同时输出通过一种电平,不容易烧坏芯片,使整个电路瘫痪。同时芯片还有使能端,容易控制,且稳定。特有的PWN调制功能端,使电机更容易控制。也使得程序在减速的过程特别是保持左右电机速度平衡的程序编写上变得更加简洁容易。
15脚Multiwatt封装的L298N,内部同样4通道逻辑驱动电路。可以方便的驱动两个直流电机,或一个两相步进电机。
L298N可接受标准TTL逻辑电平信号VSS,VSS可接4
.5~7 V电压。4脚VS接电源电压,VS电压范围VIH为+2.5~46 V。输出电流可达2.5 A,可驱动电感性负载。1脚和15脚下管的发射极分别单独引出以便接入电流采样电阻,形成电流传感信号。L298可驱动2个电动机,OUT1,OUT2和OUT3,OUT4之间可分别接电动机,本实验装置我们选用驱动一台电动机。5,7,10,12脚接输入控制电平,控制电机的正反转。EnA,EnB接控制使能端,控制电机的停转。
经过综合分析考虑,最终决定使用LM298作为本设计
的驱动芯片。其电路连接图如下:
为了方便单片机供电,电机驱动模块采用了集成的驱动模板,可以从电路板上抽取5v电压给单片机供电,从而减少了一路电源,也减轻了小车重量。
模块接线方法:IN1-IN4接单片机,
ENA,ENB 可以用跳线帽选择直接接高电平或者用单片 机控制,IN1-IN4提供4个跳线帽选择是否接上10K 的 上拉电阻,OUT1-OUT2接直流电机1,OUT3-OUT4接电 机2,VCC,GND 分别接电池盒正负极,当VCC 电压大 于6V 时,+5为输出,可以方便给5V 的单片机供电, 当VCC 电压小于6V 时,需拔掉5V_EN 跳线帽,外部给 +5提供一个5V 电压保证298N 芯片的正常工作。
2.3 控制模块
我们经常使用的单片机有AT89S51、AT89S52、AT89C52. 但因AT系列单片机下载程序是需要专门下载器比较麻烦,所以我选用的是STC89C52RC单片机,这种单片机下载程序时比较方便,通过STC串口下载软件很方便的就可以把编译好的程序烧写到单片机上。 STC89C52RC引脚图如下:
三、方案说明 3.1整体构思
小车沿直线行驶,当探测到前方有障碍物时停止,再后退,然后右转弯,最后继续前进,如此反复。 3.2,总体设计方案和框图
本设计以AT89C2051单片机作为检测和控制核心,用红外光电开头探测障碍物,RP5履带式坦克底盘作车体。框图如下:
四、硬件方案设计
本系统硬件部分由单片机单元,红外传感器单元,电机驱动单元,蜂鸣器单元,键盘输入单元及电源单元组成。 1,单片机单元
本系统采用AT89C2051单片机作为中央处理器,其主要任务是扫描键盘输入的信号启动小车,读P3.5判断前方有无障碍物,并执行相关动作(本设计中P3.5=0时,前方有障碍;P3.5=1时前方无障碍),P1.4----P1.7是电机驱动口;P3.7是蜂鸣器信号输出;P3.5接红外传感器。 4.2红外传感器单元
在供电情况下,前方无障碍物时,OUT输出为高电平1,前方有障碍物时,OUT输出为低电平0. 4.3 电机驱动单元
L298N接收标准的TTL逻辑电平信号,可驱动36V,2A以下的电机。2,
7,10,15接输入控制电平;3,6和11,14脚分别接两只电机,1,9脚接控制使能端,控制电机停转,单片机输出两组PWM信号,每一组PWM信号用来控制一个电机的转速。
现以其中一组电机为例来说明:2,7脚输入高/低或低/高,实现电机的正/反转
2,7脚均为高或均为低,实现电机停转
1
脚为高电电平时,2,7脚输入才有效,反之输入无效(所以在本系统中将1和9脚接高电平),也可以在1脚输入PWM信号,通过调整PWM的占空比来实现电机的无级调速(本系统中未使用)。 4.4蜂鸣器单元
设计为上电蜂鸣,按启动按键和有障碍物时蜂鸣一次。由三极管,蜂鸣器和电阻组成。
4.5键盘输入单元
设计两只按键,S2启动,由单片机扫描P3.4,此脚为低电平时启动;S1是停止,刚开始想通过编程来实现,后来在与朋友交流时,决定把S1装在复位电路中,这个办法既简单又有效。
4.6电源电路
系统采用两组电压供电,+7.2V是电机驱动电压,+5V供给单片机,L298N
及蜂鸣器电路等。 4.7 系统硬件连接图
五. 软件方案设计
5.1
5.2 程序设计
由于系统要实现的功能比较简单,所以程序也比较简单。想要实现小车的前进,停止,后退和右转弯,单片机在各个阶段P1口的状态如下: P1=01100000=60H(十六进
制), P1.7=0 P1.6=1 P1.5=1 P 1.4=0 , 小车前进 P1=10010000=90H(十六进
制), P1.7=1 P1.6=0 P1.5=0 P1.4=1, 小车后退
21
P1=00000000=00H(十六进
制), P1.7=0 P1.6=0 P1.5=0 P1.4=0, 小车停止 P1=01010000=50H(十六进
制), P1.7=0 P1.6=1 P1.5=0 P1.4=1, 小车右转
六.调试
通过改变延时程序来改变速度的大小。下表为小车运行的情况: 小车调试情况
七 技术小结
本系统以单片机C52芯片为核心部件,利用光电检测技术,红外避障,配合一套独特的软件算法实现了电动小车的沿跑道行驶、电机的方向和速度控制、躲避挡板等功能,最终使小车完成题目中要求的各项任务。在系统设计过程中,充分发挥52板软件编程方便灵活的特点,结合电子电路知识设计电路,以满足系统设计的要求。
当检测到障碍物时,红外光敏二极管接收到反射回来
22
红外光,其输出立即发生高低点平转换,该信号经放大器放大后送到单片机进行分析处理。然后将处理后的结果发送到电机驱动模块,进行校正。控制其向右转,向左转和后退。 八. 致谢
本设计能够顺利完成,还承蒙皮老师和雷老师以及身边的很多同学的指导和帮助。在设计过程中,老师给予了悉心的指导,最重要的是给了我解决问题的思路和方法。在此,我对老师表示最真挚的感谢!同时感谢所有帮助过我的同学! 九.参考文献
[1] 张鑫.单片机原理及应用[M].北京:电子工业出版社,2005.8. [2] 邱关源、罗先觉.电路[M].北京:高等教育出版社,2006.5.
[3] 康光华.电子技术基础.数字部分[M].北京:高等教育出版社,2006.1. [4] 康光华.电子技术基础.模拟部分[M].北京:高等教育出版社,2006.1. [5] 祁伟, 杨亭. 单片机C51程序设计教程与实验[M].北京:北京航空航天大学出版社,2006.
[6] 楼然苗.李光飞.单片机课程设计指导[M].北京:北京航空航天大学出版社,2007.4
十.附录
源程序
ORG 000H ,开机初始化 MOV A,#00H
MOV P1,A ,P1口清零 LCALL BING ,上电蜂鸣 START:MOV C, P3.4
23
MOV 22H,C
JB 22H,START ,按键扫描
LCALL BING ,按下按键时蜂鸣 JNB 22H,QIDONG ,按下按键转QIDONG QIDONG:LCALL DEL ,延时启动 LCALL DEL LCALL DEL
DETECT:MOV C,P3.5 ,检测程序 MOV 24H,C
JB 24H,ADVAN JNB 24H,STOP
ADVAN:MOV A,#60H MOV P1,A LCALL DEL
AJMP DETECT STOP:LCALL BING MOV A,#00H MOV P1,A
LCALL DEL LCALL DEL LCALL DEL LCALL DEL LCALL DEL
RETRE:MOV A,#90H MOV P1,A
LCALL DEL LCALL DEL LCALL DEL LCALL DEL LCALL DEL LCALL DEL
RIGHT:MOV A,#50H MOV P1,A
LCALL DEL LCALL DEL LCALL DEL LCALL DEL LCALL DEL
AJMP DETECT BING:CLR P3.7 LCALL DEL1
,前进子程序 ,返回检测程序
,停止子程序,调蜂鸣程序 ,此处可设置停止时间 ,后退子程序 ,此处可设置后退时间 ,右转子程序 ,此处可设置右转弯时间 ,一个避障动作结束,返回检测程序 ,蜂鸣器蜂鸣子程序 24
SETB P3.7
RET DEL:MOV R7,#220 ,延时子程序 D2:MOV R6,#220 DJNZ R6,$ DJNZ R7,D2 RET
DEL1:MOV R4,#200 ,延时子程序 D1:MOV R3,#200 DJNZ R3,$ DJNZ R4,D1 RET
END
25
,程序结束
26