第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)controlservowithcomputer.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)例程:controlservowithcomputer.c——scanf("%d",&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)例程:irroamingwithwithstructlcddisplay.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模块