第1章 什么是PIC单片机 1
1.1 PIC单片机的概念及其特点 1
1.1.1 什么是PIC单片机 1
1.1.2 PIC单片机有什么优势 2
1.2 单片机能够做哪些具体应用 3
1.3 PIC单片机学习的软、硬件实验设备 7
1.3.1 增强型PIC实验板 7
1.3.2 PIC Pro编程器 9
1.3.3 ICD2 PIC仿真烧写器 10
1.3.4 PIC实验附件 10
1.4 单片机学习的有效方法与途径 12
第2章 PIC系列单片机系统的结构和工作原理 13
2.1 PIC单片机概述 13
2.2 PIC16F877硬件系统概况 13
2.2.1 内部结构 15
2.2.2 指令系统 18
2.3 I/O端口的结构及工作原理 21
2.3.1 I/O端口基本特征 21
2.3.2 PORTA端口的特点 22
2.3.3 PORTB端口的特点 25
2.3.4 PORTC端口的特点 27
2.3.5 PORTD端口的特点 28
2.3.6 PORTE端口的特点 29
2.3.7 PSP并行从动端口 31
2.4 中断系统 33
2.4.1 中断概述 33
2.4.2 PIC16F877中断源 33
2.4.3 中断寄存器 34
2.4.4 中断处理 38
2.5 定时器/计数器 38
2.5.1 TMR0主要特征 38
2.5.2 TMR1主要特征 39
2.5.3 TMR2主要特征 42
2.6 输入捕捉/输出比较/脉宽调制CCP 45
2.6.1 输入捕捉模式 45
2.6.2 输出比较工作模式 48
2.6.3 脉宽调制输出工作模式 50
2.7 片内EEPROM数据存储器 53
2.7.1 片内EEPROM数据存储器概述 53
2.7.2 片内EEPROM数据存储器寄存器 54
2.7.3 片内EEPROM数据存储器结构和操作原理 56
2.8 片内模/数转换器 58
2.8.1 PIC16F877的片内ADC模块 58
2.8.2 片内ADC模块相关寄存器 58
2.8.3 片内ADC模块结构和操作原理 61
2.8.4 片内ADC模块的转换过程 62
2.8.5 片内ADC模块时钟与参考电压的选择 62
2.9 USART通信模块及其使用 63
2.9.1 USART通信模块简介 64
2.9.2 USART通信模块寄存器 65
2.9.3 USART波特率设定 68
2.9.4 USART模块的异步通信 69
2.9.5 USART模块的同步通信 73
2.10 主控同步串口端口MSSP及其应用 75
2.10.1 同步串行接口简介 75
2.10.2 同步串行端口的SPI模式 76
2.10.3 同步串行端口的I2C模式 82
第3章 软件集成开发环境MPLAB-IDE 88
3.1 MPLAB-IDE的组成 88
3.2 MPLAB-IDE软件的获取 89
3.3 MPLAB-IDE软件的安装与卸载 89
3.4 PICC编译器的安装与使用方法 93
3.5 初次使用PICC的设置 96
第4章 C语言概论、数据类型、运算符与表达式 98
4.1 C语言概论 98
4.1.1 C语言的发展过程 98
4.1.2 C语言的特点 98
4.1.3 C源程序的结构特点 98
4.1.4 C语言的字符集 100
4.1.5 C语言词汇 100
4.2 数据类型、运算符与表达式 101
4.2.1 C语言的数据类型 101
4.2.2 算术运算符和算术表达式 110
4.2.3 关系运算符和表达式 113
4.2.4 逻辑运算符和表达式 115
第5章 分支与循环控制 118
5.1 if语句 118
5.1.1 程序的三种基本结构 118
5.1.2 if语句的三种形式 119
5.1.3 if语句的嵌套 123
5.2 条件运算符和条件表达式 125
5.3 switch语句 126
5.4 循环控制 129
5.4.1 概述 129
5.4.2 goto语句和if语句构成循环 129
5.4.3 while语句 130
5.4.4 do-while语句 131
5.4.5 for语句 133
5.4.6 循环的嵌套 135
5.4.7 break和continue语句 136
第6章 编译预处理与位运算预处理命令 139
6.1 概述 139
6.2 宏定义 139
6.2.1 不带参数的宏定义 139
6.2.2 带参数的宏定义 141
6.3 文件包含 143
6.4 条件编译 143
6.5 位操作运算符 145
第7章 数组与函数 148
7.1 一维数组的定义和引用 148
7.1.1 一维数组的定义 148
7.1.2 一维数组元素的引用 150
7.1.3 一维数组的初始化 151
7.1.4 一维数组程序举例 152
7.2 二维数组的定义和引用 153
7.2.1 二维数组的定义 153
7.2.2 二维数组元素的引用 153
7.2.3 二维数组的初始化 155
7.3 字符数组 155
7.3.1 字符数组的定义 155
7.3.2 字符数组的初始化 156
7.3.3 字符数组的引用 156
7.3.4 字符串和字符串结束标志 157
7.4 函数概述 157
7.4.1 函数定义的一般形式 157
7.4.2 函数的参数和函数的值 158
7.4.3 函数的返回值 159
7.4.4 函数的调用 160
7.4.5 被调用函数的声明和函数原型 160
7.4.6 函数的嵌套调用 161
7.4.7 函数的递归调用 162
7.4.8 数组作为函数参数 163
7.5 局部变量和全局变量 165
7.5.1 局部变量 166
7.5.2 全局变量 167
第8章 指针、结构体与共用体 169
8.1 指针和地址 169
8.2 指针变量和指针运算符 169
8.3 指针与函数参数 173
8.4 指针、数组和字符串指针 175
8.5 指针数组 178
8.6 多级指针 179
8.7 返回指针的函数 181
8.8 函数指针 181
8.9 结构与联合 182
8.9.1 结构的定义 182
8.9.2 结构数组 184
8.9.3 结构与函数 185
8.9.4 结构的初始化 187
8.9.5 联合 187
第9章 PIC开发套件快速入门 189
9.1 PIC开发套件入门说明 189
9.1.1 增强型PIC实验板 189
9.1.2 增强型PIC实验板各模块说明 192
9.1.3 PIC Pro编程器 203
9.1.4 ICD2 PIC仿真烧写器 207
9.2 如何建立第一个工程项目 208
9.2.1 开发环境和烧写软件的安装 208
9.2.2 实验电路原理分析 208
9.2.3 程序代码编写与工程创建 209
9.2.4 烧写芯片与程序验证 211
9.3 如何使用ICD2测试程序 212
9.3.1 通过ICD2仿真程序方式执行程序 212
9.3.2 通过ICD2烧写程序方式执行程序 216
9.4 PIC开发套件常见问题解答 219
第10章 单片机基础实例 223
10.1 发光二极管闪动实验 223
10.1.1 实例功能 223
10.1.2 器件和原理 223
10.1.3 硬件电路 224
10.1.4 程序设计 225
10.2 流水灯实验 226
10.2.1 实例功能 226
10.2.2 器件和原理 227
10.2.3 硬件电路 228
10.2.4 程序设计 229
10.3 按键实验 229
10.3.1 实例功能 229
10.3.2 器件和原理 230
10.3.3 硬件电路 231
10.3.4 程序设计 231
10.4 蜂鸣器实验 232
10.4.1 实例功能 232
10.4.2 器件和原理 233
10.4.3 硬件电路 233
10.4.4 程序设计 234
10.5 继电器实验 234
10.5.1 实例功能 234
10.5.2 器件和原理 235
10.5.3 硬件电路 236
10.5.4 程序设计 237
10.6 数码管实验 237
10.6.1 实例功能 238
10.6.2 器件和原理 238
10.6.3 硬件电路 240
10.6.4 程序设计 240
10.7 串行口实验 242
10.7.1 实例功能 242
10.7.2 器件和原理 244
10.7.3 硬件电路 246
10.7.4 程序设计 246
第11章 单片机高级应用实例 248
11.1 步进电机应用实例 248
11.1.1 步进电机简介 248
11.1.2 步进电机的控制 256
11.1.3 步进电机的软、硬件设计 258
11.2 单总线数字温度传感器DS18B20应用实例 260
11.2.1 单总线技术简介 260
11.2.2 单总线温度传感器DS18B20简介 261
11.3 24CXX系列存储器应用实例 276
11.3.1 I2C总线简介 276
11.3.2 I2C总线器件工作原理及时序 278
11.3.3 AT24C系列存储器的软、硬件设计 282
11.4 93CXX系列存储器应用实例 290
11.4.1 SPI总线简介 291
11.4.2 93C46存储器的软、硬件设计 293
11.5 DS1302时钟芯片应用实例 304
11.5.1 实时时钟简介 304
11.5.2 DS1302时钟芯片简介 305
11.5.3 DS1302的软、硬件设计 308
11.6 A/D转换应用实例 314
11.7 1602字符型LCD应用实例 319
11.7.1 液晶显示简介 320
11.7.2 1602字符型LCD简介 321
11.7.3 1602字符型LCD的软、硬件设计 326
11.8 12864点阵型LCD应用实例 331
11.8.1 点阵LCD的显示原理 331
11.8.2 12864点阵型LCD简介 332
11.8.3 12864点阵型LCD软、硬件设计 338
11.9 红外遥控软件解码应用实例 348
11.9.1 红外遥控概述 348
11.9.2 6121红外接收的软件解码应用实例 354
11.10 无线通信模块应用 363
11.10.1 无线通信概述 363
11.10.2 PT2262/2272无线模块简介 364
11.10.3 无线模块的软、硬件设计 369
参考文献 374