第1章 概述 1
1.1 快速高效地学会PIC单片机应用编程的办法是采用C语言编程 1
1.2 C语言具有的突出优点 2
1.3 PIC单片机简介 4
第2章 学习PIC单片机设计所用的软件及实验器材 5
2.1 MPLAB IDE集成开发环境 5
2.2 PICCC语言编译器 5
2.3 PICDEMO单片机综合试验板 6
2.4 ICD2在线调试器/程序下载器 9
2.5 USB程序下载器 9
2.6 5V高稳定专用稳压电源 10
第3章 开发软件的安装及第一个入门实验程序 12
3.1 MPLAB IDE集成开发环境的安装 12
3.2 PICC C语言编译器软件的安装 14
3.3 第一个入门实验程序 17
3.3.1 建立一个工程项目,选择器件并确定选项 18
3.3.2 建立汇编源文件或C源文件 21
3.3.3 将源文件添加到项目中(添加节点)并编译项目 23
3.3.4 编译通过后进行软件模拟仿真 23
3.3.5 编译通过后进行硬件在线仿真 28
3.3.6 编程操作 32
3.3.7 应用 36
第4章 PIC单片机的主要特点及基本结构 37
4.1 PIC单片机的主要特点 37
4.2 PIC单片机的基本组成结构 39
4.3 PIC16F877A单片机的基本功能模块 39
4.3.1 程序存储器和堆栈 39
4.3.2 数据存储器 41
4.3.3 EEPROM数据存储器 46
4.3.4 算术逻辑区域 48
4.3.5 输入/输出端口模块 48
4.3.6 定时器模块 48
4.3.7 复位功能模块 49
4.4 PIC16F877A单片机的专用功能模块 49
4.4.1 通用同步/异步串行收发器USART模块 50
4.4.2 并行从动端口 PSP模块 50
4.4.3 主同步串行端 MSSP 50
4.4.4 捕捉/比较/脉宽调制模块 50
4.4.5 模/数转换器(ADC)模块 50
4.5 PIC16F877A单片机的引脚配置 50
4.5.1 系统配置引脚 51
4.5.2 输入/输出引脚的其他功能 51
第5章 C语言基础知识 53
5.1 C语言的标识符与关键字 53
5.2 数据类型 55
5.3 常量、变量及存储方式 56
5.4 PICC中变量的绝对地址定位 57
5.5 数组 57
5.5.1 一维数组的定义 58
5.5.2 二维及多维数组的定义 58
5.5.3 字符数组 59
5.5.4 数组元素赋初值 59
5.5.5 数组作为函数的参数 60
5.6 C语言的运算 60
5.6.1 算术运算符 61
5.6.2 关系运算符 61
5.6.3 逻辑运算符 62
5.6.4 赋值运算符 62
5.6.5 自增和自减运算符 63
5.6.6 逗号运算符 63
5.6.7 条件运算符 63
5.6.8 位运算符 63
5.6.9 sizeof运算符 68
5.7 流程控制 68
5.7.1 条件语句与控制结构 69
5.7.2 循环语句 70
5.8 函数 72
5.8.1 函数定义的一般形式 73
5.8.2 函数的参数和函数返回值 73
5.8.3 函数调用的三种方式 74
5.9 指针 75
5.9.1 指针与地址 76
5.9.2 指针变量的定义 76
5.9.3 指针变量的引用 77
5.9.4 数组指针与指向数组的指针变量 77
5.9.5 指针变量的运算 78
5.9.6 指向多维数组的指针和指针变量 78
5.9.7 指向RAM的指针 79
5.9.8 指向ROM常数的指针 79
5.9.9 指向函数的指针 80
5.10 结构体 80
5.10.1 结构体的概念 80
5.10.2 结构体类型变量的定义 80
5.10.3 关于结构体类型需要注意的地方 82
5.10.4 结构体变量的引用 82
5.10.5 结构体变量的初始化 83
5.10.6 结构体数组 83
5.10.7 指向结构体类型数据的指针 83
5.10.8 用指向结构体变量的指针引用结构体成员 84
5.10.9 指向结构体数组的指针 84
5.10.10 将结构体变量和指向结构体的指针作函数参数 84
5.11 共用体 85
5.11.1 共用体类型变量的定义 85
5.11.2 共用体变量的引用 86
5.12 中断函数 87
5.12.1 什么是中断 87
5.12.2 编写PIC单片机中断函数时应严格遵循的规则 88
第6章 I/O端口及使用 89
6.1 PIC单片机的I/O端口 89
6.2 端口的输入/输出 91
6.3 I/O端口的输出实验 92
6.3.1 实验要求 92
6.3.2 源程序文件及分析 92
6.4 I/O端口驱动数码管的实验 98
6.4.1 实验要求 98
6.4.2 源程序文件及分析 98
6.5 I/O端口的输入实验 101
6.5.1 实验要求 101
6.5.2 源程序文件及分析 102
6.6 行列式按键的输入实验 105
6.6.1 实验要求 105
6.6.2 源程序文件及分析 106
第7章 驱动16×2点阵字符液晶模块的实验 109
7.1 16×2点阵字符液晶显示器概述 109
7.2 液晶显示器的突出优点 110
7.3 16×2字符型液晶显示模块(LCM)特性 110
7.4 16×2字符型液晶显示模块(LCM)引脚及功能 110
7.5 16×2字符型液晶显示模块(LCM)的内部结构 111
7.6 液晶显示控制驱动集成电路HD44780特点 111
7.7 HD44780工作原理 113
7.8 LCD控制器的指令 116
7.9 LCM工作时序 119
7.10 PIC单片机驱动16×2点阵字符液晶模块的子函数 120
7.11 驱动16×2LCM的实验程序1 122
7.11.1 实验要求 122
7.11.2 源程序文件及分析 123
7.12 驱动16×2LCM的实验程序2 125
7.12.1 实验要求 125
7.12.2 源程序文件及分析 126
第8章 驱动128×64点阵图形液晶模块的实验 137
8.1 128×64点阵图形液晶模块特性 138
8.2 128×64点阵图形液晶模块引脚及功能 138
8.3 128×64点阵图形液晶模块的内部结构 139
8.4 HD61203特点 141
8.5 HD61202特点 142
8.6 HD61202工作原理 143
8.7 HD61202的工作过程 147
8.8 点阵图形液晶模块的控制器指令 148
8.9 HD61202的操作时序图 149
8.10 PIC单片机驱动128×64点阵图形液晶模块的子函数 151
8.11 驱动128×64点阵图形液晶的实验程序1 154
8.11.1 实验要求 154
8.11.2 源程序文件及分析 155
8.11.3 怎样制作汉字点阵码表 161
8.12 驱动128×64点阵图形液晶的实验程序2 163
8.12.1 实验要求 163
8.12.2 源程序文件及分析 164
8.13 驱动128×64点阵图形液晶的实验程序3 165
8.13.1 实验要求 165
8.13.2 源程序文件及分析 165
8.13.3 怎样制作图片的点阵码表 172
第9章 中断系统及使用 175
9.1 PIC16F877A的中断系统 176
9.2 中断源的分类 176
9.3 相关的中断控制寄存器 178
9.4 外部按键触发中断实验 182
9.4.1 实验要求 182
9.4.2 源程序文件及分析 182
9.5 利用RB口的电平变化中断读取行列式按键的键值 184
9.5.1 实验要求 184
9.5.2 源程序文件及分析 184
9.6 多个中断的实验1 188
9.6.1 实验要求 188
9.6.2 源程序文件及分析 188
9.7 单片机休眠状态的中断实验 190
9.7.1 实验要求 190
9.7.2 源程序文件及分析 190
第10章 定时/计数器 193
10.1 定时/计数器TMR0 193
10.1.1 定时/计数器TMR0特性 195
10.1.2 选项寄存器OPTION_REG 195
10.1.3 中断控制寄存器INTCON 196
10.1.4 方向寄存器TRISA 196
10.2 定时/计数器TMR1 196
10.2.1 定时/计数器TMR1特性 198
10.2.2 TMR1控制寄存器T1CON 198
10.2.3 中断控制寄存器INTCON 199
10.2.4 第一外围中断使能寄存器PIE1 199
10.2.5 第一外围中断标志寄存器PIR1 199
10.3 定时器TMR2 199
10.3.1 定时器TMR2特性 201
10.3.2 TMR2控制寄存器T2CON 201
10.3.3 中断控制寄存器INTCON 201
10.3.4 第一外围中断使能寄存器PIE1 202
10.3.5 第一外围中断标志寄存器PIR1 202
10.3.6 TMR2周期寄存器PR2 202
10.4 蜂鸣器发出1 kHz音频的实验 202
10.4.1 实验要求 202
10.4.2 源程序文件及分析 202
10.5 时间精确的闪烁灯实验 204
10.5.1 实验要求 204
10.5.2 源程序文件及分析 204
10.6 中断扫描方式驱动8位数码管实验 206
10.6.1 实验要求 206
10.6.2 源程序文件及分析 206
10.7 计数器实验 208
10.7.1 实验要求 208
10.7.2 源程序文件及分析 209
10.8 4位跑表实验 211
10.8.1 实现方法 211
10.8.2 源程序文件及分析 211
第11章 捕捉/比较/脉宽调制(CCP)模块 218
11.1 CCP模块控制寄存器CCP1CON和CCP2CON 219
11.2 CCP模块寄存器CCPRx 220
11.3 CCP模块的捕捉模式 220
11.4 捕捉模式相关的寄存器 220
11.5 捕捉模式的应用设置 222
11.6 CCP模块的比较模式 222
11.7 比较模式相关的寄存器 223
11.8 比较模式的应用设置 223
11.9 CCP模块的PWM模式 223
11.9.1 PWM信号周期 224
11.9.2 PWM信号脉宽 224
11.10 PWM模式相关的寄存器 225
11.11 PWM模式的应用设置 226
11.12 CCP模块的捕捉实验 227
11.12.1 实验要求 227
11.12.2 源程序文件及分析 227
11.13 CCP模块的比较实验1 230
11.13.1 实验要求 230
11.13.2 源程序文件及分析 230
11.14 CCP模块的比较实验2 231
11.14.1 实验要求 231
11.14.2 源程序文件及分析 231
11.15 CCP模块的PWM实验 233
11.15.1 实验要求 233
11.15.2 源程序文件及分析 233
11.16 连续改变CCP模块PWM的实验 235
11.16.1 实验要求 235
11.16.2 源程序文件及分析 235
第12章 USART通信模块 237
12.1 USART模块的寄存器 237
12.2 USART通信模块相关的寄存器 240
12.3 USART波特率设置 241
12.4 USART异步数据发送原理 242
12.5 USART异步数据接收原理 242
12.6 单片机与PC通信实验1 243
12.6.1 实验要求 243
12.6.2 源程序文件及分析 243
12.7 单片机与PC通信实验2 247
12.7.1 实验要求 247
12.7.2 源程序文件及分析 247
12.8 单片机与PC通信实验3 249
12.8.1 实验要求 249
12.8.2 源程序文件及分析 249
第13章 I2C通信模块 252
13.1 I2C总线通信模式 252
13.2 I2C模块的寄存器 253
13.3 I2C模块相关的寄存器 257
13.4 I2C主控方式 258
13.5 I2C从动方式 259
13.6 利用硬件方式读写PIC16F877A内部EEPROM的实验 260
13.6.1 实验要求 260
13.6.2 源程序文件及分析 260
13.7 利用库函数读写PIC16F877A内部EEPROM的实验 262
13.7.1 实验要求 262
13.7.2 源程序文件及分析 262
13.8 利用硬件接口读写外部24C01的实验 263
13.8.1 实验要求 263
13.8.2 源程序文件及分析 264
13.9 利用软件模拟时序实现读写外部24C01的实验 269
13.9.1 实验要求 269
13.9.2 源程序文件及分析 269
第14章 SPI通信模块 274
14.1 SPI通信模式 274
14.2 SPI模块的寄存器 275
14.3 SPI模式相关的寄存器 278
14.4 同步串行EEPROM AT93CXX的性能特点 279
14.5 AT93CXX引脚定义 280
14.6 AT93CXX系列存储器特点 280
14.7 AT93CXX系列EEPROM的内部结构 281
14.8 AT93CXX系列EEPROM的指令集 281
14.9 器件操作 282
14.10 软件模拟SPI时序读写外部93C46的实验 287
14.10.1 实验要求 287
14.10.2 源程序文件及分析 287
14.11 利用硬件接口读写外部93C46的实验 292
14.11.1 实验要求 292
14.11.2 源程序文件及分析 292
第15章 A/D转换器模块 298
15.1 A/D转换器结构及原理 298
15.2 A/D转换器的寄存器 299
15.3 A/D转换器模块相关的寄存器 302
15.4 中断方式读取A/D转换器值的实验 303
15.4.1 实验要求 303
15.4.2 源程序文件及分析 303
15.5 查询方式读取A/D转换器值的实验 306
15.5.1 实验要求 306
15.5.2 源程序文件及分析 306
第16章 PIC单片机看门狗及芯片的配置、复位等 310
16.1 PIC单片机看门狗定时器WDT 310
16.2 PIC单片机的芯片配置寄存器CONFIG 310
16.3 PIC单片机的复位 312
16.4 PIC单片机的工作时钟 313
16.4.1 石英晶体/陶瓷谐振器 313
16.4.2 外部时钟 314
16.4.3 外部RC振荡器 314
16.4.4 内部RC振荡器 314
16.5 PIC单片机的低功耗休眠 314
16.6 PIC单片机在线串行编程 315
16.7 PIC单片机看门狗实验1 315
16.7.1 实验要求 315
16.7.2 源程序文件及分析 316
16.8 PIC单片机看门狗实验2 318
16.8.1 实验要求 318
16.8.2 源程序文件及分析 318
第17章 设计具有测温及液晶显示的简易万年历 320
17.1 实验目的 320
17.2 实验要求 320
17.3 单线数字温度传感器DS18B20 323
17.3.1 DS18B20内部结构与原理 324
17.3.2 DS18B20特点 326
17.3.3 l-wire总线操作 326
17.3.4 DS18B20初始化流程 329
17.3.5 DS18B20温度转换及读取流程 329
17.4 程序设计 330
第18章 PIC单片机驱动步进电动机的实验 342
18.1 步进电动机简介 342
18.1.1 步进电动机的种类 343
18.1.2 步进电动机的一些基本参数 343
18.1.3 步进电动机的动态指标及术语 344
18.2 四相步进电动机的工作方式 345
18.3 步进电动机单四拍运行的实验 346
18.3.1 实验要求 346
18.3.2 源程序文件及分析 347
18.4 步进电动机双四拍运行的实验 348
18.4.1 实验要求 348
18.4.2 源程序文件及分析 348
18.5 步进电动机八拍运行的实验 349
18.5.1 实验要求 349
18.5.2 源程序文件及分析 349
18.6 使用中断方式控制步进电动机运行的实验 351
18.6.1 实验要求 351
18.6.2 源程序文件及分析 351
18.7 步进电动机模拟指针仪表的实验 354
18.7.1 实验要求 354
18.7.2 源程序文件及分析 354
参考文献 358