第1章 从哪儿开始你的单片机学习 1
1.1 神秘武器的得来 1
1.2 单片机的身世 2
1.3 单片机都能干什么 3
1.4 神秘老人的法宝 4
1.4.1 实验开发板 4
1.4.2 下载线 5
1.4.3 电源 6
1.4.4 编程软件 6
1.4.5 下载软件 7
1.5 一个古老的神灯 8
1.6 互动环节 11
第2章 认识一下著名的单片机先生 12
2.1 单片机的外在形象 12
2.1.1 要工作就得吃饭 13
2.1.2 庞大的组织要有个总指挥 13
2.1.3 控制信号引脚 13
2.1.4 输入/输出引脚P0、P1、P2、P3 14
2.2 单片机丰富的内“芯”世界 15
2.2.1 好东西都放哪儿了 15
2.2.2 “芯”里还有别人吗 19
2.3 互动环节 20
第3章 尝试着用语言与单片机交流 23
3.1 一个LED灯闪烁 23
3.2 跑马灯 29
3.3 LED万能闪烁程序 36
第4章 LED数码管的应用 39
4.1 LED数码管显示原理及显示方式 39
4.2 LED数码管分类及驱动 39
4.3 点亮一个LED数码管 40
4.4 LED数码管显示段码 41
4.5 静态显示 42
4.6 动态显示生日 43
4.7 0~99循环自加计数器 46
4.8 其它数码管驱动电路 54
第5章 引发事端的按键 56
5.1 按键控制LED小灯怎么失灵了 57
5.1.1 硬件电路设计及原理分析 57
5.1.2 软件设计思想及代码分析 57
5.1.3 究竟错在哪里 59
5.2 对付按键抖动 60
5.2.1 公园的一个入口CALL与多个出口RET 63
5.2.2 RET与SJMP真的都能找回家吗 64
5.2.3 CALL与RET是天生一对儿 65
5.3 按键与数码管共舞 68
5.3.1 2个按键控制数码管显示2个数字 68
5.3.2 按键控制数码管数据加减 71
5.3.3 数码管熄灭——按键在捣鬼 74
5.3.4 按键与数码管和睦相处 74
5.3.5 数码管怎么又不听按键的了 75
5.4 按键进阶 78
第6章 定时器/计数器的应用 80
6.1 定时器/计数器工作原理 80
6.1.1 定时器/计数器在生活中的原型 80
6.1.2 定时器/计数器的定时和计数是怎么实现的 81
6.1.3 定时器/计数器能干什么 81
6.2 控制定时器/计数器工作的四大金刚 82
6.2.1 计数容器TH0、TL0及TH1、TL1 82
6.2.2 设置定时器/计数器工作方式寄存器TMOD 82
6.2.3 控制定时器/计数器工作寄存器TCON 84
6.2.4 中断允许寄存器IE 85
6.3 稍稍理一理思路 87
6.4 定时器用于定时 87
6.4.1 查询法定时50ms实现一个LED小灯闪烁 88
6.4.2 中断法定时50ms实现一个LED小灯闪烁 91
6.4.3 中断PK查询 94
6.4.4 延长定时时间 96
6.4.5 数字电子时钟 99
6.5 定时器定时和程序中的延时子程序DELAY有何不同 108
6.6 定时器进阶 108
6.6.1 饭店牌匾上的彩灯 108
6.6.2 预约定时做饭 109
6.6.3 上课铃声真准确 109
第7章 会数数的定时器/计数器 110
7.1 定时器/计数器T1用于计数 110
7.1.1 会数心跳次数的T1 110
7.1.2 没有心率检测传感器怎么做这个实验呢 113
7.1.3 比较完整的数字人体心率检测仪 119
7.2 计数器进阶 124
7.2.1 测量电机转速 124
7.2.2 出租车计价系统 124
7.2.3 每瓶装100粒药丸 124
第8章 外部引脚P3.2和P3.3的特权 125
8.1 生活中的那些事儿 125
8.2 谁在控制中断 127
8.2.1 我可以把手机关了 127
8.2.2 中断允许控制寄存器IE 127
8.2.3 控制寄存器TCON 128
8.2.4 谁惹我我找他家去 129
8.3 外部中断控制LED闪烁 129
8.3.1 低电平触发中断控制LED闪烁 129
8.3.2 下降沿触发中断控制LED闪烁 133
8.3.3 2个外部中断低电平触发控制2个LED闪烁 134
8.3.4 IP改变土匪窝儿里二当家的地位 138
8.3.5 土匪窝儿里的新规让二当家的也有喝酒的份儿 140
8.3.6 外中断触发方式与中断级别 143
8.3.7 P3.2和P3.3的特权不是只能用来控制LED小灯 144
8.4 外部中断再做心率检测仪 144
8.5 智能小车寻线跑的背后 149
8.5.1 小车顺着黑线跑 149
8.5.2 小车上显示行驶时间 156
8.5.3 小车上的数码管时而熄灭且时间不准 160
8.5.4 智能车还可以数出沿途遇到的铁片数量 162
8.5.5 需要更多外部中断该怎么办 167
8.6 外部中断进阶 168
第9章 串行口及其应用 169
9.1 了解几点知识 169
9.1.1 并行通信与串行通信 169
9.1.2 异步通信与同步通信 170
9.1.3 串行通信的制式 170
9.2 由传球悟串行通信 170
9.3 51单片机串行口 171
9.3.1 数据格式的设置 171
9.3.2 波特率的设置 173
9.3.3 成功设置串口初始化的步骤总结 174
9.4 两片51单片机“眉来眼去” 174
9.4.1 查询方式收发数据 174
9.4.2 中断方式收发数据 178
9.5 上位机与单片机相“恋” 180
9.5.1 心率检测仪数据上传PC机 181
9.5.2 上位机控制电机起停 185
9.6 串口进阶 187
9.6.1 简易数字示波器 187
9.6.2 多路温度监控系统 187
第10章 我在Keil环境下开始学习C51 188
10.1 KeilμVision2集成开发环境 188
10.1.1 Keil软件的安装 189
10.1.2 Keil软件的使用 191
10.2 C语言的基本结构 196
10.3 标识符和关键字 198
10.4 从储物盒想到数据类型 200
10.4.1 C语言中的数据类型 201
10.4.2 常量与变量 201
10.4.3 整型数据 203
10.4.4 字符型数据 204
10.4.5 实型数据 205
10.4.6 Keil增加的数据类型 206
10.4.7 从仓库谈到数据的存储类型 207
10.4.8 巧用typedef定义类型 212
第11章 运算符、表达式及程序基本结构 214
11.1 运算符 214
11.1.1 赋值运算符 214
11.1.2 算术运算符 215
11.1.3 增量和减量运算符 215
11.1.4 关系运算符 217
11.1.5 逻辑运算符 219
11.1.6 位运算符 221
11.1.7 复合赋值运算符 223
11.1.8 条件运算符 223
11.1.9 指针和地址运算符 223
11.1.10 强制类型转换运算符 224
11.2 C51程序的基本结构 226
11.2.1 按部就班——顺序结构 226
11.2.2 人生的十字路口——选择结构 226
11.2.3 小毛驴拉完磨就放你回去——循环结构 232
第12章 C51构造数据类型与函数 241
12.1 数组 241
12.1.1 一维数组让我想到一行大树 241
12.1.2 二维数组让我想到几排民房 243
12.2 指针 247
12.2.1 环顾左右而言它——指针究竟在指谁 247
12.2.2 万能LED闪烁的实现 249
12.2.3 数码管显示数组中的内容 251
12.2.4 具体程序代码如下(指针与二维数组共同演绎万能流水灯) 252
12.3 百家争鸣说结构体 253
12.3.1 结构体类型的声明和变量的定义 253
12.3.2 打印3个学生的基本信息 255
12.3.3 如何用指针操作结构体变量 258
12.4 内存共享说共用体 260
12.4.1 用共用体变量点亮小灯 261
12.4.2 共用体在TCL2543中的应用 263
第13章 51单片机内部资源的应用 267
13.1 I/O口应用简介 267
13.1.1 古老神灯再现 267
13.1.2 数码管显示我的生日 270
13.1.3 活学活用独立按键 272
13.2 定时器计数器 280
13.2.1 定时器控制小灯的闪烁 280
13.2.2 延长定时器时间的方法 283
13.2.3 用计数器计脉搏跳动的次数 285
13.3 实用的外部中断 286
13.4 重温串行通信 288
13.5 内部资源的综合实验 292
13.5.1 数字电子时钟(一) 293
13.5.2 数字电子时钟(二) 297
13.5.3 心率测试仪器 301
第14章 51单片机外部扩展资源的应用 306
14.1 4×4矩阵键盘的应用 306
14.2 点阵LED显示器的应用 310
14.2.1 74LS138译码器的介绍 311
14.2.2 74HC595的介绍 312
14.2.3 LED点阵显示屏程序设计 313
14.3 模/数转换器ADC0832的应用 316
14.3.1 ADC0832模/数转换器的介绍 317
14.3.2 数字电压表 319
14.4 模拟温度传感器AD590 323
14.4.1 温度计硬件电路设计 323
14.4.2 温度计软件设计 325
14.5 数/模转换器DAC0832的应用 329
14.5.1 DAC0832的介绍 330
14.5.2 引脚说明 330
14.5.3 简易波形发生器 331
14.6 数/模转换器MAX531的应用 335
14.6.1 MAX531的介绍 335
14.6.2 MAX531的引脚说明 335
14.6.3 键控高精度波形发生器 339
第15章 实时多任务操作系统RTX51 344
15.1 RTX51、单片机与我就好比管理制度、员工与老板 344
15.2 你在家给老婆做饭吗 345
15.3 没有操作系统的日子 346
15.4 操作系统我们爱你 350
15.4.1 main()悄然离去 353
15.4.2 每个任务都可以自生自灭 354
15.4.3 阿范是培训班中所有学员共有的服务者 354
15.4.4 RTX51 Tiny的系统函数 358
15.4.5 实践才有话语权 363
附录A 特殊功能寄存器 366
附录B MCS-51单片机指令表 370
附录C C51库函数 375
附录D 三极管及其典型应用简介 391
D.1 开场白 391
D.2 三极管——电子电路里的“大哥大” 392
D.2.1 常见的三极管外形 392
D.2.2 三极管的两种结构类型 392
D.2.3 三极管的放大作用 393
D.2.4 三极管的三个工作区 394
D.3 三极管放大电路 395
D.3.1 共发射极放大电路 395
D.3.2 共发射极放大电路典型应用 398
附录E 集成运算放大器及其典型应用简介 401
E.1 集成运算放大器简介 401
E.2 集成运算放大器理想模型 402
E.3 集成运放的典型应用 402
E.3.1 比例运算 403
E.3.2 比较器 404
附录F 稳压电源 406
附录G 电阻标称值 408
附录H 常用电子元件 411
附录I 书中使用的电路板 417
附录J MCS-51程序生成器软件 419
附录K 随书光盘内容说明 420
参考文献 421