当前位置:首页 > 工业技术
PIC微控制器技术及应用
PIC微控制器技术及应用

PIC微控制器技术及应用PDF电子书下载

工业技术

  • 电子书积分:18 积分如何计算积分?
  • 作 者:(美)加西奥(Jasio,D)等著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2009
  • ISBN:9787121083730
  • 页数:616 页
图书介绍:本书是一本PIC系列微处理器开发应用的入门/提高级指导教材,它以美国Microchip(微芯)公司的PIC微处理器为例,从基础知识到基本应用开发,再到高级应用开发,进行了详细介绍。本书最后给出了大量的参考文献目录和网络资源。附录给出了本书正文涉及的案例项目的源代码。
《PIC微控制器技术及应用》目录

第1部分 PIC微控制器引言第1章 PIC微控制器族 2

1.1 12位指令字长微控制器 4

1.2 14位指令字长微控制器 5

1.3 16位指令字长微控制器 8

1.4 PIC微控制器内部结构 9

1.4.1 程序存储器(闪存) 9

1.4.2 数据存储器(RAM) 9

1.4.3 寄存器文件映射和特殊功能寄存器 9

1.4.4 振荡器电路 19

1.4.5 复位电路 21

1.4.6 中断 22

1.4.7 配置字 23

1.4.8 I/O接口 23

第2章 16系列PIC微控制器和16F84A介绍 27

2.1 PIC16系列概述 27

2.1.1 引言 27

2.1.2 16F84A 28

2.1.3 升级注意 29

2.2 16F84A架构概览 29

2.2.1 状态寄存器 30

2.3 存储器技术回顾 31

2.3.1 静态RAM(SRAM) 31

2.3.2 EPROM(可擦除可编程只读存储器) 32

2.3.3 EEPROM(电可擦除可编程只读存储器) 32

2.3.4 闪存(Flash) 32

2.4 16F84A的存储器 32

2.4.1 16F84A的程序存储器 33

2.4.2 16F84A数据和特殊功能寄存器存储器(“RAM”) 34

2.4.3 配置字 35

2.4.4 EEPROM 35

2.5 时序相关的概念 36

2.5.1 时钟振荡器和指令周期 36

2.5.2 流水线 37

2.6 上电和复位 38

2.7 与Atmel AT89C2051比较 39

2.8 16F84A片内复位电路详述 40

2.9 小结 41

参考文献 41

第3章 并行端口、供电电源和时钟振荡器 42

3.1 并行输入/输出的目的 42

3.2 并行输入/输出的技术挑战 43

3.2.1 构建并行端口 43

3.2.2 端口电气特性 44

3.2.3 一些典型实例 45

3.3 连接到并行端口 46

3.3.1 开关 46

3.3.2 发光二极管LED 47

3.4 PIC16F84A的并行端口 48

3.4.1 16F84A的端口B 49

3.4.2 16F84A的端口A 49

3.4.3 端口输出特性 50

3.5 时钟振荡器 51

3.5.1 时钟振荡器种类 51

3.5.2 实际振荡器考虑 52

3.5.3 16F84A的时钟振荡器 52

3.6 供电 53

3.6.1 供电需求和供电源 53

3.6.2 16F84A工作条件 53

3.7 电子“Ping-Pong”游戏的硬件设计 54

3.8 小结 55

参考文献 55

第2部分 使用汇编语言对PIC微控制器编程第4章 汇编语言引言 58

4.1 计算机程序能做什么、如何开发程序 58

4.1.1 编程的问题和汇编程序折中方案 59

4.1.2 汇编语言的编程过程 60

4.1.3 程序开发过程 60

4.2 PIC16系列指令集 61

4.2.1 PIC16系列ALU 61

4.2.2 PIC16系列指令集简介 61

4.3 汇编编译器和汇编程序格式 62

4.3.1 汇编编译器和Microchip公司的MPASMTM编译器介绍 62

4.3.2 汇编程序格式 62

4.3.3 汇编程序的伪指令 63

4.3.4 数制 64

4.4 创建简单的程序 64

4.4.1 一个简单的数据传输程序 64

4.5 选择开发环境 66

4.5.1 MPLAB介绍 66

4.5.2 MPLAB的组件 67

4.5.3 MPLAB文件结构 67

4.6 MPLAB开发环境介绍 67

4.6.1 创建一个项目 68

4.6.2 输入源代码 69

4.6.3 编译项目 69

4.7 仿真技术介绍 70

4.7.1 开始 70

