第1章 单片机的C语言概述 1
1.1 C语言与51单片机编程 1
1.1.1 单片机的C语言的特点 1
1.1.2 单片机的C语言和标准C语言的
比较 2
1.1.3 单片机的C语言与汇编语言的
优势对比 2
1.2 C51程序 6
1.2.1 C51的程序结构 6
1.2.2 C51编程规范及注意事项 8
1.2.3 C51的标识符与关键字 9
本章小结 11
习题 12
第2章 51系列单片机硬件及C51编程基础 13
2.1 51单片机的总体结构 13
2.1.1 内部结构 13
2.1.2 外部引脚说明 15
2.1.3 CPU的时序周期 18
2.2 51单片机的存储器 18
2.2.1 程序存储器 19
2.2.2 数据存储器 19
2.2.3 特殊功能寄存器 21
2.3 C51语言的数据 24
2.3.1 数据类型 24
2.3.2 常量与变量 25
2.3.3 数据存储类型 27
2.4 C51语言对单片机主要资源的控制 29
2.4.1 特殊功能寄存器的C51语言定义 29
2.4.2 绝对地址的访问 31
2.4.3 位变量的C51语言定义 32
2.5 C51语言的基本运算与流程控制
语句 33
2.5.1 基本运算 33
2.5.2 分支判断――if、switch语句 34
2.5.3 循环控制――while、for语句 37
2.5.4 break、continue、return和goto
语句 39
2.6 C51语言的数组、指针、函数 41
2.6.1 数组 41
2.6.2 指针 42
2.6.3 函数 44
2.7 C51语言的预处理命令及汇编语句的
嵌入 47
2.7.1 文件包含、宏定义、条件编译 47
2.7.2 C51中汇编语句的嵌入 49
本章小结 49
习题 50
第3章 51系列单片机P0~P3口输入/输出的
C51编程 51
3.1 51单片机的P0~P3口基础知识 51
3.1.1 P0~P3口结构 51
3.1.2 P0~P3口特点总结 52
3.2 输出操作 53
3.2.1 基本输出操作举例――字节输出与
位输出 53
3.2.2 扩展输出操作举例――流水灯与
霹雳灯 54
3.2.3 扩展输出操作举例――8段LED
数码显示器 56
3.3 输入操作 60
3.3.1 闸刀型开关输入信号 61
3.3.2 单个按钮型开关输入信号 62
3.3.3 多个按钮型开关输入信号――
键盘 64
3.4 实验 70
实验1 闸刀型开关输入/8段LED静态
显示输出 70
实验2 按钮型开关输入/8段LED静态
显示输出 70
本章小结 72
习题 73
第4章 51单片机中断系统的C51编程 74
4.1 中断系统结构与中断控制 74
4.1.1 中断系统结构 74
4.1.2 特殊功能寄存器 75
4.2 中断优先级与中断函数 76
4.2.1 中断优先级 76
4.2.2 中断函数的结构形式 78
4.3 外部中断源的C51编程 78
4.3.1 外部中断源初始化 78
4.3.2 编程示例 78
4.4 实验 83
实验1 按钮型开关模拟外部中断实验 83
实验2 外部中断优先级实验 84
本章小结 86
习题 86
第5章 51单片机的定时器/计数器的
C51编程 87
5.1 51单片机的定时器/计数器基本
知识 87
5.1.1 结构 87
5.1.2 特殊功能寄存器 87
5.2 定时器/计数器工作模式 89
5.3 定时器/计数器的应用举例 92
5.3.1 定时器/计数器的初始化 92
5.3.2 应用举例 94
5.4 实验 99
实验1 按钮型开关模拟计数器实验 99
实验2 定时器实验 100
本章小结 101
习题 102
第6章 51单片机串行口的C51编程 103
6.1 51单片机串行口基础知识 103
6.1.1 串行口的结构原理 103
6.1.2 串行口的应用控制 104
6.2 51单片机串行口的工作方式 105
6.2.1 串行口工作方式0 105
6.2.2 串行口工作方式1 109
6.2.3 串行口工作方式2 113
6.2.4 串行口工作方式3 116
6.3 51单片机串行口的应用举例 119
6.3.1 串行口编程基础 119
6.3.2 串行口应用举例 121
6.4 实验 125
实验1 串行口控制的流水灯实验 125
实验2 串行口控制的8段LED
显示器 125
本章小结 127
习题 127
第7章 51单片机并行扩展的C51编程 128
7.1 51单片机并行I/O口扩展基础 128
7.1.1 系统扩展总线结构图 128
7.1.2 数据线、控制线的连接 129
7.1.3 译码信号的形成―系统扩展的
寻址 129
7.2 可编程的I/O接口芯片8255A的
C51编程 132
7.2.1 8255A简介 132
7.2.2 利用8255A扩展并行的输入/输出
口示例 136
7.2.3 利用Intel8255A作为8段LED
静态显示输出口的示例 136
7.2.4 利用Intel8255A作为8段LED
动态显示输出口的示例 138
7.3 D/A与A/D转换器的C51编程 140
7.3.1 D/A转换器基础 140
7.3.2 8位并行D/A转换器DAC0832 141
7.3.3 A/D转换器基础 147
7.3.4 8位并行A/D转换器ADC0809 148
7.4 液晶显示器的C51编程 151
7.4.1 字符型LCD1602液晶显示模块
的C51编程 152
7.4.2 点阵式带汉字库12864液晶显示
模块接口技术 156
7.5 实验 165
实验1 DAC0832单缓冲实验 165
实验2 ADC0809实验 165
本章小结 168
习题 168
第8章 51单片机外部串行扩展的
C51编程 170
8.1 I2C总线器件的C51编程 170
8.1.1 认识I2C总线接口 170
8.1.2 I2C总线典型器件AT24C02
应用举例 172
8.2 SPI总线器件的C51编程 177
8.2.1 认识SPI总线 178
8.2.2 SPI总线典型器件X25045应用
举例 179
8.3 单总线(1-wire)的C51编程 183
8.3.1 认识单总线(1-wire) 183
8.3.2 单总线典型器件DS18B20应用
举例 184
8.4 串行A/D接口芯片TLC2543的C51编程 190
本章小结 193
习题 194
第9章 Vision2与Proteus使用基础 195
9.1 Vision2集成开发环境 195
9.1.1 File、Edit和View菜单 196
9.1.2 Project、Debug和Flash菜单 198
9.1.3 Peripherals、Tools和Window
菜单 199
9.2 用Vision2建立与调试工程 200
9.2.1 工程创建、设置、编译与链接 200
9.2.2 用Vision2调试工程 204
9.2.3 C51程序调试举例说明――
HELLO.C 208
9.2.4 Keil C51的调试技巧及举例 210
9.3 Proteus快速入门 213
9.3.1 集成Proteus ISIS环境 213
9.3.2 电路原理图设计 218
9.4 Proteus仿真工具介绍 223
9.4.1 探针 223
9.4.2 虚拟仪器 223
9.4.3 信号发生器 224
9.4.4 仿真图表 224
9.5 Proteus软件中的C51程序运行与
调试 225
9.5.1 驱动的安装 225
9.5.2 Keil和Proteus的配置 225
9.5.3 Keil和Proteus的调试过程 226
本章小结 226
习题 227
附录A ASCII码字符表 228
附录B 单片机应用资料的网上查询方法 229
附录C Proteus常用分离器件名称 230
参考文献 231