《51单片机C语言应用与开发》以51系列单片机为主,从应用角度出发介绍单片机的基本工作原理、内部资源的使用及C5l程序设计的基本方法等相关知识。以ELITE-Ⅲ开发板为基础,介绍了单片机的系统扩展、接口技术及应用系统的开发过程、编程方法,最后以实际项目为基础,介绍了LTPA245热敏打印机驱动系统、热球子宫内膜治疗仪控制系统及移动基站动力环境监控系统等项目的软、硬件设计方法。《51单片机C语言应用与开发》摒弃了以学科体系为主线的编排方式,通过大量的实例,使读者能快速、有效地掌握用c51语言开发51单片机应用系统的方法和流程,真正做到对相关知识的融会贯通。
《51单片机C语言应用与开发》适合高等院校计算机、自动化、电子信息等相关专业的学生学习,同时也可供从事单片机开发的工程设计人员参考使用。
本书强调以实际开发板为学习平台,以应用为目的,简化既抽象、又乏味的单片机内部原理介绍,摒弃复杂、难懂的汇编语言学习,代之以易学、易用且功能性、结构性和可移植性都很强的C语言作为编程语言,很大程度上提高了单片机应用系统的学习和开发效率。书中包含了大量51系列单片机应用系统的电路原理图和程序代码,内容覆盖面广,许多实例可直接移植到新的设计项目中使用。
单片微型计算机(single chip Microcomputer,SCM)简称为单片机,是嵌入式系统的重要组成部分。由于最早是为工业控制设计,因而也称作微控制器(Micro Controller Unit,MCU)。近年来,单片机以其高可靠性、高性价比的优势,在工业控制系统、数据采集系统、智能化仪器仪表、办公自动化等诸多领域得到极为广泛的应用。早期的单片机只能用汇编语言编程,编写的程序复杂、难懂,而且硬件相关性很高,要求开发人员或学习者能清楚知道相关芯片的内部结构,尤其是寄存器结构和存储空间的分配等,这些都限制了单片机应用知识的推广。随着单片机C语言编译器的出现,那些硬件基础知识相对缺乏的设计人员设计单片机应用系统的大门也随之打开。基于此,本书以ELITE-Ⅲ开发板为背景,由浅入深讲述了单片机应用系统设计和开发的全部过程,并用大量的案例来满足不同读者的需求。
本书强调以实际开发板为学习平台,以应用为目的,简化既抽象、又乏味的单片机内部原理介绍,摒弃复杂、难懂的汇编语言学习,代之以易学、易用且功能性、结构性和可移植性都很强的C语言作为编程语言,很大程度上提高了单片机应用系统的学习和开发效率。书中包含了大量51系列单片机应用系统的电路原理图和程序代码,内容覆盖面广,许多实例可直接移植到新的设计项目中使用。
第1章 51单片机的基础知识1
1.1 51系列单片机的基本结构1
1.1.1 8051单片机的硬件组成及内部结构1
1.1.2 8051单片机的引脚功能2
1.1.3 8051单片机的CPU4
1.2 8051单片机的存储器组织6
1.2.1 存储器组织6
1.2.2 特殊功能寄存器8
1.3 单片机最小系统9
1.3.1 复位及复位电路9
1.3.2 时钟电路10
1.3.3 8051单片机的最小系统11
第2章 C51程序设计12
2.1 Keil C5112
2.2 C51的数据类型13
2.2.1 常量15
2.2.2 变量17
2.2.3 数组19
2.2.4 指针21
2.2.5 结构与联合25
2.3 运算符与表达式27
2.4 流程控制语句29
2.4.1 条件语句29
2.4.2 while语句30
2.4.3 dowhile循环语句31
2.4.4 for循环31
2.4.5 switch语句32
2.4.6 break语句与continue语句33
2.4.7 返回语句return33
2.5 函数34
2.5.1 函数的定义34
2.5.2 函数调用34
2.5.3 中断服务函数35
2.6 编译预处理37
2.6.1 宏定义“#define”指令37
2.6.2 文件包含#include指令39
2.7 C语言和汇编语言混合编程40
第3章 51单片机的内部资源44
3.1 并行I/O口44
3.2 中断系统45
3.2.1 概述45
3.2.2 中断控制寄存器46
3.2.3 C51编写中断服务程序47
3.2.4 外部中断的扩充48
3.3 定时/计数器50
3.3.1 工作方式50
3.3.2 定时/计数器控制寄存器51
3.3.3 定时/计数器的初始化52
3.4 串行通信53
3.4.1 串行接口的工作方式53
3.4.2 串行接口控制寄存器54
3.4.3 串行接口应用56
第4章 Keil C51集成开发环境59
4.1 Keil C51的安装59
4.2 μVision3集成开发环境62
4.2.1 μVision3简介62
4.2.2 开发环境的配置63
4.3 μVision3的栏目和窗口64
4.4 创建项目68
4.5 简单程序的调试69
4.6 代码优化70
4.7 使用技巧70
4.8 Keil C编译器常见警告与错误信息的解决方法71
第5章 ELITEIII开发板简介74
5.1 ELITEIII硬件资源74
5.2 单片机在系统编程76
5.2.1 AT89S系列单片机76
5.2.2 Winbond78E系列单片机80
5.2.3 STC89C系列单片机82
第6章 ELITEIII开发应用实例87
6.1 流水灯控制系统设计87
6.1.1 流水灯的硬件电路87
6.1.2 流水灯软件设计89
6.1.3 利用定时器中断产生延时93
6.2 I/O口的高级应用95
6.2.1 数码管显示器95
6.2.2 键盘接口100
6.2.3 简易电子钟设计107
6.3 点阵显示设计112
6.3.1 8×8点阵显示设计112
6.3.2 16×16动态点阵显示119
6.4 步进电机控制123
6.4.1 步进电机123
6.4.2 步进电机驱动系统126
6.4.3 简单步进电机控制程序127
6.5 A/D转换设计131
6.5.1 A/D转换器的基本原理131
6.5.2 并行接口A/D转换器133
6.6 单片机串行通信138
6.6.1 串行通信的基础知识138
6.6.2 单片机与PC机的通信142
6.6.3 单片机之间的通信149
6.7 I2C总线技术150
6.7.1 I2C总线151
6.7.2 串行EEPROM AT24C02155
6.8 特殊总线串行通信157
6.8.1 数字温度传感器DS18B20157
6.8.2 时钟芯片DS1302166
第7章 LTPA245热敏打印机驱动设计172
7.1 热敏打印机的工作原理172
7.1.1 热敏打印机结构原理172
7.1.2 热敏打印机设计中需要注意的问题173
7.2 热敏打印机LTPA245173
7.3 步进电机的驱动176
7.4 单片机资源分配178
7.5 系统硬件设计180
7.6 系统软件183
第8章 热球子宫内膜治疗仪控制系统194
8.1 系统硬件组成及工作原理194
8.1.1 系统结构及工作原理194
8.1.2 电源模块195
8.1.3 系统复位及低电压检测电路196
8.1.4 A/D转换模块198
8.1.5 信号放大及调理电路201
8.1.6 球囊加热器故障检测电路202
8.2 单片机资源的分配203
8.3 系统软件204
第9章 移动基站动力环境监控系统214
9.1 系统总体设计方案214
9.1.1 需求分析214
9.1.2 总体方案设计216
9.2 硬件电路设计219
9.2.1 系统硬件结构219
9.2.2 主控CPU的外围电路220
9.2.3 开关量I/O接口扩展电路225
9.2.4 串行通信扩展227
9.2.5 存储器的扩展232
9.2.6 模拟量的采集233
9.2.7 系统电源电路236
9.3 系统软件237
9.3.1 主CPU资源分配237
9.3.2 主CPU的部分函数238
参考文献244
动态扫描显示是单片机应用系统中最常见的显示方法之一,是把所有显示器8个字段a~h的各同名端并联在一起,并把它们接到字段码I/0输出口上。为了防止各个显示器同时显示同一个字符,各显示器的公共端并不接到电源或地,而是接到另一组控制信号,即位输出口上。在动态扫描显示方式下,一组数码管显示器需要两组信号来控制:一组是字段码输出口输出的字形代码,用来控制显示的字符形状;另一组是位输出口输出的控制信号,用于控制哪一位显示器工作,也称为位码。在两组信号的共同控制下,可以按顺序一位一位地轮流点亮每个显示器,显示各自的字符,以实现数码管的动态扫描显示。由于LED具有余辉特性及人眼的视觉残留现象,尽管各位显示器实际上是分时断续显示,但只要选取适当的扫描频率,给人眼的感觉就会是连续稳定的显示,不会察觉到闪烁现象。