学习情景一 寻找生活中的单片机 1
学习单元一 单片机在哪里 1
学习单元二 单片机是什么样子 5
学习单元三 单片机如何控制外部器件 8
学习单元四 如何将程序“装入”单片机 11
一、利用编程器将程序写入单片机 12
二、利用下载线将程序写入单片机 13
学习单元五 学习哪些单片机 14
思考与练习 17
学习情景二 如何使用单片机 19
学习单元一 使用单片机前的准备工作 19
一、硬件准备 19
二、工具软件的准备 20
三、单片机的应用过程 20
学习单元二 构建与测试单片机基本硬件电路 20
一、认识引脚功能 21
二、构建电源电路 23
三、构建时钟电路 23
四、构建复位电路 25
五、构建程序存储器选择电路 26
六、单片机最小系统的构建与测试实例 27
学习单元三 建立软件实训环境(1)——Keil软件的安装与使用 31
一、Keil软件的安装 31
二、Keil软件的使用 31
学习单元四 建立软件实训环境(2)——MedWin软件的安装与使用 44
一、MedWin软件的安装 44
二、MedWin软件的使用 44
学习单元五 程序仿真——Proteus仿真软件的使用 54
一、软件功能概述 54
二、软件使用方法 55
学习单元六 烧写程序(1)——用STC-ISP软件烧写程序 58
一、软件安装方法 58
二、软件使用方法 58
学习单元七 烧写程序(2)——用Atmel MCU ISP软件烧写程序 59
一、软件概述 59
二、软件使用方法 60
思考与练习 61
学习情景三 解剖单片机 63
学习单元一 解剖单片机I/O口 63
一、I/O口的内部结构和工作原理 63
二、I/O口的抽象结构 67
学习单元二 单片机的“解剖图” 68
一、单片机的抽象结构 68
二、深入“解剖”单片机的CPU 70
学习单元三 半导体存储器 71
一、半导体存储器概述 71
二、存储单元地址、存储单元内容与存储器容量 72
三、存储器的两种基本操作 74
学习单元四 单片机的程序存储器 75
一、观察程序存储器 75
二、选择片内程序存储器还是片外程序存储器 77
三、中断服务程序地址区 77
学习单元五 单片机的数据存储器 78
一、数据存储器RAM的用途 78
二、片内数据存储器和片外数据存储器 78
三、00H~1FH——工作寄存器区 79
四、20H~2FH——位寻址区 81
五、30H~7FH——用户RAM区 82
学习单元六 单片机的特殊功能寄存器 82
一、特殊功能寄存器SFR分布图 82
二、特殊功能寄存器功能简介 84
思考与练习 85
学习情景四 给单片机下命令——指令畅谈 87
学习单元一 指令概述 87
一、单片机指令、指令系统与程序 87
二、指令的长度与指令的执行时间 87
三、机器语言、汇编语言和高级语言 87
四、手工编译和机器编译 89
五、汇编语言格式 89
学习单元二 寻址方式 89
一、立即数寻址 90
二、直接寻址 90
三、寄存器寻址 91
四、寄存器间接寻址方式 91
五、变址寻址(基址寄存器加变址寄存器构成间接寻址) 92
六、相对寻址 92
七、位寻址 92
学习单元三 指令系统 93
一、数据传送类指令 94
二、算术运算类指令 99
三、逻辑运算和移位类指令 102
四、控制转移类指令 105
五、位操作类指令 109
学习单元四 汇编语言程序设计 111
一、汇编语言程序设计步骤 111
二、伪指令 112
三、顺序程序设计 114
四、分支程序设计 117
五、循环程序设计 118
六、子程序设计 121
思考与练习 123
学习情景五 计数与定时 126
学习单元一 单片机的计数与定时 126
一、定时/计数的基本概念 126
二、51单片机的定时/计数器 127
学习单元二 计数与定时的控制者 129
一、工作方式寄存器TMOD 129
二、控制寄存器TCON 130
学习单元三 定时/计数器的4种工作方式 131
一、工作方式0 131
二、工作方式1 132
三、工作方式2 132
四、工作方式3 133
学习单元四 定时与计数的程序设计及应用 134
一、定时与计数的范围 134
二、定时/计数器初值的计算 134
三、定时与计数的程序设计 135
四、T0和T1的应用 137
思考与练习 141
学习情景六 中断的魅力 142
学习单元一 初识中断 142
一、中断概述 142
二、初识中断 143
学习单元二 中断服务的指挥官——中断入口地址 144
学习单元三 中断系统的结构 147
一、5个中断源 147
二、中断的控制者 148
学习单元四 中断响应过程分析 153
一、中断响应条件 153
二、中断响应 154
三、中断请求信号的撤除 154
学习单元五 中断的魅力——中断程序设计及应用 155
一、查询方式与中断方式的比较 156
二、中断程序设计 157
三、中断的应用 158
思考与练习 162
学习情景七 与外界通信 164
学习单元一 初识串行通信 164
一、串行通信概述 165
二、初识串行口通信 169
学习单元二 单片机串行口的控制者 171
一、串行口数据缓冲器SBUF 171
二、串行口控制寄存器SCON 172
三、电源及波特率选择寄存器PCON 173
四、波特率发生器(定时/计数器T1) 173
五、串行口的工作原理 173
学习单元三 串行口的工作方式 174
一、工作方式0 174
二、工作方式1 174
三、工作方式2 175
四、工作方式3 175
学习单元四 串行口的波特率 176
一、工作方式0和工作方式2的波特率 176
二、工作方式1和工作方式3的波特率 176
学习单元五 串行口的应用 177
一、利用串行口扩展并行口 178
二、串行口的单工通信 180
三、串行口的双工通信 182
四、串行口的多机通信 183
五、单片机与计算机的串行通信 186
思考与练习 189
学习情景八 与外部器件接口 191
学习单元一 与LED数码管接口 191
一、LED数码管显示原理 191
二、数码管的静态显示 193
三、数码管的动态显示 195
学习单元二 与键盘接口 197
一、键盘工作原理 197
二、独立式按键 198
三、矩阵式按键 202
学习单元三 与A/D转换器接口 205
一、A/D转换器的主要性能指标 206
二、ADC0809的特点及引脚功能 207
三、ADC0809的应用 209
学习单元四 与D/A转换器接口 212
一、D/A转换器的主要性能指标 212
二、DAC0832的特点及引脚功能 212
三、DAC0832的工作方式与应用 214
四、D/A转换器的输出方式 219
思考与练习 220
学习情景九 单片机应用系统的设计与开发 221
学习单元一 单片机应用系统开发的一般方法 221
一、总体设计 221
二、硬件设计 222
三、软件设计 223
四、系统调试 223
学习单元二 软件仿真实现数字时钟 224
一、项目目标 224
二、项目实现过程 224
学习单元三 数字温度计和数字万年历 230
一、项目目标 230
二、数学温度传感器DS18B20工作原理 230
三、程序设计 233
四、软件仿真 241
学习单元四 简易角度检测与报警器 242
一、功能说明 242
二、设计要求 242
三、电路原理图 243
四、程序设计 244
五、软件仿真 251
学习单元五 自动往返电动小车 252
一、任务描述 252
二、功能要求 253
三、硬件电路设计 253
四、程序设计 255
学习单元 六水温及水位控制系统 262
一、系统功能及原理 262
二、方案比较与论证 262
三、系统设计 263
思考与练习 270
学习情景十 C51程序设计 272
学习单元一 单片机的C语言特点 272
一、C51程序开发概述 272
二、C51程序结构 272
学习单元二 C51的数据类型 274
一、C51的标识符、关键字 274
二、数据与数据类型 276
三、C51数据的存储类型 276
四、80C51硬件结构的C51定义 278
学习单元三 C51的运算符、表达式及其规则 280
一、算术运算符和算术表达式 280
二、关系运算符、关系表达式及优先级 281
三、逻辑运算符和逻辑表达式及优先级 282
四、C51位操作及其表达式 282
学习单元四 C51流程控制语句 284
一、C51的顺序结构 284
二、C51的选择结构 284
三、C51的循环结构 285
学习单元五 C51的数组 286
一、一维数组 286
二、二维数组 287
三、字符数组 288
四、查表 288
学习单元六 指针 289
一、指针的基本概念 289
二、指针变量的使用 290
三、数组指针和指向数组的指针变量 291
四、指向多维数组的指针和指针变量 294
五、关于KeilC51的指针类型 294
学习单元七 C51的函数 295
一、函数的分类 296
二、函数的参数传递和函数值 298
三、函数的调用 299
四、C51函数的定义 300
思考与练习 300
附录1 单片机中的数制与码制 302
附录2 ISP技术和IAP技术 305
附录3 ATMEL公司51系列单片机简介 307
附录4 STC公司51系列单片机简介 308
附录5 教材实例的C语言程序 309
附录6 51单片机指令集 334
参考文献 344