第1章 单片机基础 1
1.1 单片机简介 1
1.2 用单片机芯片组成单片机应用系统 2
1.3 对单片机编程以实现单片机系统的功能 5
【案例1】 在4位数码管的最左位上显示“8.” 5
1.4 把程序写入单片机芯片的操作平台的操作步骤 6
1.5 从数码管显示学单片机编程 18
【案例2】 数码管上的“8.8.”显示 18
【案例3】 被动形式的“8051”显示 20
【案例4】 主动形式的“8051”显示 22
【案例5】 模块化的“8051”显示 24
【案例6】 实用型的“8051”显示 26
1.6 源程序的阅读要点 28
1.7 REG51.h头文件简介 31
小结1 33
习题1 34
第2章 C语言编程基础 35
2.1 C语言程序的组成结构和运行机制 35
2.2 C语言的字符集、标识符、关键字和语句 36
2.3 C语言中的数据类型 37
2.4 常量和变量 38
2.5 整型数据 38
2.6 实型数据 39
2.7 字符型数据 39
2.8 C51扩充数据类型 40
2.9 运算符与表达式 40
2.9.1 算术运算符与算术表达式 40
2.9.2 赋值运算符与赋值表达式 41
2.9.3 关系运算符和关系表达式 42
2.9.4 逻辑运算符与逻辑表达式 43
2.9.5 位运算符与位运算表达式 43
2.9.6 逗号运算符与逗号表达式 43
2.9.7 运算符的优先级和结合性 44
2.10 程序的三种基本结构 45
2.11 选择结构 46
2.12 循环结构 48
2.13 数组 51
2.13.1 一维数组的定义和引用 51
2.13.2 二维数组的定义和引用 52
2.14 变量和数组的存储器类型 54
2.15 函数的定义和调用 54
2.15.1 系统库函数 54
2.15.2 用户自定义函数 55
2.15.3 函数的定义 55
2.15.4 函数调用的方式和规则 56
2.15.5 全局变量和局部变量 57
小结2 57
习题2 58
第3章 用数码管模拟的循环灯 59
【案例7】 “并驾齐驱”的跑马灯 59
【案例8】 “迈步边关”的巡逻灯 64
【案例9】 “大江东去”的流水灯 69
【案例10】 “孔雀开屏式”循环灯 73
【案例11】 奔腾不息的“8051” 77
【案例12】 9999倒数数的数码管显示 82
小结3 85
习题3 86
第4章 中断资源的应用编程 87
4.1 中断的概念 87
4.2 中断允许寄存器IE和中断优先级寄存器IP 87
4.2.1 中断允许寄存器IE 87
4.2.2 中断优先级寄存器IP 88
4.3 定时器/计数器简介 89
4.3.1 定时器/计数器体系结构示意图 89
4.3.2 特殊功能寄存器TCON 89
4.3.3 特殊功能寄存器TMOD 90
【案例13】 用外中断INT1操作插曲显示 91
【案例14】 中断插曲的中断插曲显示 95
【案例15】 基于定时器中断的数字钟 99
【案例16】 基于计数器中断的中断插曲 104
【案例17】 定时器T1与计数器T0的串接使用 107
小结4 111
习题4 111
第5章 日历时钟DS1302的应用编程 113
5.1 日历时钟DS1302简介 113
5.2 对DS1302的写/读程序设计 114
5.2.1 最底层的按位写/读函数 114
5.2.2 对DS1302的字节写/读函数 116
【案例18】 基于DS1302的实用电子钟 117
小结5 125
习题5 125
第6章 AT24C02的应用编程 126
6.1 I2C总线简介 126
6.1.1 I2C总线接口 126
6.1.2 I2C器件的地址 126
6.1.3 对I2C器件进行数据传送的操作时序 127
6.2 AT24C02简介 127
6.2.1 AT24C02引脚图 127
6.2.2 读/写AT24C02的专用函数 128
6.2.3 9个专用函数间的调用路线图 131
【案例19】 AT24C02应用编程 132
小结6 138
习题6 138
第7章 DS18B20的编程应用 139
7.1 DS18B20使用简介 139
7.1.1 DS18B20的外形及与单片机的接口 139
7.1.2 DS18B20的内部结构和操作指令 139
7.2 对DS18B20的操作时序和读/写专用函数 140
7.2.1 对DS18B20的操作时序 140
7.2.2 DS18B20的读/写专用函数 141
【案例20】DS18B20的应用编程 143
小结7 149
习题7 149
第8章 有时控功能和温度显示的电子钟项目设计 150
8.1 项目简介 150
8.2 项目源程序设计要点分析 164
小结8 168
习题8 169
第9章 16×16点阵LED汉字显示屏项目设计 170
9.1 项目简介 170
9.2 16×16点阵LED汉字显示屏电原理图 170
9.3 74HC138功能简介 171
9.4 74HC595功能简介 172
9.5 单片机与LED汉字显示屏的接口设计 174
9.6 汉字字模在二维数组中的存储格式 174
9.7 16×64点阵LED汉字显示屏项目源程序及分析 175
9.8 16×16汉字字模文件的建立 180
小结9 183
习题9 183
第10章 使用片内E2PROM存储器 184
10.1 IAP和ISP简介 184
10.2 IAP技术的接口函数 184
【案例21】 片内E2PROM编程案例 187
10.3 用片内E2pROM取代电子钟项目中的AT24C02 192
小结10 194
习题10 194
第11章 单片机与PC的串行通信 195
【案例22】 单片机与PC的串行通信案例 198
小结11 205
习题11 206
第12章 单片机片外数据存储器的扩充 207
12.1 HM62256存储器的扩充及使用案例 207
12.1.1 HM62256存储器的扩充 207
12.1.2 HM62256存储器的使用 209
12.2 用HM62256存储汉字字模项目设计 212
12.3 W29C020存储器的扩充和使用案例 220
12.3.1 W29C020存储器的扩充 220
12.3.2 W29C020存储器的使用 221
12.4 用W29C020存储字模的LED汉字显示屏项目设计 226
小结12 230
习题12 231
第13章 A/D转换与D/A转换简介 232
13.1 A/D器件ADC0809简介 232
13.2 ADC0809的使用接口与编程 233
13.2.1 ADC0809与单片机的接口 233
13.2.2 ADC0809的应用编程 235
【案例23】 基于ADC0809的模/数转换示例 236
13.3 D/A器件DAC0832简介 238
13.4 DAC0832的使用接口与编程 239
13.4.1 DAC0832与单片机的接口 239
13.4.2 DAC0832的应用编程 239
【案例24】DAC0832的应用编程 240
小结13 242
习题13 242