第1讲 机器人大脑:从BS2微控制器到C51单片机 1
学习情境 1
单片机和微控制器 1
学习单片机的意义 2
C51系列单片机 2
机器人与C51单片机 4
任务1 获得软件 5
1.Keil uVision2 IDE集成开发环境 5
2.SL ISP软件下载工具 5
3.串口调试软件 5
任务2 安装软件 5
安装Keil u Vision2 5
任务3 硬件连接 6
串口的连接 6
ISP下载线的连接 6
电池的安装 6
给教学板和单片机进行通电检查 7
任务4 第一个程序 7
创建与编辑你的第一个程序 7
例程:HelloRoBot.c 9
下载可执行文件到单片机 11
用串口调试软件查看单片机输出信息 12
HelloRoBot.c是如何工作的 13
printf函数 14
该你了——例程:HelloRoBotYourTurn.c 14
HelloRoBotYourTurn.c是如何工作的 15
任务5 做完实验关断电源 18
工程素质和技能归纳 18
科学精神的培养 19
第2讲 C51接口与伺服电机控制 20
学习情境 20
C51单片机的输入/输出接口 20
任务1 单灯闪烁控制 21
LED电路元件 21
LED电路搭建 21
例程:HighLowLed.c 22
HighLowLed.c是如何工作的 22
该你了——让另一个LED闪烁 25
任务2 机器人伺服电机控制信号 26
该你了——让机器人的两个轮子全速旋转 28
例程:BothServoClockwise.c 28
任务3 计数并控制循环次数 29
该你了——不同的初始值和终值及计数步长 30
例程:ControlServoRunTimes.c 31
例程:BothServosThreeSeconds.c 33
任务4 用计算机来控制机器人的运动 34
例程:ControlServoWithComputer.c 34
ControlServoWithComputer.c是如何工作的 35
工程素质和技能归纳 36
科学精神的培养 37
第3讲 C语言函数与机器人巡航控制 38
学习情境 38
任务1 基本巡航动作 38
例程:RobotForwardThreeSeconds.c 39
RobotForwardThreeSeconds.c是如何工作的 39
该你了——调节距离和速度 40
向后走,原地转弯和绕轴旋转 40
例程:ForwardLeftRightBackward.c 41
该你了——以一个轮子为支点旋转 43
任务2 匀加速/减速运动 44
编写匀加速运动程序 44
例程:StartAndStopWithRamping.c 45
该你了 46
任务3 用函数调用简化运动程序 47
例程:MovementsWithFunctions.c 50
例程:MovementsWithOneFuntion.c 52
任务4 高级主题——用数组建立复杂运动 53
字符型数据 54
数组 55
例程:NavigationWithSwitch.c 57
NavigationWithSwitch.c是如何工作的 59
例程:NavigationWithValues.c 60
该你了——设计你自己的程序 62
工程素质和技能归纳 62
科学精神的培养 62
第4讲 C51接口与触觉导航 63
学习情境 63
触觉导航与单片机输入接口 63
任务1 安装并测试机器人胡须 64
安装胡须 64
测试胡须 65
例程:TestWhiskers.c 65
位操作符 66
if语句 67
?操作符 67
任务2 通过胡须导航 70
编程使机器人基于胡须导航 70
关系与逻辑运算符 71
例程:RoamingWithWhiskers.c 72
胡须导航机器人怎样行走 75
该你了 75
任务3 机器人进入死区后的人工智能决策 76
编程逃离墙角死区 76
例程:EscapingCorners.c 77
EscapingCorners.c是如何工作的 80
该你了 81
工程素质和技能归纳 81
科学精神的培养 81
第5讲 C51接口与红外线导航 82
学习情境 82
使用红外线发射和接收器件探测道路 82
红外前灯 82
任务1 搭建并测试IR发射和探测器对 83
元件清单 83
搭建红外线前灯 83
这里为何要使用三极管9013 85
测试红外发射探测器 85
例程:TestLeftIrPair.c 86
排错 87
函数延时的不精确性 88
该你了 88
任务2 探测和避开障碍物 88
改变触须程序使其适用于IR检测和躲避 89
例程:RoamingWithIr.c 90
任务3 高性能的IR导航 93
在每个脉冲之间采样以避免碰撞 94
例程:FastIrRoaming.c 94
FastIrRoaming.c是如何工作的 96
该你了 97
任务4 俯视的探测器 98
推荐材料 98
用绝缘带模拟桌子的边沿 98
边沿探测编程 99
例程:AvoidTableEdge.c 100
AvoidTableEdge.c是如何工作的 102
该你了 103
工程素质和技能归纳 104
科学精神的培养 104
第6讲 C51定时器与机器人的距离检测 105
学习情境 105
用同样的IR LED/探测电路检测距离 105
推荐工具和原料 105
任务1 定时/计数器的运用 105
定时/计数器的控制 106
工作模式 107
定时/计数器初值的计算 107
例程:TimeApplication.c 107
TimeApplication.c是如何工作的 108
中断 109
中断优先级 110
该你了——调整定时器时间 110
任务2 测试扫描频率 111
红外线探测器频率探测 111
用频率扫描进行编程做距离探测 111
例程:TestLeftFrequencySweep.c 112
TestLeftFrequencySweep.c是如何工作的 113
该你了——测试右边的IR LED/探测器 115
例程:DisplayBothDistances.c 115
该你了——更多的距离测试 115
任务3 尾随小车 115
对尾随车编程 117
例程:FollowingRobot.C 118
FollowingRobot.c是如何工作的 121
该你了 121
任务4 跟踪条纹带 122
搭建和测试路线 122
需要的材料 122
测试条纹带 123
绝缘带路径排错 124
编程跟踪条纹带 125
例程:StripeFollowingRobot.c 125
第7讲 C51的UART与机器人串口通信 127
学习情境 127
串口控制寄存器SCON 128
什么是波特率 128
波特率的计算 128
RS232电平与TTL电平转换 129
任务1 编写串口通信程序 130
例程:uart.h 130
uart.h是如何工作的 133
存储器结构 133
该你了——电脑的测试 134
串口工作流程 134
例程:HelloRoBot.c——printf("Hello,this is a message from your Robot\n") 135
例程:ControlServoWithComputer.c——scanf("%d",&PulseDuration) 135
工程素质和技能归纳 135
科学精神的培养 136
第8讲 C51显示接口编程与机器人应用 137
学习情境 137
LCD显示器的介绍 137
任务1 认识LCD显示器 138
LCD显示器与C51单片机的连接 138
LCD控制器接口说明 139
任务2 编写LCD模块驱动程序 141
元件清单 141
线路连接 141
例程:LCDdisplay.c 142
LCDdiaplay.c是如何工作的 146
指针 146
任务3 用LCD显示机器人运动状态 148
C语言的编译预处理 148
例程:MoveWithLCDDisplay.c 152
MoveWithLCDDisplay.c是如何工作的 154
该你了 155
工程素质和技能归纳 155
科学精神的培养 155
第9讲 多传感器智能机器人 156
学习情境 156
任务1 多传感器信息与C语言结构体的使用和编程 156
结构体 156
例程:IRRoamingWithWithStructLCDDisplay.c 160
IRRoamingWithWithStructLCDDisplay.c是如何工作的 161
该你了 165
任务2 智能机器人的行为控制策略和编程 165
例程:NavigationWithSensors.c 167
NavigationWithSensors.c是如何工作的 169
该你了 170
工程素质和技能归纳 170
科学精神的培养 170
附录A C语言概要归纳 171
C语言概述 171
数据类型、运算符与表达式 171
分支结构程序 173
循环控制 175
数组 177
函数 178
预处理命令 178
指针 180
结构体 181
位运算 182
附录B 微控制器原理归纳 184
引言 184
一些概念 184
中央处理器(CPU) 185
RAM和ROM 186
地址总线、数据总线和控制总线 186
微处理器和微控制器 187
附录C 无焊锡面包板 188
附录D LCD模块电路 191
附录E 本书所使用的机器人零配件清单 192