第1章 PIC16系列单片机与MPLAB IDE简介 1
1.1 PIC系列8位单片机介绍 1
1.2 PIC16F87XA的主要参数与功能 2
1.2.1 PIC16F87XA的引脚与主要参数 2
1.2.2 PIC16F877A的主要功能 5
1.2.3 PIC16F877A的程序存储器与数据存储器 6
1.2.4 程序计数器 7
1.2.5 PIC16F系列单片机的寻址方式 8
1.2.6 指令时钟 8
1.3 PIC16F877A的特殊功能寄存器 8
1.3.1 STATUS寄存器 9
1.3.2 OPTION寄存器 10
1.3.3 PCON寄存器 11
1.4 汇编指令简介 12
1.5 MPLAB IDE界面、菜单介绍 14
1.5.1 File菜单 15
1.5.2 Edit菜单 17
1.5.3 View菜单 17
1.5.4 Project菜单 18
1.5.5 Debugger菜单 19
1.5.6 Programmer菜单 20
1.5.7 Tools菜单 23
1.5.8 Configure菜单 24
1.5.9 Windows菜单 24
1.6 MPLAB IDE工具栏介绍 24
1.6.1 标准工具栏 24
1.6.2 项目管理器工具栏 25
1.6.3 调试运行工具栏 26
1.7 MPLAB IDE与ICD 2的使用 26
1.7.1 作为在线调试器的ICD 2的使用 26
1.7.2 作为烧写器的ICD 2的使用 31
1.8 MPLAB IDE软件仿真SIM的使用 32
1.8.1 SIM仿真设置 32
1.8.2 SIM仿真示波器使用 33
1.8.3 SIM仿真中的跑表使用 33
1.8.4 SIM仿真的Stimulus的设置与使用 34
第2章 HI-TECH PICC C语言介绍 38
2.1 HI-TECH PICC的特点 38
2.2 PICC的相关设置与操作 39
2.3 PICC变量的类型与定义 41
2.3.1 PICC变量及定义 41
2.3.2 PICC变量修饰关键词 45
2.3.3 PICC的结构体与共用体 48
2.3.4 PICC的指针 50
2.4 宏定义的使用 52
2.4.1 不带参数的宏定义 52
2.4.2 带参数的宏定义 53
2.5 数制与表示法 54
2.6 运算符 54
2.7 PICC C语言的基本语句 56
2.7.1 for循环 56
2.7.2 while语句 57
2.7.3 goto语句 57
2.7.4 continue和break语句 58
2.7.5 if语句 58
2.7.6 switch语句 59
2.8 PICC C中的函数 60
2.8.1 带返回值的函数 60
2.8.2 无返回值的函数 61
2.9 PIC.H与PIC168XA.H介绍 61
2.9.1 PIC.H文件介绍 62
2.9.2 PIC168XA.H介绍 63
2.10 其他头文件介绍 64
2.11 PICC的中断服务程序的编制 65
2.12 在C中嵌入汇编指令 66
第3章 PROTEUS ISIS使用介绍 67
3.1 PROTEUS ISIS VSM概述 67
3.2 PROTEUS ISIS菜单介绍 68
3.2.1 File菜单 69
3.2.2 View菜单 69
3.2.3 Edit菜单 70
3.2.4 Tools菜单 70
3.2.5 Design菜单 72
3.2.6 Graph菜单 72
3.2.7 Source菜单与Debug菜单 73
3.2.8 Library菜单 73
3.2.9 Template菜单 73
3.2.10 System菜单 75
3.3 PROTEUS ISIS标准工具栏介绍 76
3.4 PROTEUS ISIS绘图工具栏介绍 79
3.5 仿真进程控制按钮介绍 86
3.6 元件库与常用元件介绍 86
3.6.1 元件库介绍 86
3.6.2 常用元件介绍 88
3.7 PROTEUS绘制线路图实例 90
3.8 在PROTEUS中调试PIC16系列的PICC C程序 94
3.9 在MPLAB IDE的PROTEUS VSM中调试PICC C程序 100
第4章 PIC16F877A单片机基本功能与编程 105
4.1 输入/输出端口 105
4.1.1 端口A 106
4.1.2 端口B 106
4.1.3 端口C 107
4.1.4 端口D 108
4.1.5 端口E 108
4.2 中断 108
4.2.1 中断的概念 108
4.2.2 与中断有关的寄存器 110
4.2.3 中断的编程 113
4.3 TMR0定时器 115
4.4 TMR1定时器 120
4.5 TMR2定时器 125
4.6 A/D转换 127
4.7 CCP模块 137
4.7.1 捕捉模式 138
4.7.2 比较模式 142
4.7.3 PWM模式 151
4.8 比较器参考电压模块 154
4.9 比较器模块 158
4.10 USART串行通信模块 163
4.10.1 与USART有关的寄存器 164
4.10.2 USART波特率计算 165
4.10.3 奇偶校验 166
4.10.4 地址侦测功能 167
4.10.5 异步串行通信方式 168
4.10.6 同步串行通信 175
4.11 SPI串行通信 187
4.11.1 与SPI有关的寄存器介绍 188
4.11.2 SPI工作原理与操作 189
4.11.3 SPI接口编程应用 192
4.12 I2C串行通信 196
4.12.1 一般说明 196
4.12.2 I2C时序 197
4.12.3 与I2C相关的寄存器 198
4.12.4 寻址 201
4.12.5 I2C主控工作方式 201
4.12.6 I2C从动工作方式 203
4.12.7 I2C多主机工作方式 204
4.12.8 I2C编程举例 204
4.13 EPROM、程序存储器FLASH_ROM的读写 210
4.13.1 EEPROM的读写 210
4.13.2 FLASH_ROM的读/写 211
4.14 系统功能 213
4.14.1 看门狗定时器(WDT) 213
4.14.2 SLEEP的休眠工作方式 215
4.14.3 器件的配置位 218
4.15 PIC16F88x系列单片机介绍 222
4.15.1 端口的差异 223
4.15.2 看门狗定时器的差异 224
4.15.3 具有门控功能的定时器TMR1 225
4.15.4 比较器模块 227
4.15.5 A/D转换模块 235
4.15.6 增强型ECCP模块 236
4.15.7 增强型同步/异步串行通信模块 239
第5章 单片机应用相关基础 242
5.1 BCD转换 242
5.1.1 使用减法的BCD转换算法 242
5.1.2 使用除法的BCD转换算法 243
5.1.3 两种BCD转换算法的比较 244
5.2 8段数码管显示 244
5.2.1 数码管简介 244
5.2.2 动态显示程序设计 246
5.2.3 静态显示设计 250
5.3 字符型LCD使用 254
5.4 点阵型LCD使用 268
5.4.1 串口接线的LCD HDG12864F—1 269
5.4.2 并口接线的LCD HDG12864F—3 278
5.5 常用芯片的使用 279
5.5.1 3—8译码器74LS138的使用 279
5.5.2 8路模拟开关CC4051的使用 281
5.6 外扩A/D转换器的使用 283
5.7 D/A转换器的使用 286
5.8 光电耦合器的使用 292
5.8.1 普通光电耦合器的使用 293
5.8.2 过零通断、双向可控硅输出的光电耦合器的使用 297
5.9 绝对值线路与电压平移线路 299
5.9.1 反相放大与同相放大线路 299
5.9.2 绝对值线路 300
5.9.3 电压上移线路 301
5.10 有源滤波器 303
5.10.1 低通滤波器 303
5.10.2 高通滤波器 304
5.10.3 带通滤波器 304
5.11 高共模抑制比的差动放大线路 305
5.12 直流电源应用实例 307
5.12.1 固定输出的单电源线路 308
5.12.2 固定输出的双电源线路 309
5.12.3 可调输出的单电源线路 309
5.12.4 可调输出的双电源 310
第6章 单片机应用综合实例 311
6.1 频率计 311
6.1.1 【例6.1】频率计1 311
6.1.2 【例6.2】频率计2 317
6.2 基于TC74的温度监测与控制 321
6.2.1 TC74的基本性能与参数 321
6.2.2 【例6.3】基于TC74的温度监测与控制 321
6.3 一线式温度传感器系列组网与应用 333
6.3.1 DS18B20的基本性能参数及结构 334
6.3.2 DS18B20的命令与时序 338
6.3.3 单片机与单个DS18B20器件的通信 342
6.3.4 单片机与多个1—Wire器件的通信 351
6.4 RS-485多机通信与MODBUS协议 361
6.4.1 RS-485接口介绍 361
6.4.2 MODBUS协议介绍 363
6.4.3 【例6.6】RS-485通信实例 366
附录 共用子程序 384
参考文献 388