全书计划15章,每章开篇讲述单片机内部各种功能及原理,后配套C源代码及实践,一章一个任务,采用手把手的方式,教你循序渐进地掌握PIC的开发。
封面图
目录
- 前言
- 第一篇片内功能和开发环境
- 第1章初识PIC 2
- 1.1与众不同的PIC 2
- 1.1.1PIC单片机大家族 2
- 1.1.2哈佛内核结构 3
- 1.1.3PIC的功能概要 4
- 1.2主题芯片介绍 7
- 1.2.1片内资源配置 7
- 1.2.2PIC的I/O口 7
- 1.2.3I/O口的方向设定 9
- 1.2.4I/O口的应用 9
- 1.2.5I/O口的内部结构 10
- 第2章PIC的开发环境 12
- 2.1PIC开发的硬件资源 12
- 2.1.1动手搭建系统板 12
- 2.1.2ICSP接口 13
- 2.2MPLAB IDE集成开发环境 13
- 2.2.1单片机系统开发过程 14
- 2.2.2MPLAB IDE及其内置组件 14
- 2.2.3MPLAB IDE的工具链 16
- 2.3开发前的准备 17
- 2.3.1PICC支持的基本数据类型 17
- 2.3.2安装MPLAB IDE软件 18
- 2.3.3安装PICC18编译器软件 21
- 2.4我的第一个PIC程序 23
- 2.4.1建立开发项目 23
- 2.4.2新建源文件并添加到项目中 30
- 2.4.3源代码的编写 33
- 2.4.4代码的编译和烧写 34
- 2.4.5PIC入门编程实例 39
- 第3章仿真 40
- 3.1MPLAB SIM软件模拟器 40
- 3.1.1使用软件模拟器 40
- 3.1.2设置断点 44
- 3.1.3设定观察窗口 45
- 3.2PICkit 2硬件调试器 46
- 第4章位操作 51
- 4.1PICC中的高级变量 51
- 4.2PICC中的变量修饰关键词 52
- 4.3PIC18的头文件 53
- 4.4位操作 57
- 4.4.1位操作的方法 57
- 4.4.2不容忽视的“读-修改-写”问题 59
- 第5章时钟源 62
- 5.1数码管 62
- 5.1.1数码管的内部结构 62
- 5.1.2数码管的驱动 63
- 5.2时钟源简介 64
- 5.2.1时钟的来源 64
- 5.2.2时钟源的分类 64
- 5.3主时钟源 65
- 5.3.1与时钟源相关的配置位 65
- 5.3.2主时钟源配置 66
- 5.4内部及辅助时钟源 68
- 5.4.1内部时钟源配置 68
- 5.4.2内部及辅助时钟源的构成 69
- 5.4.3时钟源的控制寄存器 69
- 5.5时钟源编程实例 71
- 5.5.1时钟源的设置向导 71
- 5.5.2主时钟源的应用 72
- 5.5.3内部时钟源的应用 75
- 第6章PIC的特色功能 77
- 6.1功耗管理模式 77
- 6.1.1运行模式 77
- 6.1.2空闲模式 77
- 6.1.3休眠模式 78
- 6.2复位 79
- 6.2.1外部复位 79
- 6.2.2上电复位 79
- 6.2.3上电延时定时器复位 79
- 6.2.4振荡器起振定时器复位 80
- 6.2.5欠压复位 81
- 6.2.6看门狗定时器复位 81
- 6.2.7跟踪复位事件 83
- 6.3双速启动 83
- 6.4故障保护时钟监视器 84
- 第7章配置位 85
- 7.1配置位简介 85
- 7.1.1配置位的使用方法 85
- 7.1.2配置寄存器 86
- 7.2配置位的相关设置 91
- 第二篇单元模块及驱动
- 第8章中断 94
- 8.1中断系统 94
- 8.1.1中断的类型 94
- 8.1.2中断的处理 95
- 8.1.3中断控制寄存器 95
- 8.2外部中断 100
- 8.2.1外部中断的过程 101
- 8.2.2特殊的PORTB端口 101
- 8.2.3外部中断编程实例 102
- 8.2.4PIC的中断服务函数 105
- 8.3电平变化中断 105
- 8.3.1电平变化中断的特点 105
- 8.3.2电平变化中断的应用 106
- 第9章定时/计数器(上) 109
- 9.1TIMER0模块 109
- 9.1.1TMIER0的内部结构 109
- 9.1.2 TIMER0的控制寄存器 110
- 9.1.3TIMER0的16位读写方式 110
- 9.1.4TIMER0的预分频器 111
- 9.1.5TIMER0的中断 112
- 9.2TIMER0编程实例 112
- 9.3TIMER1模块 115
- 9.3.1TMIER1的内部结构 115
- 9.3.2TMIER1的控制寄存器 116
- 9.3.3TIMER1的16位读写模式 117
- 9.3.4TIMER1的振荡器 118
- 9.3.5TIMER1的中断 118
- 9.3.6灵活使用TIMER1 119
- 9.4TIMER1编程实例 119
- 第10章定时/计数器(下) 124
- 10.1TIMER2模块 124
- 10.1.1TMIER2的内部结构 124
- 10.1.2TMIER2的控制寄存器 125
- 10.2TIMER2编程实例 125
- 10.3TIMER3模块 130
- 10.3.1TMIER3的内部结构 130
- 10.3.2TMIER3的控制寄存器 131
- 10.3.3TIMER3的16位读写方式 131
- 10.3.4TIMER3的中断 132
- 10.4TIMER3编程实例 132
- 第11章A/D转换器 137
- 11.1A/D转换器的原理 137
- 11.1.1模数转换 137
- 11.1.2逐次逼近型A/D转换器原理 138
- 11.2PIC的ADC模块 138
- 11.2.1ADC模块的结构 138
- 11.2.2A/D转换的分辨率 139
- 11.2.3ADC模块的控制寄存器 140
- 11.3设置ADC模块 143
- 11.3.1模拟输入通道 143
- 11.3.2A/D转换周期 143
- 11.3.3A/D转换过程 144
- 11.3.4A/D转换时钟 144
- 11.4使用ADC模块 145
- 11.4.1ADC模块编程向导 145
- 11.4.2ADC模块编程实例 145
- 第12章主控同步串行接口(SPI模式) 149
- 12.1MSSP模块 149
- 12.1.1SPI总线 149
- 12.1.2MSSP模块的SPI模式 150
- 12.1.3SPI模式控制寄存器 151
- 12.1.4SPI主控模式通信时序 153
- 12.1.5SPI模式端口配置 154
- 12.1.6SPI的通信过程 154
- 12.1.7SPI模式通信要点 155
- 12.2存储器93C46 156
- 12.2.193C46引脚功能 156
- 12.2.293C46操作指令 157
- 12.2.393C46数据传输时序 159
- 12.3SPI模式编程实例 159
- 12.3.1SPI主控模式编程向导 159
- 12.3.293C46断电接力显示 159
- 第13章主控同步串行接口(I2C模式) 165
- 13.1I2C总线 165
- 13.2I2C总线通信协议 166
- 13.2.1起始和停止条件 166
- 13.2.2I2C总线的位传输 167
- 13.2.3I2C器件的寻址 167
- 13.3MSSP模块的I2C模式 168
- 13.3.1I2C模式简介 168
- 13.3.2I2C模式的控制寄存器 169
- 13.3.3I2C模式的编程向导 171
- 13.4I2C模式通信 171
- 13.4.1I2C模式数据发送时序 171
- 13.4.2I2C模式数据接收时序 173
- 13.4.3波特率 174
- 13.5DS1307实时时钟 175
- 13.5.1DS1307的功能 175
- 13.5.2DS1307的寄存器 176
- 13.5.3DS1307的数据格式 177
- 13.6I2C模式编程实例 178
- 第14章CCP模块 184
- 14.1CCP模块概述 184
- 14.1.1CCP模块的功能 184
- 14.1.2CCP模块的控制寄存器 184
- 14.1.3定时器资源配置 185
- 14.1.4CCP模块引脚分配 186
- 14.2捕捉模式 186
- 14.2.1捕捉模式原理 186
- 14.2.2捕捉模式的时间值 187
- 14.2.3捕捉模式的配置 188
- 14.2.4理解捕捉模式 188
- 14.2.5捕捉的精度 189
- 14.3比较模式 189
- 14.3.1比较模式的原理 189
- 14.3.2比较模式的应用 190
- 14.4PWM模式 190
- 14.4.1PWM的相关参数 191
- 14.4.2 PWM模式的原理 191
- 14.4.3PWM参数的计算 193
- 14.4.4 PWM模式设置向导 193
- 14.4.5增强型PWM方式 194
- 14.5CCP模块编程实例 194
- 14.5.1基于CCP模块的信号发生器和频率计 194
- 14.5.2 PWM调光灯 198
- 第15章模拟比较器 203
- 15.1模拟比较器模块 203
- 15.1.1比较器的作用 203
- 15.1.2比较器模块配置 204
- 15.1.3比较器的控制寄存器 205
- 15.1.4比较器的工作原理 206
- 15.1.5比较器的中断 206
- 15.2参考电压模块 207
- 15.2.1参考电压模块的控制寄存器 207
- 15.2.2参考电压源 208
- 15.2.3参考电压模块的应用 209
- 15.3比较器编程实例 209
- 第16章片内存储器 212
- 16.1FLASH的读写 212
- 16.1.1存储器的结构 212
- 16.1.2表读和表写 212
- 16.2EEPROM的读写 214
- 16.2.1EEPROM的相关寄存器 215
- 16.2.2读EEPROM存储器 216
- 16.2.3写EEPROM存储器 216
- 16.3EEPROM编程实例 216
- 第17章串行通信模块 220
- 17.1串行通信模块概述 220
- 17.1.1EUSART的工作模式 220
- 17.1.2EUSART的端口配置 220
- 17.1.3EUSART的相关寄存器 221
- 17.1.4异步通信数据格式 224
- 17.1.5EUSART的中断 224
- 17.2波特率发生器 224
- 17.2.1波特率 224
- 17.2.2波特率的产生 225
- 17.3EUSART数据发送 225
- 17.3.1异步发送原理 225
- 17.3.2异步发送时序 226
- 17.3.3异步发送编程向导 227
- 17.4EUSART数据接收 227
- 17.4.1异步接收原理 227
- 17.4.2异步接收时序 229
- 17.4.3异步接收编程向导 230
- 17.4.4地址检测接收编程向导 230
- 17.5EUSART编程实例 231
- 17.5.1间隔字符和同步字符的发送 231
- 17.5.2串行通信收发器 231
- 第三篇扩展应用实例
- 第18章步进电机的驱动 236
- 18.1步进电机的特点 236
- 18.1.1步进电机的分类 236
- 18.1.2步进电机的工作原理 237
- 18.1.3步距角的计算方法 237
- 18.228BYJ48型步进电机 237
- 18.2.128BYJ48电机性能指标 237
- 18.2.228BYJ48电机绕组结构 238
- 18.3步进电机的驱动 238
- 18.3.1步进电机的励磁方式 238
- 18.3.2步进电机的驱动电路 239
- 18.3.3步进电机编程实例 239
- 第19章红外线解码及发射 243
- 19.1红外线遥控的编码方式 243
- 19.1.1编码的帧结构 243
- 19.1.2编码的方式 243
- 19.1.3编码的调制与解调 244
- 19.2红外线解码与发射 245
- 19.2.1红外线解码的方法 245
- 19.2.2红外线发射的方法 245
- 19.3红外线遥控编程实例 246
- 19.3.1红外线解码器 246
- 19.3.2红外线发射器 251
- 第20章DS18B20数字温度传感器 254
- 20.1DS18B20的功能介绍 254
- 20.1.1DS18B20的特点 254
- 20.1.2DS18B20的引脚定义 255
- 20.2DS18B20的内部结构 255
- 20.2.164位光刻ROM 255
- 20.2.2存储器 255
- 20.2.3配置寄存器 256
- 20.2.4温度值的存储方式 257
- 20.3DS18B20的读写方式 258
- 20.3.1DS18B20的初始化时序 258
- 20.3.2DS18B20的写时序 258
- 20.3.3DS18B20的读时序 259
- 20.4DS18B20的通信协议 259
- 20.4.1ROM指令 260
- 20.4.2RAM指令 260
- 20.5DS18B20的应用 261
- 20.5.1DS18B20的供电方式 261
- 20.5.2DS18B20的编程向导 262
- 20.5.3DS18B20的使用要点 262
- 20.6DS18B20编程实例 262
- 第21章1602字符型液晶显示器 268
- 21.11602液晶概述 268
- 21.1.11602液晶的特点 268
- 21.1.21602液晶的引脚功能 268
- 21.1.31602液晶与单片机的接口 269
- 21.21602液晶的功能 269
- 21.2.11602液晶的显示数据RAM 269
- 21.2.21602液晶的字符发生器 270
- 21.2.31602液晶的操作时序 272
- 21.2.41602液晶的操作指令 273
- 21.2.51602液晶的初始化 275
- 21.31602液晶编程实例 275
- 第22章12864点阵型液晶显示器 278
- 22.112864点阵型液晶概述 278
- 22.1.1JLX12864G-086液晶的特点 278
- 22.1.2JLX12864G-086液晶的引脚功能 279
- 22.212864点阵型液晶显示方式 280
- 22.2.1显示屏与显存的对应关系 280
- 22.2.2显存的组织结构 281
- 22.2.3读写时序 281
- 22.2.4UC1701X指令集 282
- 22.312864点阵型液晶编程实例 283
- 22.3.1液晶显示器的接口电路 283
- 22.3.2汉字的取模方法 284
- 22.3.3图像的取模方法 284
- 22.3.4汉字和图形显示 285
- 附录APIC18F4520单片机的引脚功能 294
- 附录B搭建系统板所需材料清单 296
- 附录C最小系统板电路原理图 297
- 附录Debox2049实验板 298