能力风暴机器人.doc_第1页
能力风暴机器人.doc_第2页
能力风暴机器人.doc_第3页
能力风暴机器人.doc_第4页
能力风暴机器人.doc_第5页
免费预览已结束,剩余36页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

能力风暴个人机器人发现式教材 i 目目 录录 序言序言 进入机器人世界进入机器人世界 1 第一章第一章 机器人的结构机器人的结构 2 1 拆卸 能力风暴 2 2 装配 能力风暴 4 第二章第二章 机器人的传感器机器人的传感器 5 1 光敏传感器 5 2 碰撞传感器 6 3 声音传感器 8 4 红外传感器 10 5 光电编码器 12 第三章第三章 机器人的大脑机器人的大脑 15 6 通信 24 7 硬件扩展总线 ASBUS 24 第四章第四章 机器人的执行器机器人的执行器 25 1 电机 25 2 喇叭 27 第五章第五章 赋予机器人智慧赋予机器人智慧 给能力风暴编程给能力风暴编程 29 1 PRINTF 29 2 数据类型和计算表达式 30 3 比较逻辑运算和条件语句 32 4 库函数调用和 JC 常用程序结构 34 5 综合实验 36 第六章第六章 进行机器人比赛进行机器人比赛 38 1 比赛过程 38 2 机器人绕标比赛 38 能力风暴个人机器人发现式教材 1 序言序言 进入机器人进入机器人世界世界 二十世纪八十年代 PC 时代 九十年代 Internet 时代 二十一世纪将是 个人机器人 PR 时代 真的吗 真的 今天让我们来看一下 PC 技术早已成熟 蓬勃发展的 Internet 正在逐步改变着人们的生活 信息获取更加便利 家居更加智能化 作为人类梦想的机器人呢 已经开始走向家庭 走向个人 个人机器人的核心 智能技术是技术领域的最后一个学术前沿 有着无穷的研究空间 个人机 器人产业刚刚开始形成 今后 PC 可能被 PR 取代 Internet 也可能成为 PR 的 大脑的一部分 在不久的将来 个人机器人会成为你每天学习 生活 娱乐中 离不开的伙伴 今天 秉着中华民族的开拓和创新精神 广茂达在全球率先推出面向教育 的个人机器人 能力风暴个人机器人 是拥有多项专利的高科技产品 它首先 是革命性的能力培养平台 用于培养动手能力 创造力 综合能力和合作能力 然后是通用的实验平台 借助于交互 C 语言模块化结构和开放式接口 可以作 为数十门课程的综合实验平台 最后是出色的研发平台 能力风暴个人机器人将引导你进入这个激动人心的前沿领域 通过亲手装 配 实验 编程和实施机器人项目 参加机器人比赛 直至设计出自己的独特 的机器人伙伴 你将获得发自内心的快乐 你将悄悄发现 自己的潜力无穷 自己的信心提高 自己的综合能力提高了 面对新的挑战 你忽然觉得 很从 容 很自信 有问题请首先阅读 http AS U FAQ html 其中有常 见问题的解答 若您需要进一步的技术支持 请发 Email abilitystorms 有任何好的建议和设想也请随时告诉我 们 我们的网站 上有许多机器人方面的资源 请经常访问 不久我们将开通 将成为个人机器人用户讨论交流 的园地 欢迎你进入个人机器人时代 愿能力风暴个人机器人成为你心爱的伙伴 能力风暴个人机器人发现式教材 2 第一章第一章 机器人的结构机器人的结构 魔方 拼图 积木 变形金刚 等都可以提高动手能力及智力水平 深受 人们的喜爱 现在另有一个有利于培养动手能力 提高分析问题 解决问题能 力及学习多专业知识的实践过程 那是什么呢 能力风暴 个人机器人包含了许多高科技知识 在接触它的过程中可以 学习机械 电子 高级编程语言等知识 由于它采用模块化设计 使得人们可 以很轻松地拆装 能力风暴 在拆装 能力风暴 的过程中可以加深对机器人 结构的了解 并进而逐步掌握机器人工作原理 可以培养动手能力 提高分析 问题 解决问题的能力 总之 拆装 能力风暴 的过程是一个科技含量高的 动手过程 1 1 拆卸拆卸 能力风暴能力风暴 问题 拿起 能力风暴 看看它由哪些部分组成呢 它可分为 A B C 哪里是机器人的核心部分呢 它都包括哪些元器件呢 与机器人感知外界信息有关的有哪些呢 有多少种 多少个传感器呢 与机器人运动直接有关的有哪些呢 知识 能力风暴 由许多元器件组成 如轮子 齿轮头 码盘 电池 底盘 外壳 液晶显示屏 控制板 传感器及碰撞环等 其中轮子 齿轮头和电机是 与机器人运动直接有关的 控制板是它的核心部分 传感器包括红外传感器 光敏传感器 碰撞传感器 麦克风及光电编码器等 想一想 拆装 能力风暴 需要一些工具 就象修自行车需要钳子 扳子一样 只 靠手是不够的 看看拆装 能力风暴 需要哪些工具呢 提示 螺丝刀 扳子是必不可少的 问题 工具都准备好了 从哪儿下手呢 这儿有个顺序问题 这就象必须先脱鞋才能脱袜子 顺序不对是不行的 提示 方案有多种 可以从底盘开始 也可以从外盖开始 能力风暴个人机器人发现式教材 3 注意 取下传感器管的时候要小心 不要拉导线 不要压到电子元件 可以用一 节空管对准传感器管从外部往里压 把它推出来 拆卸时 应拆到不能再拆为 止 拆卸过程中拆下来的元器件要按顺序 按类摆放 要留心装配顺序以及元 器件的对应关系 如果不留心 在重新安装机器人时 可能会搞错一些元器件 的对应关系以及弄错一些插线的方向 机器人就不能正常工作 相关原理 1 碰撞传感器 在拆装碰撞传感器时 人们可能对它的工作原理发生了兴趣 它是怎么工 作的呢 能力风暴个人机器人有右前 左前 右后 左后四个碰撞传感器 每 个碰撞传感器其实都是一个开关 有碰撞时接通 电路中处理为 1 无碰撞时 断开 电路中处理为 0 2 红外传感器 在能力风暴正前方 装有两只红外发射管和一只红外接收模块构成红外传 感系统 主要用来检测前方 左前方和右前方的障碍 检测距离为 30cm 左右 调节左右两个电位器将分别改变各自的检测距离 如果判断某一侧有反射 电 路中处理为 1 3 光电编码器 能力风暴有两只光电编码器 用于检测到轮子内侧码盘转动格数 当码盘 上的白条被检测到时 电路中处理为 1 当码盘上的黑条被检测到时 电路中 处理为 0 4 光敏传感器 能力风暴上有 2 只光敏传感器 与模拟输入口 PE0 PE1 相连 转换为 8 位 数字后的范围为 0 255 因此数字越大 光越暗 数字越小 光越强 相关知识 在拆卸过程中 人们可能会有很多问题 比如底盘是怎么做出来的 外盖 与底盘之间的连接 外盖与透明盖之间的连接为什么不同 控制板是怎么设计 制造的 准确回答类似的问题往往建立在对机械 电子产品设计方法 生产工 艺的了解基础上 以控制板的设计 制造为例 它主要包括这么几步 1 利用电路设计软件绘制电路图 1 利用元器件库 依次取用元器件 配置电源 2 利用连线工具将元 器件连接 3 用绘图工具配图案及说明文字 4 将电路图保存为数据文 件 2 利用印刷板设计软件设计印刷电路板 1 将数据文件装入 2 利用元器件自动布局功能将元器件重排 3 利用自动布线功能将线路连接 4 手动调整 5 计算机成图 3 光绘制版 4 安装元器件 用波峰焊机焊接 去除锡脚 装其它元器件 5 测试检验 交付使用 能力风暴个人机器人发现式教材 4 2 2 装配装配 能力风暴能力风暴 通过上面的拆卸过程 人们对 能力风暴 机器人的结构有了初步的了解 现在 看能不能把拆下来的元器件重新组装起来 让它正常运转起来 想一想 应该怎么装呢 是先装底盘呢 还是先装上盖呢 检验 装配是否成功的检验标准是 能力风暴 装好以后是否可以正常工作 如 果不行的话 就要总结经验 看哪个环节搞错了 下载 ASU selftest lis 参 考 能力风暴 个人机器人操作手册 第 5 页 2 32 3 检测你的能力风暴检测你的能力风暴 依次 看 能力风暴 各项自检情况 如果都正常 就说明你的安装没有问题 附 装配顺序 仅供参考 1 在底盘下部安装 底盘 安上编码器盘 共 2 个 拧上螺丝 M2 14 16 套件 螺丝 螺母 垫圈 共 4 套 装上电机齿轮头套件 共 2 件 拧上螺丝 M3 8 套件 螺丝 螺母 垫圈 共 4 套 装上轮胎 共 2 个 拧上垫片 共 2 个 拧上螺母 M5 共 2 个 将电机 码盘扁平线套件 1 套 中的 DB9 插座插入编码器板上的 3 针插座中 共 2 个 2 在底盘下部全部安装完毕后 在底盘上套上碰撞环 1 个 在底盘板上装上 2 芯电源线套件 1 件 在 底盘板上装上 AS 主板 把 10 针 Herd 插头插在 AS 主板的 10 针插座上 3 在外盖里面装上 1 个红外接收传感器管组合件 2 个红外发射传感器管组合件 2 个光敏传感器管组合件 LCD 组合件 1 套 拧上自攻螺丝 M3 6 共 4 个 4 外盖安装完毕后 把红外接收传感器管组合件中的 3 芯 SIP 插座插在 AS 主板的 3 针插针上 把红外发射传感器管组合件中的 2 芯 SIP 插座插在 AS 主板的 2 针插针上 把光敏传感器管组合件中的 2 芯 SIP 插座插在 AS 主板的 2 针插针上 把 LCD 组合件中的 14 针 SIP 插座插在 AS 主板的 14 针插针上 5 外盖插入底盘 盖上透明盖 1 个 6 最后装箱 把能力风暴个人机器人放入内包装 放入包装箱 包装箱内放上充电 器 充电器盒 串口线 合格证 保修维修卡 JC 使用手册 CD 盘片 带包装 AS U 操作手册各 1 封包装箱 总结 可以看出 装配大致分为底盘安装 外盖安装 集成块连线等几大部分 通过装配 可以加深对机器人结构的了解 并进而初步掌握机器人工作原理 通过装配 可以培养动手能力 提高分析问题 解决问题的能力 能力风暴个人机器人发现式教材 5 第二章第二章 机器人的传感器机器人的传感器 机器人用传感器等获取内部信息和环境信息 人类用于感知自己内部信息的传感器有 关节位移传感器 如手抬多少角 度你会感知到 肌肉张力传感器 如你在提重物时 会感知重力的大小 平衡 传感器 如你会感知身体是不是倾斜 想一想人类还有什么感知内部信息的传 感器 人类感知外部信息的传感器有哪些呢 触觉 视觉 听觉 味觉 嗅觉 还有吗 拿起能力风暴 看看你的小伙伴有哪些内部传感器 哪些外部传感器 1 1 光敏传感器光敏传感器 发现光敏传感器了吗 光敏传感器有何作用呢 例子 键入如下小程序 test c void main int leftphoto while 1 while 是循环语句 while 1 构成死循环 leftphoto analog photo left 读左光敏的值 printf leftphoto d n leftphoto 在LCD上显示左光敏的值 sleep 0 5 休息0 5秒 改变 sleep时间可以改变采样周期 把该程序下载到能力风暴中 按 Reset 键运行该程序 LCD 上显示的值就 是左光敏电阻检测出的光强值 把手慢慢靠近左光敏 看数值的变化 结果是 光线越强 光敏电阻的值越 光线越弱 光敏电阻的值越 把 sleep 函数中的数值分改为 0 2 0 01 2 0 试一试 自己编一个小程序 在 LCD 上显示右光敏传感器检测到的值 试一试 自己编一个小程序 在 LCD 上同时显示左 右光敏电阻检测到的值 应用 能力风暴个人机器人发现式教材 6 下载 libs theremin C 在交互式窗口中输入 start theremin 用左右手分别遮挡左右光敏 能 力风暴的喇叭会发生不同频率和节奏的声音 控制得好 还会演奏音乐呢 这 种乐器是俄罗斯 theremin 发明的 分析一下 theremin 乐器的机理 左光敏传感器的信号控制什么 右光敏传 感器的信号控制什么 应用 许多昆虫有趋光特性 如飞蛾 左右光敏电阻亦类似机器人的眼睛 可以 用能力风暴模拟机器人飞蛾 下载 libs moth c 在交互式窗口中输入 start moth 1 能力风暴会向光 强的地方走去 直至碰到障碍停下 若在交互式窗口中 输入 start moth 0 则能力风暴模拟避光特性 会向 暗的地方走去 当心它钻到桌子下面去 试分析机器飞蛾的运行原理 想一想 有了光强感知能力 能力风暴还能有什么本领 总结 左右光敏传感器使 能力风暴 能够感知左前右前方向的光强 光线越强 检测到的值越小 2 2 碰撞传感器碰撞传感器 发现能力风暴机器人上碰撞传感器了吗 碰撞环有何作用呢 能力风暴能 判别出几个碰撞方向 碰撞传感器有何作用 例子 键入下面程序 s bumper c void main int bumpvalue 定义整形变量 while 1 bumpvalue bumper bumper 将返回碰撞检测值 printf bump b n bumpvalue 以二进制形式打印出碰撞传感器的检测值 sleep 0 5 等待0 5秒 运行上面的程序 前后左右按碰撞环 观察显示值的变化 并记录 前 后 左 右 能力风暴个人机器人发现式教材 7 左前 右前 左后 右后 想一想 八个方位是不是对应唯一的值 能力风暴个人机器人如何判别碰撞方位 例子 修改前面程序 test c void main int bumpvalue C语言均以 结束一句语句 while 1 bumpvalue bumper 调用碰撞传感器库函数 if bumpvalue 0b0011 条件判断语句 printf Front n 显示Front else if bumpvalue 0b1100 printf Back n else if bumpvalue 0b1010 printf Left n else if bumpvalue 0b0101 printf Right n sleep 0 5 等待0 5秒 运行上面的程序 在前后左右方向上按碰撞环 会显示什么信息 是不是 结果更直观了 试一试 设计程序 使之能显示 8 个方位的碰撞信息 例子 键入下面程序 test c void main int bumpvalue while 1 能力风暴个人机器人发现式教材 8 bumpvalue bumper if bumpvalue 0b0011 前 tone 500 0 1 0 以500HZ频率响1秒 else if bumpvalue 0b1100 后 tone 1000 0 1 0 else if bumpvalue 0b1010 左 tone 1500 0 1 0 else if bumpvalue 0b0101 右 tone 2000 0 1 0 运行上面程序 前后左右按碰撞环 能力风暴会有什么反应 试一试 我们进行一项大胆的行动 用能力风暴做一台简易的电子琴 不同方位表 示不同的音调 如下所示 1 262Hz 7 2 左前 247Hz 右前 294Hz 7 3 左 495Hz 右 330Hz 6 4 左后 441Hz 5 右后 350Hz 后 393Hz 图 2 1 碰撞传感器方位 每按一次演奏半拍 要演奏 1 拍则连续按二次 比赛谁演奏的乐曲最好听 避碰行为是几乎左右生物都具备的行为能力 不然要经常鼻青脸肿 在自 然界肯定生存不下去 机器人也不例外 全自主的智能机器人必须要有避碰能 力 能力风暴有巧妙设计的 360 度碰撞检测传感器 象人的皮肤 能力风暴的碰撞传感器用来检测来自八个方位的碰撞 碰撞传感器还有哪些用途 能力风暴个人机器人发现式教材 9 3 3 声音传感器声音传感器 能力风暴有耳朵吗 它的耳朵功能有多强呢 想一想 人的耳朵功能有多强 例子 键入下面程序 void main 测试麦克风函数 int micvalue while 1 micvalue analog 2 麦克风是模拟端口2 printf mic d n micvalue sleep 0 5 运行上面的程序 一边发声一边观察 LCD 上显示的麦克风的显示值 发现 什么规律 试一试 给你的机器人伙伴起一个名字 然后设计一个程序 当你叫它的名字的时 候 也即你的音量 达到一定程度 机器人会发声 答应你 应用 下载 libs echo C 在交互式窗口中输入 start echo 按 RETURN 运行 你叫一声 机器人会反应 分析一下 是什么工作原理 能画出这个程序的流 程吗 试一试 把几个能力风暴放在一起 同时运行这个程序 试一试机器人你叫我应的 场面是不是很有趣 机器人赛跑 机器人听到 跑 的出发声后 一起向前跑 看谁先过终点 出发声发出前就移动的机器人犯规 能力风暴个人机器人发现式教材 10 起点 终点 图 2 2 机器人赛跑场地示意图 知识 听到出发声后 用如下驱动函数使机器人向前走 motor 0 100 motor 1 100 左右电机均以 100 的速度向前跑 想一想 声音传感器还有什么用途 还有什么功能 在机器人舞蹈比赛中 有什么 用途 总结 声音传感器用于检测声音的音量 频率和语音 检测频率和语音较难 将 在以后学习使用 音量越大 检测到的值越大 4 4 红外传感器红外传感器 找到红外传感器了吗 红外传感器有什么作用 例子 键入下面程序 s ir c void ir test int irvalue while 1 irvalue ir detect printf irvalue d n irvalue sleep 0 5 下载程序 在交互式窗口输入 ir test 运行 分别挡住能力风暴的左前 右前和前方 观察 LCD 上显示的数值 左 右 前方 取一张白纸 测一测红外传感器的有效检测距离 调整主板上的 能力风暴个人机器人发现式教材 11 可以分别调节左右红外传感器的有效检测距离 有效检测距离的范围为 试一试 修改上面的程序 使得红外传感器检测到左 右 前方的障碍时分别显示 Left Right 和 Front 例子 键入下面程序 s ir1 C void ir avoid int ir value while 1 ir value ir detect if ir value 0b01 右面障碍 drive 0 80 向左转 sleep 0 5 转0 5秒 drive 80 0 向前走 sleep 0 5 走0 5秒 stop void main ir avoid 下载并运行 右边有障碍时 机器人将向左转并向前走 这是避障行为 避障能力是全部生物的基本行为能力之一 同样 自主机器人亦需要有避障能 力 试一试 上面的程序能力风暴机器人的避障行为不完备 只能避右边的障碍 请完 备该程序 使机器人也能避左边和前面的障碍 应用 下载 libs follow c 在交互式窗口中输入 start follow 运行该函数 把手放在机器人的前面 机器人会跟着你的手走 分析工作原理 画出程序流 程图 想一想 能力风暴个人机器人发现式教材 12 能力风暴个人机器人拥有红外传感器后 还能有哪些应用 总结 能力风暴个人机器人有二个红外发射管 一个集成红外接收管 采用左右 分时工作方式 能巧妙探测左前 右前和正前方 20 80CM 距离的障碍 左前 右前和正前方有障碍时 红外传感器驱动库函数 ir detect 分别返回 2 1 3 二进制为 0b10 0b01 0b11 5 5 光电编码器光电编码器 找一找光电编码器在哪里 有什么用处 能力风暴上采用的是目前世界上最小的红外发射接收集成芯片 虽小但很 贵 光电编码器是工业自动化中非常重要的传感器 没有光电编码器 上海通 用的别克车生产线将转不起来 例子 键入下面程序 s encoder1 c void main int encoder state init encoder 初始化编码器 while 1 encoder state left shaft 调用left shaft库函数 返回左编码器的当前状态 printf s encoder d n encoder state sleep 0 5 运行上面的程序 旋转左轮胎 观察 LCD 上的位的变化 结果为 当码盘上的白条对着红外发射接收芯片时 encoder state 的值为 当黑条对着红外发射接收芯片时 encoder state 的值为 想一想 光电编码器的工作原理 为什么又称为角度传感器 是否可用作转速传感器 例子 用光电编码器测量轮子转了多少角度 define LEFT 1 define RIGHT 2 int read encoder int leftorright 定义一个函数 有一个整型输入参数 if leftorright LEFT 能力风暴个人机器人发现式教材 13 return get left clicks 返回整数值 else if leftorright RIGHT return get right clicks 每次用完后 记数器将清零 void main int leftclick 0 init encoder 初始化编码器 计数前必须要初始化 while 1 leftclick leftclick read encoder LEFT printf leftclick d n leftclick sleep 0 5 旋转左轮胎一周 看一看计数值是多少 试一试 稍微修改上面的主程序 测一下旋转右轮胎一周 看看计数值是多少 想一想 能力风暴个人机器人光电编码器的分辨率为 33 脉冲 转 轮胎转角的测量 精度是多少 轮胎直径为 65mm 折合成直线行走时的测量精度是多少 例子 控制机器人向前走 100cm define clicklength 6 1848 编码器每个计数相当于轮子走过 6 1848mm void main int clicknumber 0 int clicktotal int 1000 0 6 1848 计算走1m需要多少计 数 init encoder init motors 初始化电机驱动 while clicknumber60 59 9 60 6 2 5 1 int a 59 9 printf d n a60 想一想 命令行输出的关系表达式的值是多少 LCD 屏幕上输出的关系表达式的值 是什么 总结 M68HC11 的 CPU 结构把所有外围功能 I O RAM 和各种存储器置于同一个 64K 字节存储器空间里 M68HC11 的 CPU 有两个 8 位累加器 A B 可把它们联 成一个 16 位的累加器 D 有两个 16 位变址寄存器 X Y 一个 8 位条件寄存器 CCR 一个 16 位堆栈指针 SP 和程序计数器 PC M6800 M6801 指令系统 共 300 多条指令 包括 16 位的加 减 乘 除指令 JC 充分利用了 M68HC11CPU 较强 的计算能力和丰富的指令集 存储器存储器 存储器也是计算机的一个组成部分 它是用来存放计算机程序和数据的地方 计算机是个非常听话的孩子 它所做的事情都是根据你们事先编好的程序一条 一条地执行 而且存储器里的程序内容是不允许改变的 如果存放的程序变了 那么计算机就会执行错误的程序而做错事 想一想 如果这个时候突然断了电 存放在里面的数据会不会丢失呢 试一试 让我们把上面的一个程序下载到机器人上 关上电源开关 拔掉通信插头 再打开 看看数据还在不在液晶显示器上运行 知识 不用担心 即使断了电 存放在里面的数据也不会丢失的 因为存储器里 面的 RAM 具有后备保护特性 在掉电的时候 保护好这些程序和数据不被丢失 能力风暴个人机器人发现式教材 18 并且使计算机工作在低功耗方式下 总结 M68HC11A1 型号没有内部 ROM 有 512 字节的可重定位的 256 字节 RAM 片 内 ROM 的主要用途是用来存放用户的程序和固定的数据及表格 片内 EEPROM 可 现场擦除和写入 可存放各种需经常修改 掉电后又不允许丢失的数据 也可 存放程序 片内 RAM 具有后备保护特性 对于用电池供电的系统 RAM 后备特 性可在 MCU 不工作时减少电池消耗 那么对于用交流电供电的系统 使系统在 掉电后保存 RAM 的内容 定时器和脉冲累加器电路 16 位高性能定时器系统 8MHz 晶振 定时器频率为 2MHz 周期 0 5 s 3 个输入捕捉 可测量脉冲数 量 脉冲周期 宽度和相位等 5 个输出比较 可输出 PWM 信号 可以完成各 种定时控制功能 有定时器溢出中断功能 高性能定时器是 M68HC11 的特色 输入输出接口输入输出接口 输入输出接口也是 M68HC11 的一个重要外围功能 有了输入输出接口 我 们就可以将需要的各种数据 程序送给计算机 并且我们需要的结果也能通过 它们送给我们 就像人一样 除了有大脑以外 还必须有眼睛 耳朵 通过它 们不断地学习新的东西 同时通过嘴 手 脚做事 这才是一个有用的人 否 则 即使他的脑子再好使 由于无法表达 也是没有用的 计算机也是一样 只有能把要处理的数据 信号送进去 把计算的结果用各种方法送出来 这样 的计算机才会有用 试一试 你能指出来哪些是输入装置 哪些是输出装置吗 提示 键盘就是输入装置 液晶显示屏 发光二极管 喇叭就是输出装置 提问 那么这些输入输出装置是怎么和单片机连接的 知识 原来啊 在 M68HC11A1 里有 5 个并行输入输出口 分别为 PA 口 PB 口 PC 口 PD 口和 PE 口 我们知道 M68HC11A1 一共有 52 个脚 这其中就包括了这 些输入输出口 其中 PA 口可作为通用 I O 口 可设置为 3 个输入捕捉功能 可测量输入脉冲的 周期 脉宽和相位等 4 个输出比较功能和一个脉冲累加输入或 5 个输出比较 功能 可输出脉冲 完成各种定时控制功能 也可作为主定时器和脉冲累加器 系统 PB 口在单片方式下可作为一个通用 8 位输出口 在扩展方式下引脚作为高 8 位地址输出脚 PC 口在单片方式下可作为一个通用 8 位双向 I O 口 在扩展方式下引脚设 能力风暴个人机器人发现式教材 19 置为多路地址 数据线 在 MCU 周期的地址期间 输出低 8 位地址 在 MCU 周期 的数据期间 作为双向数据线 PD 口的 PD0 PD5 可用作通用 I O 口 也可用作串行通讯接口 SCI 和 串行外围接口 SPI 信号线 PE 口用作通用输入 也可用作 A D 输入通道 单片方法工作时 有 38 个 I O 扩展方式时 有 8 位数据单线和 16 位地 址总线 可扩展 64K 存储器 M68HC11 的一大特色是功耗低 工作电流小于 15mA 有 WAIT 和 STOP 两种 方式进行省电 其中 WAIT 方式是停止 CPU 工作 电流降为正常工作的近三分之 一 M68HC11 有一条 WAIT 指令 它置 MCU 为低功耗工作方式 振荡器继续运行 STOP 方式是停止振荡器工作 耗电小于 100 A 可通过复位或外部中断退出 STOP 方式 M68HC11 的管脚图见图 3 3 图 3 3 M68HC11 的管脚 在单片机中 我们把这些部分都装在一片小小的芯片中 由于它的体积小 用电又省 所以人们把它用在好多地方 在我们的生活中到处都可找到它的踪 迹 大到飞机 导弹 小到你们手上的游戏机 电子宠物 提问 现在让我们来举出一些我们家里有些什么东西用上了单片机 提示 对了 象电视机 影碟机 录音机 空调机 微波炉 洗衣机 电冰箱等 等 都需要用到单片机来管理 不过 单片机最重要的岗位是在工业 化学 农业 航天 海洋 建筑 医药 军事等领域 象自动化生产线 机器人 智能化的仪器仪表 都少不 能力风暴个人机器人发现式教材 20 了它 总之 随着自动化 信息化的程度越来越高 单片机将被用在更多的地 方 所以我们现在要好好学习 掌握科学技术知识 长大后在这些领域里开发 出更多更好的应用来 2 2 计算机的计算方法计算机的计算方法 在单片机世界里 所有的事情都是用数字符号来定义的 比如开关用 0 表 示接通 用 1 表示断开 因为一个开关只有开和关两个状态 因此只要记得 0 和 1 就能表示了 学习使用单片机 可以真切感受计算原理 计算机只认识 0 和 1 所有机算大多建立在加法基础上 二进制数具有运算方便 存贮量小等 特点 适于计算机内部运算和存贮时使用 而我们平时是用 0 1 2 10 十进制方法来表示数的 那么我们怎样把二进制数转换成十进制数呢 或把十 进制数转换成二进制数呢 知识 在交互式 JC 语言中 我们规定输出格式 用 b 来描述二进制数 类型为 int 用 d 来描述十进制数 类型为 int 例子 显示二进制数 下面的语句将整型变量 x 以二进制的形式输出 int x x 3 printf Value is b n x 显示十进制数 下面的语句将整型变量 x 以十进制的形式输出 int x x 3 printf Value is d n x 知识 我们看到在液晶显示器上显示的二进制数一共有 8 位 这是因为计算机是 以 8 个字节表示一位 即 1Byte 字节 8Bit 位 当然我们在输入数据时 如果二进制数的最左边为零时 不一定要写全 8 位 计算机会自动识别的 那 么我们怎样把二进制数转换为十进制数呢 下面有张对照表 十进制数二进制数 000 101 210 311 4100 5101 6110 7111 81000 91001 从表中我们发现 十进制数是每逢十进一 二进制数是一样的道理 只是 能力风暴个人机器人发现式教材 21 每逢二进一 提问 同学们能计算一下二进制数 0b11001 表示为十进制数是多少 提示 我们已经知道了二进制数是每逢二进一 即 1 当 2 我们称 2 为基数 i 表示位数 最后一位是 0 位 2i 为所在数位的权 那么 0b11001 1 24 1 23 0 22 0 21 1 20 16 8 1 25 同学们能把十进制数 20 用二进制数来表示吗 其实方法是一样的 只是 除以 2 直到最后除尽落 0 除不尽落 1 把每次所得余数 0 或 1 反向结合在一起便得到二进制数 1 20 2 10 余数为 0 2 10 2 5 余数为 0 3 5 2 2 余数为 1 4 2 2 1 余数为 0 商为 1 所以 20 0b10100 试一试 在交互式 JC 窗口中键入如下程序 看看二进制数和十进制数之间是如何转 换的 printf Value is b n 25 printf Value is d n 0b10100 你还可以自己举一些例子练习一下 用二进制数进行加 减 乘 除 逻辑 运算等 知识 二进制数的加 减 乘 除 逻辑运算规则 加法运算规则 减法运算规则 0 0 0 0 0 0 0 1 1 1 0 1 1 0 1 1 1 0 1 1 10 10 1 1 乘法运算规则 除法运算规则 能力风暴个人机器人发现式教材 22 0 0 0 1 1 1 0 1 0 0 1 0 1 0 0 1 1 1 试一试 我们在交互式窗口中键入如下程序 看看液晶显示器上显示的结果 printf Value is b n 0b11 0b01 printf Value is b n 0b10 0b01 printf Value is b n 0b11 0b11 printf Value is b n 0b11 0b11 提示 我们发现在第二条减法运算中 当遇到 0 1 时 该位不够减 这时需要 向高一位借 方法和十进制数是一样的 只是从高一位借来的 1 是 1 1 即 借 1 当 2 那么同学们算一算 0b1010 0b0111 提问 你知道为什么计算机要采用二进制数来表示数据呢 知识 这是为了在元器件上容易实现 因为我们找到具有两个稳定状态的电子器 件是很容易 比如脉冲的 有 和 无 电位的 高 和 低 晶体管的 截止 和 导通 磁性材料的 正 和 负 等等 都可以用来表示二进制 数的 0 和 1 而且运算上比较简单 由于只有 0 和 1 两个数码 所 以当进行算术和逻辑运算时 要比十进制简单得多 在设备上也可以节省 结 构上便于简化 3 3 电路板电路板 现在光有一个单片机是不够的 机器人是运行不起来的 它还要和其他许 多的器件通过电线连接起来 现在你们看到了这块板子了吗 我们叫它印刷电 路板 我们把所有的电器件都安装在这块板子上 那么同学们会问了 这些电 器件之间是怎么连接的 找一找 这些电器件之间的连接电线在哪里 发现这块板子的正反面有什么不同 提示 呵 我们发现在板子的绿漆下面有很多很多密密麻麻的线 有粗的 有细 的 有直的 有弯的 对 这些就是连接各个元器件的电线 因为在计算机中 连接各个元器件的电线太多 如果用普通的电线把各个元器件连接起来 不仅 能力风暴个人机器人发现式教材 23 容易出错 而且接好以后也不好检查 所以科学家就发明了这种电路板 它的 好处可多了 而且非常方便 提问 那么我们怎样把这些元器件插入电路板上 又是怎样把它们固定在上面呢 使这些元器件和这些电线连接起来呢 知识 我们会看到在电路板子上有许多小孔 这些孔就是用来插元器件的 我们 在电路板的背面用焊锡焊上 这需要用到焊烙铁工具 同学们可以自己动手用 焊烙铁工具把元器件焊到电路板上 在焊的过程中 要右手拿焊烙铁 左手同 时拿着焊锡 对准要焊的元器件的脚 用焊锡也是非常讲究的 如果焊锡放少 了 就会使元器件的脚和电路板上的电线没有连接上 叫虚焊 结果电路就不 通 如果焊锡放多了 就会和其他的电线搭上 造成短路 我们看到工人叔叔 把这块机器人的电路板焊得多漂亮呀 同学们只要仔细认真也可以做到的 注意 由于焊烙铁插上电后温度会很高 在使用时要注意安全 不要烫到手了 不用的时候要把焊烙铁插在铁架上 并要拔掉电源插头 其他元器件其他元器件 同学们看到这块电路板上 除了单片机之外 还有什么元器件啊 我们发 现上面还有好多好多元器件 有电阻 电容 晶体管 还有许多标有各种标号 的芯片 有喇叭 麦克风 液晶显示器等等 它们都有什么作用呢 不要急 让我来慢慢告诉你们 4 外部存储器外部存储器 能力风暴个人机器人扩展了 32K 的静态不挥发 RAM 其优点是既有静态 RAM 的速度和方便 70ns 又有 EEPROM 或 FlashRom 的掉电不丢失性 从而能 将程序和数据合用一个芯片 AS62256 写入的数据可保存十年以上 同时具有 可靠的上电 掉电 强静电等数据保护功能 另外需注意 AS62256 在电压低于 4 5V 将自动封锁读 写操作 大家可以看到 32K RAM 的空间利用是紧凑的 任一地址都对应一个字节 而余下 32K 地址可用于扩展 但能力风暴在 ASBUS 上扩展了 4 块平行输入卡 4 块平行输出卡 还是很厉害的 目前 PC 机上也只有 4 5 个 PCI 扩展槽 想扩 展 8 个输出线 8 个输入口线吗 只要使用输入选择线 输出选择线各一条就 可以了 ASIO 扩展卡就实现了这种功能 能力风暴个人机器人的操作系统 ASOS 放在高端内存 10K 左右 余下的 20K 左右是用户程序空间 从 0 x8000 开始 请下载 ASU selftest lis 看一下用 户程序的放置空间 ASU selftest lis 编译后 包括 lib ASU c 等库函数 有 多少字节 计算一下 20K 能放多少行 JC 语言 是不是足够编写大程序 能力风暴个人机器人发现式教材 24 5 5 复位系统和电源复位系统和电源 所谓复位是指用于强制使微处理器 MCU 置为一系列初始状态 并从预 先决定的起始地址开始执行程序 MCU 有四种类型的复位 外部 RESET 复位 上电自动复位 看门狗复位 在软件工作不正常时能自动复位 MCU 具有单独 的复位入口 时钟监视复位 在失去时钟或时钟运行太慢时能自动复位 MCU 提问 能力风暴采用何种复位方式 提问 我们知道芯片的工作电压为 5V 而 能力风暴 上的镍氢电池提供的电压 为 6V 你知道该怎么调节电压呢 提示 在这块电路板上 你们有没有看到标有 Maxim603 的芯片 它就是电压调节 芯片 能力风暴控制板采用 Maxim603 电压调节芯片 提供 500MA 5V 电压 该 芯片自身的功耗很低 低电压复位保护电路采用 DS1233 IC12 当电压低于 4 5V 将产生复位信号 同时 BAT LED 变亮 6 6 通信通信 能力风暴采用 MAX232 串口驱动芯片 有 2 路输入输出 PC 发过来的信号经 过放大再去驱动 COM LED 因此 PC 传数据给能力风暴时 黄色 COM LED 会闪动 7 硬件扩展总线硬件扩展总线 ASBUS AS U 控制板设计了 ASBUS 总线 简单类似于 ISA 和 PCI 总线 采用堆叠式 的 ASBUS 扩展卡可以方便扩展控制板的功能 ASBUS 信号线见图 3 4 能力风暴个人机器人发现式教材 25 图 3 4 ASBUS 信号线 有了扩展总线 ASBUS 就可以扩展更多的传感器和执行机构 具体扩展方法 可以是选购控制卡 甚至自己去设计扩展电路 举例说 扩展 2 个光敏传感器 扩展 2 个红外接受传感器 扩展一个超声传感器 使能力风暴看得更远 扩展 8 个数字输入输出口 再增加 2 个 LED 来装饰能力风暴 想增加一个步进电机 想增加 3 个伺服电机制作的手爪等等 ASBUS 的扩展潜力很大 能力风暴 个人机器人操作手册 里介绍有关 知识 教你开发自己的 ASBUS 扩展卡 能力风暴个人机器人发现式教材 26 第四章第四章 机器人的执行器机器人的执行器 执行器是机器人控制命令的执行者 同学们知道 能力风暴 个人机器人 上都有哪些元器件是执行器吗 它们分别实现什么功能呢 试完成下表 序 号名 称功 能 1 电机电机 1 1motor 函数函数 例子 在命令行输入如下语句 motor 0 40 sleep 5 0 stop 机器人如何运动 提示 机器人控制电机所用的最基本的指令是 motor motor 函数函数 上面例子中 0 表示 左侧电机 右侧电机用 1 表示 40 表示速度大小 100 为最大 程序中 sleep 函 数参见 JC1 0 用户使用手册 34 页 5 45 4 定时命令定时命令中 void sleep float sec 它是控制电机工作的常用方法 规定了上面控制指令运行的时间 以秒为单位 stop stop 是电机停止运动指令 试一试 若要让右侧电机比左侧电机转得快 应如何修改程序呢 例如 想一想 左右两侧电机在不同速度组合下 会实现哪些运动呢 你能总结出多少个 轨迹呢 请填写下表 编号运动表现语句轨迹 左右两侧电机速度关系 能力风暴个人机器人发现式教材 27 应用 输入下面程序 void main motor 0 80 motor 1 80 sleep 2 0 motor 0 0 motor 1 80 sleep 1 8 motor 0 80 motor 1 80 sleep 1 0 stop 根据上面总结出的规律 你认为机器人会先 再 然后 最后 下载并运行这个程序 看机器人的 运动是否和你想象的一样 1 1drive drive 函数函数 例子 下载如下程序 void main drive 60 0 sleep 2 0 stop 机器人如何运动 它的运动和你上面总结出的哪种运动规 律相似呢 想一想为什么 打开文件 c jc10 libs lib ASU cc jc10 libs lib ASU c 找到其中的 voidvoid drive drive 函数 看懂它的实质了吗 提示 drive drive 函数函数包含了驱动左右两个电机的 motor motor 函数函数 上面程序中 drive 60 0 drive 60 0 中 60 表示运动的基准速度 后面的 0 表示左右两个电机与此基准 速度的差都是 0 如果是 20 则表示左侧电机比此基准速度小 20 右侧电机比此 基准速度大 20 试一试 如果想让机器人左转弯 应如何改变上面的程序 想一想 不同的 drive drive 函数调用会产生哪些运动结果呢 你能总结出多少个轨迹 能力风暴个人机器人发现式教材 28 呢 编号运动表现语句轨迹 两个参数之间关系 应用 你能让机器人按 之 字形行走吗 总结 motor motor drive drive 是控制电机的两个基本命令 指令中具体数不同 机器 人的运动情况就不一样 motor motor 函数函数的意义比较直观 drive drive 函数函数中前一个 数为机器人运动基准速度 后一个数使机器人产生转动 左侧电机速度为前后 两个数之差 右侧电机速度为前后两个数之和 若我们用 a 表示 drive drive 函数函数 中前一个数 用 b 表示 drive drive 函数函数中后一个数 其运动规律有 1 当 a 0 b 0 时 机器人往前走同时往左转 2 当 a 0 b0 b 0 时 机器人径直往前走 4 当 a0 时 机器人往后走同时往左转 5 当 a 0 b 0 时 机器人往后走同时往右转 6 当 a0 时 机器人原地往左转 8 当 a 0 b 4 5 4 6 2 5 1 int a 4 printf d n a5 想一想 能力风暴个人机器人发现式教材 34 命令行输出的关系表达式的值是多少 LCD 屏幕上输出的关系表达式的值 是什么 试一试 自己输入一些表达式进行比较 看看运算的结果 知识 if 语句用来判断给定的条件是否满足 真 或 假 并根据判断 的结果决定执行的语句 把下面 if 语句的三种形式在 JC 命令行直接输入 看看执行情况 int a 5 if a 4 printf a 4 n int a 2 if a 4 printf a 4 n else printf a4 printf 4 n else if a 2 printf 2 n else printf 1 n 注意注意 上面大括弧里的语句在命令行必须一次输入 试一试 把下面三个语句的执行结果记录下来 if 5 printf true n else printf false n if 5 printf true n else printf false n if 0 printf true n else printf false n 应用 判断碰撞环受碰方向 在 LCD 屏幕上显示出来 知识 bumper 返回碰撞环的碰撞情况 0 表示没有碰撞 1 表示右前碰撞传感 器被压下 2 表示左前碰撞传感器被压下 4 表示右后碰撞传感器被压下 8 表 示左后碰撞传感器被压下 在多于一个传感器被压下时 会出现相应数值的组 合 相加 附 程序主体框架 你也可以按自己的想法编程序 void main while 1 br bumper 能力风暴个人机器人发现式教材 35 sleep 0 2 总结 条件语句有三种形式 if if else 和 if else if 在 if 和 else 后面如果有多个操作语句 需要用 将其括起来 条件语句还可以 嵌套 即在 if 语句中又包含一个或多个 if 语句 if 条件语句能够反映智能 生物行为中基本的因果逻辑关系 用好条件语句 你的机器人将会变得更聪明 注意注意 在 C 语言逻辑运算中非 0 的数值都被看作 真 4 4 库函数调用和库函数调用和 JCJC 常用程序结构常用程序结构 项目 常用库函数调用方法和 JC 程序结构 分别把下面的函数输入交互式 C 语言的命令行 记录函数返回值 beep tone 960

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论