4.7.2 生成端口输入信号 70

4.7.3 观察微控制器的特征 71

4.7.4 程序复位和运行 71

4.8 下载程序到微控制器 72

4.9 简单比较CISC指令集和RISC指令集 73

4.10 16系列指令集格式详述 74

4.11 小结 75

参考文献 75

第5章 构建汇编语言程序 76

5.1 结构化程序设计的主要概念 76

5.1.1 流程图 76

5.1.2 状态图 77

5.2 流程控制——分支和子程序 78

5.2.1 条件分支和位操作 78

5.2.2 子程序和堆栈 79

5.3 产生时延和间隔 80

5.4 数据处理 82

5.4.1 间接寻址和文件选择寄存器(File Select Register) 82

5.4.2 查找表(Look-Up Table) 82

5.4.3 有延时和查找表的程序示例 84

5.5 逻辑运算指令 86

5.6 算术运算指令和进位标志 86

5.6.1 使用add指令 86

5.6.2 使用subtract指令 86

5.6.3 一个算术运算程序例子 86

5.6.4 用间接寻址来保存斐波纳契数列 88

5.7 降低汇编程序的复杂度 90

5.7.1 包含文件 90

5.7.2 宏 91

5.7.3 MPLAB特殊指令 92

5.8 MPLAB仿真器的进一步使用 92

5.8.1 断点 92

5.8.2 跑表(Stopwatch) 93

5.8.3 跟踪(Trace) 94

5.9 “Ping-Pong”游戏程序 94

5.9.1 “Ping-Pong”游戏程序的结构 95

5.9.2 探索“Ping-Pong”游戏程序代码 96

5.10 “Ping-Pong”游戏程序的仿真运行 97

5.10.1 定义输入触发 97

5.10.2 设置一个Watch窗口 97

5.10.3 单步执行 98

5.10.4 模拟(Animate)模式 98

5.10.5 执行(Run) 98

5.10.6 断点 98

5.10.7 跑表(Stopwatch) 98

5.10.8 跟踪(Trace) 99

5.10.9 调试整个程序 99

5.11 其他图形化仿真器 99

5.12 小结 100

参考文献 100

第6章 编程技术进阶 101

6.1 程序时序 101

6.1.1 流水线技术 101

6.1.2 执行时间 101

6.2 硬件计数器/定时器 102

6.2.1 使用TMR0 103

6.2.2 计数器模式 103

6.2.3 定时器模式 104

6.2.4 TIM1定时器程序示例 104

6.2.5 时序问题 105

6.2.6 定时器进阶 106

6.3 中断 106

6.3.1 设置中断 106

6.3.2 中断执行 106

6.3.3 INT1中断程序 107

6.3.4 中断进阶 110

6.4 寄存器操作进阶 110

6.4.1 数据目的地 110

6.4.2 寄存器组的选择 111

6.4.3 文件寄存器间接寻址 112

6.4.4 EEPROM存储器 113

6.4.5 程序计数器高位寄存器,PCLATH 114

6.5 特殊功能 114

6.5.1 振荡器类型 114

6.5.2 上电定时器 115

6.5.3 看门狗定时器(WDT) 115

6.5.4 休眠模式 115

6.5.5 在线编程和调试 116

6.5.6 代码保护 116

6.5.7 配置字 116

6.6 程序数据表 117

6.7 汇编语言伪指令 119

6.7.1 控制处理器的伪指令 120

6.7.2 条件伪指令 121

6.7.3 列表伪指令 121

6.7.4 数据伪指令 121

6.7.5 宏指令 121

6.8 特殊指令 122

6.9 数字类型 122

6.10 小结 123

第7章 硬件原型 124

7.1 硬件设计 124

7.2 硬件构建 125

7.2.1 印制电路板PCB 125

7.2.2 无焊面包板(Breadboard) 126

7.2.3 条状铜箔面包板(Stripboard) 127

7.3 演示试验板 128

7.3.1 硬件规格说明 128

7.3.2 硬件实现 128

7.3.3 实现 129

7.4 试验板上的应用程序 131

7.4.1 程序BUZZ1 131

7.4.2 程序DICE1 133

7.4.3 SCALE1程序 136

7.4.4 DIZI应用程序概述 138

7.5 小结 139

第8章 更多PIC应用和芯片 140

8.1 16F877应用 141

8.1.1 温度控制器系统 141

8.1.2 I/O分配 142

8.1.3 温度控制器电路图说明 143

8.1.4 硬件开发 146

