本书以STC 32位单片机产品系列中的STC32G12K128单片机为载体进行编写,其是以抗干扰能力强、价格低、工作速度快、功耗低为目标的32位8051单片机,在相同的工作频率下,其工作速度可达传统8051单片机的70倍。 本书基于STC大学推广计划实验箱(9.4)(主控单片机:STC32G12K128)介绍应用实例的开发,采用基于寄存器应用编程与基于库函数应用编程相结合、理论与实践相结合、侧重工程实践的编写思路,内容主要包括微型计算机基础、STC32G12K128单片机应用系统的开发工具、STC32G12K128单片机的内核、定时/计数器、中断系统、串行端口、A/D转换模块、比较器、人机对话端口的应用设计、STC32G-SOFT WARE-LIB函数库、SPI端口及其应用、I2C总线端口及其应用、高级PWM定时器及其应用、RTC时钟及其应用、DMA通道及其应用、CAN总线及其应用、LIN总线及其应用、USB模块及其应用、32位乘除单元等。
丁向荣,男,广东轻工职业技术学院教授,电子信息类专业教学骨干,长期从事单片机方面的教学实践和教科研工作,具备丰富的相关经验,其对STC单片机的理解尤为深入,曾编写并出版过多本相关教材,获得市场广泛认可。
目 录
第1章 微型计算机基础 1
1.1 数制与编码 1
1.1.1 数制及其转换方法 1
1.1.2 微型计算机中数的表示方法 3
1.1.3 微型计算机中常用编码 5
1.2 微型计算机原理 6
1.2.1 微型计算机的基本组成 6
1.2.2 指令、程序与编程语言 7
1.2.3 微型计算机的工作过程 8
1.2.4 微型计算机的应用形态 9
1.3 STC 32位单片机 9
1.3.1 STC 32位单片机产品系列 10
1.3.2 STC 32位单片机的内核 10
本章小结 10
思考与提高 11
第2章 STC32G12K128单片机应用系统的开发工具 12
2.1 Keil C251集成开发环境 12
2.2 STC32G12K128单片机硬件实验平台 20
2.2.1 STC大学推广计划实验箱(9.4) 20
2.2.2 STC32G12K128单片机迷你核心学习板 28
2.3 在线编程与在线仿真 29
2.3.1 在线可编程(ISP)电路 29
2.3.2 应用程序的下载与运行 30
2.3.3 STC-ISP的其他功能 31
2.4 工程训练 31
2.4.1 Keil C251集成开发环境的应用 31
2.4.2 STC32G12K128单片机的在线编程与在线调试 33
2.4.3 STC32G12K128单片机的不停电程序下载 34
2.4.4 STC32G12K128单片机SWD端口的在线仿真 36
本章小结 38
思考与提高 38
第3章 STC32G12K128单片机的内核 40
3.1 资源配置与引脚 40
3.1.1 资源配置 40
3.1.2 工作特性 42
3.1.3 引脚与引脚功能 42
3.2 时钟 48
3.2.1 时钟框图 48
3.2.2 系统时钟的控制与管理 49
3.2.3 USB时钟 52
3.2.4 高速外设时钟 52
3.2.5 RTC时钟源 52
3.3 复位 53
3.3.1 硬件复位 53
3.3.2 软件复位 55
3.4 存储系统 55
3.4.1 程序存储器 57
3.4.2 数据存储器 57
3.4.3 特殊功能寄存器 58
3.4.4 EEPROM 60
3.5 并行I/O端口 62
3.5.1 I/O端口的配置 64
3.5.2 并行I/O端口的结构 64
3.5.3 并行I/O端口的其他控制 66
3.5.4 并行I/O端口使用注意事项 66
3.6 电源管理 67
3.6.1 空闲(IDLE)模式 67
3.6.2 掉电模式 67
3.7 工程训练 69
3.7.1 EEPROM的测试 69
3.7.2 LED数码管驱动与显示 72
本章小结 74
思考与提高 75
第4章 定时/计数器 77
4.1 定时/计数器T0、T1的控制 77
4.1.1 定时/计数器T0 78
4.1.2 定时/计数器T1 79
4.2 定时/计数器T0、T1的应用 81
4.2.1 T0、T1的定时应用 81
4.2.2 T0、T1的计数应用 83
4.2.3 T0、T1可编程时钟的输出 84
4.3 定时/计数器T2、T3、T4 85
4.3.1 定时/计数器T2 85
4.3.2 定时/计数器T3、T4 86
4.4 工程训练 87
4.4.1 定时/计数器的定时应用 87
4.4.2 定时/计数器的计数应用 89
4.4.3 定时/计数器的综合应用 91
4.4.4 可编程时钟输出 92
本章小结 94
思考与提高 94
第5章 中断系统 97
5.1 中断系统概述 97
5.1.1 中断系统的几个概念 97
5.1.2 中断的技术优势 98
5.1.3 中断系统需要解决的问题 98
5.2 STC32G12K128单片机的中断系统 98
5.2.1 中断请求 98
5.2.2 中断响应 105
5.2.3 中断服务与中断返回 106
5.2.4 关于中断号大于31在Keil C251中编译出错的处理 107
5.2.5 中断应用举例 108
5.3 外部中断的扩展 109
5.4 工程训练 110
5.4.1 中断应用编程 110
5.4.2 外部中断的应用编程 111
本章小结 113
思考与提高 114
第6章 串行端口 117
6.1 串行通信基础 117
6.2 串行端口1 119
6.2.1 串行端口1的控制寄存器 120
6.2.2 串行端口1的工作方式与应用 122
6.2.3 STC-ISP波特率计算器 125
6.2.4 串行端口1的应用举例 125
6.3 STC32G12K128单片机与PC的通信 132
6.3.1 串行通信的端口设计 132
6.3.2 串行通信的程序设计 134
6.4 串行端口2* 135
6.5 串行端口3、串行端口4* 138
6.5.1 串行端口3 138
6.5.2 串行端口4 139
6.6 工程训练 140
6.6.1 STC32G12K128单片机间的双机通信 140
6.6.2 STC32G12K128单片机与PC间的串行通信 143
本章小结 145
思考与提高 145
第7章 A/D转换模块 148
7.1 A/D转换模块的结构 148
7.2 A/D转换模块的控制 149
7.3 A/D转换的应用 152
7.4 工程训练 154
7.4.1 测量内部1.19V基准电压 154
7.4.2 构建ADC键盘 155
本章小结 159
思考与提高 159
第8章 比较器 161
8.1 比较器的内部结构与控制 161
8.1.1 比较器的内部结构 161
8.1.2 比较器的控制 161
8.2 比较器的应用 163
8.3 工程训练:应用比较器和A/D转换模块测量内部1.19V基准电压 164
本章小结 167
思考与提高 167
第9章 人机对话端口的应用设计 169
9.1 单片机应用系统的开发流程 169
9.1.1 单片机应用系统的设计原则 169
9.1.2 单片机应用系统的开发流程 170
9.1.3 单片机应用系统工程报告的编制 172
9.2 键盘端口与应用编程 174
9.3 LCD模块的显示端口与应用编程 181
9.3.1 LCD模块概述 181
9.3.2 点阵字符型液晶显示模块LCD1602 181
9.3.3 点阵图形型液晶显示模块LCD12864 188
9.4 工程实践 196
9.4.1 STC32G12K128单片机与矩阵键盘的端口与应用 196
9.4.2 STC32G12K128单片机与LCD12864(含中文字库)的端口与应用 198
本章小结 203
思考与提高 204
第10章 STC32G-SOFTWARE-LIB函数库 207
10.1 目录结构 207
10.1.1 硬件驱动程序部分 207
10.1.2 应用程序部分 208
10.1.3 用户程序及配置文件 208
10.2 硬件驱动 209
10.2.1 A/D转换模块 209
10.2.2 比较器模块 210
10.2.3 EEPROM 211
10.2.4 外部中断 212
10.2.5 GPIO 212
10.2.6 I2C总线 213
10.2.7 定时/计数器 214
10.2.8 串行端口 215
10.2.9 SPI总线 217
10.2.10 软件模拟I2C总线 218
10.2.11 看门狗 219
10.2.12 16位高级PWM 220
10.2.13 DMA通道 222
10.2.14 LCM模块 226
10.2.15 软件延时 227
10.2.16 中断服务函数 227
10.3 应用程序开发 242
10.3.1 系统流程 242
10.3.2 应用程序框架分析 242
10.3.3 应用程序的分析与编写 251
10.3.4 开发步骤 256
10.4 工程训练:通过A/D转换模块测量内部1.19V基准电压 256
思考与提高 257
第11章 SPI接口及其应用 258
11.1 SPI接口的功能特性 258
11.2 与SPI接口相关的特殊功能寄存器 261
11.3 SPI接口的应用举例 261
11.4 工程训练:双机之间的串行数据通信 263
思考与提高 264
第12章 I2C总线及其应用 265
12.1 I2C总线概述 265
12.2 STC32G12K128单片机的I2C总线 268
12.3 I2C总线的应用 269
12.4 工程训练:I2C总线的自发自收 270
思考与提高 271
第13章 高级PWM定时器及其应用 273
13.1 PWMA的功能特性 273
13.2 PWMA的应用 275
13.3 工程训练:设计呼吸灯 277
思考与提高 278
第14章 RTC时钟及其应用 279
14.1 RTC时钟的功能特性 279
14.2 RTC时钟的应用 280
14.3 工程训练:设计24小时时钟 284
思考与提高 285
第15章 DMA通道及其应用 286
15.1 DMA通道的功能特性 286
15.2 DMA通道的应用 295
15.3 工程训练:TFT彩屏的驱动与显示 303
思考与提高 304
第16章 CAN总线及其应用 305
16.1 CAN总线的功能特性 305
16.2 CAN总线的应用 305
16.3 工程训练:CAN总线的自发自收 308
思考与提高 310
第17章 LIN总线及其应用 311
17.1 LIN总线的功能特性 311
17.2 LIN总线的应用 311
17.3 工程训练:LIN总线主机模式、从机模式的测试 314
思考与提高 315
第18章 USB模块及其应用 316
18.1 概述 316
18.2 USB库函数(调试端口) 316
18.2.1 LED数码管端口 316
18.2.2 LCD12864端口 317
18.2.3 OLED12864端口 319
18.2.4 在虚拟键盘上按键然后发送相应的键值到设备 321
18.2.5 控制DIP40的各个引脚连接的LED的状态 322
18.3 工程训练 322
18.3.1 测试HID调试端口(虚拟键盘、数码管、LCD12864) 322
18.3.2 设计秒表(HID数码管显示) 326
思考与提高 328
第19章 32位硬件乘除单元 329
19.1 MDU32简介 329
19.2 基于MDU32库文件的应用编程 329
19.3 工程训练—MDU32的应用 330
思考与提高 331
参考文献 332