




已阅读5页,还剩56页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 悬挂运动控制系统 悬挂运动控制系统 E E 题 设计报告题 设计报告 摘要 摘要 本悬挂控制系统是一个电机控制系统 控制物体在 80cm 100cm 的范围 内作直线 圆 寻迹等运动 并且在运动时能显示运动物体的坐标 设计采用 AT89S52 单片机作为核心控制器件 采用 57BYG007 4 型步进电机和高细分步进 电机驱动器 SM 60 作为动力装置 采用红外反射式光电传感器实现画板上黑色 线寻迹检测 显示部分用液晶显示模块 LCD1602 实现 关键词 关键词 悬挂控制 单片机 步进电机 红外反射式光电传感器 2 一 设计要求一 设计要求 1 1 任务 任务 设计一电机控制系统 控制物体在倾斜 仰角 100 度 的板上运动 在一白色底板上固定两个滑轮 两只电机 固定在板上 通过穿过滑轮的 吊绳控制一物体在板上运动 运动范围为 80cm 100cm 物体的形状不限 质 量大于 100 克 物体上固定有浅色画笔 以便运动时能在板上画出运动轨迹 板上标有间距为 1cm 的浅色坐标线 不同于画笔颜色 左下角为直角坐标原点 示意图如下 100 2 2 基本要求 基本要求 1 控制系统能够通过键盘或其他方式任意设定坐标点参数 2 控制物体在 80cm 100cm 的范围内作自行设定的运动 运动轨迹长度不小 于 100cm 物体在运动时能够在板上画出运动轨迹 限 300 秒内完成 3 控制物体作圆心可任意设定 直径为 50cm 的圆周运动 限 300 秒内完成 80cm 100cm 15cm15cm 15cm 原点 15cm 3 4 物体从左下角坐标原点出发 在 150 秒内到达设定的一个坐标点 两点间 直线距离不小于 40cm 3 3 发挥部分 发挥部分 1 能够显示物体中画笔所在位置的坐标 2 控制物体沿板上标出的任意曲线运动 见示意图 曲线在测试时现场标 出 线宽 1 5cm 1 8cm 总长度约 50cm 颜色为黑色 曲线的前一部分是连 续的 长约 30cm 后一部分是两段总长约 20cm 的间断线段 间断距离不大于 1cm 沿连续曲线运动限定在 200 秒内完成 沿间断曲线运动限定在 300 秒内 完成 3 其他 4 4 评分标准 评分标准 项目满分 设计与总结报告 方案比较 设计与论证 理论分析 与计算 电路图及有关设计文件 测试方法与仪器 测试数据及测试结果分析 50 基本要求 实际制作完成情况 50 完成第 1 项 10 完成第 2 项中连续线段运动 14 完成第 2 项中断续线段运动 16 发挥部分 其他 10 5 5 说明 说明 1 物体的运动轨迹以画笔画出的痕迹为准 应尽量使物体运动轨迹与预期轨 迹吻合 同时尽量缩短运动时间 2 若在某项测试中运动超过限定的时间 该项目不得分 3 运动轨迹与预期轨迹之间的偏差超过 4cm 时 该项目不得分 4 在基本要求 3 4 和发挥部分 2 中 物体开始运动前 允许手动将物 体定位 开始运动后 不能再人为干预物体运动 5 竞赛结束时 控制系统封存上交赛区组委会 测试用板 板上含空白坐标 纸 测试时自带 4 二 方案论证与选择二 方案论证与选择 1 1 核心控制模块的选择核心控制模块的选择 方案一 FPGA CPLD 方式 即用 FPGA CPLD 完成键盘定义与识别 电机工 作状态选择与切换 液晶电路的驱动与控制等功能 这种方案的优点在于系统 结构紧凑 操作方便 而且可以使用的 I O 口线很多 缺点是调试时需要接很 多接线 过程繁琐 而且使用 CPLD 时 由于其内部没有 ROM 对功能的实现有 所限制 方案二 单片机方式 即由单片机 电机驱动电路及电机等组成系统 使 用单片机也可以完成键盘定义与识别 电机工作状选择与切换等功能 组成的 系统规模较小 有一定灵活性 而且可以使用我们比较熟悉的单片机最小系统 电路板 减少了工作量 该控制方式需要单片机具有较大的程序存储量 所以 可选择存储量为 8K 的 AT89S52 单片机 基于以上分析 拟选用方案二 2 2 电机及其驱动模块的选择电机及其驱动模块的选择 电机驱动模块是本系统的执行机构 用于控制悬挂物体的运动 方案 1 采用普通小型直流电机 普通直流电机由于其自身结构的限制 控制精度很低 无法达到系统要求的指标 这里不予采用 方案 2 采用专用步进电机驱动器及与其配套的步进电机 用这种方案的 控制精度 效率和可靠性都很高 根据精度要求选择方案二 3 3 黑线探测模块黑线探测模块 方案一 采用多路阵列式光敏电阻组成的光电探测器 因为光敏电阻探测 到黑线时 黑线上方的电阻值发生变化 经过电压比较器比较将信号送给单片 机处理 从而控制物体做相应的动作 但由于光敏电阻对环境光的识别 容易 受到外界环境光的影响 方案二 采用红外反射式探测 即用已调的红外线垂直射到板面 经反射 后转换为电信号送入单片机处理 由于使用的是红外线 不受外界自然光的影 响 循迹效果好 基于上面的讨论 选用了抗干扰能力强的方案二 4 4 显示方案的选择显示方案的选择 5 方案一 采用 LED 数码管显示器 LED 数码管亮度高 醒目 但是其电路 复杂 显示信息量较小 且动态扫描需要占用大量单片机时间 无法做到实时 显示 方案二 采用汉字 LCD 液晶显示器 LCD 有明显的优点 微功耗 尺寸小 超薄轻巧 显示信息量大 字迹清晰 美观 视觉舒适 本设计中采用 1602 字符型 LCM 1602 字符型 LCM 克服了 LED 数码管的缺点 具 有显示容量大 占用单片机口线少 节省单片机时间 功耗低等优点 完全符 合本系统要求 5 5 位置传感模块位置传感模块 位置传感模块用于实现 显示画笔位置 的功能 对于这个模块可以有硬件和 软件两类解决方案 方案 1 在物体上安装水平和垂直方向的两只激光笔 在板边缘每条坐标线 旁边安装一光电传感器 物体坐标所在处的传感器接收到激光笔 即可确定物 体位置 可见本方案共需要 180 个光电传感器 造成此方案几乎不可实现 方案 2 采用软件的方法确定物体位置 单片机控制物体从某个已知的坐标 位置出发 并且记录步进电机的每一次移动情况 就可以通过一定的算法计算 出物体的位置 这种方案没有位置传感器 精度较低 但是系统简单 避免了 硬件方案过于复杂的缺点 本设计使用方案 2 6 6 键盘模块键盘模块 本模块采用即插型按键 接在最小系统的 P2 0 P2 7 采用了 4 4 的 16 点 阵键盘 可以键入 1 9 的数字 即可以输入点的坐标值 X Y 以及清除 确 定 等功能按键 三 三 系统具体设计实现系统具体设计实现 1 1 硬件电路的设计 硬件电路的设计 1 1 系统的总体设计方案 系统的总体设计方案 如图 3 1 所示采用 AT89S52 单片机作为运动物体的控制中心 进行数学计 算 对光电传感器送来的信号进行处理来控制运动物体的运行方向 计算运行 物体的坐标位置 LCD 数据显示 键盘控制等 6 图 3 1 系统方框图 2 2 黑线检测模块电路 黑线检测模块电路 黑线检测模块电路图 3 2 所示 当红外线反射式光电传感器 ST178 位于黑 线之上时 光电开关输出高电平 反之 输出低电平 光电传感器输出电平后 接反相器 74LS04 以稳定电平和增大驱动能力 本设计采用 8 个红外传感器实 现对黑线的检测 通过并口转串口芯片 74LS165 将数据串行传送到单片机 图 3 2 黑线检测模块电路 7 3 3 键盘电路 键盘电路 本设计采用 4x4 矩阵键盘实现数字的输入和功能的选择 键盘接到 AT89S52 单片机的 P2 口 通过单片机对键盘的行列扫描实现按键的识别 键盘电路如图 3 3 所示 图 3 3 4x4 键盘电路 对应的按键码如下 789 456 123 清除 0 确认 8 4 4 单片机电源电路 单片机电源电路 单片机控制电路 红外传感器模块电路和液晶显示模块均采用 5V 供电 采 用集成稳压芯片 7805 来实现 电路图如图 3 4 所示 图 3 4 单片机电源电路 5 5 步进电机驱动电路 步进电机驱动电路 本设计采用 57BYG007 4 型步进电机和专用高细分步进电机驱动器 SM 60 作 为动力装置 57BYG007 4 型步进电机为四相混合式步进电机 由于实验室现有 电机驱动器为两相的 固步进电机作两相使用 步距脚为 1 8 度 通过步进电 机驱动器 SM 60 细分实现步距脚 0 9 度 电机驱动器 SM 60 接口如下 GND 端为外接直流电源 直流电压为 12v A A 端为电机 A 相 B B 端为电机 B 相 COM 端为光电隔离电源公共端 接单片机供电电源为 5V CP 端为脉冲信号 下降沿有效 DIR 端为方向控制信号 电平高低决定电机运行方向 FREE 端为驱动器使能 高电平或悬空电机可运行 低电平驱动器无电流输 出 电机处于自由状态 2 2 软件及算法设计 软件及算法设计 1 1 物体位置的计算 物体位置的计算 9 图 3 5 物体位置示意图 坐标点参数的计算 将画笔所在的位置设定为整个物体的位置 如图 3 5 设定物体位置的初值坐标为 X Y L1 L2 设电机 A 的步进为 a cm 电机 B 的步进为 b cm 物体高度为 h cm 如图 8 为物体在画板某一位置 则有 解得 X 轴点位置和 h 为 则 Y 轴点位置 10 Y 115 h 控制物体从一点到另一点的实现就是当 X Y 已知条件 求电机的步进过程 由图 8 解得 解得 cm cm 由此 利用软件实现以上算法来分别控制两个步进电机的步进 a b 这样 就可以向控制系统输入起点坐标和终点坐标让物体在画板置任意行走 2 2 直线算法 直线算法 目前画直线的算法也算是有很多 比如 逐点比较直线插补 脉冲增量插 补和数据采集插补 本设计根据实际所学知识 选择了逐点比较直线插补法 具 体如下 逐点比较法的基本原理是 在刀具按要求轨迹运动加工零件轮廓的过程中 不断比较刀具与被加工零件轮廓之间的相对位置 并根据比较结果决定下一步 的进给方向 使刀具向减小偏差的方向进给 图 3 6 第一象限直线 如图 3 6 所示 设直线的起点为坐标原点 终点坐标为 A 点 m e x e y 为加工点 动点 定义偏差公式为 m x m y mmeme Fy xx y 11 若 0 表明点 m 在 OA 直线段上 若 0 表明点 m 在 OA 直线段上方 m F m F 即点 m 处 若 0 表明点 m 在 OA 直线段下方 即点 m 处 由此可得第 m F 一象限直线逐点比较法插补的原理是 从直线的起点出发 当0 时 沿 x m F 轴方向走一步 当 0 时 沿 y 轴方向走一步 当两方向所走的步数与终点 m F 坐标 相等时 发出终点到信号 停止插补 e x e y 可以将上面所定义的偏差公式进一步简化 推导出偏差的递推公式 当0 时 沿 x 轴方向进给一步 m F 111 1 mmememememe Fyxxyy xxyFy 1 当 0 时 沿 y 轴方向进给一步 m F 111 1 mmememememe Fyxxyyxx yFx 2 式 1 和式 2 是简化后偏差的计算公式 在公式中只有一次加法或减 法运算 新加工点的偏差都可由前一点偏差和终点坐标相加或相减得到 本体设计中采用以上原理 不过对于非原点开始的直线 采用起点坐标归 零思想 结果也证明了改思路的可行性 3 3 画圆算法 画圆算法 画圆算法采用圆弧插补法 圆弧插补法也是在绘图系统中常用的一种方法 它和直线插补法原理相同 也是逐点比较算法 若 F 0 表明加工点在圆弧上 F 0 表明加工点在圆弧外 F 0 表明加工点在圆弧内 若 F 0 为逼近圆弧 下一步向 X 轴进给一步 并计算出新的偏差值 F 0 为逼近圆弧 下一步向 Y 轴进给一步 并计算出新的偏差值 各象限插补公式如下 12 在实际操作中 可以以圆心为假设的坐标原点 再根据上面的原理设计算 法 4 4 循迹黑线的探测及循迹算法 循迹黑线的探测及循迹算法 在以画笔为中心 半径 20 毫米的圆周上安装了 8 个反射式红外对管作为轨 迹探测传感器 安装方式如图 3 所示 0 7 6 5 4 3 2 1 1 1 图 3 7 轨迹探测传感器安装方式 图 3 8 方向调整示意图 13 根据图 3 7 安装方式及安装半径 只要系统的采样频率足够高 轨迹是无 法脱离探测范围的 但由于使用了 8 个传感器 不同传感器信号间的组合太多 使用一般穷举办法难以实现循迹控制 因此自己设计了一套循迹算法 如图 3 8 定义了物体循迹时运动的 8 个方向 图中黑箭头 1 号方向上 表示物体当前的循迹方向 循迹时 使用变量 Direct 表示当前物体运动方向 物体每次运动时先按当前方向向前步进一段固定的距离 然后检测采样传感器 信号并调整 Direct 再沿新的 Direct 方向步进 由于所给的曲线是连续的 所以每次调整 Direct 只能是 1 或 1 如图 3 8 所示 Direct 在需向左偏时 则 Direct 加 1 需向右偏则减 1 继续前进则保持不变 由于只有 8 个运动方 向 所以对 Direct 的运算需在模 8 的范围内 0 7 进行 现在考虑如何决定左偏或右偏的问题 使用上述调整办法只需要根据 Direct 的前后方向及左右方向的四个信号对 Direct 调整即可 如图 4 中仅需 根据 1 3 5 7 方向的信号对 Direct 调整 由于每个方向上 1 和保持不变 的传感器信号是一定的 故对 8 个方向上的调整策略用一个静态数组的形式保 存起来 调整时直接查表即可 方便编程 这种循迹算法大大地减少了循迹运 动的调试时间 为整个作品成功的完成打下了基础 当每次步进的距离较小时 若在 Direct 方向的前 左 右三处的传感器同 时发现是白纸 则表明传感器探测到了曲线的间断部分或尽头 此时应根据前 几次 2 3 次 Direct 的平均值作为探索方向 再向前步进 2 3 步 保证循 迹的正确停止 在取平均值时 需对 7 0 和 0 7 的转变作特殊处理 否则可 能出错 实践证明 按照上面的办法循迹迅速稳定 并且不会受交叉线的影响 由 于轨迹线有一定宽度 实际的轨迹不可能转折得十分迅速 当步进距离较小时 甚至可以完成锐角的循迹 本系统使用的步进距离是 5 毫米 效果很好 14 5 5 系统主程序流程框图系统主程序流程框图 上电 初始化液晶显 示 等待按键 选择所需的功能 1 直线 2 正方形 3 圆 4 循迹 输入 起 点 终点 坐 标 按照 事先 设定 运 行 设定 圆心 手动 到 点 手动 到循 迹起 始 点 执 行 部 件 返回显示程序 按键确认 进入对应程序 图 3 9 系统主程序流程框图 15 四 系统测试四 系统测试 1 1 测试仪器 测试仪器 DT9205A 型数字万用表 秒表 卷尺 12V 直流稳压电源 2 2 测量结果 测量结果 1 1 直线测试直线测试 次数设定起点坐标设定终点坐 标 实际坐标误差用时 1 0 0 50 50 50 2 51 3 2cm75s 2 0 0 80 99 80 1 100 5 1 5cm134s 2 2 画圆测试画圆测试 次数圆心坐标半径最大误差用时 1 25 25 251cm130s 2 3 3 循迹测试循迹测试 连续线段线长间断线段长度 60cm46cm 用时 28 1s24 3s 3 3 误差分析及改进措施 误差分析及改进措施 1 坐标转换的误差 X Y 坐标向 L R 坐标转换时使用几何分析的方法 但为了处理方便 将悬挂滑轮视为一点 没有考虑其半径 本作品以减小其半 径的办法降低误差 同时 进行坐标变换时 单片机在计算精度上也会引进误 16 差 由于使用浮点运算 该误差不大 2 笔尖和悬挂点不在同一平面引入误差 应尽量使三点处于与地板平行 的平面以减小误差 3 步进电机的步进脉冲个数和步进线距离之间的折算误差 作品使用了 直接测量一段距离和步进个数再求平均值的办法降低误差 4 牵引线引入的误差 包括拉伸误差和由松弛产生的误差 改进措施是 使用变形系数小的牵引线和增加悬挂物体的重量 5 绕线产生的误差 解决办法是根据力学分析采用机械的办法保证绕线 不重叠 并且使用半径小的牵引线使绕线在横向延伸的距离减少 从而减少误 差 6 读数误差 初始定位时需提供物体坐标 测量结果需人为读数 这会 引入误差 五 结论五 结论 本设计以 AT89S52 单片机为核心 利用软件编程 实现了定点直线运动 圆形轨迹运动 间断黑线循迹以及坐标的实时显示 测试结果表明 本设计很 好地完成了题目基本部分和发挥部分的全部要求 速度快 精度高 整个系统 从软件到硬件都体现优良简约的风格 主要有以下几个优点 1 采用步进电机及专用细分驱动器 悬绳收放控制较精确 2 程序算法优良 易于误差处理和提高精确度 3 LCD 液晶显示 界面友好 六 参考文献六 参考文献 1 王琼 单片机原理及应用 合肥工业大学出版社 2 求是科技 单片机典型模块设计实例导航 人民邮电出版社 3 高吉祥 全国大学生电子设计竞赛培训教程 数字系统与自动控制系统设 计 电子工业出版社 17 附录一附录一 电路原理图电路原理图 1 控制部分电路图 2 循迹模块电路图 18 附录二附录二 源代码源代码 include include include include define uchar unsigned char 无符号字符类型定义 define uint unsigned int 无符号整数类型定义 步进电机驱动器引脚连接定义 sbit Motor Left CP P1 0 左步进电机脉冲 sbit Motor Left DIR P1 1 左步进电机方向控制端 sbit Motor Right CP P1 2 右步进电机脉冲 sbit Motor Right DIR P1 3 右步进电机方向控制端 sbit Motor FREE P1 4 电机使能端 高电平有效 低电平是电机 处于自由状态 19 sbit SHLD P1 5 sbit S clk P1 6 sbit S data P1 7 sbit jiesu P3 6 define pai 3 圆周率 define a 15 80cm x 100cm 场地到两电机连线的垂直距离 厘 米 define b 15 80cm x 100cm 场地到边线 顶端滑轮和电机的连 线 的垂直距离 厘米 define r 0 8276 滑轮半径 厘米 define stepz 0 0122 左步进电机每步弧长 厘米 define stepy 0 0122 右进步点击每步弧长 厘米 define step 0 0125 步进电机每步弧长 厘米 define radius 25 圆周半径长度 define Motor FREE 1 LCD1602 液晶模块引脚连接定义 define LCD Data P0 1602 的 8 位数据线连接到 P0 口 sbit RS P3 5 1602 的数据 命令选择端 RS 连接到 P1 0 sbit RW P3 4 1602 的读 写选择端连接到 P1 1 sbit EN P3 3 1602 的使能信号引脚连接到 P1 2 uchar code kaiji0 16 WELCOME 20 uchar code kaiji1 16 LOADDOWNING uchar code table0 16 1 Line 2 Rectan uchar code table1 16 3 Circu 4 Follow uchar code table3 16 Draw a Line uchar code table4 16 Draw Circularity uchar code table5 16 Follow the Line uchar code table6 16 uchar code table7 16 r cm uchar code table8 16 cm cm uchar code table9 16 ENTER to Begin uchar code table10 16 Executing x uchar code table11 16 Rectan perform uchar code table12 16 25 25 50 25 uchar code table13 16 50 50 25 50 uchar code table14 16 have completed uchar code wrong 16 Wrong Coordinate uchar code agian 16 Input Agian uchar code number 10 int x0 y0 x1 y1 函数声明 void Delay 1ms int time 延时 1ms time 21 void LCD1602 Busy Check void LCD1602 忙检查函数 void Write LCD1602 uchar udata bit command LCD1602 写数据和写指 令函数 void Write Byte Locate uchar x uchar y uchar udata 把数据显示在 LCD1602 的指定位置 void Init LCD1602 LCD1602 初始化函数 uchar Keyboard Scan void 键盘扫描函数 返回键盘扫描码 uchar Scan Code Transform uchar scancode 键码识别函数 void Motot ld int void Motor Left Step bit Dir 左电机转动一步 Dir 0 时反转 顺时针 即 松开线 Dir 1 时正转 逆时针 即收紧线 void Motor Right Step bit Dir 右电机转动一步 Dir 0 时反转 顺时针 即 收紧线 Dir 1 时正转 逆时针 即松开线 void Draw Circular int x int y 画圆函数 void currentdisp int line int x int y 当前显示 void linedisp int int int int int 当前直线点显示 void display uchar table 16 bit line 提示显示 void line int int int int 画直线函数 void Draw line void buchang float float float float 确定左右电机移动的步数 void Returndata 读取对光二极管的值 void follow 循迹函数 void zouxiang int 循迹电机驱动函数 延时函数 延时时间 1ms time 晶振 12MHz 22 void Delay 1ms int time uchar i j do for i 0 i 15 i for j 0 j 20 j while time 0 LCD1602 液晶操作函数部分 LCD1602 液晶检查忙函数 void LCD1602 Busy Check void EN 0 RW 1 RS 0 EN 1 while LCD Data EN 0 Delay 1ms 1 LCD1602 写数据和写指令函数 23 把写数据和指令二个合在一起 用一个变量 command 来判断 void Write LCD1602 uchar udata bit command LCD1602 Busy Check 忙检查 RS command command 0 时写入指令 command 1 时写入数据 RW 0 把 LCD 设置成写状态 EN 1 E 高脉冲 把数据 指令写入 LCD Data udata EN 0 把数据显示在 LCD1602 的指定位置 x y 是坐标 udata 是需要显示的数据 x 不能大于 15 每行最多显示 16 字符 y 不能大于 1 最多显示 2 行 void Write Byte Locate uchar x uchar y uchar udata if y x 0 x40 判断显示哪行 显示第二行 LCD 存储区加 40H x 0 x80 如果没有加 0X40 则显示第一行 Write LCD1602 x 0 写指令 Write LCD1602 udata 1 写显示数据 24 LCD1602 初始化函数 void Init LCD1602 Write LCD1602 0 x38 0 显示模式设置 Delay 1ms 20 Write LCD1602 0 x01 0 清除屏幕 Write LCD1602 0 x06 0 显示光标移动设置 Write LCD1602 0 x0c 0 开显示 键盘扫描和键码识别函数部分 键盘扫描函数 返回键盘扫描码 P2 0 P2 3 输出 P2 4 P2 7 输入 uchar Keyboard Scan void uchar scancode tmpcode P2 0 xf0 while P2 0 xf0 等待有键按下 Delay 1ms 20 延时 10ms 去抖动 if P2 0 xf0 scancode 0 xfe 逐行扫描 while scancode 0 xef 还没有扫描完 4 行 25 P2 scancode if P2 while P2 等待键释放 return tmpcode else scancode scancode 0 znum int zb 0 5 fhz 1 else znum abs int zb 0 5 fhz 0 if yb 0 29 ynum int yb 0 5 fhy 0 else ynum abs int yb 0 5 fhy 1 while znum Motor Left Step fhz while ynum Motor Right Step fhy return 0 float sumz1 0 0 float sumz2 0 0 float sumy1 0 0 float sumy2 0 0 void buchang float x float y float nextx float nexty int znum1 int ynum1 float zb yb 30 float d int znum ynum fhz fhy zb sqrt 114 7 y 114 7 y 14 4 x 14 4 x sqrt 114 7 nexty 114 7 nexty 14 4 nextx 14 4 nextx stepz yb sqrt 114 5 y 114 5 y 94 4 x 94 4 x sqrt 114 5 nexty 114 5 nexty 94 4 nextx 94 4 nextx stepy if zb 0 d zb int zb sumz1 d fhz 1 if sumz1 1 sumz1 1 znum int zb 1 else znum int zb else d zb int zb sumz2 d fhz 0 if sumz20 d yb int yb sumy1 d fhy 0 if sumy1 1 sumy1 1 ynum int yb 1 else ynum int yb else d yb int yb sumy1 d fhy 1 if sumy10 nexty y buchang x a0 y b0 nextx a0 0 003 nexty b0 fm fm zy else nextx x 8 step nexty y 34 buchang x a0 y b0 nextx a0 nexty b0 fm fm zy else nexty y 8 step nextx x buchang x a0 y b0 nextx a0 nexty b0 fm fm zx else if sx0 2 if fm 0 nextx x 8 step nexty y buchang x a0 y b0 nextx a0 nexty b0 fm fm zy else 35 nexty y 8 step nextx x buchang x a0 y b0 nextx a0 nexty b0 fm fm zx else if sx 0 nexty y buchang x a0 y b0 nextx a0 nexty b0 fm fm zy else nexty y 8 step nextx x buchang x a0 y b0 nextx a0 nexty b0 fm fm zx 36 else if sx 0 nexty y buchang x a0 y b0 nextx a0 nexty b0 fm fm zy else nexty y 8 step nextx x buchang x a0 y b0 nextx a0 nexty b0 fm fm zx x nextx y nexty nextx x a0 nexty y b0 cnt1 37 if cnt1 10 linedisp 1 a0 b0 nextx nexty cnt1 0 void Draw line if x0 0 line x0 y0 x1 y1 else linedisp 0 0 0 x0 y0 line 0 0 x0 y0 Delay 1ms 100 linedisp 0 x0 y0 x1 y1 line x0 y0 x1 y1 38 画圆程序 采用逐点比较法画圆 void Draw Circular int x int y float pointx pointy nextx nexty float result float size 0 15 int cnt int cnt1 0 cnt 8 radius size pointx x pointy y 25 display table7 0 currentdisp 0 x y Write Byte Locate 11 0 number radius 10 Write Byte Locate 12 0 number radius 10 while cnt result pointx 25 pointx 25 pointy 25 pointy 25 625 1 0 if result 39 if pointx x nexty pointy buchang pointx pointy nextx nexty else if pointxy nextx pointx nexty pointy size buchang pointx pointy nextx nexty else if pointx x nexty pointy size buchang pointx pointy nextx nexty else if pointxy nextx pointx size nexty pointy buchang pointx pointy nextx nexty else if pointx x if result if pointx x nexty pointy size buchang pointx pointy nextx nexty else if pointxy 43 nextx pointx size nexty pointy buchang pointx pointy nextx nexty else if pointx x nexty pointy 44 buchang pointx pointy nextx nexty else if pointxy nextx pointx nexty pointy size buchang pointx pointy nextx nexty else if pointx x nexty pointy size buchang pointx pointy nextx nexty pointx nextx pointy nexty 45 cnt1 if cnt1 10 display table7 1 在 1602 第二行显示 table6 中的字符 currentdisp 1 nextx nexty Write Byte Locate 11 1 number radius 10 Write Byte Locate 12 1 number radius 10 cnt1 0 循迹功能程序 void zouxiang int n int znum ynum switch n 0 表示 1 表示 2 表示 3 表示 4 表示 5 表示 6 表示 7 表示 case 0 znum 20 ynum 15 while znum Motor Left Step 0 46 while ynum Motor Right Step 0 break case 1 znum 52 ynum 12 while znum Motor Left Step 0 while ynum Motor Right Step 0 break case 2 znum 27 ynum 29 while znum 47 Motor Left Step 0 while ynum Motor Right Step 1 break case 3 znum 10 ynum 50 while znum Motor Left Step 0 while ynum Motor Right Step 1 break case 4 znum 20 ynum 15 while znum 48 Motor Left Step 1 while ynum Motor Right Step 1 break case 5 znum 52 ynum 12 while znum Motor Left Step 1 while ynum Motor Right Step 1 break case 6 znum 29 ynum 27 49 while znum Motor Left Step 1 while ynum Motor Right Step 0 break case 7 znum 15 ynum 50 while znum Motor Left Step 1 while ynum Motor Right Step 0 break default break 50 void follow int i j int array 9 array 8 0 i 0 display table11 1 SHLD 0 将 8 路检测器的电平置入 74LS165 寄存器中 SHLD 1 串行移位控制 for j 0 j 7 j array j S data S clk 0 S clk 1 Delay 1ms 10 while array i Delay 1ms 20 zouxiang i Write Byte Locate 15 1 number i SHLD 0 将 8 路检测器的电平置入 74LS165 寄存器中 51 SHLD 1 串行移位控制 for j 0 j 7 j array j S data S clk 0 S clk 1 Delay 1ms 10 if array i 8 i i 8 else if array i 1 8 8 i i 1 8 8 else if array i 1 8 8 i i 1 8 8 else if array i 2 8 8 i i 2 8 8 else if array i 2 8 8 i i 2 8 8 else Delay 1ms 20 zouxiang i zouxiang i 52 Write Byte Locate 15 1 number i SHLD 0 将 8 路检测器的电平置入 74LS165 寄存器中 SHLD 1 串行移位控制 for j 0 j 7 j array j S data S clk 0 S clk 1 Delay 1ms 100 if array i 8 0 else if array i 8 i i 8 else if array i 1 8 8 i i 1 8 8 else if array i 1 8 8 i i 1 8 8 else if array i 2 8 8 i i 2 8 8 else if array i 2 8 8 i i 2 8 8 53 uchar Get Number int min int max uchar scancode key scan scancode Keyboard Scan 键盘扫描函数 返回键盘扫描码 key Scan Code Transform scancode 键码识别 if keymax goto scan else return key void display uchar table 16 bit line uchar i for i 0 i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030中国可发性聚苯乙烯(eps)市场运营动态及企业竞争力分析报告
- 2025-2030中国动力锂电池回收行业前景趋势调查与发展潜力评估报告
- 2025-2030中国冷阴极荧光灯管(CCFL)市场供应预测及需求潜力分析报告
- 2025-2030中国低压变频器行业营销渠道及投融资方式分析报告
- 2025江苏南京市浦口区城管局所属南京星汉照明工程有限公司招聘1人笔试历年参考题库附带答案详解
- 2024年中国稀土铁合金行业调查报告
- 2025年中国电取暖器市场全景评估及发展趋势研究预测报告
- 中国儿童定位手表市场全面调研及行业投资潜力预测报告
- 中国工艺纱行业市场发展前景及发展趋势与投资战略研究报告(2024-2030)
- 中国自动化立体仓库行业市场前景预测及投资战略研究报告
- 师德师风建设领导小组职责及活动安排
- 2025深圳辅警考试真题
- 安全操作规程的基本内容
- 热处理验收记录表
- 智慧型陆基式渔业产业园项目可行性研究报告模板-备案拿地
- 广告安装培训课件
- 办公区保洁方案(3篇)
- 诊所中药饮片清单
- Soul app用户体验分析市场调研分析报告PPT模板
- 开工前施工单位需提供安全资料
- 门窗验收单(共1页)
评论
0/150
提交评论