第1章 C51单片机基本结构与最小应用系统 1
1.1 51单片机的基本结构 1
1.1.1 51单片机内部的逻辑结构 1
1.1.2 CPU 2
1.1.3 存储器 2
1.1.4 可编程并行I/O端口 9
1.1.5 时钟电路与复位电路 10
1.2 51单片机引脚功能及最小应用系统 13
1.2.1 51单片机引脚功能 13
1.2.2 51单片机最小应用系统 14
案例1:单片机最小系统的制作 15
第2章 C51程序设计 16
2.1 C语言的特点 16
2.2 C语言程序的格式和特点 19
2.3 数据类型与存储区域的使用 21
2.3.1 C语言的数据类型 21
2.3.2 C51新增数据类型与存储区域的使用 23
2.4 运算符与表达式 28
2.4.1 算术运算符与算术表达式 29
2.4.2 赋值运算符和赋值表达式 30
2.4.3 关系运算符和关系表达式 33
2.4.4 逻辑运算符和逻辑表达式 33
2.5 指针与绝对地址访问 35
2.5.1 指针 35
2.5.2 绝对地址的访问 38
2.6 控制语句与程序设计 39
2.6.1 C语言语句概述 39
2.6.2 赋值语句 40
2.6.3 if语句 40
2.6.4 switch语句 43
2.6.5 goto语句以及用goto语句构成循环 45
2.6.6 while语句与do-while语句 46
2.6.7 for语句 48
2.6.8 break语句和continue语句 49
2.7 位运算 49
2.8 数组 53
2.9 函数 55
2.9.1 函数定义的一般形式 57
2.9.2 函数参数和函数的值 58
2.9.3 函数的调用 61
2.9.4 局部变量和全局变量 67
2.9.5 内部函数和外部函数 71
案例1:用单片机控制一个灯闪烁 72
案例2:单片机控制发光二极管流水灯的设计 73
案例3:通过对P1口地址的操作流水点亮8位LED 73
案例4:用P0口、P1口分别显示加法和减法运算结果 75
案例5:用P0、P1口显示乘法运算结果 76
案例6:用P1、P0口显示除法运算结果 76
案例7:用自增运算控制P1口8位LED流水花样 77
案例8:用P1口显示逻辑“与”运算结果 77
案例9:用P1口显示按位“异或”运算结果 78
案例10:用P1显示左移运算结果 78
案例11:用右移(或左移)运算流水点亮P1口8位LED 78
案例12:用if语句控制P1口8位LED的流水方向 80
案例13:用swtich语句的控制P1口8位LED的点亮状态 81
案例14:用for语句控制蜂鸣器鸣笛次数 83
案例15:用while语句控制LED 84
案例16:用do-while语句控制P1口8位LED流水点亮 85
案例17:用数组控制P1口8位LED流水点亮 86
案例18:用P0、P1口显示整型函数返回值 87
案例19:用有参函数控制P1口8位LED流水速度 88
案例20:基于延时程序实现的音乐播放器 89
第3章 单片机应用系统仿真开发工具的使用 91
3.1 Keil C51的使用方法与程序烧写 91
3.1.1 Keil软件的安装 91
3.1.2 工程的创建 92
3.1.3 编写程序 95
3.1.4 程序烧写 100
3.1.5 工程软件仿真 102
3.1.6 存储空间资源的查看与修改 104
3.1.7 变量的查看与修改 106
3.1.8 外围设备的操作 106
3.2 ProteusISIS的使用 106
3.2.1 Proteus ISIS的编辑界面 107
3.2.2 设计电路原理图 109
3.2.3 电路测试和材料清单 115
3.2.4 ISIS的单片机应用系统仿真基本方法 115
案例1: Keil软件的使用方法及程序烧写 117
案例2:简易十字路口交通信号灯控制(用Proteus软件仿真) 118
第4章 C51单片机简单接口应用技术 121
4.1 开关量接口 121
4.1.1 开关量输入接口 122
4.1.2 键盘接口 124
4.1.3 开关量输出接口 128
4.2 显示接口 129
4.2.1 LED显示接口 130
4.2.2 LED数码管点阵显示器 133
4.2.3 LCD液晶显示接口 137
案例1:无软件消抖的独立式按键输入显示 148
案例2:软件消抖的独立式按键输入显示 149
案例3:开关控制LED 149
案例4:继电器控制照明设备 150
案例5:按键状态显示 151
案例6:按键控制彩灯的设计 152
案例7:按键控制数码管加1减1显示 155
案例8:单只数码管显示0~9 157
案例9:8只数码管动态显示数字 158
案例10:步进电机驱动控制设计 160
案例11:数码管显示4×4矩阵键盘按键号 161
案例12:点阵显示屏的应用设计 164
案例13:单片机控制LCD(1602)显示电路及程序设计 186
案例14:单片机控制LCD(12864)显示电路及程序设计 189
案例15:电子数字密码锁 204
第5章 C51单片机中断系统与定时/计数器 214
5.1 中断系统 214
5.1.1 中断概述 214
5.1.2 中断系统的结构及其工作原理 215
5.1.3 中断处理过程 218
5.1.4 中断服务函数 219
5.1.5 中断系统的应用 221
5.2 定时/计数器 223
5.2.1 定时/计数器的结构及其工作原理 224
5.2.2 定时/计数器的控制 224
5.2.3 定时/计数器的工作方式及其应用 226
5.2.4 借用定时器溢出中断扩展外部中断源 231
案例1:中断控制LED显示变化 232
案例2:中断次数统计 233
案例3:简易抢答器的设计 235
案例4:定时器控制单只LED闪烁 240
案例5:基于定时/计数器控制的流水灯 242
案例6:用定时器中断实现1000000s内计时 243
案例7:倒计时秒表设计 245
案例8:红外检测模拟啤酒生产计数器设计 248
案例9:电烤炉智能温度控制电路及程序设计 252
案例10:按键控制定时器选播多段音乐 253
案例11:反应时间测试仪 256
案例12:脉宽测量仪的设计 262
案例13:频率计的设计 266
案例14:看门狗 269
第6章 C51单片机应用系统扩展 274
6.1 C51单片机的三总线结构 274
6.2 存储器的扩展 275
6.2.1 程序存储器的扩展 275
6.2.2 数据存储器的扩展 275
6.2.3 数据存储器扩展举例 277
6.2.4 I/O接口电路 280
6.3 模拟量输入输出接口技术 281
6.3.1 D/A转换器与单片机的接口设计 282
6.3.2 A/D转换器与单片机的接口设计 285
案例1:ADC0809数模转换与显示 287
案例2:基于ADC0832的数字电压表 289
第7章 串行接口 293
7.1 串行口通信概念 293
7.2 51单片机串行接口的结构与控制 295
7.3 串行接口的工作方式 296
7.4 串行接口的初始化 298
7.5 串行接口的异步通信应用 299
7.6 串行口扩展 305
案例1:串行数据转换为并行数据 307
案例2:并行数据转换为串行数据 309
案例3:甲机通过串口控制乙机LED 310
案例4:单片机间双向通信 313
案例5:单片机向主机发送字符串 317
案例6:单片机与PC机通信 319
第8章 综合案例 323
8.1 单片机应用系统的抗干扰设计 323
8.1.1 硬件抗干扰设计 323
8.1.2 软件抗干扰设计 325
8.2 DS18B20数字温度计的设计 326
8.2.1 功能要求 326
8.2.2 设计方案选择 326
8.2.3 DS18B20的性能特点和内部结构 327
8.2.4 DS18B20的测温原理 329
8.2.5 DS18B20的各条ROM命令和接口程序设计 330
8.2.6 系统硬件电路的设计 331
8.2.7 系统软件的设计 333
8.2.8 调试及性能分析 334
8.2.9 源程序清单 335
附录 ASCII码表 339
参考文献 341