本书是一本以实例详解方式介绍51单片机与C语言编程的图书,主要内容有单片机入门、51单片机的硬件系统、Keil C51编程软件的使用、单片机驱动LED与LED数码管的电路及编程、中断的使用及编程、定时器/计数器的使用及编程、独立按键与矩阵键盘输入电路及编程、点阵和液晶显示屏的使用及编程、步进电动机的使用及编程、串行通信的使用及编程、I2C总线通信的使用及编程、AD(模数)与DA(数模)转换电路及编程。本书具有讲解由浅入深、语言通俗易懂的特点,并且内容结构安排符合学习认知规律,适合作为初学者学习51单片机及编程的自学图书,也适合作为职业院校电类专业的单片机教材。
蔡杏山,电工电子领域专家,有多年教学经验,曾先后任教不同的大、中专院校,培训班,所授课程涉及广泛,已编著出版各类电工电子类图书超过100种,并创单本销量10万册以上的佳绩,深受读者好评。
第1章  单片机入门	1
1.1  单片机简介	1
1.1.1  什么是单片机	1
1.1.2  单片机应用系统的组成及举例说明	2
1.1.3  单片机的分类	3
1.1.4  单片机的应用领域	4
1.2  用实例了解单片机应用系统的开发过程	5
1.2.1  明确控制要求并选择合适型号的单片机	5
1.2.2  设计单片机电路原理图	5
1.2.3  制作单片机电路	6
1.2.4  用Keil 软件编写单片机控制程序	7
1.2.5  计算机、单片机和下载(烧录)器的连接	10
1.2.6  用烧录软件将程序写入单片机	13
1.2.7  单片机的供电与测试	15
1.3  与单片机有关的基础知识	17
1.3.1  单片机基础电路	17
1.3.2  数制与数制的转换	24
1.3.3  数的表示及运算	27
1.4  C51语言基础	29
1.4.1  常量	29
1.4.2  变量	30
1.4.3  运算符	31
1.4.4  关键字	34
1.4.5  数组	35
1.4.6  循环语句	36
1.4.7  选择语句	37
第2章  51单片机的硬件系统	40
2.1  8051单片机的引脚功能与内部结构	40
2.1.1  引脚功能说明	40
2.1.2  单片机与片外存储器的连接与控制	43
2.1.3  内部结构说明	44
2.2  8051单片机I/O端口的结构与工作原理	47
2.2.1  P0端口	47
2.2.2  P1端口	48
2.2.3  P2端口	49
2.2.4  P3端口	50
2.3  8051单片机的存储器	51
2.3.1  存储器的存储单位与编址	51
2.3.2  片内、片外程序存储器的使用与编址	52
2.3.3  片内、片外数据存储器的使用与编址	53
2.3.4  数据存储器的分区	53
2.3.5  特殊功能寄存器的介绍	56
2.4  STC89C5x系列单片机介绍	59
2.4.1  STC89C5x单片机的版本、封装形式和引脚功能说明	60
2.4.2  STC89C5x系列单片机的型号命名规则	63
2.4.3  STC89C5x系列单片机的主要参数	64
2.4.4  STC89C5x系列单片机的I/O端口	65
2.4.5  STC89C5x系列单片机的程序存储器与数据存储器	67
2.4.6  STC89C5x系列单片机的特殊功能寄存器	69
第3章  Keil C51编程软件的使用	71
3.1  Keil C51软件的安装	71
3.1.1  Keil C51软件的版本及获取	71
3.1.2  Keil C51软件的安装	71
3.2  程序的编写与编译	73
3.2.1  启动Keil C51软件并新建工程文件	73
3.2.2  新建源程序文件并与工程关联起来	75
3.2.3  编写程序	77
3.2.4  编译程序	79
3.3  程序的仿真与调试	82
3.3.1  软件仿真调试	82
3.3.2  硬件仿真调试	88
第4章  单片机驱动LED与LED数码管的电路及编程	91
4.1  单片机驱动LED的电路及编程	91
4.1.1  发光二极管(LED)的外形、性质与检测	91
4.1.2  单片机连接8个LED的电路	93
4.1.3  采用位操作与字节操作方式点亮单个LED的程序及详解	94
4.1.4  单个LED闪烁发光的程序及详解	96
4.1.5  单个LED以不同频率闪烁发光的程序及详解	97
4.1.6  采用位操作和字节操作方式点亮多个LED的程序及详解	98
4.1.7  多个LED以不同频率闪烁发光的程序及详解	99
4.1.8  多个LED左移和右移的程序及详解	99
4.1.9  LED循环左移和右移的程序及详解	101
4.1.10  LED左右移动并闪烁发光的程序及详解	102
4.1.11  用查表方式控制LED发光的程序及详解	103
4.1.12  LED花样发光的程序及详解	104
4.1.13  用PWM(脉宽调制)方式调节LED亮度的原理与程序	104
4.2  单片机驱动一位LED数码管显示的电路及编程	106
4.2.1  一位LED数码管的外形、结构与检测	106
4.2.2  单片机连接单个数码管的电路	108
4.2.3  单个数码管静态显示一个字符的程序及详解	109
4.2.4  单个数码管动态显示多个字符的程序及详解	109
4.2.5  单个数码管环形显示的程序及详解	110
4.2.6  单个数码管显示逻辑电平的程序及详解	111
4.3  单片机驱动8位LED数码管显示的电路及编程	111
4.3.1  多位LED数码管的外形、结构与检测	111
4.3.2  单片机连接8位共阴极数码管的电路	113
4.3.3  8位数码管显示1个字符的程序及详解	114
4.3.4  8位数码管逐位显示8个字符的程序及详解	115
4.3.5  8位数码管同时显示8个字符的程序及详解	116
4.3.6  8位数码管动态显示8个以上字符的程序及详解	116
第5章  中断的使用及编程	118
5.1  中断的基本概念与处理过程	118
5.1.1  中断的基本概念	118
5.1.2  中断的处理过程	118
5.2  中断系统结构与控制寄存器	119
5.2.1  中断系统结构	119
5.2.2  中断源寄存器	120
5.2.3  中断允许寄存器	121
5.2.4  中断优先级控制寄存器	122
5.3  中断的应用编程举例	123
5.3.1  中断使用的电路例图	123
5.3.2  外部中断0以低电平方式触发中断的程序	123
5.3.3  外部中断1以下降沿方式触发中断的程序	124
第6章  定时器/计数器的使用及编程	126
6.1  定时器/计数器的定时与计数功能	126
6.1.1  定时功能	126
6.1.2  计数功能	127
6.2  定时器/计数器的结构与工作原理	127
6.2.1  定时器/计数器的结构	127
6.2.2  定时器/计数器的工作原理	128
6.3  定时器/计数器的控制寄存器与工作方式	129
6.3.1  TCON寄存器	129
6.3.2  TMOD寄存器	130
6.3.3  定时器/计数器的工作方式	131
6.4  定时器/计数器的应用及编程	135
6.4.1  产生1kHz方波信号的程序及详解	135
6.4.2  产生50kHz方波信号的程序及详解	136
6.4.3  产生周期为1s方波信号的程序及详解	137
第7章  独立按键与矩阵键盘输入电路及编程	139
7.1  独立按键输入电路及编程	139
7.1.1  因开关输入产生的抖动及软、硬件解决方法	139
7.1.2  8个独立按键与8个LED的单片机电路	140
7.1.3  一个按键点动控制一个LED亮灭的程序及详解	141
7.1.4  一个按键锁定控制一个LED亮灭的程序及详解	141
7.1.5  4路抢答器的程序及详解	142
7.1.6  独立按键控制LED和LED数码管的单片机电路	143
7.1.7  两个按键控制一位数字增、减并用8位数码管显示的程序及详解	144
7.1.8  两个按键控制多位数字增、减并用8位数码管显示的程序及详解	145
7.1.9  按键长按与短按产生不同控制效果的程序及详解	147
7.1.10  8个独立按键控制LED和LED数码管显示的程序及详解	149
7.2  矩阵键盘输入电路及编程	151
7.2.1  16键矩阵键盘输入与8位数码管显示的单片机电路	151
7.2.2  矩阵键盘行列扫描方式输入和显示的程序及详解	153
7.2.3  中断触发键盘行列扫描的矩阵键盘输入和显示的电路及程序	156
7.2.4  矩阵键盘密码锁程序及详解	161
第8章  点阵和液晶显示屏的使用及编程	165
8.1  双色LED点阵显示屏介绍	165
8.1.1  外形	165
8.1.2  共阳型和共阴型点阵的电路结构	165
8.1.3  混色规律	166
8.1.4  点阵的静态字符或图形显示原理	166
8.1.5  点阵的动态字符或图形显示原理	169
8.1.6  点阵的识别与检测	170
8.2  双色LED点阵显示屏的应用电路及编程	172
8.2.1  单片机配合74HC595芯片驱动双色LED点阵的电路	172
8.2.2  双色点阵显示一种颜色字符的程序及详解	173
8.2.3  双色点阵交替显示两种颜色字符的程序及详解	176
8.2.4  字符移入和移出点阵的程序及详解	177
第9章  步进电动机的使用及编程	181
9.1  步进电动机与驱动芯片介绍	181
9.1.1  步进电动机的结构与工作原理	181
9.1.2  驱动芯片ULN2003	184
9.1.3  五线四相步进电动机	186
9.2  单片机驱动步进电动机的电路及编程	187
9.2.1  由按键、单片机、驱动芯片和数码管构成的步进电动机驱动电路	187
9.2.2  用单四拍方式驱动步进电动机正转的程序及详解	188
9.2.3  用双四拍方式驱动步进电动机自动正反转的程序及详解	188
9.2.4  用外部中断信号控制步进电动机正反转的程序及详解	190
第10章  串行通信的使用及编程	192
10.1  概述	192
10.1.1  串行通信的两种方式	192
10.1.2  串行通信的数据传送方式	194
10.2  串行通信口的结构与工作原理	195
10.2.1  串行通信口的结构	195
10.2.2  串行通信口的工作原理	196
10.3  串行通信口的控制寄存器	196
10.3.1  串行控制寄存器(SCON)	196
10.3.2  电源控制寄存器(PCON)	197
10.4  串行通信口的4种工作方式与波特率的设置	197
10.4.1  方式0	197
10.4.2  方式1	199
10.4.3  方式2	199
10.4.4  方式3	200
10.4.5  波特率的设置	200
10.5  串行通信口的应用编程	202
10.5.1  利用串行通信口工作在方式0实现产品计数显示的电路及编程	202
10.5.2  利用串行通信口工作在方式1实现双机通信的电路及编程	203
第11章  I2C总线通信的使用及编程	207
11.1  I2C总线介绍	207
11.1.1  概述	207
11.1.2  I2C总线的通信协议	208
11.1.3  I2C总线的数据传送格式	208
11.2  24C02存储芯片	209
11.2.1  24C02的外形与引脚功能	209
11.2.2  器件地址的设置	210
11.2.3  读/写操作	210
11.3  单片机与24C02的I2C总线通信电路及编程	213
11.3.1  模拟I2C总线通信的程序及详解	213
11.3.2  利用I2C总线从24C02读写一个数据并用LED显示的电路及程序	216
11.3.3  利用I2C总线从24C02读写多个数据并用LED显示的电路及程序	217
第12章  AD(模数)与DA(数模)转换电路及编程	219
12.1  AD与DA转换	219
12.1.1  AD转换	219
12.1.2  DA转换	221
12.2  AD与DA转换芯片PCF8591	221
12.2.1  外形与引脚功能说明	222
12.2.2  器件地址和内部电路功能设置	222
12.3  由PCF8591芯片构成的AD和DA转换电路及编程	224
12.3.1  由单片机、PCF8591芯片与8位数码管构成的转换及显示电路	224
12.3.2  1路AD转换并显示转换值的程序及详解	225
12.3.3  DA转换输出显示的程序及详解	227