1、作者简介:徐爱钧 长江大学教授, 硕士研究生导师。全国石油和化学工业仪表技术委员会委员,中国科协湖北省自 动化学会理事,湖北省精品 课 程单片机原理及应用负责人。长期从事自动化及单片机与嵌入式系统应用的教学、科研工作,获得湖北省科学技术进步奖等多项奖励。公开出版智能化 测量控制仪表原理与设计 (第 3 版)、 Keil Cx51 V7.0 单片机高级语言编程与 uVsion2 应用实践(第 2 版) 、单片机原理 实用教程( 第 3 版) 、STC15系列增强型 8051 单片机 C 语 言编程语应用、 ARM 嵌入式 应用技术、 IAR EWARM V5嵌入式系统应用编程与开发等著作和教材
2、10 余部。在 仪 器仪表学报、 测控技术等核心期刊上发表学术论文 60 多篇。内 容 提 要本书详细介绍了宏晶科技有限公司研发的 STC15 系列新型 Flash 8051 单片机基本组成、性能特点及应用方法,基于 Flash 存储器的 ISP 在系统中编程和 IAP 在应用中编程技术,结合目前流行的 Keil C51 编译器环境,对 STC15 系列单片机采用 C 语言进行编程应用,充分发挥 C51 技术优势,全面地展现 STC15 系列单片机本身特色,如片内晶体振荡器时钟调整、将芯片配置成为具有仿真功能的单片机、Keil uVision4 环境下在线仿真调试、1T 单周期指令高速执行、I
3、2C、SPI、ADC 等片内资源以及多种片外扩展应用,为读者快速上手提供方便。全书共分 6 章,第 1 章阐述 STC15 系列单片机基础,详 细 介 绍 STC15F2K60S2 单片机性能特点、存储器结构、片内外存储器的使用、时钟与复位、并行 I/O 端口工作模式以及采用 Keil C51 开发 STC15 系列单片机的基本方法等。 第 2 章阐述 Keil C51 程序设计基础 , 详 细 介 绍 C51 程序设计的语法、基本语句、 函 数 、 数 组 与 指 针 等 。 第 3 章 阐 述 Keil C51 编译器对 ANSI C 的扩展, 介绍存储器类型与编译模式、C51 数据在内存
4、中的存储格式、目标代码的段管理、与汇编语言程序的接口、绝对地址访问以及 Keil C51 库函数等。第 4 章 阐 述 STC15 单片机片内资源应用编程,介绍了 C51 编程的基本原则、常见问题与解决方法,给出了中断系统、定时器/计数器、串行口、片内 A/D 转换器、片内 PCA 模块、SPI 同步串行接口、单片机的低功耗设计等资源的具体应用实例。第 5 章阐述 STC15单片机片外扩展应用编程,给出了 LED 数码管、非编码矩阵键盘、点阵字符型 LCD、带字库与无字库点阵图型 LCD、D/A 及 A/D 转换接口以及 I2C 总线扩展等具体应用实例。第 6 章阐述 STC15 单片机综合应
5、用编程实例,介绍了 C51 编程的若干实际应用技巧、C51 与汇编语言混和编程以及应用库文件的生成方法,给出了可调数字钟、红外遥控系统、PWM 脉宽调制系统、点阵 LED 显示屏、简易电子琴、DTMF 收发系统、带农历的电子万年历、电子密码锁、DS18B20 多点温度监测系统、STH11 数字温-湿度测量系统、单片机 SD 卡读写接口等大量综合应用实例。本书的特点是强调先进性和实用性,给出了大量应用实例,包括原理电路图以及使用说明,并配套一张 CD-ROM 光盘,其中包括 Keil 公司提供的 C51 全功能评估软件包及全书各章所有程序代码。本书适合于从事单片机应用系统开发研制的广大工程技术人
6、员阅读,也可以作为高等院校相关专业大学生或研究生的教学参考书。可通过网上书店直接购买:电子工业出版社:http:/ 1 章 STC15 系列单片机基础 .1.1 STC15F2K60S2 单片机性能特点 .1.1.1 主要特性 .1.1.2 体系结构 .V1.1.3 引脚功能 .1.2 STC15F2K60S2 单片机的存储器结构 .1.3 STC15F2K60S2 单片机的时钟与复位 .1.3.1 时钟 .1.3.2 复位 .1.3.3 看门狗电路 .1.4 STC15F2K60S2 单片机存储器的使用 .1.4.1 片内 Flash 存储器 .1.4.2 片内扩展 XRAM 存储器 .1.
7、4.3 片内数据 Flash 存储器(EEPROM) .1.5 STC15F2K60S2 单片机的并行 I/O 端口 .1.5.1 并行 I/O 端口工作模式 .1.5.2 并行 I/O 端口使用注意事项 .1.6 Keil C51 开发工具 .1.7 STC15 系列单片机的 C 语言编程与调试 .第 2 章 Keil C51 程序设计基础 .2.1 标识符与关键字 .2.2 C51 程序设计的基本语法 .2.2.1 C51 程序的一般结构 .2.2.2 数据类型 .2.2.3 用 typedef 重新定义数据类型 .2.2.4 常量、变量及其存储模式 .2.2.5 运算符与表达式 .2.3
8、 C51 程序的基本语句 .2.3.1 表达式语句 .2.3.2 复合语句 .2.3.3 条件语句 .2.3.4 开关语句 .2.3.5 循环语句 .2.3.6 goto、break、continue 语句 .2.3.7 返回语句 .2.4 函数 .2.4.1 函数的定义与调用 .2.4.2 中断服务函数与寄存器组定义 .2.5 数组 .2.5.1 数组的定义与引用 .2.5.2 数组名作为函数的参数 .2.5.3 数组与存储器空间 .2.6 指针 .2.6.1 指针与地址 .2.6.2 指针变量的定义 .2.6.3 指针变量的引用 .2.6.4 指针变量作为函数的参数 .2.6.5 用指针引
9、用数组元素 .2.6.6 字符数组指针 .2.6.7 指针的地址计算 .2.7 函数型指针 .2.8 返回指针型数据的函数 .2.9 指针数组与指针型指针 .2.9.1 指针数组 .2.9.2 指针型指针 .2.9.3 抽象型指针 .2.10 结构体、联合体与枚举 .2.10.1 结构体变量的定义与引用 .2.10.2 结构体数组 .2.10.3 结构体指针 .2.10.4 将结构体作为函数的参数 .2.10.5 将结构体指针作为函数的参数 .2.11 联合体变量的定义与引用 .2.12 枚举变量的定义与引用 .第 3 章 Keil C51 编译器对 ANSI C 的扩展 .3.1 存储器类型
10、与编译模式 .3.2 C51 数据在内存中的存储格式 .3.3 一般指针与基于存储器的指针及其转换 .3.4 C51 编译器对 ANSI C 函数的扩展 .3.4.1 C51 编译器支持的函数定义一般形式 .3.4.2 堆栈及函数的参数传递 .3.4.3 函数的编译模式 .3.4.4 寄存器组切换 .3.4.5 中断函数 .3.4.6 再入函数 .3.5 目标代码的段管理 .3.5.1 全局变量 .3.5.2 函数和局部变量 .3.6 启动代码 .3.7 与汇编语言程序的接口 .VII3.8 绝对地址访问 .3.8.1 采用扩展关键字_at_或指针定义变量的绝对地址 .3.8.2 采用预定义宏
11、指定变量的绝对地址 .3.9 Keil C51 库函数 .3.9.1 本征库函数 .3.9.2 字符判断转换库函数 .3.9.3 输入/输出库函数 .3.9.4 字符串处理库函数 .3.9.5 类型转换及内存分配库函数 .3.9.6 数学计算库函数 .第 4 章 STC15 单片机片内资源应用编程 .4.1 编写 C51 应用程序的基本原则 .4.2 C51 应用中的一些常见问题与解决方法 .4.3 中断系统应用编程 .4.3.1 中断系统结构 .4.3.2 与中断相关的特殊功能寄存器 .4.3.3 中断应用编程 .4.4 定时器/计数器应用编程 .4.4.1 定时器/计数器逻辑结构 .4.4
12、.2 与定时器/计数器相关的特殊功能寄存器 .4.4.3 定时器方式应用编程 .4.4.4 计数器方式应用编程 .4.4.5 可编程时钟输出 .4.4.6 利用定时器产生音乐 .4.5 串行口应用编程 .4.5.1 串行口的工作方式 .4.5.2 与串行口相关的特殊功能寄存器 .4.5.3 串行口的串/并转换方式应用编程 .4.5.4 串行口的通信方式应用编程 .4.6 片内 A/D 转换器应用编程 .4.6.1 A/D 转换器的逻辑结构 .4.6.2 与 A/D 转换器相关的特殊功能寄存器 .4.6.3 A/D 转换器应用编程 .4.7 片内 PCA 模块应用编程 .4.7.1 PCA 模块
13、的逻辑结构 .4.7.2 与 PCA 模块相关的特殊功能寄存器 .4.7.3 PCA 模块的工作模式 .4.7.4 PCA 模块应用编程 .4.8 SPI 同步串行接口应用编程 .4.8.1 SPI 接口的逻辑结构 .4.8.2 与 SPI 接口相关的特殊功能寄存器 .4.8.3 SPI 接口的通信方式及数据格式 .4.8.4 SPI 接口应用编程 .4.9 STC15F2K60S2 单片机的低功耗设计 .4.9.1 慢速工作模式 .4.9.2 空闲与掉电模式 .第 5 章 STC15 单片机片外扩展应用编程 .5.1 LED 数码管显示接口应用编程 .5.1.1 I/O 端口驱动 LED 数
14、码管应用编程 .5.1.2 单个 74HC595 驱动多位 LED 数码管应用编程 .5.1.3 8 位共阴极 LED 数码管驱动器 MAX7219 应用编程 .5.2 非编码键盘接口应用编程 .5.2.1 采用 I/O 端口实现的矩阵键盘接口应用编程 .5.2.2 采用片内 ADC 实现的键盘接口应用编程 .5.3 点阵字符型 LCD 模块接口应用编程 .5.3.1 点阵字符型 LCD 模块简介 .5.3.2 点阵字符型 LCD 与单片机的直接接口应用编程 .5.3.3 点阵字符型 LCD 与单片机的间接接口应用编程 .5.3.4 点阵字符型 LCD 的 4 位数据总线接口应用编程 .5.4
15、 无字库 12864 点阵图型 LCD 模块接口应用编程 .5.5 带字库 12864 点阵图型 LCD 模块接口应用编程 .5.5.1 带字库 12864 液晶模块并行接口应用编程 .5.5.2 带字库 12864 液晶模块串行接口应用编程 .5.6 内置 T6963C 的点阵图型 LCD 模块接口应用编程 .5.7 DAC 转换接口应用编程 .5.7.1 DAC0832 转换接口应用编程 .5.7.2 DAC1208 与单片机的接口方法 .5.7.3 串行接口 DAC 芯片 TLC5615 应用编程 .5.8 ADC 转换接口应用编程 .5.8.1 ADC0809 转换接口应用编程 .5.
16、8.2 ICL7135 转换接口应用编程 .5.8.3 串行接口 ADC 芯片 TLC549 应用编程 .5.9 单片机 I2C 总线扩展应用编程 .5.9.1 I2C 总线简介 .5.9.2 I2C 总线通用驱动程序 .5.9.3 I2C 接口器件 24C04 的读写程序 .IX5.9.4 I2C 接口 A/D-D/A 转换芯片 PCF8591 应用编程 .5.9.5 I2C 接口时钟芯片 PCF8563 应用编程 .第 6 章 STC15 单片机综合应用编程实例 .6.1 有关 C51 编程的若干实际应用技巧 .6.2 C51 与汇编语言混和编程以及生成应用库文件 .10.2.1 C51
17、与汇编语言混合编程 .10.2.2 在Vision4 中生成应用库文件 .6.3 可调数字钟设计 .6.3.1 功能要求 .6.3.2 硬件电路设计 .6.3.3 软件程序设计 .6.4 红外遥控系统设计 .6.4.1 功能要求 .6.4.2 硬件电路设计 .6.4.3 软件程序设计 .6.5 PWM 脉宽调制系统设计 .6.5.1 功能要求 .6.5.2 硬件电路设计 .6.5.3 软件程序设计 .6.6 点阵 LED 显示屏设计 .6.6.1 功能要求 .6.6.2 硬件电路设计 .6.6.3 软件程序设计 .6.7 简易电子琴设计 .6.7.1 功能要求 .6.7.2 硬件电路设计 .6.7.3 软件程序设计 .6.8 DTMF 收发系统设计 .6.8.1 功能要求 .6.8.2 硬件电路设计 .6.8.3 软件程序设计 .6.9 带农历的电子万年历设计 .6.9.1 功能要求 .6.9.2 硬件电路设计 .6.9.3 软件程序设计 .6.10 电子密码锁设计 .6.10.1 功能要求 .6.10.2 硬件电路设计 .6.10.3 软件程序设计 .6.11 DS18B20 多点温度监测系统设计 .6.11.1 功能要求 .6.11.2 硬件电路设计 .6.11.3 软件程序设计 .6.12 STH11 数字温-湿度测量系统设计 .