单片机入门篇 2
第1章 如何学习单片机 2
1.1 什么是单片机 2
1.2 单片机有何用途 3
1.3 为什么要学习单片机 5
1.4.怎么学习单片机 7
1.4.1 基础理论 7
1.4.2 实验实践 8
1.4.3 硬件设计 9
第2章 常用软件介绍 10
2.1 单片机编程软件入门 10
2.1.1 Keil环境简介 10
2.1.2 串行口的设置与驱动程序的安装 16
2.1.3 STC程序下载软件 17
2.2 常用工具简介 19
2.2.1 串口调试助手 19
2.2.2 单片机编程小精灵 19
2.2.3 数码管代码生成工具 20
2.2.4 点阵数据生成工具 21
2.2.5 液晶汉字模提取软件LcmZimo 21
2.2.6 简谱谱写工具Music Encode 22
2.3 Protues电路仿真软件 22
2.3.1 Protues电路仿真软件简介 23
2.3.2 Protues软件工程创建实例 23
第3章 单片机发展、典型产品及基础知识介绍 29
3.1 单片机发展与应用 29
3.1.1 单片机的发展历程 30
3.1.2 单片机的发展趋势 30
3.2 单片机产品 32
3.2.1 典型产品简介 32
3.2.2 STC单片机 35
3.3 51单片机基本结构 43
3.3.1 51单片机内部结构框图 43
3.3.2 51单片机的基本组成 44
3.3.3 51单片机的引脚定义及功能 45
3.4 51单片机的存储器结构 46
3.4.1 51单片机存储器结构框图 47
3.4.2 程序存储器详解 48
3.4.3 数据存储器详解 49
3.5 单片机数制基本知识 52
3.5.1 进位计数制及其各进制之间的转换 52
3.5.2 进制之间的对应关系表 53
3.5.3 二进制数之间的算术运算 53
3.5.4 二进制数之间的逻辑运算 54
3.5.5 带符号数的表示方法 54
汇编基础篇 58
第4章 指令系统 58
4.1 指令系统概述 58
4.1.1 指令分类 58
4.1.2 指令格式 59
4.1.3 指令字长与周期 60
4.2 寻址方式 60
4.2.1 直接寻址 60
4.2.2 立即寻址 62
4.2.3 寄存器寻址 62
4.2.4 寄存器间接寻址 63
4.2.5 变址寻址 63
4.2.6 相对寻址 65
4.2.7 位寻址 65
4.3 指令用法简介 66
4.3.1 寄存器及数据说明 66
4.3.2 数据传送类指令 66
4.3.3 算术运算类指令 72
4.3.4 逻辑运算类指令 74
4.3.5 控制转移类指令 77
4.3.6 位操作类指令 80
4.3.7 伪指令 81
4.4 指令系统编程应用 84
第5章 单片机汇编指令系统应用实例 98
5.1 LED点阵应用编程 98
5.2 继电器原理及应用编程 107
5.3 步进电机原理及应用编程 109
5.3.1 步进电机种类 109
5.3.2 步进电机工作基本原理 110
5.3.3 步进电机的驱动方式 111
5.4 按键控制7段LED数码管 115
第6章 中断、定时/计数器、串口基本原理及汇编应用实例 118
6.1 中断 118
6.1.1 中断基础知识 118
6.1.2 中断源 118
6.1.3 中断控制寄存器 119
6.1.4 中断应用编程 120
6.2 定时/计数器 122
6.2.1 定时器/计数器的工作原理 122
6.2.2 定时器应用编程 123
6.2.3 定时T2高级应用编程 127
6.3 串口通信 130
6.3.1 串口通信原理 130
6.3.2 串口通信应用编程 131
C语言提高篇 140
第7章 单片机C语言编程基础知识 140
7.1 单片机C语言基础知识 140
7.1.1 标识符和关键字 141
7.1.2 C51数据类型 143
7.1.3 常量与变量 145
7.2 运算符和表达式 151
7.2.1 算术运算符 151
7.2.2 关系运算符 151
7.2.3 逻辑运算符 152
7.2.4 布尔“位”运算符 152
7.2.5 赋值运算符 153
7.2.6 递增/递减运算符 154
7.2.7 运算符的优先级 154
7.3 Keil C的流程控制 155
7.3.1 循环指令 155
7.3.2 选择指令 156
7.4 数组与指针 158
7.5 函数与中断子程序 160
7.6 Keil C的预处理命令 161
第8章 单片机C语言编程——I/O口功能使用 163
8.1 单片机的I/O口内部结构 163
8.2 输出口工作原理及应用编程 167
8.3 输入口工作原理及应用编程 178
8.3.1 输入设备 178
8.3.2 输入电路设计 179
8.3.3 抖动与防抖动 181
8.3.4 按键作输入设备编程应用举例 183
第9章 单片机C语言编程——中断 202
9.1 认识中断 202
9.1.1 MCS-51单片机中断 203
9.1.2 中断启用寄存器IE 204
9.1.3 中断优先级寄存器IP 204
9.1.4 定时/计数器控制寄存器TCON 206
9.1.5 中断向量 206
9.1.6 中断的应用 207
9.2 中断应用编程 208
9.2.1 外部中断INT0实例演练 208
9.2.2 外部中断INT1实例演练 211
9.2.3 外部中断INT0与外部中断INT1实例演练 214
第10章 单片机C语言编程——定时器 218
10.1 51单片机定时器/计数器 218
10.1.1 定时/计数器基础 218
10.1.2 工作模式寄存器TMOD 219
10.1.3 定时/计数器的计数功能 222
10.1.4 定时/计数器的使用方式 223
10.2 定时器应用编程 224
10.2.1 定时/计数器实例演练——查询方式 224
10.2.2 定时/计数器实例演练——中断方式 227
10.2.3 定时/计数器实例演练——60s定时 229
10.2.4 定时/计数器实例演练——码表 232
第11章 单片机C语言编程——串口通信 238
11.1 数据传输概念 238
11.2 了解74LS164/165芯片 240
11.3 认识MCS-51的串行口 243
11.4 SCON控制寄存器 245
11.5 比特率设定方法 247
11.6 电平转换芯片MAX232 248
11.7 多处理器间的数据传输 249
11.8 串口通讯应用编程 250
11.8.1 Mode0移位式数据并转串实例 250
11.8.2 Mode0移位式数据串转并实例 252
11.8.3 Mode1(自发自收)实例 254
11.8.4 Mode2实例 256
11.8.5 Mode3实例 258
11.8.6 单片机与单片机双机通讯实例 259
高级应用篇 264
第12章 AD/DA转换 264
12.1 基于单片机的AD数据采集 264
12.1.1 ADC0808芯片工作原理 264
12.1.2 ADC0808应用硬件电路图 268
12.1.3 程序设计 268
12.2 基于单片机的DA转换 271
12.2.1 DAC0832芯片工作原理 271
12.2.2 DAC0832应用硬件电路图 273
12.2.3 DAC0832正弦波发生程序 274
12.2.4 DAC0832三角波发生程序 276
12.2.5 DAC0832矩形波发生程序 278
第13章 LCD显示 280
13.1 LCD1602显示屏 280
13.1.1 液晶显示的原理 280
13.1.2 LCD1602工作原理 281
13.1.3 LCD1602应用编程 286
13.2 LCD12864显示屏应用 290
13.2.1 LCD12864硬件连接说明 290
13.2.2 LCD12864时序与指令 292
13.2.3 LCD12864液晶显示屏应用编程 295
第14章 总线 300
14.1 IIC总线协议 300
14.1.1 IIC总线概述 300
14.1.2 IIC总线数据传送 301
14.1.3 IIC总线应用电路图 307
14.1.4 IIC应用电路 308
14.1.5 IIC应用编程 309
14.2 RS485总线协议 316
14.2.1 RS485总线工作原理 316
14.2.2 RS-485的电气特性 316
14.2.3 MAX485基础 316
14.2.4 MAX485的应用电路 318
14.2.5 MAX485操作步骤 319
14.2.6 RS485总线应用举例 319
14.3 CAN总线协议 321
14.3.1 CAN总线简介 321
14.3.2 CAN总线特点 322
14.3.3 CAN总线在汽车电子上的应用 323
第15章 传感器 328
15.1 基于单片机的数字温度传感器应用 328
15.1.1 DS18B20工作原理 328
15.1.2 DS18B20常用指令 335
15.1.3 DS18B20温度传感器程序设计 338
15.2 超声波传感器工作原理 343
15.2.1 超声波传感器简介 343
15.2.2 超声波传感器结构及工作原理 343
15.2.3 超声波测距器的算法设计 346
15.2.4 超声波传感器程序设计 347
15.3 基于单片机的温湿度传感器程序设计 351
15.3.1 DHT11工作原理及硬件电路 351
15.3.2 温湿度传感器应用 352
第16章 滤波器 350
16.1 程序判断滤波 360
16.2 中值滤波 363
16.3 算术平均滤波 366
16.4 去极值平均滤波 368
16.5 滑动平均滤波 369
16.6 滑动加权滤波 370
16.7 一阶滞后滤波 372
附录一 374
编程时keil中常见的错误 374
KEILC编译器常见警告信息的解决办法 379
附录二 380
单片机指令字节数与周期数 380
附录三 385
周立功写给学单片机的年轻人 385
我的大学——郭天祥 388
参考文献 397