第1章 8051单片机与Keil C51基础 1
1.1 8051单片机的存储器组织结构 1
1.2 Keil C51开发工具 6
1.3 C51简单编程与调试 7
第2章 Keil C51程序设计基础 17
2.1标识符与关键字 17
2.2 C51程序设计的基本语法 19
2.2.1 C51程序的一般结构 19
2.2.2数据类型 20
2.2.3用typedef重新定义数据类型 22
2.2.4常量、变量及其存储模式 23
2.2.5运算符与表达式 26
2.3 C51程序的基本语句 31
2.3.1表达式语句 31
2.3.2复合语句 31
2.3.3条件语句 32
2.3.4开关语句 32
2.3.5循环语句 33
2.3.6 goto、 break、 continue语句 34
2.3.7返回语句 34
2.4函数 35
2.4.1函数的定义与调用 35
2.4.2中断服务函数与寄存器组定义 36
2.5数组 38
2.5.1数组的定义与引用 38
2.5.2数组名作为函数的参数 39
2.5.3数组与存储器空间 39
2.6指针 40
2.6.1指针与地址 40
2.6.2指针变量的定义 40
2.6.3指针变量的引用 41
2.6.4用指针引用数组元素 42
2.6.5函数型指针 43
2.6.6返回指针型数据的函数 44
2.9结构体、联合体与枚举 44
2.9.1结构体变量的定义与引用 44
2.9.2联合体变量的定义与引用 47
2.9.3枚举变量的定义与引用 48
第3章 μVision4集成开发环境 50
3.1 μVision4的项目管理 52
3.2 μVision4中的调试器 64
3.2.1 Debug状态下窗口分配与View下拉菜单 66
3.2.2通过Debug下拉菜单进行程序代码调试 72
3.2.3通过Peripherals下拉菜单观察仿真结果 79
3.3 μVision4的调试命令 81
3.3.1显示和更新存储器内容命令 82
3.3.2程序执行控制命令 86
3.3.3断点管理命令 88
3.3.4其他通用命令 91
3.4 μVision4的表达式 96
3.4.1表达式的组成 97
3.4.2 μVision4表达式与C语言表达式之间的差别 101
3.4.3 μVision4表达式应用举例 101
3.5 μVision4的函数 103
3.5.1内部函数 103
3.5.2用户函数 104
3.5.3信号函数 106
3.5.4 μVision4函数与C51函数的差别 108
第4章 C51编译器 109
4.1 C51编译器简介 109
4.2 C51编译器的控制命令 110
4.3 Keil C51编译器对ANSI C的特殊扩展 113
4.3.1存储器类型与编译模式 113
4.3.2关于bit、 sbit、 sfr、 sfrl6数据类型 115
4.3.3一般指针与基于存储器的指针及其转换 117
4.3.4 C51编译器对ANSI C函数定义的扩展 119
4.4 C51编译器的数据调用协议 124
4.4.1数据在内存中的存储格式 124
4.4.2目标代码的段管理 126
4.5 C51编译器的特殊支持 128
4.6用户配置文件 129
4.6.1启动代码文件 129
4.6.2变量初始化文件 131
4.6.3基本I/O函数文件 133
4.6.4分组配置文件 133
4.7与汇编语言程序的接口 135
4.8与PL/M51程序的接口 145
4.9绝对地址访问 146
4.9.1采用扩展关键字“at”或指针定义变量的绝对地址 146
4.9.2采用预定义宏指定变量的绝对地址 147
4.9.3采用链接定位控制命令指定变量的绝对地址 148
4.10 C51的库函数 149
4.10.1本征库函数 150
4.10.2字符判断转换库函数 151
4.10.3输入/输出库函数 151
4.10.4字符串处理库函数 156
4.10.5类型转换及内存分配库函数 157
4.10.6数学计算库函数 158
4.10.7绝对地址访问 159
4.10.8函数变量参数表 160
4.10.9全程跳转 161
4.10.10计算结构体成员偏移量 161
4.10.11创建测试条件 161
第5章 BL51/Lx51链接定位器与实用工具 162
5.1 BL51/Lx51的链接定位方式 162
5.1.1链接定位中的数据段处理 162
5.1.2链接定位器的引用 164
5.1.3数据覆盖 165
5.1.4代码分组 166
5.2链接定位控制命令 167
5.2.1列表文件控制命令 167
5.2.2输出文件控制命令 168
5.2.3段与存储器定位控制命令 168
5.2.4高级语言控制命令 169
5.3 Intel HEX文件格式符号转换工具 175
5.4库管理器——LIBx51 176
第6章 8051单片机片内资源应用编程 178
6.1编写C51应用程序的基本原则 178
6.2 C51应用中的一些常见问题与解决方法 179
6.3中断系统应用编程 182
6.3.1外部中断源扩展 183
6.3.2中断嵌套 185
6.3.3 Keil与Proteus原理图联机仿真调试 187
6.4定时器/计数器应用编程 188
6.4.1定时器方式应用 189
6.4.2计数器方式应用 194
6.5利用定时器产生音乐 195
6.6串行口应用编程 199
6.6.1串行口实现串/并转换应用编程 200
6.6.2串行口的通信方式应用编程 202
第7章 8051单片机片外扩展应用编程 219
7.1 LED数码管显示器接口应用编程 219
7.1.1 I/O端口驱动LED数码管应用编程 220
7.1.2单个74HC595驱动多位LED数码管应用编程 223
7.1.3 8位共阴极LED数码管驱动器MAX7219应用编程 226
7.2非编码矩阵键盘接口应用编程 232
7.2.1采用I/O端口实现的键盘及显示接口应用编程 233
7.2.2采用8279实现的键盘及显示接口应用编程 235
7.3点阵字符型LCD显示模块接口应用编程 242
7.3.1点阵字符型LCD显示模块简介 242
7.3.2点阵字符型LCD显示模块与单片机直接接口应用编程 248
7.3.3点阵字符型LCD显示模块与单片机间接接口应用编程 251
7.4无字库12864点阵图型LCD显示模块接口应用编程 255
7.5带字库12864点阵图型LCD显示模块接口应用编程 263
7.5.1带字库12864点阵图型LCD显示模块并行接口应用编程 263
7.5.2带字库12864点阵图型LCD显示模块串行接口应用编程 274
7.6内置T6963C点阵图型LCD显示模块接口应用编程 278
7.7 D/A与A/D转换接口应用编程 288
7.7.1 DAC0832转换接口应用编程 289
7.7.2串行接口DAC芯片TLC5615应用编程 292
7.7.3 ADC0809转换接口应用编程 295
7.7.4 ICL7135转换接口应用编程 298
7.7.5串行接口ADC芯片TLC549应用编程 303
7.8单片机I2C总线扩展应用编程 306
7.8.1 I2C总线简介 306
7.8.2 I2C总线通用驱动程序 310
7.8.3 I 2C接口器件24C04的读写程序 312
第8章 Keil C51综合应用编程实例 318
8.1有关C51编程的若干实际应用技巧 318
8.2 C51和汇编语言混合编程与生成应用库文件 324
8.2.1 C51和汇编语言混合编程 324
8.2.2在μVision4中生成应用库文件 326
8.3在μVision4中应用硬件目标板 327
8.4红外遥控系统设计 330
8.4.1功能要求 330
8.4.2硬件电路设计 330
8.4.3软件程序设计 331
8.5点阵图型LED显示屏设计 338
8.5.1功能要求 338
8.5.2硬件电路设计 338
8.5.3软件程序设计 339
8.6带农历的电子万年历设计 341
8.6.1功能要求 341
8.6.2硬件电路设计 342
8.6.3软件程序设计 345
8.7电子密码锁设计 357
8.7.1功能要求 357
8.7.2硬件电路设计 357
8.7.3软件程序设计 358
8.8 DS 18B20多点温度监测系统设计 375
8.8.1功能要求 375
8.8.2硬件电路设计 375
8.8.3软件程序设计 380
8.9 SHT11数字温—湿度测量系统设计 389
8.9.1功能要求 389
8.9.2硬件电路设计 389
8.9.3软件程序设计 393
8.10单片机SD卡读写接口设计 399
8.10.1功能要求 399
8.10.2硬件电路设计 399
8.10.3软件程序设计 402
8.11 DTMF发送/接收系统设计 406
8.11.1功能要求 406
8.11.2硬件电路设计 406
8.11.3软件程序设计 410
附录A Keil C51与ANSI C的差别 422
附录B C51编译器的限制 424
参考文献 425