第1讲 机器人大脑:从BS2微控制器到C51单片机 1
单片机和微控制器 1
学习单片机的意义 2
C51系列单片机 2
机器人与C51单片机 4
任务1 获得软件 4
任务2 安装软件 5
安装Keil μVision2 5
任务3 硬件连接 5
串口的连接 6
USBASP下载器的连接 6
电源的连接 6
给教学板和单片机进行通电检查 6
任务4 第一个程序 7
创建与编辑你的第一个程序 7
例程:HelloRobot.c 9
程序调试 11
下载可执行文件到单片机 12
用串口调试软件查看单片机输出信息 13
HelloRobot.c是如何工作的 14
printf函数 14
HelloRobotYourTurn.c是如何工作的 16
任务5 做完实验关断电源 19
第2讲 C51接口与伺服电机控制 20
C51单片机的输入/输出接口 20
任务1 单灯闪烁控制 21
LED电路元件 21
LED电路搭建 21
例程:HighLowLed.c 22
HighLowLed.c是如何工作的 22
任务2 机器人伺服电机控制信号 26
例程:BothServoClockwise.c 28
任务3 计数并控制循环次数 29
例程:ControlServoRunTimes.c 31
例程:BothServosThreeSeconds.c 32
任务4 用计算机来控制机器人的运动 33
例程:ControlServoWithComputer.c 34
ControlServoW ithComputer.c是如何工作的 35
第3讲 C语言函数与机器人巡航控制 37
任务1 基本巡航动作 37
例程:RobotForwardThreeSeconds.c 38
RobotForwardThreeSeconds.c是如何工作的 38
向后走、原地转弯和绕轴旋转 39
例程:ForwardLeftRightBackward.c 40
任务2 匀加速/减速运动 43
编写匀加速运动程序 43
例程:StartAndStopWithRamping.c 44
任务3 用函数调用简化运动程序 46
例程:MovementsWithFunctions.c 49
例程:MovementsWithOneFuntion.c 51
任务4 高级主题——用数组建立复杂运动 52
字符型数据 53
数组 54
例程:NavigationWithSwitch.c 56
NavigationWithSwitch.c是如何工作的 58
例程:NavigationWithValues.c 59
第4讲 C51接口与触觉导航 62
触觉导航与单片机输入接口 62
任务1 安装并测试机器人“胡须” 63
安装“胡须” 63
测试“胡须” 64
例程:TestWhiskers.c 64
位操作符 65
if语句 66
?操作符 66
任务2 通过“胡须”导航 69
编程使机器人基于“胡须”导航 69
关系与逻辑运算符 70
例程:RoamingWithWhiskers.c 71
“胡须”导航机器人怎样行走 74
任务3 机器人进入死区后的人工智能决策 75
编程逃离墙角死区 75
例程:EscapingCorners.c 76
EscapingCorners.c是如何工作的 79
第5讲 C51接口与红外线导航 81
使用红外线发射和接收器件探测道路 81
红外前灯 81
任务1 搭建并测试IR发射和探测器对 82
元件清单 82
搭建红外线前灯 82
这里为何要使用三极管9013 84
测试红外发射探测器 84
例程:TestLeftIrPair.c 85
排错 86
函数延时的不精确性 87
任务2 探测和避开障碍物 87
改变“胡须”程序,使其适用于IR探测和躲避 88
例程:RoamingWithIr.c 89
任务3 高性能的IR导航 92
在每个脉冲之间采样以避免碰撞 93
例程:FastIrRoaming.c 93
FastIrRoaming.c是如何工作的 95
任务4 俯视的探测器 97
推荐材料 97
用绝缘带模拟桌子的边沿 97
边沿探测编程 98
例程:AvoidTableEdge.c 99
AvoidTableEdge.c是如何工作的 101
第6讲 C51定时器与机器人的距离检测 104
用同样的IR LED/探测电路检测距离 104
推荐工具和原料 104
任务1 定时/计数器的运用 104
定时/计数器的控制 105
工作模式 106
定时/计数器初值的计算 106
例程:TimeApplication.c 106
TimeApplication.c是如何工作的 107
中断 108
中断优先级 109
任务2 测试扫描频率 110
红外线探测器频率探测 110
用频率扫描进行编程做距离探测 110
例程:TestLeftFrequencySweep.c 111
TestLeftFrequencySweep.c是如何工作的 112
例程:DisplayBothDistances.c 114
任务3 尾随小车 114
对尾随车编程 116
例程:FollowingRobot.c 117
FollowingRobot.c是如何工作的 120
任务4 跟踪条纹带 121
搭建和测试路线 121
需要的材料 121
测试条纹带 122
绝缘带路径排错 123
编程跟踪条纹带 124
例程:StripeFollowingRobot.c 124
第7讲 C51的UART与机器人串口通信 126
串口控制寄存器SCON 127
什么是波特率 127
波特率的计算 127
RS232电平与TTL电平转换 128
任务1 编写串口通信程序 129
例程:uart.h 129
uart.h是如何工作的 132
存储器结构 132
串口工作流程 133
例程:HelloRobot.c——printf(“Hello,this is a message from your Robot\n”) 134
例程:Control ServoWithComputer.c——scanf(“6818992”,&PulseDuration) 134
第8讲 C51显示接口编程与机器人应用 136
LED数码管的介绍 136
任务1 数码管显示 136
任务目的 138
任务要求 138
元件清单 138
电路设计 138
阴极数码管显示的源程序 140
电路实物 141
LCD显示器的介绍 142
任务2 认识LCD显示器 142
LCD显示器与C51单片机的连接 142
LCD控制器接口说明 143
任务3 编写LCD模块驱动程序 145
元件清单 146
线路连接 146
例程:LCDdisplay.c 146
LCDdisplay.c是如何工作的 150
指针 151
任务4 用LCD显示机器人运动状态 152
C语言的编译预处理 152
例程:MoveWithLCDDisplay.c 156
MoveWithLCDDisplay.c是如何工作的 158
第9讲 多传感器智能机器人 160
任务1 多传感器信息与C语言结构体的使用和编程 160
结构体 160
例程:IRRoaming WithWithStructLCDDisplay.c 164
IRRoamingWithWithStructLCDDisplay.c是如何工作的 165
任务2 智能机器人的行为控制策略和编程 169
例程:NavigationWithSensors.c 171
NavigationWithSensors.c是如何工作的 173
第10讲 机器人循线竞赛 175
竞赛任务 175
任务1 QTI传感器及其通信接口 176
任务2 安装QTI传感器到机器人前端 177
任务3 编写QTI传感器的测试程序 178
Test4QTI.c是如何工作的 180
任务4 设计算法实现机器人无接触传感器游中国 182
RobotTourChina.c是如何工作的 186
执行调试 187
任务5 修改算法实现机器人游中国 188
任务6 用数组实现机器人游中国比赛 193
任务7 改进运动执行程序提升执行的可靠性 199
函数 203
附录A C语言概要归纳 208
C语言概述 208
数据类型、运算符与表达式 208
分支结构程序 210
循环控制 212
数组 214
函数 215
预处理命令 215
指针 217
结构体 218
位运算 219
附录B 微控制器原理归纳 221
引言 221
一些概念 221
中央处理器(CPU) 222
RAM和ROM 223
地址总线、数据总线和控制总线 223
微处理器和微控制器 224
附录C 无焊锡面包板 225
附录D LCD模块电路 228
附录E 本书所使用的机器人零配件清单 229