四川工程职业技术学院
单片机应用技术课程电子教案
Copyright ? Http://mcu.scetc.net
第 讲 14
外部中断应用程序设计范例
Copyright ? Http:// mcu.scetc.net SiChuan Engineering Technical College-1959
本讲主要内容,
14-1,设计范例 —— 声控小车
14-2,智能小车运动控制方式
14-3,声控的实现方法
Copyright ? Http:// mcu.scetc.net SiChuan Engineering Technical College-1959
14-1,设计范例 —— 声控小车
? 利用声音控制小车运动状态
? 要求:编程使小车原地旋转(顺时针转 5秒逆时针转 5秒,重复进
行),通过声音检测电路产生中断使小车停止。
Copyright ? Http:// mcu.scetc.net SiChuan Engineering Technical College-1959
14-1,设计范例 —— 声控小车
? 范例分析,
? 设计中首先要求控制小车按要求运动,这包含以下内容
? 小车电机的驱动方式 —— 硬件电路 1
? 小车运动方式控制方法
? 其次要求采用声音控制小车的运动,这一过程包含以下内容
? 声音检测电路的工作原理 —— 硬件电路 2
? 如何实现对小车的控制 —— 程序设计思路
Copyright ? Http:// mcu.scetc.net SiChuan Engineering Technical College-1959
14-2,智能小车运动控制方式
? 小车电机驱动电路 (以左侧电机为例)
? 若使左电机正转,应如何控制电路呢?
Q4
D 8 82
Q3
D 8 82
Q1
B 7 72
Q2
B 7 72
Q5
9 0 14
Q6
9 0 14
G N D
+ 6 VR3
150
R4
150
M L +
M L -
L+
L-
C1
C A P
R8
R E S 2
R7
R E S 2
34
U 8 B
7 4 L S 0 4
56
U 8 C
7 4 L S 0 4
A
-
+
M O T O R
M L +
M L -
导通
1
0 1
0 导通
导通
Copyright ? Http:// mcu.scetc.net SiChuan Engineering Technical College-1959
14-2,智能小车运动控制方式
? 小车电机驱动电路
思考:若同侧电机的两个输入端都为低电平,会怎样呢?
Q4
D 8 82
Q3
D 8 82
Q1
B 7 72
Q2
B 7 72
Q5
9 0 14
Q6
9 0 14
G N D
+ 6 VR3
150
R4
150
M L +
M L -
L+
L-
C1
C A P
R8
R E S 2
R7
R E S 2
34
U 8 B
7 4 L S 0 4
56
U 8 C
7 4 L S 0 4
A
-
+
M O T O R
M L +
M L -
0
0
1
1
导通 导通
由于 Q5,Q6基极
均为高电平,
Q1~Q4均导通,
会造成短路。
Copyright ? Http:// mcu.scetc.net SiChuan Engineering Technical College-1959
14-2,智能小车运动控制方式
? 小车运动控制方式
? 小车由两个电机分别驱动左右两侧的车轮转动;
? 小车电机的正反转由 P1.4~ P1.7控制,控制对象分配如下,
? 右侧电机,P1.4— 反转 P1.5— 正转
? 左侧电机,P1.6— 反转 P1.7— 正转
根据电路特点,
相应端为低电
平有效。
Copyright ? Http:// mcu.scetc.net SiChuan Engineering Technical College-1959
14-2,智能小车运动控制方式
? 小车运动控制方式
? 小车的运动方式与电机状态之间的关系,
? 前进:左、右电机均正转
? 后退; 左、右电机均反转
? 顺时针转动,左电机正转、右电机反转
? 逆时针转动,左电机反转、右电机正转
? 例 1:实现左边电机正转和右电机反转(顺时针)
SETB P1.5
SETB P1.6
LCALL DELAY1 ;延时 0.5秒
CLR P1.4
CLR P1.7
右轮反转
左轮正转
由于电机是电感性负载,
并且有机械惯性,因此在
电机运转方向变化时需要
过渡时间,程序中 延时 0.5
秒 就是电机方向转换的过
渡时间。
Copyright ? Http:// mcu.scetc.net SiChuan Engineering Technical College-1959
14-3,声控的实现
? 声音检测电路
? 主电路板上的声音检测电路在 没有检测到声音时其输出端为高电平,
当麦克风 接收到一定强度的声音时其输出端变为低电平 。用跳线帽
短接 JP17的 2,3脚就可以把声音检测电路的输出接到单片机的 INT0
( P3.2)端。
5
6
7
4
8
U 9 B
L M 3 5 8
4
8
2
3
1
U 9 A
L M 3 5 8
R25
2K
R23
2K
R20
1 0 0k
C29
10u
R24
2K
D 1 1
1 N 41 4 8
C28
10u
V CC
R21
5K
R18
10k
G N D
R19
10k
R22
5k
R15
R E S 2
V CCG N D
C10
C A P
M K 1
M ICR O P H O N E 2
D I4
1
2
3
J P 17
C O N 3
R P 1
P O T 2
V CC
Copyright ? Http:// mcu.scetc.net SiChuan Engineering Technical College-1959
14-3,声控的实现
? 声音检测电路原理
? 调节 RP1电位器可以调节声音检测电路的灵敏度,环境噪声比较大时,
应降低灵敏度,在环境噪声较小时可以提高灵敏度。
5
6
7
4
8
U 9 B
L M 3 5 8
4
8
2
3
1
U 9 A
L M 3 5 8
R25
2K
R23
2K
R20
1 0 0k
C29
10u
R24
2K
D 1 1
1 N 41 4 8
C28
10u
V CC
R21
5K
R18
10k
G N D
R19
10k
R22
5k
R15
R E S 2
V CCG N D
C10
C A P
M K 1
M ICR O P H O N E 2
D I4
1
2
3
J P 17
C O N 3
R P 1
P O T 2
V CC
Copyright ? Http:// mcu.scetc.net SiChuan Engineering Technical College-1959
14-1,设计范例 —— 声控小车
? 程序设计思路
? 小车原地旋转(顺时针转 5秒逆时针转 5秒,重复进行) —— 主程

