项目一 设计一个单片机测试仪 1
案例一 通过与计算机比较,初步认识单片机 2
一、单片机的定义及单片机应用系统的组成 3
二、单片机的硬件和软件 5
三、单片机的应用和发展趋势 7
四、单片机的学习方法 8
案例二 记录单片机正常工作时的状态和判别单片机正常工作的条件 8
一、单片机最小系统介绍 10
二、51单片机程序的运行机制 11
三、STC89C52单片机I/O口 12
案例三 用单片机点亮LED指示灯 13
一、LED基础知识 14
二、点亮两个LED信号灯电路 15
三、点亮一个LED信号灯的程序 16
四、Keil软件用法 16
五、C语言知识学习(一)——C语言的基本语句 26
项目二 设计一台无时间显示的交通灯控制器 28
案例一 设计一个LED闪烁信号灯控制系统 30
一、一个LED信号灯的闪烁电路 32
二、任务分析 32
三、单片机控制一个LED信号灯闪烁的程序 33
四、C语言知识学习(二)——while语句和单片机程序结构 34
案例二 简单的城市路口交通灯控制系统实例 38
一、程序流程图的基本结构 39
二、模拟城市路口交通灯控制系统举例 40
三、C语言知识学习(三)——for语句 43
项目三 设计一个变频器的显示器 46
案例一 用单片机控制一位数码管显示数字 48
一、数码管工作原理 48
二、一位数码管与单片机的连接电路 50
三、用单片机控制数码管显示“6”程序 51
四、C语言知识学习(四)——预处理命令和变量 51
案例二 用单片机控制多位数码管显示不同的数字 54
一、8位数码管与单片机的连接电路 55
二、动态显示技术 56
三、8位数码管显示不同数字流程 56
四、编程实现多位数码管显示不同的数字 56
五、C语言知识学习(五)——数组知识 58
案例三 设计一个仪表的数码管数值显示器 60
一、C语言知识学习(六)——常用运算符 61
二、程序 64
案例四 用字符液晶12864做显示器显示汉字和数字 66
一、12864液晶显示器介绍 67
二、12864液晶显示器使用说明 69
三、单片机与12864连接电路 71
四、12864液晶显示器显示SV和PV程序 71
项目四 设计医院病床呼叫系统 76
案例一 按钮控制电动机的启停 77
一、电动机如何接到单片机上——功率驱动 78
二、按钮控制交流电动机的启停电路 79
三、按钮控制电动机的启停流程 80
四、按钮控制交流电动机的启停程序 80
五、C语言知识学习(七)if语句用法 81
案例二 设计一台简易抢答器 85
一、简易抢答器中按钮的电路 85
二、简易抢答器程序流程 86
三、简易抢答器程序 86
四、C语言知识学习(八)——switch、 break、 continue语句用法 87
案例三 用一位数码管记录按钮按下的次数 89
一、按钮去抖动的方法 90
二、用1位数码管记录按钮按下的次数程序 90
案例四 用四个组合按钮修改仪表上显示的数据 91
一、组合按钮电路 92
二、程序 93
案例五 矩阵式键盘用法 97
一、矩阵式键盘 97
二、扫描程序 98
项目五 设计一个带时间显示的定时开关 101
案例一 认识单片机的特殊功能寄存器 102
一、STC12C系列单片机内部结构原理 103
二、单片机内部存储器结构与数据存放 103
三、特殊功能寄存器 104
四、reg51.h头文件 105
案例二 设计一个故障报警器 108
一、中断知识 109
二、外中断0和外中断1的用法 115
三、单片机响应中断的过程 115
四、故障报警器电路 116
五、故障报警器程序 116
案例三 设计一位秒表 117
一、定时器/计数器功能介绍 118
二、电路 122
三、程序 122
案例四 使用串口实现两台单片机间的通信的功能 124
一、串行接口通信简介 125
二、电路 131
三、程序 131
项目六 设计一个数显测量仪 136
案例一STC12C5A60S2单片机I/O口使用 137
一、STC12C5A60S2单片机的特点简介 138
二、STC12××5A系列单片机的命名规则 139
三、STC 12C5A60S2单片机存储器结构 140
四、STC12C5A60S2单片机PDIP 40封装方式的引脚排列 140
五、PDIP 40封装STC12C5A60S2单片机的I/O口 140
六、STC12C5A60S2单片机I/O口的使用 141
案例二 可编程时钟 145
一、STC12C5A60S2单片机的中断 145
二、定时器/计数器 150
三、STC12C5A60S2单片机的可编程时钟输出 151
四、程序 152
案例三用PCA软件定时器功能实现LED灯is闪烁一次 153
一、STC12C5A60S2系列单片机PCA模块中计数器简介 154
二、16位软件定时器模式 157
三、程序 158
案例四用PCA模块的捕捉功能测量脉冲宽度 159
一、PCA模块的捕捉工作模式 160
二、高速输出模式 161
三、程序 162
案例五用PCA模块的PWM功能完成LED灯亮度调节 163
一、PCA模块的脉宽调节模式 164
二、PWM应用于D/A输出 166
三、PCA模块的应用总结 167
四、程序 167
案例六 用片内A/D模块实现一个简易的电压表 168
一、A/D转换器介绍 168
二、ADC模块的使用编程要点 172
三、程序 172
案例七 用第二串口功能完成单片机与计算机的通信 173
一、STC12C5A60S2单片机的串行接口 173
二、串行接口2的工作方式 175
三、串行接口2的工作方式编程要点 175
四、常用波特率与系统时钟及重装时间常数之间的关系 176
五、程序 177
案例八用SPI通信模块完成两台单片机间的通信 177
一、STC12C5A60S2单片机的SPI接口 178
二、SPI相关的特殊功能寄存器 179
三、SPI接口的编程要点 180
四、电路 180
五、程序 180
案例九STC12C5A60S2单片机复位、时钟和省电方式控制 182
一、复位 183
二、单片机的电源检测与控制 186
三、时钟分频及分频寄存器 187
项目七 设计一个多功能智能控制器 189
案例一用DS 18B20测量教室内的温度 190
一、单总线介绍 191
二、DS 18B20简介 193
三、电路 194
四、程序 195
案例二 设计掉电数据不丢失的仪表 200
一、I2C总线的基础知识 201
二、AT24C02芯片介绍 203
三、电路 203
四、程序 203
案例三 制作一个日历时钟 207
一、SPI总线概述 208
二、时钟电路DS 1302介绍 209
三、电路 212
四、程序 212
案例四 自动窗帘 218
一、步进电动机简介 219
二、ULN2003驱动芯片介绍 221
三、光敏电阻 221
四、电动机驱动模块L298N电路 223
五、电路 224
六、程序 226
案例五8×8点阵用法——轮流显示数字0~9 229
一、8×8点阵模块 230
二、电路 232
三、程序 232
案例六 单片机解码红外线遥控 233
一、红外线遥控编码基础知识 234
二、电路 236
三、程序 237
附录 241
附录A C51库函数 241
A.1寄存器头文件 241
A.2字符函数 241
A.3一般I/O函数 242
A.4标准函数 243
A.5数学函数 244
A.6内部函数 245
A.7字符串函数 246
A.8绝对地址访问函数 247
附录B Keil C菜单项 248
附录C单片机中数据的表示与运算 251
C.1二进制与十六进制数 251
C.2 BCD码、ASCII码与汉字编码 253
C.3二进制数的加法和减法运算 255
C.4二进制数的逻辑运算 256
C.5带符号数的表示法 256
附录D STC12C5A60S2单片机头文件 258
参考文献 266