第1讲:C51单片机应用与C语言程序设计-总纲.ppt_第1页
第1讲:C51单片机应用与C语言程序设计-总纲.ppt_第2页
第1讲:C51单片机应用与C语言程序设计-总纲.ppt_第3页
第1讲:C51单片机应用与C语言程序设计-总纲.ppt_第4页
第1讲:C51单片机应用与C语言程序设计-总纲.ppt_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

DEPUSH 中级机器人制作与编程 深圳市德普施科技有限公司SHENZHENDEPUSH TECHLONOGYCO LTD C51单片机应用与C语言程序设计 基于机器人工程对象的项目实践 秦志强 DEPUSH 中级机器人制作与编程 版权与商标 版权属于深圳市德普施科技有限公司 DEPUSH 中级机器人制作与编程 第一讲C51单片机与机器人大脑 AT89S52 教学底板 DEPUSH 中级机器人制作与编程 第一讲C51单片机与机器人大脑 微控制器的用途 单片机与C51系列单片机 DEPUSH 中级机器人制作与编程 第一讲C51单片机与机器人大脑 获得软件 KeiluVision2IDE官方下载 DEPUSH 中级机器人制作与编程 第一讲C51单片机与机器人大脑 安装软件从网上下载软件后安装 DEPUSH 中级机器人制作与编程 第一讲C51单片机与机器人大脑 硬件安装 DEPUSH 中级机器人制作与编程 第一讲C51单片机与机器人大脑 通讯测试 你的第一个程序 DEPUSH 中级机器人制作与编程 第一讲C51单片机与机器人大脑 第一个程序 DEPUSH 中级机器人制作与编程 includeintmain void uart Init 串口初始化printf Hello thisisamessagefromyourRobot n 第一讲C51单片机与机器人大脑 第一个程序 添加头文件uart h 程序入口 main 函数 printf 函数 打印输出 在终端上显示 表示注释 后面内容将被编辑器忽视 DEPUSH 中级机器人制作与编程 第二讲输出接口与机器人伺服电机控制 C51单片机的I O口及伺服电机 DEPUSH 中级机器人制作与编程 第二讲输出接口与机器人伺服电机控制 单灯闪烁 使用P1端口的第一脚 P1 0 来控制发光二极管 LED 闪烁 while 1 P1 0 1 P1 0输出高电平delay nms 500 延时500msP1 0 0 P1 0输出低电平delay nms 500 延时500ms while循环函数 delay nms延时函数 DEPUSH 中级机器人制作与编程 第二讲输出接口与机器人伺服电机控制 时序图简介时序图反应的是高 低电压信号与时间的关系图 DEPUSH 中级机器人制作与编程 第二讲输出接口与机器人伺服电机控制 伺服电机控制信号 零点标定信号时序图 while 1 P1 0 1 P1 0输出高电平delay nus 1500 延时1 5msP1 0 0 P1 0输出低电平delay nus 20000 延时20ms DEPUSH 中级机器人制作与编程 第二讲输出接口与机器人伺服电机控制 安装伺服电机 伺服电机与教学底板的连线原理图 左 和实际接线示意图 右 DEPUSH 中级机器人制作与编程 第二讲输出接口与机器人伺服电机控制 测试伺服电机 1 3ms的控制脉冲序列使电机顺时针全速旋转 1 7ms的连续脉冲序列使电机逆时针全速旋转 while 1 P1 0 1 delay nus 1300 P1 0 0 delay nus 20000 while 1 P1 0 1 delay nus 1700 P1 0 0 delay nus 20000 DEPUSH 中级机器人制作与编程 第二讲输出接口与机器人伺服电机控制 伺服电机旋转规定的时间 for循环for 表达式1 表达式2 表达式3 语句 按如下方式理解 for 循环变量赋初值 循环条件 循环变量增值 语句 for Counter 1 Counter 100 i P1 1 1 delay nus 1700 P1 1 0 delay nms 20 DEPUSH 中级机器人制作与编程 第二讲输出接口与机器人伺服电机控制 用PC机控制机器人的运动 scanf 格式控制 地址表列 printf ProgramRunning n printf Pleaseinputpulsenumber n scanf d DEPUSH 中级机器人制作与编程 第三讲机器人巡航控制 基本巡航动作 机器人及其前进方向的定义 向前巡航 for循环的参数控制了发送给电机的脉冲数量 由于每个脉冲的时间是相同的 因而for循环的参数也控制了伺服电机运行的时间 for counter 0 counter 130 counter 运行3秒 P1 1 1 delay nus 1700 P1 1 0 左轮逆时针P1 0 1 delay nus 1300 P1 0 0 右轮顺时针delay nms 20 DEPUSH 中级机器人制作与编程 第三讲机器人巡航控制 其它巡航动作 将delay nus函数的参数n以不同的值组合就可以使机器人以其它的方式运行 向后行走 P1 1 1 delay nus 1300 P1 1 0 左轮顺时针P1 0 1 delay nus 1700 P1 0 0 右轮逆时针delay nms 20 原地左转 P1 1 1 delay nus 1300 P1 1 0 左轮顺时针P1 0 1 delay nus 1300 P1 0 0 右轮顺时针delay nms 20 原地右转 P1 1 1 delay nus 1700 P1 1 0 左轮逆时针P1 0 1 delay nus 1700 P1 0 0 右轮逆时针delay nms 20 DEPUSH 中级机器人制作与编程 第三讲机器人巡航控制 其它巡航动作 以某一轮子为支点旋转 从前面向左旋转 P1 1 1 delay nus 1500 P1 1 0 左轮静止P1 0 1 delay nus 1300 P1 0 0 右轮顺时针delay nms 20 从前面向右旋转 P1 1 1 delay nus 1700 P1 1 0 左轮逆时针P1 0 1 delay nus 1500 P1 0 0 右轮静止delay nms 20 从后面向左旋转 P1 1 1 delay nus 1500 P1 1 0 左轮静止P1 0 1 delay nus 1700 P1 0 0 右轮逆时针delay nms 20 从后面向右旋转 P1 1 1 delay nus 1300 P1 1 0 左轮顺时针P1 0 1 delay nus 1500 P1 0 0 右轮静止delay nms 20 DEPUSH 中级机器人制作与编程 第三讲机器人巡航控制 匀变速运动 防止机器人加速过快 for pulseCount 10 pulseCount 200 pulseCount pulseCount 1 P1 1 1 delay nus 1500 pulseCount P1 1 0 P1 0 1 delay nus 1500 pulseCount P1 0 0 delay nms 20 用函数简化运动程序 Forward Left Turn Right Turn Backward voidForward void inti for i 1 i 65 i P1 1 1 delay nus 1700 P1 1 0 P1 0 1 delay nus 1300 P1 0 0 delay nms 20 DEPUSH 中级机器人制作与编程 第三讲机器人巡航控制 高级主题 建立复杂运动 如果要让机器人执行一个更长 更复杂的动作 前面讲到的方法将会很麻烦 用字符数组存储运动动作 用switch语句解释这些动作 charNavigation 10 F L F F R B L B B Q while Navigation address Q switch Navigation address case F Forward break case L Left Turn break case R Right Turn break case B Backward break address switch 表达式 case常量表达式1 语句1 break case常量表达式2 语句2 break case常量表达式n 语句n break default 语句n 1 break switch分支语句一般形式 DEPUSH 中级机器人制作与编程 第四讲输入接口与机器人触觉导航 通过前面两章的学习 你已经掌握如何用单片机的端口来控制机器人的各种运动 当时 连接机器人伺服电机的端口是作为输出使用 从本章开始 单片机端口将作为输入使用 触觉导航 触须 胡须 硬件 安装好胡须的机器人 DEPUSH 中级机器人制作与编程 第四讲输入接口与机器人触觉导航 测试胡须 胡须电路图 intP1 4state void 获取P1 4的状态 return P1 C语言的一种运算符 表达式1 表达式2 表达式3 DEPUSH 中级机器人制作与编程 第四讲输入接口与机器人触觉导航 胡须导航 if P1 4state 0 两边同时碰到 后退 左转两次 右边碰到 后退再左拐 左边碰到 后退再右拐 没有障碍物 前进 DEPUSH 中级机器人制作与编程 第四讲输入接口与机器人触觉导航 当机器人进入墙角时 左胡须触墙 于是它右转 向前行走 右胡须触墙 于是左转前进 又碰到左墙 再次碰到右墙 如果不是你把它从墙角拿出来 它就会一直困在墙角里而出不来 逃离墙角死区 修改程序让机器人碰到上述问题时逃离死区 技巧是记下胡须交替触动的总次数 技巧的关键是程序必须记住每个胡须的前一次触动状态 并和当前触动状态对比 如果状态相反 就在交替总数上加1 如果这个交替总数超过了程序中预先给定的阀值 那么就该做一个 U 型转弯 并且把胡须交替计数器复位 编程实现依赖于if else嵌套语句 if P1 4state P2 3state if old2 P1 4state DEPUSH 中级机器人制作与编程 第五讲机器人红外线导航 使用红外线发射和接收器探测道路 DEPUSH 中级机器人制作与编程 第五讲机器人红外线导航 搭建IR发射和探测器对 左侧和右侧IR组原理图 三极管结构 符号及管脚 DEPUSH 中级机器人制作与编程 for counter 0 counter 38 counter P1 3 1 delay nus 13 P1 3 0 delay nus 13 irDetectLeft P1 5state 第五讲机器人红外线导航 测试IR发射和探测器对 让每个IRLED探测器组工作的关键是发送1毫秒频率38 5kHz的红外信号 然后立刻将IR探测器的输出存储到一个变量中 周期T 26us 频率f 1 T 38 5kHz持续时间t 38T 1ms 变量irDetectLeft存储探测器状态 DEPUSH 中级机器人制作与编程 第五讲机器人红外线导航 函数延时的不精确性 函数调用所需时间是微秒级 与工作要求同级 故延时不精确 空函数 nop void 当微控制器在12MHz晶振下工作时 单片机AT89S52一个时钟周期为 T 1 12 10 6S微控制器操作是用机器周期来计算的 一个机器周期为十二个时钟周期 t 12 T 1 10 6s 1us所以空函数 nop 能产生1us的延时 教学板的晶振选用11 0592MHz 它能产生延时时间是1 08us 比1us有稍许误差 DEPUSH 中级机器人制作与编程 第五讲机器人红外线导航 探测和避开障碍物 用 define语句来简化程序 如 defineLeftIRP1 2 左边红外接收连接到P1 2 defineLeftLaunchP1 3 左边红外发射连接到P1 3在以后的程序中 可以用LeftIR代替P1 2 发射并检测信号 IRLaunch R irDetectRight RightIR 右边接收IRLaunch L irDetectLeft LeftIR 左边接收 红外线导航 与胡须类似 if irDetectLeft 0 DEPUSH 中级机器人制作与编程 第五讲机器人红外线导航 高性能的IR导航 发送脉冲给电机之前检查障碍物 可以大大改善机器人的行走性能 程序可以使用传感器输入为每个瞬间的导航选择最好的机动动作 这样 机器人永远不会走过头 它会找到绕开障碍物的完美路线 成功的走过更加复杂的路线 如果前方有障碍物 机器人会使用脉冲命令避开 然后探测 如果物体还在 再使用另一个脉冲来避开它 机器人能持续使用电机驱动脉冲和探测 直到它绕开障碍物 然后它会继续发向前行走的脉冲 if irDetectLeft 0 使用整型变量pulseLeft和pulseRight来设置发送的脉冲持续时间 DEPUSH 中级机器人制作与编程 第五讲机器人红外线导航 边缘探测 DEPUSH 中级机器人制作与编程 第六讲机器人距离探测 精确的延时 定时 计数器的应用 数组 保存相同类型的若干变量 DEPUSH 中级机器人制作与编程 第六讲机器人距离探测 尾随小车 DEPUSH 中级机器人制作与编程 第六讲机器人距离探测 跟踪条纹带 DEPUSH 中级机器人制作与编程 第七讲机器人中URAT的应用 通过串口发送数据 通过串口接收数据 串口通讯UART UniversalAsynchronousReceiver Transmitter 是一种能够把二进制数据按位 bit 传送的通信方式 AT89S52拥有1个串行通信接口UART 其主要功能如下 在输出数据时 把数据进行并 串转换 即从计算机接收 位并行数据并发送到串口输出 在输入数据时 把数据进行串 并转换 即从串口读入外部串行数据并将其转换为 位并行数据送到计算机 DEPUSH 中级机器人制作与编程 第七讲机器人中URAT的应用 RS232电平与TTL电平转换 TTL Tansistor TransistorLogic 是指三极管 三极管逻辑电路 很多单片机 包括你所使用的AT89S52都是用的这种标准 它的逻辑 1 电平是5V 逻辑 0 电平是0V RS232接口是1970年由美国电子工业协会 EIA 联合贝尔系统 调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准 它的逻辑 1 电平是 5V 15V 逻辑 0 电平是 5V 15V RS232RXDTXDGND AT89S52TXDRXDGND DEPUSH 中级机器人制作与编程 第七讲机器人中URAT的应用 编写串口通信程序 头文件uart h的实现过程 串口的初始化 设置定时器工作方式 设置串口工作方式 设置波特率 启动定时器 开串口中断 开总中断 DEPUSH 中级机器人制作与编程 第八讲机器人中LCD的应用 LCD LiquidCrystalDisplay 显示器的介绍 1602LCD实物图 字符型液晶显示模块是一种专门用于显示字母 数字 符号等点阵式液晶显示模块 由若干5

温馨提示

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

评论

0/150

提交评论