目 录
第1篇 入门与提高
第1章 认识51系列单片机 1
1.1 单片机的发展史 1
1.2 单片机的应用 1
1.3 51单片机的开发环境——
Keil μVision 2
1.4 快速掌握单片机的开发要点 2
1.5 STC89C51RC/RD+系列单片机 3
1.5.1 STC89C51系列单片机选型 4
1.5.2 常见的封装类型 4
1.6 STC89C51RC/RD+系列单片机的
外部引脚 5
1.7 小结 7
1.8 习题 7
第2章 开发环境的搭建 8
2.1 软件开发环境 8
2.1.1 安装Keil C μVision3开发
环境 8
2.1.2 增加对STC型号的支持 9
2.1.3 建立第一个工程 10
2.1.4 开发中经常用到的功能 14
2.2 必要的硬件环境 23
2.2.1 10元DIY单片机最小
系统 23
2.2.2 动手制作一个编程器 25
2.3 STC烧录工具 27
2.4 小结 28
2.5 习题 28
第2篇 51单片机C语言编程
第3章 单片机C语言的基本数据类型 29
3.1 常量与变量 29
3.2 基本数据类型 30
3.2.1 整型 30
3.2.2 长整型 31
3.2.3 字符型 31
3.2.4 位类型 31
3.2.5 浮点数 32
3.2.6 双精度浮点数 33
3.3 小结 33
3.4 习题 33
第4章 运算符与表达式 34
4.1 算术运算符与表达式 34
4.2 关系运算符与表达式 35
4.3 逻辑运算符与表达式 36
4.4 位运算符与表达式 37
4.5 赋值运算符与表达式 38
4.6 小结 39
4.7 习题 39
第5章 流程控制 40
5.1 条件语句if 40
5.1.1 条件语句if的3种表达方式 40
5.1.2 条件语句if嵌套 44
5.2 开关语句switch … case 46
5.2.1 开关语句的语法格式 46
5.2.2 开关语句的执行过程 46
5.2.3 注意事项 48
5.3 循环语句for 48
5.3.1 循环语句for的语法格式 49
5.3.2 循环语句for的执行过程 49
5.3.3 循环语句for嵌套 51
5.4 另一种循环语句while和do…while 52
5.4.1 循环语句while和do…while
的语法格式 52
5.4.2 循环语句while和do…while
的执行过程 53
5.5 无条件跳转语句goto 55
5.6 中断语句break/continue 57
5.6.1 中断语句break 57
5.6.2 中断语句continue 58
5.7 小结 60
5.8 习题 60
第6章 函数 61
6.1 定义函数的一般形式 61
6.2 函数的参数和返回值 62
6.2.1 函数的参数 62
6.2.2 函数的返回值 63
6.3 函数的调用 64
6.3.1 被调函数的声明 64
6.3.2 函数语句调用 65
6.3.3 函数表达式调用 65
6.3.4 作为函数的参数调用 66
6.3.5 函数的嵌套调用 66
6.3.6 函数的递归调用 68
6.4 单片机的特殊函数——中断函数 69
6.5 小结 70
6.6 习题 70
第7章 数组与指针 71
7.1 数组 71
7.1.1 一维数组 71
7.1.2 二维数组与多维数组 73
7.2 指针 75
7.2.1 指针的概念 75
7.2.2 定义和引用指针变量 75
7.2.3 指针和数组 76
7.3 小结 78
7.4 习题 78
第8章 结构体与共用体 79
8.1 结构体 79
8.1.1 什么是结构体 79
8.1.2 定义结构体变量 79
8.1.3 结构体变量的初始化 81
8.1.4 使用结构体 82
8.1.5 指向结构体类型数据的
指针 82
8.1.6 将结构指针变量作为函数的
参数 83
8.2 共用体 84
8.2.1 什么是共用体 84
8.2.2 定义共用体变量 85
8.2.3 使用共用体 86
8.3 小结 87
8.4 习题 87
第3篇 51单片机开发实战
第9章 IO端口编程 88
9.1 STC89C51RC-RD+系列单片机的I/O
端口 88
9.2 I/O端口的工作模式 89
9.2.1 准双向口/弱上拉模式 89
9.2.2 输入/高阻模式 89
9.2.3 输出/开漏模式 90
9.2.4 配置I/O的工作模式 90
9.3 I/O输出实验 91
9.3.1 从点亮一个LED开始 91
9.3.2 闪动的LED 92
9.3.3 点亮更多的LED 93
9.3.4 点亮数码管 96
9.3.5 动态点亮数码管 98
9.3.6 控制3-8译码器 101
9.4 I/O输入实验 104
9.4.1 分离式按键 104
9.4.2 模拟实现计数器 106
9.4.3 矩阵键盘 109
9.5 小结 113
9.6 习题 113
第10章 中断系统和外部中断 114
10.1 中断的基本知识 114
10.1.1 什么是中断 114
10.1.2 使用中断的好处 114
10.2 中断源 114
10.3 中断寄存器 115
10.3.1 中断使能寄存器 115
10.3.2 中断优先级寄存器 116
10.3.3 定时器控制寄存器、外部
中断标志 118
10.3.4 串行口控制寄存器 119
10.4 中断优先级 120
10.5 使用外部中断检测按键 120
10.5.1 低电平触发方式 121
10.5.2 下降沿触发方式 123
10.6 使用外部中断设计运动限位装置 124
10.6.1 硬件电路原理图 124
10.6.2 代码实现 125
10.7 小结 127
10.8 习题 127
第11章 定时器/计数器 128
11.1 定时器/计数器介绍 128
11.2 与定时器/计数器的有关的寄存器 128
11.2.1 工作方式寄存器TMOD 128
11.2.2 控制寄存器TCON 129
11.2.3 初值寄存器THx、TLx 129
11.3 定时器的工作模式 130
11.3.1 模式0 130
11.3.2 模式1 130
11.3.3 模式2(8位自动重装
模式) 131
11.3.4 模式3 132
11.4 定时器中断实验 132
11.4.1 定时器秒表实验电路
原理图 132
11.4.2 秒表实验控制流程 133
11.4.3 代码实现 135
11.5 简易电子琴演奏实验 137
11.5.1 电子琴实验的电路
原理图 138
11.5.2 代码实现 138
11.6 小结 141
11.7 习题 141
第12章 USART通用串行口通信 142
12.1 通用串行口介绍 142
12.2 与通用串行口有关的寄存器 142
12.2.1 电源控制寄存器PCON 142
12.2.2 串行口控制寄存器
SCON 143
12.2.3 数据缓存寄存器SBUF 143
12.2.4 中断控制位ES 144
12.3 通用串行口的工作模式 144
12.3.1 模式0,同步移位寄存器
模式 144
12.3.2 模式1,波特率可变的8
位数据异步收发 144
12.3.3 模式2,波特率固定的9
位数据异步收发 144
12.3.4 模式3,波特率可变的9
位数据异步收发 145
12.4 计算波特率 145
12.5 通过串行口和PC通信 145
12.5.1 串行口通信规范 146
12.5.2 串行口实验电路 147
12.5.3 实验控制流程 147
12.5.4 通信协议 149
12.5.5 代码实现 150
12.6 单片机串行口远距离通信 153
12.6.1 RS-485简介 154
12.6.2 485通信的实验电路 155
12.6.3 代码实现 156
12.7 小结 159
12.8 习题 159
第13章 访问内部EEPROM 160
13.1 EEPROM介绍 160
13.2 EEPROM的地址 160
13.3 与EEPROM有关的寄存器 161
13.4 EEPROM的常用操作 162
13.4.1 定义相关寄存器 162
13.4.2 读操作 162
13.4.3 扇区擦除操作 162
13.4.4 写操作 163
13.5 EEPROM应用实例 163
13.6 掉电时保存数据到EEPROM 165
13.6.1 实验电路图 165
13.6.2 代码实现 167
13.7 小结 170
13.8 习题 170
第14章 看门狗WDT 171
14.1 看门狗WDT介绍 171
14.2 看门狗控制寄存器WDT_CONTR 171
14.3 看门狗溢出时间 172
14.4 测试看门狗 172
14.5 小结 174
14.6 习题 174
第4篇 更多功能的单片机
第15章 STC12C5A60S2系列
单片机 175
15.1 STC12C5A60S2系列单片机
介绍 175
15.2 STC12C5A60S2系列单片机外部
引脚 175
15.3 过渡到STC12C5A60S2系列的
要点 179
15.4 小结 180
15.5 习题 180
第16