第1篇知识准备篇 第1章单片机概述2 1.1什么是单片机2 1.2单片机的发展3 1.3单片机的特点4 1.4单片机的用途5 1.5如何学习单片机5 1.6练习题6 第2章开发准备7 2.1开发环境7 2.1.1硬件连接7 2.1.2下载器驱动安装8 2.1.3程序下载软件安装与使用12 2.1.4集成开发环境安装与使用18 2.2开发流程23 2.2.1Keil C51工程创建及程序编译23 2.2.2程序运行31 2.3开发语言35 2.3.1C51与标准C语言36 2.3.2C51的数据类型36 2.3.3C51常用头文件39 2.4练习题39 第3章硬件基础知识41 3.1LY51S开发板简介41 3.2板载元器件42 3.2.1电子元器件42 3.2.2集成电路49 3.2.3接插件50 3.2.4导线51 3.3练习题51 第4章单片机基本原理52 4.1MCS51单片机基本特性52 4.2单片机内部结构53 4.3单片机外部引脚54 4.3.1单片机外部引脚图54 4.3.2单片机引脚分类55 4.4单片机时序57 4.5单片机*小系统58 4.6单片机存储器结构62 4.6.1程序存储器62 4.6.2数据存储器63 4.7练习题68 第5章I/O端口70 5.1单片机的I/O端口70 5.1.1I/O端口概述70 5.1.2I/O端口基本原理71 5.1.3I/O端口基本操作72 5.2端口输出控制——发光二极管74 5.2.1案例51:点亮一个发光二极管76 5.2.2案例52:发光二极管流水显示80 5.2.3拓展项目:花样流水灯83 5.3端口输出控制——数码管84 5.3.1数码管结构与显示原理84 5.3.2数码管静态显示驱动86 5.3.3案例53:独立共阳数码���循环显示0~989 5.3.4数码管动态显示驱动90 5.3.5案例54:8位数码管同时显示0~793 5.3.6拓展项目:数码管显示动态数据96 5.4端口输入控制——独立按键96 5.4.1独立按键的连接方式97 5.4.2独立按键的检测原理98 5.4.3按键去抖及按键处理流程99 5.4.4案例55:抢答器101 5.4.5拓展项目:独立按键长按、短按效果102 5.5端口输入控制——矩阵键盘103 5.5.1矩阵键盘的连接方式103 5.5.2矩阵键盘的检测原理104 5.5.3案例56:矩阵键盘键号LED显示105 5.5.4拓展项目:矩阵键盘密码锁110 5.6练习题111 第6章外部中断113 6.1中断系统概述113 6.1.1中断原理113 6.1.2中断的作用114 6.1.3中断应实现的功能114 6.1.4中断相关概念115 6.2单片机中断资源116 6.2.1中断源及入口地址116 6.2.2中断控制及设置117 6.3C51中断处理函数的编写119 6.4外部中断编程实战121 6.4.1案例61:独立按键控制LED状态转换121 6.4.2拓展项目:按键改变流水灯的流水方向124 6.5练习题125 第7章定时/计数器127 7.1定时/计数器简介127 7.2定时/计数器的结构及相关寄存器127 7.2.1定时/计数器的结构127 7.2.2定时/计数器的相关寄存器128 7.3定时/计数器的工作原理129 7.3.1定时功能129 7.3.2计数功能131 7.4定时/计数器的工作方式131 7.4.1方式0131 7.4.2方式1131 7.4.3方式2132 7.4.4方式3132 7.5定时/计数器编程实战133 7.5.1定时/计数器的程序设计流程133 7.5.2案例71:按键10次翻转LED状态 133 7.5.3案例72:发光二极管定时闪烁135 7.5.4案例73:定时器产生任意占空比PWM139 7.5.5拓展项目:发光二极管定时流水显示141 7.6练习题142 第8章串口通信144 8.1串口通信概述144 8.1.1通信的基本概念144 8.1.2串行通信的工作方式145 8.1.3串行通信的时钟及传输速率145 8.1.4串行通信协议146 8.2串口通信接口电路原理148 8.351单片机串口结构及相关寄存器151 8.3.1串口的结构151 8.3.2串口的相关寄存器152 8.4串口的工作方式及波特率设置154 8.4.1方式0154 8.4.2方式1155 8.4.3方式2和方式3156 8.4.4波特率设置158 8.5串口应用编程实战159 8.5.1串口应用的程序设计流程159 8.5.2案例81:串口扩展并行输出流水灯显示160 8.5.3案例82:双机通信单字符收发164 8.5.4拓展项目:字符串收发168 8.6练习题170 第3篇进阶功能篇 第9章继电器173 9.1什么是继电器173 9.2继电器的结构及工作原理174 9.3继电器的驱动电路175 9.4继电器编程实战176 9.4.1继电器的程序设计流程176 9.4.2案例91:继电器状态切换及LED显示176 9.5练习题178 第10章蜂鸣器179 10.1什么是蜂鸣器179 10.2蜂鸣器的结构原理179 10.3蜂鸣器的驱动电路180 10.4蜂鸣器编程实战181 10.4.1蜂鸣器的程序设计流程181 10.4.2案例101:蜂鸣器模拟救护车声音181 10.5练习题183 第11章步进电机184 11.1什么是步进电机184 11.1.1步进电机简介184 11.1.2步进电机分类185 11.2步进电机的硬件结构186 11.2.1步进电机硬件结构186 11.2.2步进电机术语解释186 11.2.3步进电机的转动原理187 11.3步进电机的驱动方式187 11.4步进电机控制编程实战189 11.4.1步进电机的程序设计189 11.4.2案例111:电机正转反转190 11.4.3案例112:按键控制步进电机正反转192 11.5练习题193 第12章直流电机195 12.1什么是直流电机195 12.2直流电机的原理及分类195 12.2.1直流电机的原理195 12.2.2直流电机的分类197 12.3直流电机的驱动方式198 12.4直流电机编程实战199 12.4.1案例121:直流电机按键控制199 12.4.2案例122:直流电机PWM调速201 12.5练习题204 第13章舵机205 13.1什么是舵机205 13.2舵机的工作原理206 13.3舵机的角度控制原理206 13.4舵机编程实战207 13.4.1舵机的程序设计流程207 13.4.2案例131:按键调节舵机转角207 13.5练习题210 第14章1602液晶211 14.1概述211 14.21602液晶的基本原理及控制方式212 14.2.11602液晶的引脚结构212 14.2.21602液晶的显示内容213 14.2.31602液晶的控制方式214 14.31602液晶编程实战216 14.3.11602液晶模块的程序设计流程216 14.3.2案例141:1602液晶滚动显示字符串217 14.4练习题221 第15章双色点阵屏222 15.1双色点阵的基本原理222 15.2双色点阵的驱动芯片224 15.3双色点阵的硬件连线225 15.4双色点阵编程实战225 15.4.1双色点阵的控制流程225 15.4.2案例151:双色点阵显示特定图形226 15.5练习题230 第16章模数/数模转换231 16.1模数/数模转换原理231 16.2ADC转换类型及应用232 16.3DAC转换类型及应用234 16.4练习题235 第17章红外收发236 17.1红外接收与编解码定义236 17.2红外接收原理237 17.3红外发射原理238 17.4红外收发编程实战238 17.4.1红外收发的程序设计思路238 17.4.2案例171:红外解码液晶屏显示238 17.5练习题243 第4篇总线协议篇 第18章I2C总线与E2PROM(24C02)245 18.1I2C总线概述245 18.2I2C通信协议247 18.2.1I2C通信协议247 18.2.2单片机模拟I2C总线247 18.3E2PROM 24C02应用概述248 18.3.124C02芯片简介248 18.3.224C02硬件原理与连接248 18.3.324C02存储结构与寻址249 18.3.424C02读/写操作时序250 18.4PCF8591模拟采集与输出251 18.4.1PCF8591芯片简介251 18.4.2PCF8591硬件原理及连接252 18.4.3PCF8591寻址及功能选择253 18.5I2C总线应用编程实战254 18.5.1I2C总线应用程序设计流程254 18.5.2案例181:24C02记忆开机次数255 18.5.3案例182:PCF8591的一路AD数码管显示261 18.5.4案例183:PCF8591 DA输出模拟263 18.6练习题265 第19章SPI协议267 19.1SPI总线协议267 19.1.1SPI简介267 19.1.2SPI通信模式268 19.2DS1302时钟芯片269 19.3DS1302的引脚结构及相关寄存器270 19.3.1DS1302的引脚结构270 19.3.2DS1302的寄存器设置271 19.4SPI协议应用编程实战273 19.4.1SPI协议应用的程序设计流程273 19.4.2案例191:DS1302时钟显示273 19.5练习题278 第20章1Wire总线279 20.1概述279 20.2DS18B20数字温度传感器280 20.2.1DS18B20传感器特性280 20.2.2DS18B20的引脚结构281 20.2.3DS18B20的硬件连接281 20.2.4DS18B20的内部结构282 20.2.5DS18B20的工作原理284 20.2.6DS18B20的工作时序288 20.2.7DS18B20使用中注意事项290 20.31Wire总线应用编程实战291 20.3.1DS18B20模块的程序设计流程291 20.3.2案例201:温度采集液晶显示291 20.4练习题294 第5篇综合实战篇 第21章计算器296 21.1硬件需求296 21.2设计思路296 21.3编程实战298 21.4运行效果301 第22章串口测温302 22.1硬件需求302 22.2设计思路302 22.3编程实战302 22.4运行效果304 第23章99分钟***器306 23.1硬件需求306 23.2设计思路306 23.3编程实战308 23.4运行效果312 附录AASCII表314 附录B进制转换表315 附录CC51数据类型及运算符316 参考文献318