项目一 发光二极管LED控制 1
1.1 工作模块1 点亮一个LED 1
1.1.1 用Proteus设计第一个LED控制电路 1
1.1.2 用KeilC51设计第一个C语言LED控制程序 5
1.1.3 用Proteus仿真运行调试 8
1.2 认识单片机 9
1.2.1 单片机概述 9
1.2.2 AT89S52单片机结构 13
1.2.3 AT89S52单片机引脚功能 14
1.2.4 AT89S52单片机最小系统 15
【技能训练1-1】单片机最小系统应用——开关控制LED点亮 17
1.3 工作模块2 LED闪烁控制 18
1.3.1 LED闪烁控制设计与实现 18
1.3.2 C语言程序的基本构成 20
1.3.3 C语言基本语句 22
1.4 技能拓展 音频控制应用 23
1.4.1 音频控制电路 23
1.4.2 音频控制程序 24
【技能训练1-2】报警产生器 24
关键知识点小结 25
问题与讨论 26
项目二 LED循环点亮控制 27
2.1 工作模块3 LED循环点亮控制 27
2.1.1 LED循环点亮电路设计 27
2.1.2 LED循环点亮程序设计 28
2.1.3 并行I/O端口电路 29
【技能训练2-1】P0口外接上拉电阻 32
2.2 MCS-51单片机内存空间 33
2.2.1 数据存储器 34
2.2.2 特殊功能寄存器 35
2.2.3 “头文件包含”处理 38
2.2.4 程序存储器 39
2.3 工作模块4 开关控制LED循环点亮 41
2.3.1 开关控制LED循环点亮电路设计 41
2.3.2 开关控制LED循环点亮程序设计 41
2.3.3 C51数据类型 42
2.3.4 C语言常量与变量 45
2.4 工作模块5 步进电机控制 47
2.4.1 认识步进电机 47
2.4.2 步进电机控制电路设计 48
2.4.3 步进电机控制程序设计 49
2.5 技能拓展 ULN2003A驱动器应用 50
2.5.1 ULN2003A的特点 50
2.5.2 ULN2003A的引脚功能 51
【技能训练2-2】单片机驱动继电器电路设计 51
关键知识点小结 52
问题与讨论 53
项目三 数码管显示控制 54
3.1 工作模块6 数码管循环显示0~9 54
3.1.1 认识数码管 54
3.1.2 数码管循环显示0~9电路设计 56
3.1.3 数码管显示程序设计 57
【技能训练3-1】共阳极LED数码管应用 58
3.2 C语言语句结构 59
3.2.1 关系运算符和关系表达式 59
3.2.2 逻辑运算符和逻辑表达式 59
3.2.3 if语句 60
3.2.4 switch语句 62
3.2.5 循环结构控制语句 63
3.2.6 break语句和continue语句 65
3.3 工作模块7 多个数码管动态扫描显示 66
3.3.1 多个数码管动态显示电路设计 66
3.3.2 多个数码管动态显示程序设计 67
3.3.3 C语言数组 68
3.4 工作模块8 0~99计数显示(静态显示) 70
3.4.1 0~99计数显示电路设计 70
3.4.2 0~99计数显示程序设计 71
3.4.3 C语言函数 72
3.5 技能拓展 7段字型译码器74LS47应用 74
3.5.1 认识74LS47 74
3.5.2 74LS47引脚功能 75
【技能训练3-2】使用74LS47实现0~99计数显示 75
关键知识点小结 76
问题与讨论 77
项目四 键盘的设计与实现 78
4.1 工作模块9 独立式键盘设计与实现 78
4.1.1 认识键盘 78
4.1.2 独立式键盘电路设计 79
4.1.3 独立式键盘程序设计 79
4.1.4 键盘防抖动措施 81
【技能训练4-1】一键多功能按键识别设计与实现 82
4.2 工作模块10 矩阵式键盘设计与实现 84
4.2.1 矩阵式键盘的结构与原理 84
4.2.2 矩阵式键盘电路设计 85
4.2.3 矩阵式键盘程序设计 86
4.3 工作模块11 中断方式矩阵键盘 88
4.3.1 中断概念 88
4.3.2 中断方式矩阵键盘电路设计 89
4.3.3 中断方式矩阵键盘程序设计 89
4.4 MCS-51单片机中断系统 90
4.4.1 单片机中断源 90
4.4.2 中断系统结构 91
4.4.3 中断有关的4个特殊功能寄存器 92
4.4.4 中断处理过程 94
4.4.5 C语言中断服务函数 97
4.5 技能拓展 外部中断源的扩展 98
4.5.1 用定时器扩展外部中断源 98
4.5.2 中断加查询的扩展方法 98
【技能训练4-2】利用外部中断0扩展4个外部中断 99
关键知识点小结 100
问题与讨论 101
项目五 定时/计数器综合应用 102
5.1 工作模块12 生产线自动打包系统 102
5.1.1 认识定时器/计数器 102
5.1.2 生产线自动打包控制电路 104
5.1.3 生产线自动打包控制程序 105
5.2 工作模块13 霓虹灯控制系统 106
5.2.1 定时器/计数器工作方式 106
5.2.2 定时器/计数器有关寄存器 108
5.2.3 霓虹灯控制系统设计与实现 109
【技能训练5-1】0~59秒数码显示(定时器) 111
5.3 工作模块14 电子钟设计与实现 113
5.3.1 电子钟电路设计 113
5.3.2 电子钟程序设计 115
5.4 技能拓展 INTRINS.H头文件的应用 116
5.4.1 _crol、_irol_和_lrol_函数 116
5.4.2 _cror、_iror_和_lror_函数 117
5.4.3 _nop_函数 117
5.4.4 _testbit_函数 117
【技能训练5-2】用_crol_函数实现LED循环点亮 118
关键知识点小结 118
问题与讨论 119
项目六 模拟量输入输出设计与实现 120
6.1 工作模块15 模数转换LED显示 120
6.1.1 模拟量输入输出概述 120
6.1.2 模数转换LED显示电路 121
6.1.3 模数转换LED显示程序 121
6.2 ADC0808/ADC0809模数转换器 122
6.2.1 认识ADC0808/ADC0809模数转换器 122
6.2.2 ADC0808/ADC0809结构及引脚 123
6.2.3 ADC0808/ADC0809工作过程及编程方法 125
【技能训练6-1】采用中断方式完成模数转换LED显示 125
6.3 工作模块16 数字电压表设计与实现 127
6.3.1 数字电压表电路设计 127
6.3.2 数字电压表程序设计 128
6.3.3 C语言结构体类型 129
6.3.4 结构体数组 131
【技能训练6-2】结构体数组的应用 132
6.4 工作模块17 信号发生器设计与实现 132
6.4.1 认识DAC0832数模转换器 133
6.4.2 信号发生器电路设计 135
6.4.3 信号发生器程序设计 136
6.5 技能拓展 直流电机转速控制 137
6.5.1 什么是PWM 138
6.5.2 占空比 138
6.5.3 直流电机转速控制 138
【技能训练6-3】基于ADC0808/0809的直流电机转速控制 138
关键知识点小结 139
问题与讨论 140
项目七 单片机串行通信设计与实现 142
7.1 工作模块18 单片机点对点数据传输 142
7.1.1 串行通信基本知识 142
7.1.2 单片机点对点数据传输电路设计 145
7.1.3 单片机扩展I/O口程序设计 146
7.2 工作模块19 水塔水位单片机远程监控系统 147
7.2.1 单片机串行口结构 147
7.2.2 串行通信设置 149
7.2.3 水塔水位单片机远程监控电路设计 151
7.3 工作模块20 单片机点对多数据传输 155
7.3.1 MCS-51多机通信技术 155
7.3.2 单片机点对多数据传输电路设计 156
7.3.3 单片机点对多数据传输程序设计 157
【技能训练7-1】单片机串行口扩展I/O口电路设计 160
7.4 技能拓展 RS-485串行接口应用 162
【技能训练7-2】全双工RS-485连接电路设计与实现 163
关键知识点小结 163
问题与讨论 164
项目八 键盘控制电机方向和转速 166
8.1 单片机产品开发 166
8.1.1 单片机产品的结构 166
8.1.2 单片机产品开发流程 167
8.2 工作模块21 步进电机控制系统设计与实现 169
8.2.1 步进电机控制技术 170
8.2.2 步进电机控制系统电路设计 170
8.2.3 步进电机控制系统程序设计 171
8.3 工作模块22 直流电机控制系统设计与实现 174
8.3.1 直流电机控制技术 174
8.3.2 直流电机控制系统电路设计 175
8.3.3 直流电机控制系统程序设计 176
8.4 技能拓展 步进电机智能控制 179
8.4.1 步进电机智能控制思路 179
8.4.2 步进电机智能控制组成 180
【技能训练8-1】步进电机智能控制设计 180
关键知识点小结 181
问题与讨论 182
项目九 按键设置液晶电子钟 183
9.1 RT12864阵型液晶显示模块 183
9.1.1 认识RT12864液晶屏 183
9.1.2 RT12864液晶显示模块内部结构 185
9.1.3 控制指令及相应代码 186
9.2 工作模块23 液晶电子钟电路设计与实现 188
9.2.1 按键设置电路设计 189
9.2.2 液晶显示电路设计 189
9.2.3 按键设置液晶电子钟电路设计 189
9.3 工作模块24 液晶电子钟程序设计与实现 191
9.3.1 按键设置程序设计 191
9.3.2 时间程序设计 194
9.3.3 液晶显示程序设计 195
9.4 技能拓展 DS1302时钟芯片的应用 201
9.4.1 认识DS1302 201
9.4.2 DS1302寄存器 201
【技能训练9-1】使用DS1302芯片实现液晶电子钟电路设计 202
关键知识点小结 203
问题与讨论 204
项目十 8路温度采集监控系统 205
10.1 DS18B20温度传感器 205
10.1.1 认识DS18B20 205
10.1.2 DS18B20内部结构及功能 207
10.1.3 DS18B20通信协议 209
10.2 工作模块25 8路温度采集监控电路设计 212
10.2.1 温度采集电路设计 212
10.2.2 监控电路设计 212
10.2.3 8路温度采集监控电路设计与实现 213
10.3 工作模块26 8路温度采集监控程序设计 214
10.3.1 键盘处理程序设计 214
10.3.2 8路温度采集程序设计 216
10.3.3 8路温度显示程序设计 217
10.4 技能拓展 I2C串行扩展 219
10.4.1 I2C总线接口电路 219
10.4.2 I2C总线数据传送操作 219
【技能训练10-1】基于AT24C1024片外程序存储器扩展 221
关键知识点小结 222
问题与讨论 223
项目十一 点阵显示设计与实现 224
11.1 工作模块27 16×32 LED点阵汉字显示设计 224
11.1.1 LED点阵显示系统结构与原理 224
11.1.2 16×32 LED点阵汉字显示电路设计 226
11.1.3 16×32 LED点阵汉字显示程序设计 231
11.2 工作模块28 点阵屏焊接与调试 243
11.2.1 MCU最小系统和串口焊接与调试 244
11.2.2 显示功能板焊接和调试 248
11.2.3 外扩RAM及Flash的焊接和调试 249
11.2.4 外扩KEY和EEPROM焊接与调试 249
11.2.5 系统整体测试 249
11.3 技能拓展 并行I/O接口扩展 250
11.3.1 并行I/O口扩展特性 250
11.3.2 I/O接口扩展常用芯片 250
【技能训练11-1】P0口扩展I/O接口设计与实现 252
关键知识点小结 253
问题与讨论 254
附表1 LED各模块焊接步骤对应元件清单 255
附表2 LED显示模块焊接元件清单 256
课程设计范例一 双向四车道交通灯控制 257
课程设计范例二 出租车计价器 266
参考文献 272