8.1.5 温度控制器测试程序 148

8.1.6 修改应用 155

8.2 16F818应用 155

8.3 12F675应用 156

8.4 18F452应用 156

8.4.1 PICC语言编程 158

8.4.2 C语言编程的优点 160

8.5 小结 160

第9章 PIC12F50X系列(8引脚PIC微控制器) 161

9.1 与PIC16F54的差异 161

9.1.1 STATUS寄存器 161

9.1.2 OSCCAL寄存器 162

9.1.3 输入和输出 162

9.1.4 OPTION寄存器 163

9.1.5 TRIS寄存器 163

9.1.6 通用目的文件寄存器 163

9.1.7 ? 163

9.1.8 配置位 163

9.2 项目案例——PIC骰子 163

9.2.1 随机数漫谈 165

第10章 以PIC12F675示例中级操作 168

10.1 内在差异 168

10.1.1 OPTION和WPU寄存器 170

10.1.2 TRISIO寄存器 170

10.1.3 校准内部振荡器 170

10.1.4 PCLATH——程序计数器的高位 171

10.1.5 其他的差异 171

10.2 中断 172

10.2.1 INTCON 172

10.2.2 中断服务程序 173

10.2.3 休眠状态下的中断 174

10.2.4 维护STATUS现场 175

10.2.5 新的程序模板 175

10.2.6 项目案例——问答比赛控制器 177

10.3 EEPROM 179

10.3.1 EECON1 179

10.3.2 从EEPROM中读取数据 179

10.3.3 向EEPROM中写入数据 180

10.3.4 项目案例——电话卡 180

10.3.5 深入的EEPROM例子——音乐制造器 182

10.3.6 电源监视器 182

10.4 模拟-数字转换 183

10.4.1 ADCON0 183

10.4.2 模拟选择寄存器ANSEL 184

10.4.3 A/D转换中断 184

10.4.4 项目案例——浴室监控 184

10.5 比较器模块 187

10.5.1 参考电压 187

10.5.2 比较器中断 188

10.5.3 比较器案例——太阳跟踪器 188

10.5.4 比较器案例——从一个引脚读多个按钮 189

10.6 本章案例——智能花园灯 191

第11章 输入端口的使用 193

11.1 开关流程图 194

11.2 程序开发 195

11.2.1 程序是怎样执行的 196

11.2.2 程序执行的解释 198

11.3 扫描(多个输入端口) 198

11.4 开关扫描 198

11.5 控制应用——热电吹风控制器 200

第12章 键盘扫描 204

12.1 键盘处理案例 205

12.1.1 程序执行过程分析 207

12.1.2 扫描子程序 207

12.1.3 安全码 209

12.1.4 程序执行分析 213

12.1.5 消除抖动程序 213

12.1.6 扫描子程序 213

12.1.7 存储安全码 214

12.1.8 校验安全码 214

第13章 案例程序集 215

13.1 事件计数 215

13.1.1 计数电路的程序 216

13.1.2 执行过程分析 217

13.2 查找表 218

13.3 7段显示器 218

13.3.1 查找表工作原理 220

13.3.2 程序流程分析 221

13.3.3 测试 222

13.3.4 程序执行解释 224

13.4 数字大于255的处理 224

13.4.1 流程图说明 226

13.4.2 程序代码 226

13.4.3 程序执行分析 228

13.5 长时间间隔 229

13.5.1 流程图说明 229

13.5.2 5min延时代码 229

13.6 1小时的时延 231

13.6.1 延时1小时程序代码 231

第3部分 使用PicBasic对PIC微控制器编程第14章 PicBasic和PicBasic Pro程序设计 234

14.1 PicBasic语言 234

14.1.1 PicBasic变量 235

14.1.2 PicBasic算术运算和逻辑运算 237

14.1.3 PicBasic程序流程控制命令 238

14.1.4 其他PicBasic命令 241

14.1.5 推荐的PicBasic程序结构 248

14.2 PicBasic Pro语言 249

14.2.1 PicBasic Pro变量 249

14.2.2 常量 250

14.2.3 注释 250

14.2.4 多语句行 250

14.2.5 包含Include 250

14.2.6 定义Define 250

14.2.7 行扩展 250

14.2.8 在PicBasic Pro语言中访问端口和其他寄存器 250

14.2.9 算术运算符 251

14.2.10 PicBasic Pro命令 253

14.3 液晶显示器(LCD)接口和命令 257

14.3.1 并行接口LCD模块 258