? 通过声音使小车停止 —— 中断服务程序
Copyright ? Http:// mcu.scetc.net SiChuan Engineering Technical College-1959
14-1,设计范例 —— 声控小车
? 主程序流程图
中断初始化
小车顺时针旋转
延时 5秒
小车逆时针旋转
延时 5秒
开始
Copyright ? Http:// mcu.scetc.net SiChuan Engineering Technical College-1959
14-1,设计范例 —— 声控小车
? 主程序 —— 中断初始化
在使用中断时,要对所用到的中断进行必要的设置,这一过程称之为中
断初始化。
此设计中用到的是外部中断 /INT0,其中断初始化工作包含以下内容,
? 外部中断 触发方式 设置;
? 设置中断优先级(此设计中由于只开一个中断,故可略去。);
? 允许 /INT0中断(开中断)。
Copyright ? Http:// mcu.scetc.net SiChuan Engineering Technical College-1959
14-1,设计范例 —— 声控小车
? 设置外部中断的触发方式,
外部中断源 /INT0和 /INT1 各自都有两种触发方式,
①下降沿触发(建议最好采用该方式)
②低电平触发
设置方法:定时器控制寄存器 TCON
IT0( TCON.0),外部中断 0触发方式控制位。
当 IT0=0时,为电平触发方式。
当 IT0=1时,为下降沿触发方式。
IE0( TCON.1),外部中断 0中断请求标志位。
IT1( TCON.2),外部中断 1触发方式控制位。
IE1( TCON.3),外部中断 1中断请求标志位。
TCON D7 D6 D5 D4 D3 D2 D1 D0
88H TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
Copyright ? Http:// mcu.scetc.net SiChuan Engineering Technical College-1959
14-1,设计范例 —— 声控小车
? 本设计中设置外部中断 0为脉冲方式触发,
? 方法一,MOV TCON,#01H
? 方法二,SETB IT0
TCON D7 D6 D5 D4 D3 D2 D1 D0
88H TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
Copyright ? Http:// mcu.scetc.net SiChuan Engineering Technical College-1959
14-1,设计范例 —— 声控小车
? 主程序清单
ORG 0000H SJMP MAIN
ORG 0003H ; INT0中断入口地址
LJMP SER
ORG 0030H ;主程序起始地址
MAIN,MOV IEN0, #81H ;中断设置
SETB IT0 ;脉冲方式触发
LOOP,SETB P1.5 ;小车顺时针转动
SETB P1.6
LCALL DELAY1 ;延时 0.5秒
CLR P1.4
CLR P1.7
LCALL DELAY ;延时 5秒
右轮反转
左轮正转
Copyright ? Http:// mcu.scetc.net SiChuan Engineering Technical College-1959
14-1,设计范例 —— 声控小车
? 主程序清单 —— 续
SETB P1.4 ;小车逆时针转动
SETB P1.7
LCALL DELAY1 ;延时 0.5秒
CLR P1.5
CLR P1.6
LCALL DELAY ;延时 5秒
SJMP LOOP
DELAY,(略) ;延时 5秒子程序
DELAY1:(略) ;延时 0.5秒子程序
右轮正转
左轮反转
Copyright ? Http:// mcu.scetc.net SiChuan Engineering Technical College-1959
14-1,设计范例 —— 声控小车
? 中断服务程序流程图
小车停止
原地等待
中断入口
中断返回
Copyright ? Http:// mcu.scetc.net SiChuan Engineering Technical College-1959
14-1,设计范例 —— 声控小车
? 中断服务程序清单
SER,PUSH ACC ;现场保护
MOV P1,#0FFH ;小车停止运动。
SJMP $
EXIT,POP ACC ;现场恢复
RETI ;中断返回
现场的保护和
恢复在这个程
序中是必须的
吗?
现场的保护和恢复
在这个程序中是必
要的吗?
Copyright ? Http:// mcu.scetc.net SiChuan Engineering Technical College-1959
14-1,设计范例 —— 声控小车
? 课后思考,
如何设计程序对小车实现如下控制,
? 初始小车前进
? 通过拍手使小车呈以下几种状态循环
后退 顺时针转动 逆时针转动 前进