《手把手教你学单片机 第2版》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:周兴华编著
  • 出 版 社:北京:北京航空航天大学出版社
  • 出版年份:2007
  • ISBN:7811240777
  • 页数:319 页
图书介绍:本书以实际编程及做实验为主线贯穿全书。完全摒弃教科书的方法,采用“程序完成后软件仿真→单片机烧录程序→试验板通电实验”的方法,以全新的方式边学边实验,将初学者领进单片机世界的大门。随书所附的光盘中提供了一些工具软件以及本书所有的实验程序文件,在学习、实验时可参考。

第1章 实验设备及器材使用介绍 1

1.1 单片机的发展史及特点 1

1.2 单片机入门的有效途径 2

1.3 实验工具及器材 3

1.3.1 Keil C51 Windows集成开发环境 3

1.3.2 TOP851多功能编程器 4

1.3.3 LED输出试验板 5

1.3.4 LED数码管输出试验板 6

1.3.5 5 V高稳定专用稳压电源 8

1.3.6 16×2字符型液晶显示模组 8

第2章 Keil C51集成开发环境及TOP851多功能编程器2.1 Keil C51集成开发环境软件安装 10

2.2 TOP851烧录软件安装 11

2.3 TOP851烧录软件操作 12

2.3.1 文件操作和编辑 12

2.3.2 选择型号 16

2.3.3 读/写单片机 17

第3章 初步接触KeilC51及TOP851软件并感受第一个演示程序效果 17

3.1 建立一个工程项目,选择芯片并确定选项 19

3.2 建立源程序文件 21

3.3 添加文件到当前项目组中 22

3.4 编译(汇编)文件 23

3.5 检查并修改源程序文件中的错误 24

3.6 软件模拟仿真调试 24

3.7 烧录程序(编程操作) 25

3.8 观察程序运行的结果 27

第4章 单片机的基本知识 28

4.1 MCS-51单片机的基本结构 28

4.2 80C51基本特性及引脚定义 29

4.2.1 80C51的基本特征 29

4.2.2 80C51的引脚定义及功能 30

4.3 80C51的内部结构 31

4.4 80C51的存储器配置和寄存器 33

第5章 汇编语言程序指令的学习 37

5.1 MCS-51单片机的指令系统 37

5.2 汇编语言的特点 38

5.3 汇编语言的语句格式 38

第6章 数据传送指令的学习及实验 40

6.1 按寻址方式分类的数据传送指令 40

6.1.1 立即数寻址 40

6.1.2 直接寻址 40

6.1.3 寄存器寻址 40

6.1.4 寄存器间接寻址 40

6.1.5 位寻址 41

6.1.6 变址寻址 41

6.1.7 相对寻址 41

6.2 点亮/熄灭一个发光二极管的实验,自动循环工作 41

6.2.1 实现方法 41

6.2.2 源程序文件 41

6.2.3 程序分析解释 43

6.2.4 小结 43

6.3 点亮/熄灭一个发光二极管的实验,点亮/熄灭时间自动发生变化(分3段),自动循环工作 43

6.3.1 实现方法 43

6.3.2 源程序文件 44

6.3.3 程序分析解释 45

6.3.4 小结 45

6.4 P1口的8个发光二极管每隔2个右循环点亮实验 46

6.4.1 实现方法 46

6.4.2 源程序文件 46

6.4.3 程序分析解释 46

6.4.4 小结 47

6.5 MCS-51内部的RAM和特殊功能寄存器SFR的数据传送指令 47

6.5.1 以累加器为目的操作数 47

6.5.2 以寄存器为目的操作数 47

6.5.3 以直接地址为目的操作数 47

6.5.4 以寄存器间接地址为目的操作数 48

6.5.5 16位数据传送 48

6.6 “跑马灯”实验 48

6.6.1 实现方法 48

6.6.2 源程序文件 49

6.6.3 程序分析解释 51

6.6.4 小结 53

6.7 单片机的受控输出显示实验 53

6.7.1 实现方法 53

6.7.2 源程序文件 53

6.7.3 程序分析解释 54

6.8 小结 55

第7章 算术运算指令的学习及实验 56

7.1 算术运算指令 56

7.1.1 加法指令 56

7.1.2 带进位加法指令 56

7.1.3 带借位减法指令 56

7.1.4 乘法指令 57

7.1.5 除法指令 57

7.1.6 加1指令 57

7.1.7 减1指令 57

7.1.8 二-十进制调整指令 58

7.2 52H、FCH两数相加实验,结果从P1口输出 58

7.2.1 实现方法 58

7.2.2 源程序文件 58

7.2.3 程序分析解释 59

7.3 FFH、03H两数相乘实验,结果从P0、P1口输出 60

7.3.1 实现方法 60

7.3.2 源程序文件 60

