内容简介
第1讲 机器人大脑:从BS2微控制器到C51单片机
单片机和微控制器
学习单片机的意义
C51系列单片机
机器人与C51单片机
任务1 获得软件
任务2 安装软件
安装Keil μVision2
任务3 硬件连接
串口的连接
USBASP下载器的连接
电源的连接
给教学板和单片机进行通电检查
任务4 第一个程序
创建与编辑你的第一个程序
例程:HelloRobot.c
程序调试
下载可执行文件到单片机
用串口调试软件查看单片机输出信息
HelloRobot.c是如何工作的
printf函数
HelloRobotYourTurn.c是如何工作的
任务5 做完实验关断电源
第2讲 C51接口与伺服电机控制
C51单片机的输入/输出接口
任务1 单灯闪烁控制
LED电路元件
LED电路搭建
例程:HighLowLed.c
HighLowLed.c是如何工作的
任务2 机器人伺服电机控制信号
例程:BothServoClockwise.c
任务3 计数并控制循环次数
例程:ControlServoRunTimes.c
例程:BothServosThreeSeconds.c
任务4 用计算机来控制机器人的运动
例程:ControlServoWithComputer.c
ControlServoW ithComputer.c是如何工作的
第3讲 C语言函数与机器人巡航控制
任务1 基本巡航动作
例程:RobotForwardThreeSeconds.c
RobotForwardThreeSeconds.c是如何工作的
向后走、原地转弯和绕轴旋转
例程:ForwardLeftRightBackward.c
任务2 匀加速/减速运动
编写匀加速运动程序
例程:StartAndStopWithRamping.c
任务3 用函数调用简化运动程序
例程:MovementsWithFunctions.c
例程:MovementsWithOneFuntion.c
任务4 高级主题——用数组建立复杂运动
字符型数据
数组
例程:NavigationWithSwitch.c
NavigationWithSwitch.c是如何工作的
例程:NavigationWithValues.c
第4讲 C51接口与触觉导航
触觉导航与单片机输入接口
任务1 安装并测试机器人“胡须”
安装“胡须”
测试“胡须”
例程:TestWhiskers.c
位操作符
if语句
?操作符
任务2 通过“胡须”导航
编程使机器人基于“胡须”导航
关系与逻辑运算符
例程:RoamingWithWhiskers.c
“胡须”导航机器人怎样行走
任务3 机器人进入死区后的人工智能决策
编程逃离墙角死区
例程:EscapingCorners.c
EscapingCorners.c是如何工作的
第5讲 C51接口与红外线导航
使用红外线发射和接收器件探测道路
红外前灯
任务1 搭建并测试IR发射和探测器对
元件清单
搭建红外线前灯
这里为何要使用三极管9013
测试红外发射探测器
例程:TestLeftIrPair.c
排错
函数延时的不精确性
任务2 探测和避开障碍物
改变“胡须”程序,使其适用于IR探测和躲避
例程:RoamingWithIr.c
任务3 高性能的IR导航
在每个脉冲之间采样以避免碰撞
例程:FastIrRoaming.c
FastIrRoaming.c是如何工作的
任务4 俯视的探测器
推荐材料
用绝缘带模拟桌子的边沿
边沿探测编程
例程:AvoidTableEdge.c
AvoidTableEdge.c是如何工作的
第6讲 C51定时器与机器人的距离检测
用同样的IR LED/探测电路检测距离
推荐工具和原料
任务1 定时/计数器的运用
定时/计数器的控制
工作模式
定时/计数器初值的计算
例程:TimeApplication.c
TimeApplication.c是如何工作的
中断
中断优先级
任务2 测试扫描频率
红外线探测器频率探测
用频率扫描进行编程做距离探测
例程:TestLeftFrequencySweep.c
TestLeftFrequencySweep.c是如何工作的
例程:DisplayBothDistances.c
任务3 尾随小车
对尾随车编程
例程:FollowingRobot.c
FollowingRobot.c是如何工作的
任务4 跟踪条纹带
搭建和测试路线
需要的材料
测试条纹带
绝缘带路径排错
编程跟踪条纹带
例程:StripeFollowingRobot.c
第7讲 C51的UART与机器人串口通信
串口控制寄存器SCON
什么是波特率
波特率的计算
RS232电平与TTL电平转换
任务1 编写串口通信程序
例程:uart.h
uart.h是如何工作的
存储器结构
串口工作流程
例程:HelloRobot.c——printf(“Hello,this is a message from your Robot\n”)
例程:Control ServoWithComputer.c——scanf(“6818992”,&PulseDuration)
第8讲 C51显示接口编程与机器人应用
LED数码管的介绍
任务1 数码管显示
任务目的
任务要求
元件清单
电路设计
阴极数码管显示的源程序
电路实物
LCD显示器的介绍
任务2 认识LCD显示器
LCD显示器与C51单片机的连接
LCD控制器接口说明
任务3 编写LCD模块驱动程序
元件清单
线路连接
例程:LCDdisplay.c
LCDdisplay.c是如何工作的
指针
任务4 用LCD显示机器人运动状态
C语言的编译预处理
例程:MoveWithLCDDisplay.c
MoveWithLCDDisplay.c是如何工作的
第9讲 多传感器智能机器人
任务1 多传感器信息与C语言结构体的使用和编程
结构体
例程:IRRoaming WithWithStructLCDDisplay.c
IRRoamingWithWithStructLCDDisplay.c是如何工作的
任务2 智能机器人的行为控制策略和编程
例程:NavigationWithSensors.c
NavigationWithSensors.c是如何工作的
第10讲 机器人循线竞赛
竞赛任务
任务1 QTI传感器及其通信接口
任务2 安装QTI传感器到机器人前端
任务3 编写QTI传感器的测试程序
Test4QTI.c是如何工作的
任务4 设计算法实现机器人无接触传感器游中国
RobotTourChina.c是如何工作的
执行调试
任务5 修改算法实现机器人游中国
任务6 用数组实现机器人游中国比赛
任务7 改进运动执行程序提升执行的可靠性
函数
附录A C语言概要归纳
C语言概述
数据类型、运算符与表达式
分支结构程序
循环控制
数组
函数
预处理命令
指针
结构体
位运算
附录B 微控制器原理归纳
引言
一些概念
中央处理器(CPU)
RAM和ROM
地址总线、数据总线和控制总线
微处理器和微控制器
附录C 无焊锡面包板
附录D LCD模块电路
附录E 本书所使用的机器人零配件清单