编程基础篇 3
第1章 单片机概述 3
1.1 单片机介绍 3
1.1.1 单片机的历史 3
1.1.2 单片机的应用 4
1.2 单片机的分类 5
1.2.1 按厂商分类 5
1.2.2 按位数分类 6
1.3 MCS-51单片机与C语言介绍 7
1.4 本章小结 9
第2章 MCS-51单片机基础知识 10
2.1 MCS-51单片机概述 10
2.2 MCS-51单片机结构原理 10
2.2.1 MCS-51单片机的基本组成 10
2.2.2 MCS-51单片机的内部结构 11
2.2.3 MCS-51单片机的中央处理单元 11
2.2.4 MCS-51单片机的存储器结构 13
2.2.5 MCS-51单片机的输入/输出接口 18
2.3 MCS-51单片机引脚描述 20
2.3.1 外部引脚 20
2.3.2 片外总线结构 21
2.4 MCS-51单片机存储器组织 22
2.4.1 程序存储器配置 22
2.4.2 数据存储器配置 22
2.4.3 特殊功能寄存器 23
2.5 MCS-51单片机中断系统 23
2.5.1 MCS-51单片机的中断源 24
2.5.2 中断控制的专用寄存器 25
2.6 MCS-51单片机定时器/计数器 27
2.7 MCS-51单片机串行口 29
2.8 本章小结 31
第3章 C51程序设计基础 32
3.1 基本概念 32
3.1.1 C语言基本介绍 32
3.1.2 MCS-51的C语言编译器 33
3.1.3 C51的程序结构 33
3.1.4 C51的标识符和关键字 35
3.1.5 常量与变量 37
3.2 数据类型、运算符和表达式 41
3.2.1 数据类型 41
3.2.2 运算符和表达式 42
3.3 程序控制语句 46
3.3.1 顺序结构 46
3.3.2 选择结构 47
3.3.3 循环结构 49
3.4 函数与程序结构 51
3.4.1 函数的定义 52
3.4.2 函数声明 53
3.4.3 函数的调用 56
3.5 数组 62
3.5.1 数组的基本概念 62
3.5.2 声明数组 63
3.5.3 将数组传递给函数 63
3.5.4 数组的初始化 63
3.5.5 多维数组 64
3.5.6 指针数组 68
3.6 指针 68
3.6.1 指针的变量声明与初始化 69
3.6.2 指针运算符 69
3.6.3 指针常量 70
3.6.4 指针的指针 70
3.6.5 指针的运算 71
3.7 结构体与共用体 72
3.7.1 结构体 72
3.7.2 共用体 76
3.8 本章小结 78
第4章 单片机指令系统 79
4.1 单片机编程语言概述 79
4.1.1 编程语言概述 80
4.1.2 单片机使用的编程语言 80
4.1.3 MCS-51汇编语言的语句结构 80
4.2 MCS-51单片机指令系统 81
4.2.1 数据传送指令 84
4.2.2 控制转移指令 88
4.2.3 逻辑运算及移位指令 90
4.2.4 算数运算指令 92
4.2.5 布尔操作指令 95
4.3 常用的伪指令 97
4.3.1 伪指令与MCS-51指令的不同点 97
4.3.2 常用的伪指令 97
4.4 本章小结 99
第5章 Keil C51简介及单片机软件程序设计过程 100
5.1 Keil C51概述 100
5.1.1 Keil C51软件简介 100
5.1.2 安装Keil C51软件 101
5.1.3 Keil C51 uVision2软件功能简介 103
5.2 Keil C51工程项目的编译及运行 107
5.2.1 工程的建立 107
5.2.2 工程的设置 108
5.2.3 源文件的建立 111
5.2.4 编译和链接项目 112
5.2.5 运行调试观察结果 113
5.3 Keil C51调试技巧 113
5.3.1 设置和删除断点的方法 113
5.3.2 查看和修改寄存器的内容 114
5.3.3 观察和修改变量 114
5.3.4 观察存储器区域 114
5.3.5 串行口的使用方法 115
5.3.6 定时器/计数器的使用方法 116
5.3.7 外部中断的使用方法 116
5.4 本章小结 117
第6章 MCS-51单片机程序开发流程 118
6.1 编写一个简单的单片机程序 118
6.1.1 目的 118
6.1.2 工作原理 118
6.1.3 用汇编语言编写程序 119
6.2 程序编写过程 122
6.2.1 编写源程序 122
6.2.2 创建项目 123
6.2.3 编译/汇编 123
6.2.4 输出文件 124
6.3 把目标文件写入单片机 124
6.3.1 选择单片机型号 124
6.3.2 进行擦除 124
6.3.3 写入文件 125
6.4 使用实验板进行实验 126
6.5 本章小结 127
开发实例篇 131
第7章 C51应用系统设计 131
7.1 应用系统概述 131
7.2 应用系统的硬件设计 132
7.2.1 单片机系统的扩展部分设计 133
7.2.2 各功能模块的设计 133
7.2.3 工艺设计 133
7.3 最小系统板实例 133
7.3.1 最小系统的构成 134
7.3.2 电源组件 135
7.3.3 RS-232串口通信 135
7.3.4 键盘组件 136
7.3.5 8255芯片 139
7.3.6 键盘电路设计 141
7.3.7 4位LED数码管显示 144
7.3.8 可编程的键盘和显示接口芯片8279 145
7.4 本章小结 151
第8章 数码显示管LED 152
8.1 LED显示器接口原理 152
8.1.1 LED显示器结构 152
8.1.2 LED显示器工作原理 153
8.1.3 8段数码管的驱动 154
8.2 硬件电路设计 156
8.2.1 CPU输出端口控制的4位数码显示电路 156
8.2.2 基于CD4511芯片的数码显示电路 156
8.3 软件流程 159
8.4 程序设计 160
8.4.1 CPU输出端口控制的数码显示程序 160
8.4.2 基于CD4511芯片的数码显示程序 161
8.5 本章小结 162
第9章 温度采集与控制 163
9.1 实例分析 163
9.2 设计思路分析 163
9.2.1 DS18B20温度传感器的工作原理 164
9.2.2 DS18B20温度传感器的数据处理与传输 165
9.3 硬件电路设计 165
9.3.1 DS18B20内部结构 165
9.3.2 DS18B20应用电路工作原理 169
9.3.3 DS18B20在温控系统中的应用 171
9.4 软件程序设计 172
9.4.1 程序命令时序 173
9.4.2 程序流程设计 175
9.4.3 参考程序 178
9.5 本章小结 181
第10章 实时时钟 183
10.1 实例说明 183
1 0.2 设计思路分析 184
10.2.1 电子钟程序设计 184
10.2.2 基于DS12C887芯片的实时日历时钟 187
10.3 硬件电路分析 187
10.3.1 受控引脚及功能 187
10.3.2 结构框图 189
10.3.3 电路原理及说明 189
10.4 软件程序设计 190
10.4.1 DS12C887芯片的内存空间 190
10.4.2 程序流程 194
10.4.3 参考程序 195
10.5 设计总结 197
第11章 电子天平 198
11.1 实例说明 198
11.2 设计思路 199
11.2.1 主要器件选取 199
11.2.2 工作原理 199
11.3 硬件电路设计 200
11.3.1 压力传感器与运放电路 200
11.3.2 A/D转换电路 202
11.3.3 定标 204
11.3.4 显示与键盘电路 205
11.4 软件程序设计 207
11.4.1 程序流程 207
11.4.2 参考程序 207
11.5 设计总结 214
第12章 步进电机驱动 215
12.1 实例分析 215
12.2 设计思路分析 216
12.2.1 步进电机工作原理 216
12.2.2 步进电机的控制 217
12.3 硬件电路设计 220
12.3.1 一般步进电机驱动电路 220
12.3.2 基于UCN5804芯片的步进电机驱动电路 222
12.3.3 基于ULN2003芯片的步进电机驱动电路 226
12.3.4 步进电机应用实例 229
12.4 软件设计 229
12.4.1 程序设计流程 229
12.4.2 参考程序 231
12.5 设计总结 234
第13章 液晶显示模块 235
13.1 实例说明 235
13.2 设计思路分析 236
13.2.1 液晶显示模块介绍 236
13.2.2 器件的选择 238
13.3 硬件电路分析 239
13.3.1 液晶显示工作原理 239
13.3.2 接口引脚功能 240
13.4 软件程序设计 241
13.4.1 功能说明及指令集 241
13.4.2 程序设计流程 249
13.4.3 字符代表码 249
13.4.4 参考程序 250
13.5 设计总结 257
第14章 串行通信 258
14.1 实例说明 258
14.2 设计思路分析 259
14.2.1 串行通信简介 259
14.2.2 上位机软件的选择 260
14.2.3 LabVIEW虚拟仪器特点 260
14.3 硬件电路设计 261
14.3.1 RS-232C标准 261
14.3.2 RS-232C转换电路方案选择 262
14.3.3 采用MAX3232的RS-232C转换电路 263
14.3.4 ADC0809电路设计 264
14.4 软件设计 264
14.4.1 总体流程设计 264
14.4.2 单片机软件设计 265
14.4.3 上位机软件设计 267
14.5 本章小结 272
第15章 无线传输模块设计 273
15.1 实例说明 273
15.2 设计思路 274
15.2.1 无线传输模块选择 274
15.2.2 无线通信芯片选取 275
15.2.3 无线传输模块特性 275
15.3 硬件电路设计 276
15.3.1 nRF401芯片说明 276
15.3.2 PTR2000芯片说明 277
15.3.3 单片机接口电路设计 278
15.3.4 RS-232电平转换电路设计 279
15.4 软件设计 280
15.4.1 通信协议 280
15.4.2 程序设计流程 281
15.4.3 参考程序 282
15.5 本章小结 286
第16章 热敏微型打印机设计 288
16.1 实例说明 288
16.2 设计思路 288
16.2.1 工作原理 289
16.2.2 主要器件选取 289
16.3 硬件电路设计 289
16.3.1 LTP1245热敏打印头 290
16.3.2 进纸步进电机控制 294
16.3.3 电路原理图及设计说明 296
16.4 软件程序设计 297
16.4.1 程序流程 297
16.4.2 字库的提取 299
16.4.3 参考程序 300
16.5 设计总结 304
第17章 超声波测距 305
17.1 实例说明 305
1 7.2 超声波传感器 306
17.2.1 T/R-40-XX系列 306
17.2.2 超声波测距原理及设计思路 307
17.3 硬件电路设计 308
17.3.1 显示电路 309
17.3.2 发射电路 309
17.3.3 接收电路 309
17.3.4 鉴相电路 311
17.3.5 最小系统电路 311
17.3.6 硬件的调试 312
17.4 软件程序设计 312
17.4.1 程序流程 312
17.4.2 参考程序 313
17.5 超声波测距的外界影响 317
17.6 本章小结 318
第18章 红外线遥控 319
18.1 实例说明 319
18.2 红外线遥控系统 320
18.2.1 红外线遥控系统的发射和接收部分 320
18.2.2 红外线遥控系统框图 320
18.2.3 红外遥控信号编码原理 321
18.2.4 红外线遥控编码芯片LC7461 321
18.3 硬件电路设计 325
18.3.1 硬件电路设计原理图与说明 325
18.3.2 硬件电路检测程序 326
18.4 软件程序设计 328
18.4.1 程序流程 328
1 8.4.2 参考程序 329
18.5 红外线遥控编码 331
18.5.1 NEC编码标准 332
18.5.2 Philips的RC-5编码标准 332
18.5.3 其他编码类型 333
18.6 本章小结 333
参考文献 334