第1讲 从Arduino到C51单片机(1) 单片机和微控制器(1) 学习单片机的意义(1) C51系列单片机(2) 机器人与C51单片机(3) 任务1 获得软件(4) 任务2 安装软件(5) 安装Keil μVision4(5) 任务3 硬件连接(5) 连接到计算机上(5) 电源的连接(6) 对教学板和单片机进行通电检查(6) 对教学板和单片机进行通信连接(6) 任务4 个程序(7) 创建与编辑你的个程序(7) 个C语言程序:HelloRobot.c(9) 编译你的个程序(10) 程序调试(11) 下载可执行文件到单片机(12) 用串口调试软件查看单片机输出信息(13) HelloRobot.c是如何工作的(13) printf函数(14) “while(1);”的作用(15) HelloRobotYourTurn.c是如何工作的(16) 任务5 做完实验关断电源(18) 第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(33) 任务4 用计算���来控制机器人的运动(34) 例程:ControlServoWithComputer.c(34) ControlServoWithComputer.c是如何工作的(35) 第3讲 C语言函数与机器人运动控制(38) 任务1 基本运动动作(38) 例程:RobotForwardThreeSeconds.c(39) RobotForwardThreeSeconds.c是如何工作的(39) 向后走、原地转弯和绕轴旋转(40) 例程:ForwardLeftRightBackward.c(41) 任务2 匀加速/减速运动(44) 编写匀加速运动程序(44) 例程:StartAndStopWithRamping.c(45) 任务3 用函数调用简化运动程序(47) 例程:MovementsWithFunctions.c(50) 例程:MovementsWithOneFuntion.c(52) 任务4 **主题—用数组建立复杂运动(53) 字符型数据(54) 数组(55) 例程:NavigationWithSwitch.c(57) NavigationWithSwitch.c是如何工作的(59) 例程:NavigationWithValues.c(60) 第4讲 C51接口与触觉导航(63) 触觉导航与单片机输入接口(63) 任务1 安装并测试机器人“胡须”(63) 安装“胡须”(64) 测试“胡须”(65) 例程:TestWhiskers.c(65) 位操作符(66) if语句(67) ?操作符(67) 任务2 通过“胡须”导航(70) 编程使机器人基于“胡须”导航(70) 关系与逻辑运算符(71) 例程:RoamingWithWhiskers.c(72) “胡须”导航机器人怎样行走(75) 任务3 机器人进入死区后的人工智能决策(75) 编程逃离墙角死区(75) 例程:EscapingCorners.c(76) EscapingCorners.c是如何工作的(79) 第5讲 C51接口与红外线导航(83) 使用红外线发射和接收器件探测道路(82) 红外前灯(82) 任务1 搭建并测试红外发射和检测器对(83) 元件清单(83) 搭建红外前灯(83) 测试红外发射和检测器对(84) 例程:TestLeftIrPair.c(85) 排错(87) 函数延时的不**性(87) 任务2 探测和避开障碍物(88) 改变“胡须”程序,使它适用于IR检测和机器人躲避(88) 例程:RoamingWithIr.c(89) 任务3 高性能的IR导航(93) 在每个脉冲信号之间采样以避免碰撞(93) 例程:FastIrRoaming.c(93) FastIrRoaming.c是如何工作的(95) 任务4 俯视的红外发射和检测器对(97) **材料(97) 用绝缘带模拟桌子的边沿(98) 编程检测边沿(98) 例程:AvoidTableEdge.c(99) AvoidTableEdge.c是如何工作的(101) 第6讲 C51定时器与机器人的距离检测(104) 用同样的IR组电路检测距离(104) **工具和材料(104) 任务1 定时/计数器的运用(104) 定时/计数器的控制(105) 工作模式(105) 定时/计数器初值的计算(106) 例程:TimeApplication.c(106) TimeApplication.c是如何工作的(107) 中断(108) 中断优先级(108) 任务2 测试扫描频率(109) 红外检测器频率检测(109) 用频率扫描法进行编程,做距离检测(110) 例程:TestLeftFrequencySweep.c(110) TestLeftFrequencySweep.c是如何工作的(112) 例程:DisplayBothDistances.c(114) 任务3 尾随小车(114) 对尾随车编程(116) 例程:FollowingRobot.c(117) FollowingRobot.c是如何工作的(119) 任务4 跟踪条纹带(121) 搭建和测试路径(121) 需要的材料(121) 测试条纹带(121) 绝缘带路径排错(123) 编程跟踪条纹带(123) 例程:StripeFollowingRobot.c(124) 第7讲 C51单片机的UART与机器人串口通信(126) 串口控制寄存器SCON(127) 什么是波特率(127) 波特率的计算(128) 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) 例程:ControlServoWithComputer.c—scanf("%d",&PulseDuration)(134) 第8讲 C51单片机显示接口编程与机器人应用(136) LED数码管(136) 任务1 数码管显示(136) 元件清单(138) 电路设计(138) 共阴极数码管显示的源程序(140) 电路连接(141) 任务2 认识LCD显示器(142) 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) 例程:IRRoamingWithWithStructLCDDisplay.c(164) IRRoamingWithWithStructLCDDisplay.c是如何工作的(165) 任务2 智能机器人的行为控制策略和编程(169) 例程:NavigationWithSensors.c(171) NavigationWithSensors.c是如何工作的(173) 第10讲 机器人循线竞赛(175) 任务1 QTI传感器及其通信接口(176) 任务2 安装QTI传感器到机器人前端(177) 任务3 编写QTI传感器的测试程序(178) 测试程序:Test4QTI.c(179) Test4QTI.c是如何工作的(180) 任务4 设计算法实现机器人无接触传感器游中国(182) 例程:RobotTourChina.c(183) 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 本书所使用的机器人零配件清单(228)