第1章 PIC单片机概述 1
1.1 PIC单片机的发展与应用 1
1.2 PIC单片机型号选择 2
1.3 PIC16F877单片机的基本参数 5
1.4 PIC单片机的功能特性 5
1.5 思考与练习 5
第2章 PIC单片机开发流程 6
2.1 软件平台的安装 6
2.1.1 MPLAB集成开发环境的安装 6
2.1.2 测试汇编语言开发环境 7
2.1.3 C语言编译器HI-TECH PICC的安装 9
2.2 硬件平台的安装 9
2.2.1 Proteus ISIS软件的安装与测试 9
2.2.2 ICD2+开发板的硬件开发平台的安装 11
2.2.3 基于ICD2的硬件开发平台的测试 14
2.3 单片机项目的建立与运行 17
2.3.1 C语言项目建立过程 17
2.3.2 目标代码的生成与运行 20
2.4 思考与练习 21
第3章 PIC16系列单片机系统结构 22
3.1 PIC16F877单片机系统基本结构 22
3.2 PIC单片机功能概述 23
3.2.1 基本功能模块 23
3.2.2 专用功能模块 28
3.3 思考与练习 29
第4章 单片机C语言 30
4.1 实例:第一个单片机C语言程序 31
4.2 单片机C语言的数据类型和变量 34
4.2.1 常量和变量 36
4.2.2 字符型数据 38
4.2.3 位型数据 41
4.2.4 整型数据 41
4.2.5 浮点型数据 44
4.2.6 变量的命名规则 45
4.2.7 数据类型修饰符 46
4.3 C语言的运算符 48
4.3.1 数学运算符 48
4.3.2 位运算符 49
4.3.3 赋值运算符 54
4.3.4 逻辑运算符 55
4.4 C语言的重要控制语句 56
4.4.1 选择结构 56
4.4.2 分支结构 60
4.4.3 while循环结构 62
4.4.4 for循环结构 64
4.5 数组 66
4.5.1 数组的定义与初始化 67
4.5.2 特别的数组:字符串 69
4.5.3 数组的使用 70
4.5.4 实例:数码管显示 70
4.5.5 二维数组与多维数组 75
4.6 函数 77
4.6.1 函数的声明和定义 77
4.6.2 函数的参数 78
4.6.3 数组作为函数的参数 80
4.6.4 何时使用函数 80
4.6.5 实例:延时函数的编写和使用 81
4.7 宏定义 83
4.7.1 不带参数的宏定义 83
4.7.2 带参数的宏定义 84
4.8 C语言书写规范 85
4.8.1 变量和函数的命名规范 86
4.8.2 常量和宏定义的命名规范 86
4.8.3 程序的缩进和空格的使用 87
4.8.4 注释的书写方法 89
4.9 多文件项目管理 91
4.9.1 .H文件的书写 91
4.9.2 .C文件的书写 92
4.9.3 添加到当前项目的方法 93
4.10 实例:简单的计数器 94
4.11 思考与练习 96
第5章 输入/输出端口的用法 98
5.1 输入/输出端口简介 98
5.1.1 输入/输出端口的原理 99
5.1.2 输入/输出端口的相关寄存器 100
5.2 输出端口的用法 101
5.2.1 跑马灯的设计 102
5.2.2 多数码管的显示控制 103
5.3 输入端口的用法 109
5.3.1 单个按键状态的读取 109
5.3.2 3个按键状态的读取 113
5.4 矩阵小键盘的读取方法 115
5.4.1 4×4矩阵式键盘的工作原理 116
5.4.2 基于扫描法的矩阵式键盘读取 117
5.5 应用实例:电子计算器 119
5.6 思考与练习 123
第6章 中断系统 125
6.1 PIC16F877中断系统的硬件结构 125
6.2 PIC16F877的中断过程 127
6.3 PIC16F877中断系统的相关寄存器 127
6.4 C语言中断服务程序的编写 131
6.5 INT中断的用法 132
6.5.1 INT中断的相关寄存器 132
6.5.2 INT中断的硬件连接 133
6.6 实例:用INT中断来控制LED小灯 133
6.7 实例:B口中断的使用 135
6.8 思考与练习 137
第7章 定时/计数器 138
7.1 PIC16F877单片机的定时/计数器简介 138
7.2 TIMER0的硬件结构 139
7.3 TIMER0的相关寄存器 140
7.4 实例:精确的秒表 141
7.5 “看门狗”定时器的用法 147
7.5.1 WDT的系统结构 147
7.5.2 WDT的硬件设置 149
7.5.3 WDT的程序设计 149
7.5.4 WDT的使用注意事项 149
7.6 实例:WDT的使用 150
7.7 思考与练习 153
第8章 A/D转换器 154
8.1 系统结构及相关寄存器 154
8.2 外围硬件电路设计 157
8.3 查询方式下的操作时序 158
8.4 实例:查询方式下的A/D转换例程 158
8.5 中断方式下的A/D转换 160
8.5.1 相关寄存器 161
8.5.2 实例:中断方式下的A/D转换 161
8.6 实例:测量电阻阻值 164
8.7 思考与练习 168
第9章 USART串行通信 169
9.1 通信基础知识 169
9.1.1 通信协议 170
9.1.2 数据传送方式 170
9.1.3 波特率 171
9.1.4 串行通信的检错和纠错 171
9.2 USART的系统结构 172
9.2.1 USART发送器的系统结构 172
9.2.2 USART发送器的相关寄存器 175
9.2.3 USART接收器的系统结构 176
9.2.4 USART接收器的相关寄存器 178
9.3 单片机与RS-232接口电路设计 179
9.4 实例:异步发送模式下的程序设计 182
9.5 实例:双机USART异步通信 185
9.6 思考与练习 191
第10章 SPI接口 192
10.1 功能特点和系统结构 192
10.2 主控发送模式的原理及应用 193
10.2.1 主控发送模式的工作流程 193
10.2.2 主控发送模式的相关寄存器 195
10.2.3 主控发送模式的硬件连接 196
10.2.4 实例:主控发送模式的程序设计 197
10.3 主控接收模式的原理及应用 199
10.3.1 主控接收模式的工作流程 199
10.3.2 主控接收模式的相关寄存器 200
10.3.3 主控接收模式的硬件连接 202
10.3.4 实例:主控接收模式的程序设计 202
10.4 实例:25XXX系列EEPROM的读/写 207
10.4.1 25C080的系统结构与操作时序 208
10.4.2 25C080的硬件连接 211
10.4.3 25C080的程序设计 211
10.5 思考与练习 217
第11章 I2C总线 218
11.1 I2C接口的功能特点 218
11.1.1 I2C总线器件到总线线路的电气连接 219
11.1.2 I2C协议简介 220
11.1.3 PIC16F877的I2C模块的特点 222
11.2 I2C主模式数据发送 222
11.2.1 I2C主模式的系统结构与数据发送流程 222
11.2.2 I2C主模式数据发送过程中的相关寄存器 225
11.2.3 I2C模块的硬件连接 227
11.2.4 实例:I2C主模式数据发送的程序设计 227
11.3 I2C主模式数据接收 230
11.3.1 I2C主模式数据接收流程 231
11.3.2 I2C主模式数据接收过程中的相关寄存器 233
11.3.3 实例:I2C主模式数据接收的程序设计 234
11.3.4 I2C主模式的复合数据帧 238
11.4 实例:I2C接口EEPROM的读/写 238
11.4.1 24C02C功能简介 239
11.4.2 24C02C的系统结构与读/写帧格式 239
11.4.3 24C02C的硬件连接 241
11.4.4 读/写24C02C的程序设计 242
11.5 思考与练习 248
第12章 CCP模块 249
12.1 CCP1模块的捕捉模式 249
12.1.1 CCP1模块捕捉模式的系统结构和工作流程 249
12.1.2 CCP1模块捕捉模式下的相关寄存器 250
12.1.3 实例:基于捕捉功能的频率计设计 252
12.2 CCP1模块的比较模式 257
12.2.1 CCP1模块比较模式的系统结构和工作流程 258
12.2.2 CCP1模块比较模式下的相关寄存器 258
12.2.3 实例:基于比较功能的方波发生器设计 259
12.3 CCP1模块的脉宽调制模式 261
12.3.1 CCP1模块脉宽调制模式的系统结构和工作流程 261
12.3.2 CCP1模块脉宽调制模式下的相关寄存器 262
12.3.3 脉宽调制模式的周期与占空比 263
12.3.4 实例:基于脉宽调制功能的方波发生器设计 264
12.4 CCP2模块与CCP1模块的区别和联系 267
12.5 思考与练习 268
第13章 综合实例 269
13.1 字符式液晶模块原理及编程 269
13.1.1 LM016L的系统结构与硬件连接 270
13.1.2 LM016L的指令集 274
13.1.3 LM016L的初始化 274
13.1.4 LM016L的字符显示 275
13.1.5 实例:基于LM016L的秒表显示设计 276
13.2 LED点阵显示屏原理及应用 285
13.2.1 典型LED点阵显示屏电路设计与分析 285
13.2.2 LED点阵显示屏显示汉字的原理 288
13.2.3 实例:在LED点阵显示屏上显示汉字 290
13.3 电子密码锁控制器 294
13.3.1 需求分析 294
13.3.2 硬件设计 295
13.3.3 软件设计 297
13.4 思考与练习 306
参考文献 309