




已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 A5 组组 张帆张帆 李添生李添生 洪媚洪媚 简易智能小车简易智能小车 摘要 摘要 本次设计以单片机PIC16F877A作为电动小车控制核心 采用光电传感器检测光源 位置 利用红外线传感器检测黑色引导线 利用接近开关检测薄铁片 采用PWM电路控制 后轮电机的转速和控制前轮电机的转向 同时具备方向指示功能 基于所用接近开关需要 6V以上的电源工作才能稳定 因此增加了升压电路 为硬件的可靠性提供了保证 加之采 用稳定且独特的软件算法 实现了对小车在行进过程中路线的准确控制 关键词 关键词 电动机 单片机 传感器 PWM 2 目录目录 1 系统设计 3 1 1 设计任务 3 1 2 设计要求 3 1 2 1 基本要求 3 1 2 2 发挥部分 4 1 3 实现方案 4 1 3 1 设计思路 4 1 3 2 方案论证与选择 4 2 系统具体设计与实现 7 2 1 路面黑线检测电路的设计与实现 7 2 2 探测金属计算路程电路设计与实现 7 2 3 光源探测电路设计与实现 8 2 4 升压电路的设计与实现 8 3 软件设计 9 3 1 实现的功能 9 3 2 软件开发平台 开发工具 9 3 3 主程序设计 9 3 4 几个重要子程序设计 10 3 4 1 按键程序的设计 10 3 4 2 二进制码转换为压缩 BCD 码的函数设计 11 3 4 5 工作状态设计 11 4 系统调试 12 4 2 调试结果 12 4 3 结论 12 5 附录 12 附录一 参考文献 12 附录二 主要器件清单 13 附录三 相关部分原理图 13 附录四 部分印制 PCB 图 14 附录五 实物图 15 附录六 程序清单 16 3 1 1 系统设计系统设计 1 1 设计任务设计任务 设计并制作一个简易智能电动车 其行驶路线示意图如下 1 2 设计要求设计要求 1 2 1 基本要求基本要求 1 电动车从起跑线出发 车体不得超过起跑线 沿引导线到达 B 点 在 直道区 铺设 的白纸下沿引导线埋有 1 3 块宽度为 15cm 长度不等的薄铁片 电动车检测到薄铁片时需 立即发出声光指示信息 并实时存储 显示在 直道区 检测到的薄铁片数目 2 电动车到达 B 点以后进入 弯道区 沿圆弧引导线到达 C 点 也可脱离圆弧引导线 到达 C 点 C 点下埋有边长为 15cm 的正方形薄铁片 要求电动车到达 C 点检测到薄铁片 后在 C 点处停车 5 秒 停车期间发出断续的声光信息 3 电动车在光源的引导下 通过障碍区进入停车区并到达车库 电动车必须在两个障碍 物之间通过且不得与其接触 4 电动车完成上述任务后应立即停车 但全程行驶时间不能大于 90 秒 行驶时间达到 90 秒时必须立即自动停车 4 1 2 2 发挥部分发挥部分 1 电动车在 直道区 行驶过程中 存储并显示每个薄铁片 中心线 至起跑线间的距离 2 电动车进入停车区域后 能进一步准确驶入车库中 要求电动车的车身完全进入车库 3 停车后 能准确显示电动车全程行驶时间 4 其它 1 3 实现方案实现方案 1 3 1 设计思路设计思路 由系统任务分析 可确定系统硬件组成如图1 3 1所示 主要由黑线检测电路 金属检 测电路 行程测量电路 电机驱动控制电路 智能寻光源电路 显示电路和PIC控制电路等 组成 对各模块的实现 分别有以下不同的方案 1 3 2 方案论证与选择方案论证与选择 1 控制模块的设计方案和选择 方案一 采用 ATMEL 公司的 AT89C51 单片机作为系统的的控制器 89 系列单片机算术 运算功能强 软件编写灵活 自由度大 可用软件编程实现各种算法和逻辑控制 并有功 耗低 体积小 技术成熟和成本低等优点 但 89C51 单片机外围资源少 指令多为双周期 抗干扰能力不强 方案二 采用 PIC16F877A 单片机作为系统控制器 PIC 单片机具有 89C51 单片机的上 述优点 而且内部自带资源丰富 可以大大减少系统的外围扩展电路 系统更加简洁 PIC 单片机抗干扰能力强 系统具有更高的性价比 综上所述 采用方案二 利用 PIC16F877A 作为系统控制器 2 探测金属计算路程模块 金属探测使用接近开关 对于路程的计算我们有以下两种方案 方案一 该方案是在假设小车在直线段是匀速行驶的情况下设想出来的 在小汽车前 后各放一个接近开关J1 J2 相距为L 设前端J1探测到金属片前端的时间是tl J2探测到 PIC16F877A 显示模块 电机驱动控制模块 金属检测模块 寻光源模块 黑线检测模块 行程测量模块 图 1 3 1 系统硬件结构图 5 金属片前端的时间是t2 J1探测到金属片后端的时间是t3 J2探测到金属片后端的时间是 t4 因为小车是匀速行驶 故小车的速度为L t2一t1 铁板中线到起跑线的距离是 fL tl L t3一t1 2 t2一t1 由于小车启动时是加速运动 所以这个方案要根据 调试情况对数据进行修正 方案二 通过霍尔开关当轮子每转一周就产生若干个脉冲 单片机记下脉冲数和时间 再用实验的方法测出轮子的周长 就可以算出小车的平均速度 进而算出铁片中线到起点 的距离 霍尔开关的电路简单 安装也很方便 只需将小磁铁均匀地贴在轮子上即可 但 是由于小磁铁放置太多彼此之间会互相干扰 所以小磁铁的放置数量是有限的 只能l一3片 同时由于小磁铁之间是互斥的 所以很难实现精确均匀分布 因此使用霍尔开关的精度比 较低 综合以上方案 最终选择了霍尔开关的方案 为尽量减小误差轮子上安装3块小磁铁 3 电机驱动模块 因为所给的小车模型中前轮和后轮已经配备有直流电机 并且前后两对车轮分别由两个 电机驱动 后面的电机推动小车前进或后退 前面的电机控制小车的转向 此设备已经可 以满足设计的需要 所以直接采用配备的直流电机 由此考虑的驱动电路如下 方案一 利用继电器驱动具体电路如图1 3 2所示 该电路I O1 I O2为01和10是电机 正反转 为00 11时不转 这样的电路直观 易于实现 不存在禁止状态 但继电器体积 相对较大 对于本次设计因为所布的板要放在小车上要求体积 重量尽量减小 本方案显 然不适合 方案二 利用功率管驱动直流电机正反转 具体电路图如 1 3 3 所示 利用功率管构成 驱动电路比起方案一来说 体积 重量都会相对较小 较轻 图 1 3 3 a 电路中电机转 动方向由 I O1 和 I O2 的电平决定 当 I O1 和 I O2 为 00 时 四个功率管都截止 电机不 转 当 I O1 和 I O2 为 01 和 10 时是电机的正反转 I O1 和 I O2 为 11 时 四个功率管都 导通 电流很大 会损坏功率 为禁止状态 这个电路的缺点一个驱动电路需要 2 个 PWM 2 个驱动电路就需要 4 个 而 PIC16F877A 最多只能提供两个 PWM 所以考虑到 图 1 3 3 b 当 I O1 和 I O2 为 00 11 时电机均不转动 当 I O1 和 I O2 为 01 和 10 时是 电机的正反转 这样的话要控制电机的正反转只需在一个 I O 口加 PWM 信号 另一个端 口只需加高低电平 就可以直接控制电机的正反转 这样的话 PIC 单片机就可以用仅有的 2 个 PWM 来控制驱动电路 综上所述选择方案二 1 3 3 b 所示的电路 R3 1k R1 1k R3 10 1W R2 10k R4 10k LED2LED1 T2 9013 T1 9013 D2 4007 D1 4007 C1 104 250V 1 OPEN 4 CLOSE 5 2 MOVE 3 J2 R SPDT 1 OPEN 4 CLOSE 5 2 MOVE 3 J1 12V 12V I O1I O2 V V Port Port 图 1 3 2 继电器驱动电路 6 4 跟踪黑线电路 红外传感器安装在小车车头的下面 其作用是检测小车行进轨迹 当地面上出现黑 白变化的时候 传感器可以通知CPU做相应的控制动作 方案一 采用2个红外传感器 使其并列在一条直线上 当小车发生偏转时 红外传感 器就会探测到信号并由指示灯显示 如左边的传感器指示灯显示就控制小车右转 右边的 传感器指示灯显示就控制小车左转 CPU接收到的信号与控制电机的动作如表1 3 4所示 方案二 采用3个红外传感器并列在一条直线上 中间的1个红外传感器一直在黑线范 围内 外面的2个红外传感器一直在黑线范围外 当红外传感器在黑线范围内 反射接收到 的是高电平 在黑线范围外反射接收到的是低电平 CPU接收到的信号与控制电机的动作如 表1 3 5所示 经过检测小车发现前轮摆动的角度最大约为20度 测试时 如果采用方案一则因为两 个红外传感器距离相对较近使得小车的左右摆动过于频繁 且无导航信号单片机很难判断 小车是否处于黑线上 很容易脱离圆轨迹 因此我们采用方案二 两端的传感器相对较宽 中间传感器是用来传达前轮是否需要摆动 这样的设计使得小车有较大的空间进行摆动 以此实现二分之一圆的寻迹前进 5 光源探测模块的选择 在车顶部安放 4 个光敏电阻 其中 3 个是并排放着 方向是朝着正前方 用来 检测光源的方向 另外一个放车头偏后位 置 方向略微朝上 用来让小车进入车库 R5 5k1 R3 5k1 T4 TIP122 T3 TIP122 T1 TIP127 T2 TIP127 12 43 PH2 TLP521 12 43 PH1 TLP521 C38 224 LED1 LED2 R6 5k1 R8 100 V R4 5k1 R2 10k R1 100 V V 5V 5V R7 10k I O2I O1 R1 5k1 R4 5k1 T4 TIP122 T3 TIP122 T1 TIP127 T2 TIP127 12 43 PH2TLP521 12 43 PH1 TLP521 C2 224 LED1 LED2 R2100 R3 100 I O1 I O2 V 图 1 3 3 a 功率管驱动电路图 1 3 3 b 功率管驱动电路 表 1 3 4 传感器接收控制状态表 传感器接收信号 的状态前电机后电机 左传感 器 右传感 器 00不偏正转 01右拐正转 10左拐正转 11不偏正转 表 1 3 5 传感器接收控制状态表 左传 感器 中传 感器 右传 感器 前电 机 后电 机 010不偏正转 100左拐正转 001右拐正转 111不偏正转 000不偏正转 110不偏正转 011不偏正转 车头 光敏电阻 图 1 3 6 热敏电阻安装图 7 时检测到上方的光线及时停车 大概安装图如 1 3 6 所示 由于光敏电阻的阻值随光强而 变化 则比较器同相输入端的电压随之变化 接收到光的一路比较器输出高电平送出信号 给单片机进行处理 这样可使小车检测到光源的方向进而调整转向 每一个光敏电阻用热 缩管套住 仅当车头正对光源时光线才能照到光敏电阻 才能检测到光源 这样的排列能 够保证小车准确地判断出与前面光源的相对位置 保证小车在无障碍区域行驶直至顺利进 库 6 按键显示模块 由于本设计只需显示一些简单是数据 如每个薄铁片 中心线 至起跑线间的距离 所以采用 LED 数码管动态显示 为减少 I O 口 键盘则采用 4 3 矩阵式键盘 2 2 系统具体设计与实现系统具体设计与实现 2 1 路面黑线检测电路的设计与实现路面黑线检测电路的设计与实现 红外传感器安装在小车车头的下面 用于检测黑线以判断小车的行迹是否偏移 安装 时 要求两边传感器之间的距离不能太宽或太窄 中间传感器距两边传感器的距离要略大 于黑线宽度 使小车有较大宽度进行拐弯 同时也能及时的检测到黑线进行相应的动作 假设测试给出的黑线宽度是2 cm 为使检测灵敏和安装方便 我们把红外传感器安装在距 黑线6mm 12mm的车头位置 并设定两两传感器之间的宽度为2 3cm 如图2 1 1所示 将三 个传感器 图2 1 2所示的红外传感器检测电路 的输出端和单片机I O口相接进行通讯 实 现寻线控制功能 如图2 1 2所示的红外传感器检测电路 因为红外发射管的工作电流为15mA 工作电压 为1 7V左右 通过计算可取R1的阻值为330 左右 R1起到限流作用 电位器VR取5K R3取 1K 使参考电压范围为1 6VCC VCC 我们可根据电路的实际工作情况适当调节电位器的抽 头开关 使当传感器检测到黑线即接收管截止时输出为高电平 而当传感器检测到白纸即 接收管导通时输出为低电平 图 2 1 2 红外检测电路 10 9 8 U1C LM324 330 R1 100K R2 1K R3 5K VR 12 43 34 5 RC5 图 2 1 1 传感器安装图 传感器 车轮 路面黑线 8 2 2 探测金属计算路程电路设计与实现探测金属计算路程电路设计与实现 为了探测金属片 我们在小车的中心点处固定金 属接近开关 型号为LJM12 5N1 其检测距离为 5mm 15 当输出为高电平 1 时表明无金属 当 输出为低电平 0 时表明有金属 所以当小车经过 铁片会分别给单片机一个下降沿和一个上升沿脉冲 单片机记录下两个时间tl和t2 在车轮上均匀安装3 个磁片 将霍尔集成片安装在固定轴上 小车每转一 圈 产生3个负脉冲 通过计算脉冲数目 求得小车 走过的距离 这样的话我们就可以利用这两个条件由 单片机算出每个薄铁片 中心线 至起跑线间的距离 由霍尔集成片构成的电路如图2 2 1所示 霍尔元件通过判断有无磁片而产生脉冲的高低来 控制T1的关断 从而输出时间相等 幅度将近为5V的脉冲信号给单片机实现路程的计算 2 3 光源探测电路设计与实现光源探测电路设计与实现 利用光敏电阻R设计如图2 3 1所示的电路 利用运放LM324构成电压比较器 R3 R4的 取值均为10K 则有1 2 VCC的参考电压接到 运放的反相输入端 调节电位器抽头位置 可改变同相输入端的电位 利用光敏电阻的 特性 在光照的情况下 阻值较小 无光照 的情况下 光敏电阻的阻值变大 所以在此 两种情形下 运放的同相输入的电位不同 在光照的情形下 同相输入端的电位小于反 相输入端的电位 此时运放输出低电平 无 光照的情形下 同相输入端的电位大于反相 输入端的电位 此时运放输出高电平 利用 此信号可判断电路是否有接收到光照 单片 机可利用此信号进行判断此时小车是否接收 到光照 从而可控制小车的行进路线 2 4 升压电路的设计与实现升压电路的设计与实现 于接近开关需要 6V 以上的电源工作才 能稳定 我们设计了如图 2 4 1 电路进行升 压 它是由 555 芯片和 R1 R2 C1 构成 的自激振荡电路 根据需要取 R1 为 10K R2 取 10 K 则振荡周期约为 0 7 R1 2R2 C1 21us 频率约为 47 6kHZ 555 芯片的 3 脚输出 47 6kHZ 的 T1 9012 R1 2 2K R2 10K R3 2 2K HALL 5V 1 2 I O 图 2 2 1 霍尔元件测路程电路 R4 10K R3 10K R5 4 7K RW1 100K OUT VCC 3 2 1 411 U1A LM324 VCC R 图 2 3 1 光源探测 图 2 4 1 由 555 构成的升压电路 TRIG 2 OUT 3 4 CVOLT 5 THOLD 6 DISCHG 7 8 1 RESETVCC GND U 555 R1 10K R2 10K RL D1 4148 D2 4148 C1 102 C2 103 C3 47uF C4 47uF 5V 9 振荡信号 在 C4 正端可获得约 9V 的正压电压 3 3 软件设计软件设计 系统采用 Microchip 为 PIC 系列单片机配备的功能强大的软件集成开发环境 MPLAB MPLAB 能使微机系统上对 PIC 系列单片机进行程序创建 录入 编辑 以及汇编 甚至还能实现程序的模拟运行和动态调试之类的虚拟实战练习 并且调试的方式可以采用 连续运行 单行运行 自行单步运行 设置断点运行等运行方式 MPLAB ICD 是 Microchip 公司针对其 PIC 系列单片机所研制的学习和开发工具套件 可以 用于实验阶段的评估和辅助调试 它是一个编程器 又是一个实时在线调试器 3 1 实现的功能实现的功能 1 校正汽车行驶方向 2 检测金属 3 寻找光源 4 汽车速度控制 产生PWM信号 3 2 软件开发平台 开发工具软件开发平台 开发工具 本系统采用的开发平台是 PIC16F877 开发工具为 MPLAB ICD2 3 3 主程序设计主程序设计 主程序设计采用 散转的方法 根据状 态值跳到相应的工作 模块 这样编程较为 简单 思路清晰 采 用定时器 0 定时 2 5mS 做为基准时间 每 5mS 对所有按键进 行扫描 以及对特殊 寄存器等做处理 利用 3 比 2 表决进行 散转可实现无扰动重 入 抗干扰能力更强 所有控制量 开关量 和模拟量 集中处理 图 3 3 1 主程序流程 图 10 图 3 4 1 检测状态流程图 提高处理效率 具体流程如图 3 3 1 3 4 几个重要子程序设计几个重要子程序设计 3 4 1 按键程序的设计按键程序的设计 按键子程序中包括按键扫描 按键去抖动 按键的键后处理 1 按键扫描 用三行四列 分别对三行进行按键扫描并将各个按键的扫描值存放在不 同的寄存器里面 2 采用按键的数字滤波算法来去除抖动 每个按键分配一个 RAM 单元作为电容电压的 存储单元 对每一次检测的按键逻辑值进行量化 量化如下 有键为 10H 无键为 0 将上 次键检测的电容电压值的 7 倍与本次键检测逻辑值之和除 8 作为本次键检测的电容电压值 本次电容电压值与给定常数 通常可设为十六进制数 0CH 比较 结果大于此常数值时本 次按键有效 输出本次键检测值 否则 本次按键无效 键值输出为 0 3 键后处理采用键前沿 是键前沿的话将相应的位置 1 并将本次的键值替代上次的键 值以便下次的比较 本次设计用到的所有按键调整如下所示 图 3 4 2 待机状态流程图 图 3 4 3 调整状态流程图 11 3 4 2 二进制码转换为压缩二进制码转换为压缩 BCD 码的函数设计码的函数设计 设 16 位二进制数为 其中 则该数代表的值 0112131415 aaaaaa 0 131415 aaa 为X 01 13 13 14 14 15 15 2222aaaaaX 01131415 2222aaaaaX 记 则 150 aY 1401 2aYY 1312 2aYY 01415 2aYY XY 15 采用迭代法进行 16 次计算可得到 若在每次迭代计算的结果为 BCD 格式 则迭代的 15 Y 最后结果也为 BCD 格式 而要保证下一次迭代的结果为 BCD 格式 可对本次迭代结果进 行如下调整 若本次迭代结果的每位 BCD 码小于 5 下次迭代时乘 2 后再加 1 或 0 不超过 9 时 码不必调整 若本次迭代结果的每位 BCD 码大于 5 下次迭代时乘 2 后再加 1 或 0 不超过 10 时 则该码必须加 3 相当于在下次迭代时加 6 当然最后一次迭代不进行 码调整 3 4 5 工作状态设计工作状态设计 硬件配备有 3 个红外传感器用于实现小车沿黑线的寻迹前进 具体工作状态见表 1 3 5 小车在 C 点之后 已脱离黑色引导线 要完成小车从 C 点到车库的行驶 我们让小车 从 C 点开始走圆弧 然后结合 不同部位光敏电阻的检测结果 实现一边前进一边调整小车前 进方向 具体流程图 如 3 4 4 所示 图 3 4 4 工作状态流程图 12 4 4 系统调试系统调试 4 1 检测仪器检测仪器 1 TDS1002 双综示波器 2 秒表 4 2 调试结果调试结果 经过多次调试我们选择多次测试下较为合理 PWM 前轮 PWM 为 256 后轮 PWM 为 160 进行检测 检测结果如下表所示 因为霍尔元件探测路程模块受到前轮的影响 由于 器件原因没有按预期的双电源供电进行修正 所以本次测试忽略路程的检测 次数脱离黑线轨迹否 C 点停 5 秒否 进入车库否 总时间 1否是是71 2否是是66 3否是是77 4 3 结论结论 本次设计有用到霍尔开关检测路程 当小车只有后轮行走时路程的检测是正确的 但 前轮有动作时路程的检测就出现不正常 主要是因为只用一个电源供电 前轮的动作影响 到霍尔元件的工作电流 从而影响到霍尔元件对路程的检测 解决方法是用双电源供电 因为器件问题这次我们没有进行修正 从这个汽车自动控制赛题中也可以看出 要对行驶 的汽车实施控制不是一个简单的电子控制问题 它涉及到光学 力学和机械学等领域 并 与单片机相结合 从而使控制效果优化 13 5 5 附录附录 附录一附录一 参考文献参考文献 1 杨素行 模拟电子技术基础简明教程 第二版 M 北京 高等教育出版社 1998 年 2 张华林 周小方 电子设计竞赛实训教程 M 北京航空航天大学出版社 2007 年 3 李荣正 刘启中 陈学军 PIC 单片机原理及应用 第 2 版 北京航空航天大学 出版社 2005 附录二附录二 主要器件清单主要器件清单 器件名称器件类型数量器件名称器件类型数量 功率管TIP1274光耦器件TLP5214 功率管TIP1224霍尔元件A44E1 单片机PIC16F877A1光敏电阻5 集成片5551集成片LM3242 红外对射RPR2203数码管8 附录三附录三 相关部分原理图相关部分原理图 图 1 电机驱动电路 R5 5k1 R3 5k1 T4 TIP122 T3 TIP122 T1 TIP127 T2 TIP127 12 43 PH2 TLP521 12 43 PH1 TLP521 C38 224 LED1 LED2 R6 5k1 R8 100 V R4 5k1 R2 10k R1 100 V V 5V 5V R7 10k RC0RC1 T1 9012 R1 2 2K R2 10K R3 2 2K HALL 5V 1 2 I O 图 2 霍尔检测电路 R4 10K R3 10K R5 4 7K RW1 100K OUT VCC 3 2 1 411 U1A LM324 图 3 光敏检测电路 12 13 14 U1D LM324 330 R1 100K R2 1K R3 5K VR 12 43 34 5 RC6 图 4 红外检测电路 14 附录四附录四 部分印制部分印制 PCB 图图 TRIG 2 OUT 3 4 CVOLT 5 THOLD 6 DISCHG 7 8 1 RESETVCC GND U 555 R1 10K R2 10K RL D1 4148 D2 4148 C1 102 C2 103 C3 47uF C4 47uF 5V 图 5 升压电路 图 6 电机驱动 升压 霍尔 PCB 图 图 7 红外对射 光敏检测 PCB 图 15 附录五附录五 实物图实物图 16 附录六附录六 程序清单程序清单 系统程序设计 几个重要子程序及主子程序之间的关系 以下为特殊功能存储器的定义 INCLUDE PIC16F877A INC 以下为 I O 口定义 DEFINE DCON1 RC 0 前轮电机控制口 DEFINE CCP2 RC 1 DEFINE CCP1 RC 2 DEFINE DCON2 RC 3 后轮电机控制口 DEFINE CIRCLE0 RC 4 光电检测口 0 DEFINE CIRCLE1 RC 5 光电检测口 1 DEFINE CIRCLE2 RC 6 光电检测口 2 DEFINE FCHECK RC 7 接近开关检测口 RB0 为转速检测口 DEFINE LRES1 RA 1 DEFINE LRES2 RA 2 DEFINE LRES3 RA 3 DEFINE LRES4 RA 4 DEFINE LRES5 RA 5 以下为内部 RAM 的定义 WBUFEQU 20H W 保护单元 含 0A0H 单元 STBUFEQU 21H STATUS 保护单元 FSBUFEQU 22H FSR 保护单元 PCBUFEQU 23H PCLATH 保护单元 R0EQU 24H R0 7 工作寄存器 R1EQU 25H R0 7 循环变量或中间结果 R2EQU 26H R3EQU 27H R4EQU 28H R5EQU 29H R6EQU 2AH R7EQU 2BH DSBUF0EQU 2CH 显示位选 0 7 LED7 LED0 DSBUF1EQU 2DH 显缓 高 低半字 LED7 6 DSBUF2EQU 2EH 显缓 高 低半字 LED5 4 DSBUF3EQU 2FH 显缓 高 低半字 LED3 2 DSBUF4EQU 30H 显缓 高 低半字 LED1 0 DSBUF5EQU 31H 小数点位 DEFINE DOT7 DSBUF5 7 LED7 小数点位 DEFINE DOT6 DSBUF5 6 LED6 小数点位 DEFINE DOT5 DSBUF5 5 LED5 小数点位 DEFINE DOT4 DSBUF5 4 LED4 小数点位 DEFINE DOT3 DSBUF5 3 LED3 小数点位 DEFINE DOT2 DSBUF5 2 LED2 小数点位 DEFINE DOT1 DSBUF5 1 LED1 小数点位 DEFINE DOT0 DSBUF5 0 LED0 小数点位 DSFLEQU 32H 显示位闪烁控制 DEFINE FLON DSFL 3 闪烁总控位 1 闪 KEY1EQU 33H 键值 1 触发型 KEY2EQU 34H 键值 2 触发型 DEFINE K0 KEY1 0 DEFINE K1 KEY1 1 DEFINE K2 KEY1 2 DEFINE K3 KEY1 3 DEFINE K4 KEY1 4 DEFINE K5 KEY1 5 DEFINE K6 KEY1 6 DEFINE K7 KEY1 7 DEFINE K8 KEY2 0 DEFINE K9 KEY2 1 DEFINE K10 KEY2 2 DEFINE K11 KEY2 3 LASTK1EQU 35H 旧键值 1 控制型 LASTK2EQU 36H 旧键值 2 控制型 DEFINE LK0 LASTK1 0 DEFINE LK1 LASTK1 1 DEFINE LK2 LASTK1 2 DEFINE LK3 LASTK1 3 DEFINE LK4 LASTK1 4 DEFINE LK5 LASTK1 5 DEFINE LK6 LASTK1 6 DEFINE LK7 LASTK1 7 DEFINE LK8 LASTK2 0 DEFINE LK9 LASTK2 1 DEFINE LK10 LASTK2 2 DEFINE LK11 LASTK2 3 KCAPEQU 37H 键值滤波单元 18 STA EQU 4DH 工作状态寄存器 STA1EQU 4EH STA2EQU 4FH R8EQU 47H R9 EQU 48H IR0 EQU 49H IR1 EQU 4AH IR2 EQU 4BH IR7 EQU 4CH PWM1 EQU 50H PWM2 EQU 51H DJ2CON EQU 52H DEFINE TURN 52H 0 前轮方向改变标志 DEFINE TURN0N 52H 1 工作模式下小车 启动标志 DEFINE LEND 52H 2 DEFINE TURNON 52H 1 DEFINE OUT 52H 3 DEFINE ROUND 52H 4 COUNT EQU 53H 走直线计程寄存 器 WSTA EQU 54H 工作模式状态积 存器 CNT EQU 55H CNT1 EQU 56H CNT2 EQU 57H CNT3 EQU 58H TIMCE EQU 59H DISTANCE EQU 5AH CNT4 EQU 5BH CNT5 EQU 5CH 宏定义 W STATUS FSR PCLATH 进栈 PUSHMACRO MOVWF WBUF SWAPF WBUF 1 SWAPF STATUS W BCF RP0 BCF RP1 MOVWF STBUF SWAPF FSR W MOVWF FSBUF SWAPF PCLATH W MOVWF PCBUF ENDM 宏定义 W STATUS FSR PCLATH 出栈 POP MACRO BCF RP0 BCF RP1 SWAPF PCBUF W MOVWF PCLATH SWAPF FSBUF W MOVWF FSR SWAPF STBUF W MOVWF STATUS SWAPF WBUF W ENDM 宏定义 RAM 体选择 BANK0MACRO BCF RP1 BCF RP0 ENDM BANK1 MACRO BCF RP1 BSF RP0 ENDM BANK2 MACRO BSF RP1 BCF RP0 ENDM BANK3MACRO BSF RP1 BSF RP0 ENDM 主程序入口向量 ORG 0 x000 NOP GOTO MAIN GOTO MAIN GOTO MAIN 19 中断入口向量 INTERRUPT VECTORSORG 0 x004 PUSH 进栈 BANK0 CLRF PCLATH GOTO INTSEV ORG 0 x0020 INCLUDE SUBROUTE INC 中断服务子程序 INTSEV NOP BSF DOT7 BCF INTF INCF TIMCE F MOVLW 03H XORWF TIMCE W BTFSS Z GOTO INTS0 CLRF TIMCE INCF DISTANCE F INTS0POP RETFIE MAIN BANK1 上电复位判断 MOVF PCON W BSF POR BTFSS POR GOTO 2 BANK0 ANDLW 02H BTFSS Z GOTO RSTELSE MOVLW 2CH 上电复位初始化 MOVWF FSR CLRF F0 INCF FSR 1 BTFSS FSR 7 GOTO 3 以上清 RAM2C 7FH CLRF RA MOVLW 0C0H ANDWF RB F MOVLW B 00000011 MOVWF RC CLRF RD CLRF RE 以上 IO 口初始设置 RSTELSE CLRWDT 特殊功能寄存器初始 化 BANK1 MOVLW B 01000011 分频器给 TMR0 MOVWF OPTIONR 16 分频 MOVLW B 00011111 MOVWF TRISA MOVLW B 11000001 MOVWF TRISB MOVLW B 11110000 MOVWF TRISC CLRF TRISD CLRF TRISE MOVLW 06H AN0 7 设为数字口 MOVWF ADCON1 CLRF PIE1 CLRF PIE2 BANK0 CLRF INTCON MOVLW B 10010000 MOVWF INTCON CLRF PIR1 CLRF ADCON0 CLRF T1CON CLRF PCLATH CLRF CCP1CON CLRF CCP2CON CLRF WSTA CLRF ADCON0 BCF DCON1 BCF DCON2 MOVLW B 00000110 A 口全设为 I O 口 MOVWF ADCON1 MOVLW 0FH MOVWF RC 20 MOVLW 64H 定时 2 5mS MOVWF TMR0 BCF T0IF MAIN1 BANK0 BTFSS T0IF GOTO MAIN1 MOVLW 64H MOVWF TMR0 CLRWDT BCF T0IF BTFSC T0IF GOTO 2 以下为重要功能寄存器冗余设置 应视具体应用情况作相应调整 BANK1 MOVLW B 01000011 分频器给 TMR0 MOVWF OPTIONR 16 分频 MOVLW B 00011111 MOVWF TRISA MOVLW B 11000001 MOVWF TRISB MOVLW B 11110000 MOVWF TRISC CLRF TRISE CLRF PIE1 BANK0 MOVLW B 10010000 MOVWF INTCON CLRF PIR1 CLRF T1CON CLRF PCLATH BTFSS DSBUF0 0 GOTO MAIN1 1 CALL SCANLED 显示扫描 GOTO MAIN1 MAIN1 1 CALL SCANKEY 2 5mS 偶次键扫 描 CALL SCANLED 显示扫描 CALL KRCW 键滤波 去抖动 CALL KPREC 键后处理 MAIN2MOVF STA W 状态字 3 比 2 表决 XORWF STA1 W BTFSS Z GOTO MAIN2 1 MOVF STA W MOVWF STA2 GOTO MAIN2 4 MAIN2 1 MOVF STA W XORWF STA2 W BTFSS Z GOTO MAIN2 2 MOVF STA W MOVWF STA1 GOTO MAIN2 4 MAIN2 2 MOVF STA1 W XORWF STA2 W BTFSS Z GOTO MAIN2 3 MOVF STA1 W MOVWF STA GOTO MAIN2 4 MAIN2 3 CLRF STA CLRF STA1 CLRF STA2 MAIN2 4 MOVLW HIGH MAIN3 MOVWF PCLATH MOVF STA W ANDLW 03H ADDLW LOW MAIN3 BTFSC C INCF PCLATH F MOVWF PCL MAIN3GOTO WORK0 GOTO WORK1 GOTO WORK2 GOTO WORK3 WORKMOVWF STA MOVWF STA1 MOVWF STA2 GOTO MAIN1 待机状态 WORK0MOVLW 0AAH 21 MOVWF DSBUF1 MOVWF DSBUF2 MOVWF DSBUF3 MOVWF DSBUF4 BCF TMR2ON CLRF CCP1CON CLRF CCP2CON BCF RC 1 BCF RC 2 BCF DCON1 BCF DCON2 BCF DOT1 CLRF DSFL BTFSC K0 K3 为状态切换键 GOTO WORK0 0 BTFSC K1 GOTO WORK0 1 BTFSC K2 GOTO WORK0 2 MOVLW 00H GOTO WORK WORK0 0MOVLW 08H MOVWF DSFL CLRF DSBUF1 CLRF DSBUF2 CLRF DSBUF3 CLRF DSBUF4 MOVLW 01H GOTO WORK WORK0 1BANK1 MOVLW 0FFH MOVWF PR2 BANK0 MOVLW B 00000100 MOVWF T2CON 16 分频 启动 TMR2 CLRF DSFL MOVLW 0FFH MOVWF CCPR1L MOVLW 02H GOTO WORK WORK0 2BANK1 MOVLW B 01000011 MOVWF OPTIONR BANK0 MOVLW 0AH MOVWF DSBUF1 MOVWF DSBUF2 MOVWF DSBUF3 MOVWF DSBUF4 CLRF DSFL BSF TMR2ON MOVLW 0CH MOVWF CCP1CON 启动 CCP1 的 PWM 功 能 进行直线前进运动 CLRF CCP2CON BCF DCON2 MOVF PWM1 W MOVWF CCPR1L CLRF WSTA 使得小车进入工作模 式后走直线 BCF OUT BSF FCHECK BCF ROUND BANK1 MOVLW B 11100000 设 RC6 RC5 为输入口 MOVWF TRISC CLRF TIMCE CLRF DISTANCE MOVLW D 250 MOVWF CNT4 MOVLW D 5 MOVWF CNT5 MOVLW 03H GOTO WORK PWM 电机调整模块 WORK1 BTFSC K3 GOTO WORK1 3 RRF DSFL W 取出闪烁位的值 ANDLW 03H ADDLW DSBUF1 MOVWF FSR SWAPF INDF W BTFSC DSFL 0 MOVF INDF W ANDLW 0FH BTFSC Z 闪烁位值 0 则清 K1 键 22 BCF K1 XORLW 09H 闪烁位值 9 则清 K0 键 BTFSC Z BCF K0 BTFSS K0 有 K0 键则闪烁位加 1 GOTO WORK1 0 MOVLW 10H BTFSC DSFL 0 MOVLW 01H ADDWF INDF F WORK1 0BTFSS K1 有 K1 键则闪烁位加 1 GOTO WORK1 1 MOVLW 10H BTFSC DSFL 0 MOVLW 01H SUBWF INDF F WORK1 1BTFSS K2 有 K2 键则闪烁位移位 GOTO 6 MOVF DSFL W XORLW 0FH BTFSC Z 赋值完 GOTO WORK1 2 INCF DSFL F MOVLW 01H GOTO WORK WORK1 2 MOVF DSBUF4 W MOVWF R3 MOVF DSBUF3 W MOVWF R4 CALL BCDZH MOVF R5 W MOVWF PWM1 MOVF DSBUF2 W MOVWF R3 MOVF DSBUF1 W MOVWF R4 CALL BCDZH MOVF R5 W MOVWF PWM2 MOVLW 08H MOVWF DSFL MOVLW 01H GOTO WORK WORK1 3MOVLW 00H GOTO WORK 检测模块 WORK2 MOVLW 0A0H MOVWF DSBUF1 MOVWF DSBUF2 MOVWF DSBUF3 MOVWF DSBUF4 BTFSC K0 GOTO WORK2 0 BTFSC K1 GOTO WORK2 1 BTFSC K2 GOTO WORK2 2 按下 K3 键切换 到状态 0 BTFSC K3 GOTO WORK2 3 BTFSC K4 GOTO WORK2 4 MOVLW 02H GOTO WORK 后轮正转前进测试 WORK2 0 MOVLW 0CH MOVWF CCP1CON 启动 CCP1 的 PWM 功 能 CLRF CCP2CON MOVF PWM1 W MOVWF CCPR1L BCF DCON2 MOVLW 02H GOTO WORK 后轮反转后退测试 WORK2 1 MOVLW 0CH MOVWF CCP1CON 启动 CCP1 的 PWM 功 能 CLRF CCP2CON MOVF PWM1 W 高低电平时间交 换 SUBLW 0FFH MOVWF CCPR1L BSF DCON2 MOVLW 02H GOTO WORK 前轮左转测试 23 WORK2 2 MOVLW 0CH MOVWF CCP2CON CLRF CCP1CON BCF DCON2 BCF DCON1 MOVF PWM2 W MOVWF CCPR2L MOVLW 02H GOTO WORK 前轮右转测试 WORK2 4 MOVLW 0CH MOVWF CCP2CON CLRF CCP1CON BSF DCON1 MOVF PWM2 W SUBLW 0FFH MOVWF CCPR2L MOVLW 02H GOTO WORK WORK2 3BCF TMR2ON CLRF CCP1CON CLRF CCP2CON MOVLW 00H GOTO WORK 工作模块 WORK3MOVLW HIGH WORK3 0 MOVWF PCLATH MOVF WSTA W ANDLW 03H ADDLW LOW WORK3 0 BTFSC C INCF PCLATH F MOVWF PCL WORK3 0GOTO WORK3 1 GOTO WORK3 2 GOTO WORK3 3 GOTO WORK3 4 小车走直线 走圆进程 WORK3 1 DECFSZ CNT4 F GOTO 6 MOVLW D 250 MOVWF CNT4 DECFSZ CNT5 F GOTO 2 BSF ROUND 小车走 6 秒后进入弯 道 MOVF DISTANCE W MOVWF R1 MOVLW D 127 MOVWF R0 CALL SMUL MOVF R0 W MOVWF R1 MOVF R2 W MOVWF R0 CALL BCD MOVF R6 W MOVWF DSBUF4 MOVF R5 W MOVWF DSBUF3 BTFSS OUT GOTO 7 DECFSZ CNT1 F GOTO 5 BCF OUT CLRF CCPR2L MOVLW 0FFH MOVWF CCPR2L BCF DCON1 BTFSC K3 GOTO WORK3 12 BTFSC CIRCLE0 GOTO LINE BTFSC CIRCLE1 GOTO LTURN BTFSC CIRCLE2 GOTO RTURN 保持直线运动 GOTO LINE WORK3 12 CLRF CCP1CON CLRF CCP2CON MOVLW 00H GOTO WORK 左转运动 24 LTURN CLRF CCPR1L MOVLW 0CH MOVWF CCP2CON BCF DCON1 BSF OUT MOVLW D 50 MOVWF CNT1 MOVF PWM2 W MOVWF CCPR2L GOTO LINE 右转运动 RTURN CLRF CCPR1L BCF DCON2 MOVLW 0CH MOVWF CCP2CON BSF DCON1 BSF OUT MOVLW D 50 MOVWF CNT1 MOVF PWM2 W SUBLW 0FFH MOVWF CCPR2L 小车到达 C 点停止 5 秒 LINEBTF
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 济南市2025-2026学年八年级下学期语文月考测试试卷
- 高速铁路的运输组织
- 电表行业知识培训课件
- 文库发布:高血压课件
- 高考病句类型课件
- 输电线路迁改工程资金补偿协议
- SHE考试题及答案
- ppe考试试题及答案
- 河南省南阳市方城县2022-2023学年九年级上学期期中化学试题(含答案)
- 电站防汛知识培训内容课件
- 美术介绍教学课件
- 子公司运营规范管理制度
- 2025年福建省福州左海供应链集团有限公司招聘笔试参考题库含答案解析
- 2025届上海市中考语文真题作文题目解析+范文
- 道路绿化修剪合同范本
- T/CSPSTC 75-2021微动探测技术规程
- 素描构图与透视教案
- 体育培训入股协议书
- 信任主题班会课件
- 2025年职工技能大赛考核试题及答案
- 仓库运输管理方案计划
评论
0/150
提交评论