7.3.3 程序分析解释 61

7.4 加1指令实验,让P1口的8个发光二极管模拟二进制的加法运算 61

7.4.1 实现方法 61

7.4.2 源程序文件 61

7.4.3 程序分析解释 62

7.5 加1指令实验(不进行二-十进制调整) 62

7.5.1 实现方法 62

7.5.2 源程序文件 63

7.5.3 程序分析解释 64

7.6 加1指令实验(进行二-十进制调整) 64

7.6.1 实现方法 64

7.6.2 源程序文件 64

7.6.3 程序分析解释 65

7.7 小结 66

第8章 逻辑运算指令的学习及实验 67

8.1 逻辑运算指令 67

8.1.1 累加器A取反指令 67

8.1.2 累加器A清0指令 67

8.1.3 逻辑“与”指令 67

8.1.4 逻辑“或”指令 68

8.1.5 逻辑“异或”指令 68

8.1.6 循环移位指令 68

8.1.7 累加器半字节交换指令 69

8.2 逻辑运算举例一 69

8.2.1 实现方法 69

8.2.2 源程序文件 69

8.2.3 程序分析解释 71

8.3 逻辑运算举例二 72

8.3.1 实现方法 72

8.3.2 源程序文件 72

8.3.3 程序分析解释 73

8.4 逻辑运算举例三 73

8.4.1 实现方法 74

8.4.2 源程序文件 74

8.4.3 程序分析解释 74

8.5 小结 75

第9章 控制转移类指令的学习及实验 76

9.1 控制转移类指令 76

9.1.1 无条件转移指令 76

9.1.2 条件转移指令 77

9.1.3 比较转移指令 77

9.1.4 循环转移指令 78

9.1.5 子程序调用及返回指令 78

9.2 散转程序实验 79

9.2.1 实现方法 79

9.2.2 源程序文件 80

9.2.3 程序分析解释 82

9.2.4 小结 83

9.3 统计含58H关键字的实验 84

9.3.1 实现方法 84

9.3.2 源程序文件 84

9.3.3 程序分析解释 85

第10章 位操作指令的学习 87

10.1 位操作指令 87

10.1.1 位数据传送指令 87

10.1.2 位控制修正指令 87

10.1.3 位逻辑运算指令 88

10.2 将P1.0的状态传送到P2.0的实验 88

10.2.1 实现方法 88

10.2.2 源程序文件 88

10.2.3 程序分析解释 89

10.3 比较输入数大小的实验 90

10.3.1 实现方法 90

10.3.2 源程序文件 90

10.3.3 程序分析解释 91

10.4 将累加器A中的立即数移出的实验 91

10.4.1 实现方法 92

10.4.2 源程序文件 92

10.4.3 程序分析解释 92

10.5 实现逻辑函数的实验 93

10.5.1 实现方法 93

10.5.2 源程序文件 93

10.5.3 程序分析解释 94

第11章 栈操作指令、空操作指令、伪指令及字节交换指令的学习 94

11.1 栈操作指令 96

11.1.1 堆栈指令 96

11.1.2 出栈指令 96

11.2 空操作指令 96

11.3 伪指令 97

11.3.1 汇编起始命令 97

11.3.2 汇编结束命令 97

11.3.3 等值命令 97

11.3.4 定义字节命令 98

11.3.5 定义字命令 98

11.3.6 预留存储区命令 99

11.3.7 定义位命令 99

11.3.8 定义数据地址命令 99

11.4 字节交换指令 99

11.5 查0~9平方表实验 100

11.5.1 实现方法 100

11.5.2 源程序文件 100

11.5.3 程序分析解释 102

11.6 利用NOP指令产生精确方波实验 104

11.6.1 实现方法 104

11.6.2 源程序文件 104

11.6.3 程序分析解释 106

11.7 MCS-51指令分类表 107

第12章 定时器/计数器及实验 111

12.1 定时器/计数器的结构及工作原理 111

12.2 定时器/计数器方式寄存器和控制寄存器 112

12.3 定时器/计数器的工作方式 113

12.3.1 方式0 113

12.3.2 方式1 114

12.3.3 方式2 115

12.3.4 方式3 115

12.4 定时器/计数器的初始化 116

12.5 蜂鸣器发音实验 117

12.5.1 实现方法 117

12.5.2 源程序文件 117

12.5.3 程序分析解释 118

12.6 定时器T1方式2计数实验 118

12.6.1 实现方法 118

12.6.2 源程序文件 119

12.6.3 程序分析解释 119

12.7 定时器T1方式1定时实验 120

12.7.1 实现方法 120

12.7.2 源程序文件 120

12.7.3 程序分析解释 121

第13章 中断系统及实验 124

13.1 中断的种类 124

13.1.1 外中断 124