14.3.2 串行接口LCD模块 262

14.4 中断 264

14.5 推荐的PicBasic Pro程序结构 265

14.6 步进电机的应用 266

14.7 伺服电机的应用 267

第15章 简单的PIC项目 268

15.1 项目1——使一个LED闪烁 268

15.1.1 PBC代码 269

15.1.2 PBPro代码 270

15.1.3 小结 271

15.2 项目2——滚动点亮多个LED 271

15.2.1 PBC代码 271

15.2.2 PBPro代码 274

15.2.3 小结 276

15.3 项目3——驱动一个7段LED显示器 276

15.3.1 PBC代码 277

15.3.2 PBPro代码 278

15.3.3 小结 280

第16章 基于16F876的项目 281

16.1 项目4——访问PORTA(I/O) 281

16.1.1 PBC代码 282

16.1.2 PBPro代码 284

16.1.3 小结 286

16.2 项目5——模拟-数字转换 286

16.2.1 PBC代码 287

16.2.2 PBPro代码 291

16.2.3 小结 293

16.3 项目6——驱动一个伺服电机 293

16.3.1 PBC代码 294

16.3.2 PBPro代码 296

16.3.3 小结 298

第17章 通信 299

17.1 项目7——驱动LCD模块 299

17.1.1 PBC代码 300

17.1.2 PBPro代码 305

17.1.3 小结 307

17.2 项目8——串口通信 307

17.2.1 PBPro代码 310

17.2.2 小结 313

17.3 项目9——通过串口驱动LCD 313

17.3.1 PBC代码 315

17.3.2 PBPro代码 320

17.3.3 小结 324

第4部分 使用MBasic对PIC微控制器编程第18章 MBasic编译器和开发试验板 326

18.1 编译器软件包 326

18.1.1 编译器版本介绍 326

18.1.2 MBasic编译器 326

18.2 BASIC及其要点 327

18.3 开发用的试验板 329

18.4 程序设计风格 331

18.4.1 标准程序设计风格 331

18.4.2 常量、变量和子程序名称 332

18.5 电路的搭建及标准配置 333

18.5.1 PIC的选择 334

18.6 引脚、端口和I/O 334

18.6.1 输出模式 336

18.6.2 输入模式 337

18.6.3 引脚变量和地址 337

18.6.4 运行时和编程时的引脚定义 338

18.6.5 LVP编程引脚选择 340

18.6.6 弱上拉 340

18.7 伪代码和程序规划 340

18.8 编译器内部架构 342

18.8.1 编译器与解释器 343

参考文献 345

第19章 PIC引脚输出电气特性 346

19.1 PIC引脚内部架构 346

19.2 LED指示器 349

19.3 电感负载的开/关 353

19.4 低端开关 354

19.4.1 小型NPN开关 354

19.4.2 小型N-沟道MOSFET开关 357

19.4.3 大功率双极低端开关 358

19.4.4 大功率MOSFET低端开关 360

19.4.5 高端开关 363

19.4.6 大功率高端开关 364

19.5 隔离开关 368

19.5.1 继电器开关 368

19.5.2 4N25光隔离NPN开关 372

19.5.3 PS710A-1A AD/DC光隔离MOSFET管开关 373

19.6 高速开关——由PIC产生声音信号 374

参考文献 376

第20章 PIC引脚输入电气特性 379

20.1 引言 379

20.2 开关抖动和保持电流 385

20.3 硬件方法消除抖动 386

20.4 软件方法消除抖动 388

20.5 隔离开关 391

20.6 键盘矩阵信号读取 392

参考文献 395

第21章 步进电机 396

21.1 步进电机基础知识 396

21.1.1 简介 396

21.1.2 操作 397

21.1.3 单极与双极 398

21.1.4 步进电机的分类 400

21.1.5 识别步进电机 401

21.1.6 阅读一个步进电机的规格说明 402

21.1.7 运行模式 406

21.2 程序 411

参考文献 431

第22章 数字温度传感器和实时时钟 432

22.1 DS18B20温度传感器 432

22.1.1 “1-Wire”协议 432

22.1.2 读取一个“1-Wire”芯片的序列号 435

22.1.3 读取温度 437

22.2 读取同一“1-Wire”总线上多个传感器信号 442

22.3 DS1302实时时钟 446

22.4 日期、时间和温度控制的综合应用 456

22.4.1 上升沿还是下降沿 458

22.4.2 数据位的顺序 459

22.4.3 阅读数据手册 459

