200 likes | 334 Views
14. 外部中断应用程序设计范例. 本讲主要内容:. 14-1. 设计范例 —— 声控小车 14-2. 智能小车运动控制方式 14-3. 声控的实现方法. 14-1. 设计范例 —— 声控小车. 利用声音控制小车运动状态 要求:编程使小车原地旋转(顺时针转 5 秒逆时针转 5 秒,重复进行),通过声音检测电路产生中断使小车停止。. 14-1. 设计范例 —— 声控小车. 范例分析: 设计中首先要求控制小车按要求运动,这包含以下内容 小车电机的驱动方式 —— 硬件电路 1 小车运动方式控制方法 其次要求采用声音控制小车的运动,这一过程包含以下内容
E N D
14 外部中断应用程序设计范例
本讲主要内容: 14-1. 设计范例——声控小车 14-2. 智能小车运动控制方式 14-3. 声控的实现方法 SiChuan Engineering Technical College-1959
14-1. 设计范例——声控小车 • 利用声音控制小车运动状态 • 要求:编程使小车原地旋转(顺时针转5秒逆时针转5秒,重复进行),通过声音检测电路产生中断使小车停止。 SiChuan Engineering Technical College-1959
14-1. 设计范例——声控小车 • 范例分析: • 设计中首先要求控制小车按要求运动,这包含以下内容 • 小车电机的驱动方式——硬件电路1 • 小车运动方式控制方法 • 其次要求采用声音控制小车的运动,这一过程包含以下内容 • 声音检测电路的工作原理——硬件电路2 • 如何实现对小车的控制——程序设计思路 SiChuan Engineering Technical College-1959
14-2. 智能小车运动控制方式 导通 1 0 导通 导通 1 0 • 小车电机驱动电路 (以左侧电机为例) • 若使左电机正转,应如何控制电路呢? SiChuan Engineering Technical College-1959
14-2. 智能小车运动控制方式 0 1 由于Q5、Q6基极均为高电平,Q1~Q4均导通,会造成短路。 导通 导通 0 1 • 小车电机驱动电路 思考:若同侧电机的两个输入端都为低电平,会怎样呢? SiChuan Engineering Technical College-1959
14-2. 智能小车运动控制方式 根据电路特点,相应端为低电平有效。 • 小车运动控制方式 • 小车由两个电机分别驱动左右两侧的车轮转动; • 小车电机的正反转由P1.4~P1.7控制,控制对象分配如下: • 右侧电机:P1.4—反转 P1.5—正转 • 左侧电机:P1.6—反转 P1.7—正转 SiChuan Engineering Technical College-1959
14-2. 智能小车运动控制方式 由于电机是电感性负载,并且有机械惯性,因此在电机运转方向变化时需要过渡时间,程序中延时0.5秒就是电机方向转换的过渡时间。 左轮正转 右轮反转 • 小车运动控制方式 • 小车的运动方式与电机状态之间的关系: • 前进:左、右电机均正转 • 后退;左、右电机均反转 • 顺时针转动:左电机正转、右电机反转 • 逆时针转动:左电机反转、右电机正转 • 例1:实现左边电机正转和右电机反转(顺时针) SETB P1.5 SETB P1.6 LCALL DELAY1 ;延时0.5秒 CLR P1.4 CLR P1.7 SiChuan Engineering Technical College-1959
14-3. 声控的实现 • 声音检测电路 • 主电路板上的声音检测电路在没有检测到声音时其输出端为高电平,当麦克风接收到一定强度的声音时其输出端变为低电平。用跳线帽短接JP17的2、3脚就可以把声音检测电路的输出接到单片机的INT0(P3.2)端。 SiChuan Engineering Technical College-1959
14-3. 声控的实现 • 声音检测电路原理 • 调节RP1电位器可以调节声音检测电路的灵敏度,环境噪声比较大时,应降低灵敏度,在环境噪声较小时可以提高灵敏度。 SiChuan Engineering Technical College-1959
14-1. 设计范例——声控小车 • 程序设计思路 • 小车原地旋转(顺时针转5秒逆时针转5秒,重复进行) —— 主程序 • 通过声音使小车停止 —— 中断服务程序 SiChuan Engineering Technical College-1959
14-1. 设计范例——声控小车 开始 中断初始化 小车顺时针旋转 延时5秒 小车逆时针旋转 延时5秒 • 主程序流程图 SiChuan Engineering Technical College-1959
14-1. 设计范例——声控小车 • 主程序——中断初始化 在使用中断时,要对所用到的中断进行必要的设置,这一过程称之为中断初始化。 此设计中用到的是外部中断/INT0,其中断初始化工作包含以下内容: • 外部中断触发方式设置; • 设置中断优先级(此设计中由于只开一个中断,故可略去。); • 允许/INT0中断(开中断)。 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中断请求标志位。 SiChuan Engineering Technical College-1959
14-1. 设计范例——声控小车 • 本设计中设置外部中断0为脉冲方式触发: • 方法一:MOV TCON,#01H • 方法二:SETB IT0 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秒 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秒子程序 SiChuan Engineering Technical College-1959
14-1. 设计范例——声控小车 中断入口 小车停止 原地等待 中断返回 • 中断服务程序流程图 SiChuan Engineering Technical College-1959
14-1. 设计范例——声控小车 现场的保护和恢复在这个程序中是必要的吗? • 中断服务程序清单 SER: PUSH ACC ;现场保护 MOV P1,#0FFH ;小车停止运动。 SJMP $ EXIT:POP ACC ;现场恢复 RETI ;中断返回 现场的保护和恢复在这个程序中是必须的吗? SiChuan Engineering Technical College-1959
14-1. 设计范例——声控小车 后退 顺时针转动 逆时针转动 前进 • 课后思考: 如何设计程序对小车实现如下控制: • 初始小车前进 • 通过拍手使小车呈以下几种状态循环 SiChuan Engineering Technical College-1959