13.1.2 内中断 124

13.2 MCS-51单片机的中断系统 124

13.2.1 中断源及控制 124

13.2.2 中断响应 127

13.3 令LED输出试验板上的蜂鸣器发出1 kHz音频的实验 128

13.3.1 实现方法 128

13.3.2 源程序文件 129

13.3.3 程序分析解释 129

13.4 利用外中断方式进行数据采集实验 130

13.4.1 实现方法 130

13.4.2 源程序文件 130

13.4.3 程序分析解释 131

13.5 中断嵌套实验 132

13.5.1 实现方法 132

13.5.2 源程序文件 132

13.5.3 程序分析解释 133

13.6 交通灯控制器实验 134

13.6.1 实现方法 134

13.6.2 源程序文件 134

13.6.3 程序分析解释 136

13.7 键控计数实验 138

13.7.1 实现方法 138

13.7.2 源程序文件 138

13.7.3 程序分析解释 139

第14章 汇编语言的程序设计及实验 141

14.1 单片机应用系统的设计过程 141

14.2 汇编语言程序设计步骤 142

14.3 顺序程序设计 142

14.4 右移循环流水灯实验 143

14.4.1 实现方法 143

14.4.2 源程序文件 143

14.4.3 程序分析解释 144

14.5 循环程序设计 145

14.6 找数据块中最大数的实验 145

14.6.1 实现方法 145

14.6.2 源程序文件 146

14.6.3 程序分析解释 147

14.7 延时子程序的结构 148

14.8 寻找ASCII码“$”的实验 149

14.8.1 实现方法 149

14.8.2 源程序文件 149

14.8.3 程序分析解释 150

14.9 子程序设计、调用及返回 151

14.9.1 子程序的结构特点 151

14.9.2 编写子程序时的注意要点 151

14.9.3 子程序的调用与返回 152

14.9.4 子程序嵌套 152

14.10 使P0口的8个LED闪烁20次实验 152

14.10.1 实现方法 152

14.10.2 源程序文件 152

14.10.3 程序分析解释 153

14.11 分支程序设计 154

14.11.1 单分支程序 154

14.11.2 多分支程序 154

14.12 做简单的+、-、×、÷实验 156

14.12.1 实现方法 156

14.12.2 源程序文件 156

14.12.3 程序分析解释 158

14.13 查表程序设计 160

14.14 单片机演奏音乐的实验 161

14.14.1 实现方法 161

14.14.2 源程序文件 161

14.14.3 程序分析解释 163

14.15 数据排序实验 164

14.15.1 实现方法 164

14.15.2 源程序文件 165

14.15.3 程序分析解释 171

第15章 键盘接口技术及实验 172

15.1 独立式键盘 172

15.2 行列式键盘 173

15.3 独立式键盘接口的编程模式 173

15.4 行列式键盘接口的编程模式 174

15.5 键盘工作方式 174

15.6 独立式键盘输入实验 175

15.6.1 实现方法 175

15.6.2 源程序文件 175

15.6.3 程序分析解释 177

15.7 行列式键盘输入实验 178

15.7.1 实现方法 178

15.7.2 源程序文件 178

15.7.3 程序分析解释 180

15.8 扫描方式的键盘输入实验 181

15.8.1 实现方法 181

15.8.2 源程序文件 181

15.8.3 程序分析解释 182

15.9 定时中断方式的键盘输入实验 183

15.9.1 实现方法 183

15.9.2 源程序文件 183

15.9.3 程序分析解释 184

第16章 LED显示器接口技术及实验 186

16.1 LED数码显示器的构造及特点 186

16.2 LED数码显示器的显示方法 188

16.2.1 静态显示法 188

16.2.2 动态扫描显示法 189

16.3 静态显示实验 190

16.3.1 实现方法 190

16.3.2 源程序文件 190

16.3.3 程序分析解释 191

16.4 慢速动态显示实验 192

16.4.1 源程序文件 192

16.4.2 程序分析解释 193

16.5 快速动态显示实验 193

16.5.1 源程序文件 193

16.5.2 程序分析解释 194

16.6 实时时钟实验 195

16.6.1 实现方法 195

16.6.2 源程序文件 195

16.6.3 程序分析解释 198

第17章 字符型液晶(LCD)模块原理及设计学习 198

17.1 液晶显示器概述 202

17.2 16×2字符型液晶显示模块(LCM)特性 203

17.3 16×2字符型液晶显示模块(LCM)引脚及功能 203

17.4 16×2字符型液晶显示模块(LCM)的内部结构 203

17.5 液晶显示控制驱动集成电路HD44780特点 204

17.6 HD44780工作原理 205

17.6.1 DDRAM——数据显示用RAM 206

17.6.2 CGROM——字符产生器ROM 207