22.5 修改程序及电路的思考 462

参考文献 463

第23章 红外远程控制 464

23.1 通用编码标准 465

23.2 IR接收器 466

23.3 宽/窄脉冲的特性 469

23.4 REC-80控制器的解码 481

23.5 修改程序及电路的思考 492

参考文献 493

第5部分 使用C语言对PIC微控制器编程第24章 准备知识 496

24.1 内容计划 496

24.2 开发环境准备 496

24.3 编码 497

24.3.1 编译和链接 498

24.3.2 生成第一个项目 499

24.3.3 端口初始化 500

24.3.4 重新测试PORTA 501

24.3.5 测试PORTB 501

24.4 回顾 503

24.4.1 给汇编专家的提示 503

24.4.2 给PIC MCU专家的提示 504

24.4.3 给C语言专家的提示 504

24.4.4 提示和技巧 504

参考书 504

参考资料链接 504

第25章 程序循环 505

25.1 内容计划 505

25.2 开发环境准备 505

25.3 编码 506

25.3.1 while循环 506

25.3.2 动态仿真 508

25.4 使用逻辑分析仪 510

25.5 项目评审 511

25.5.1 给汇编专家的提示 512

25.5.2 给PIC微控制器专家的提示 512

25.5.3 给C语言专家的提示 512

25.5.4 提示和技巧 512

参考书 513

参考资料链接 513

第26章 更多模式、更多程序循环技术 514

26.1 内容计划 514

26.2 开发环境准备 514

26.3 编码 514

26.3.1 do循环 514

26.3.2 变量声明 515

26.3.3 for循环 515

26.3.4 更多的循环示例 516

26.3.5 数组 517

26.3.6 一个新的示例 517

26.4 利用仿真逻辑分析仪进行测试 519

26.5 使用Explorer 16试验板 520

26.6 项目评审 520

26.6.1 给汇编专家的提示 520

26.6.2 给C语言专家的提示 521

26.6.3 提示和技巧 521

参考书 522

参考资料链接 522

第27章 "NUMB3RS" 523

27.1 内容计划 523

27.2 开发环境准备 523

27.3 编码 523

27.3.1 优化 524

27.3.2 测试 525

27.3.3 分析long型数据 525

27.3.4 long整型数乘法注意事项 526

27.3.5 long long类型数乘法 526

27.3.6 浮点型 526

27.4 给C语言编程专家的提示 527

27.5 性能分析 527

27.6 项目评审 529

27.6.1 给汇编专家的提示 529

27.6.2 给PIC微控制器专家的提示 530

27.6.3 提示和技巧 530

参考资料链接 531

第28章 中断 532

28.1 内容计划 532

28.2 开发环境准备 532

28.3 编码 532

28.3.1 中断嵌套 535

28.3.2 陷阱 535

28.3.3 一个中断程序模板与一个Timer1中断的子例程 535

28.3.4 一个使用Timer1的实际例子 537

28.3.5 测试Timer1中断 538

28.3.6 第二振荡器 540

28.3.7 实时时钟日历(RTCC) 540

28.4 多个中断源的管理 541

28.5 项目评审 541

28.5.1 给C语言专家的提示 541

28.5.2 给汇编语言专家的提示 542

28.5.3 给PIC微控制器专家的提示 542

28.5.4 技巧与提示 542

参考书 543

参考资料链接 543

第29章 浏览技术内幕 544

29.1 内容计划 544

29.2 开发环境准备 544

29.3 编码 544

29.3.1 内存空间分配 545

29.3.2 程序空间可见性 546

29.3.3 研究存储空间分配 547

29.3.4 查看MAP文件 549

29.3.5 指针 551

29.3.6 堆 552

29.3.7 MPLAB C30存储器模型 552

29.4 回顾 553

29.4.1 给C语言专家的提示 553

29.4.2 给汇编语言专家的提示 553

29.4.3 给PIC微控制器专家的提示 553

29.4.4 提示和技巧 553

参考书 554

参考资料链接 554

第6部分 附录 556

附录A PIC16系列微控制器指令集 556

附录B 电子“Ping-Pong”游戏的源代码 557

附录C DIZI-2试验板和“LOCK”应用程序 562

附录D 程序M代码 580

附录E 程序N代码 584

附录F 程序O代码 586

附录G 程序P代码 589

附录H 程序Q代码 592

附录I PIC参考数据 597

附录J 缩略字与词汇表 608

相关图书
作者其它书籍
返回顶部