17.6.3 CGRAM——字型、字符产生器RAM 208

17.6.4 IR——指令寄存器 209

17.6.5 DR——数据寄存器 209

17.6.6 BF——忙碌标志信号 209

17.6.7 AC——地址计数器 209

17.7 LCD控制器的指令 209

17.7.1 清除显示器 210

17.7.2 光标归位设定 210

17.7.3 设定字符进入模式 210

17.7.4 显示器开关 210

17.7.5 显示光标移位 211

17.7.6 功能设定 211

17.7.7 CGRAM地址设定 211

17.7.8 DDRAM地址设定 211

17.7.9 忙碌标志BF或AC地址读取 212

17.7.10 写数据到CGRAM或DDRAM中 212

17.7.11 从CGRAM或DDRAM中读取数据 212

17.8 LCM工作时序 212

17.9 单片机驱动LCM的电路 213

第18章 体验第一个液晶程序的效果并建立模块化设计的相关子程序18.1 体验第一个液晶程序的效果 215

18.1.1 源程序文件 215

18.1.2 程序分析解释 218

18.2 查询忙碌标志信号子程序 222

18.2.1 源程序文件 222

18.2.2 程序分析解释 222

18.3 写指令到LCM(IR寄存器)子程序 223

18.3.1 源程序文件 223

18.3.2 程序分析解释 223

18.4 写数据到LCM(DR寄存器)子程序 223

18.4.1 源程序文件 223

18.4.2 程序分析解释 224

18.5 清除显示屏子程序 224

18.5.1 源程序文件 224

18.5.2 程序分析解释 224

18.6 启动LCM子程序 224

18.6.1 源程序文件 225

18.6.2 程序分析解释 225

18.7 让字母“F”在显示屏的第2行第10列显示 227

18.7.1 源程序文件 227

18.7.2 程序分析解释 228

18.8 使LCM显示2行字符串(英文信息) 229

18.8.1 源程序文件 229

18.8.2 程序分析解释 232

18.9 使LCM显示2行字符串(英文信息)并循环移动 233

18.9.1 源程序文件 233

18.9.2 程序分析解释 235

第19章 简单的液晶显示型自动化仪器的设计学习及实验19.1 工业生产自动计数器 238

19.1.1 实现方法 238

19.1.2 源程序文件 238

19.1.3 程序分析解释 246

19.2 设备运行状态自动显示器 249

19.2.1 实现方法 250

19.2.2 源程序文件 250

19.2.3 程序分析解释 253

19.3 液晶显示计时时钟 254

19.3.1 源程序文件 254

19.3.2 程序分析解释 260

19.4 让液晶显示屏显示自制图形“中” 264

19.4.1 实现方法 264

19.4.2 源程序文件 264

19.4.3 程序分析解释 266

19.5 液晶显示屏显示复杂的自制图形 268

19.5.1 实现方法 268

19.5.2 源程序文件 268

19.5.3 程序分析解释 271

第20章 Keil C51集成开发环境的设置及调试方法 271

20.1 工程项目的建立、源程序文件的建立及加载 273

20.1.1 建立工程文件 274

20.1.2 源程序文件的建立 276

20.1.3 添加文件到当前项目组中 278

20.2 工程的详细设置 280

20.2.1 Target页面 280

20.2.2 Output页面 281

20.2.3 Listing页面 282

20.2.4 C51页面 283

20.2.5 Debug页面 284

20.3 编译、连接 285

20.4 Keil C51集成开发环境软件的调试方法 286

20.4.1 常用调试命令 286

20.4.2 断点设置 286

20.4.3 在线汇编 287

20.4.4 程序调试时的常用窗口 287

20.5 外围接口工具 289

20.5.1 P1口作为输入端口 289

20.5.2 P1口作为输出端口 290

20.5.3 外部中断INT0 291

20.5.4 定时器/计数器0 292

第21章 看门狗定时器使用及简单的接口扩展21.1 看门狗定时器的使用 293

21.2 实验:P0~P3口的32个LED(发光管)依次流水点亮,形成“流水灯” 293

21.2.1 实现方法 294

21.2.2 源程序文件 294

21.2.3 程序分析解释 295

21.3 模拟程序失控情况的“流水灯”实验 297

21.3.1 源程序文件 297

21.3.2 程序分析解释 299

21.4 简单的接口功率扩展 300

21.5 常用的外部芯片扩展 302

21.5.1 数据存储器6264的扩展及应用实例 303

21.5.2 用8255A可编程并行接口芯片扩展I/O口及应用实例 307

21.5.3 用8155A可编程并行接口芯片扩展I/O口及应用实例 310

21.5.4 扩展8位A/D转换芯片ADC0809及应用实例 314

21.5.5 扩展8位D/A转换芯片DAC0832及应用实例 317