目录 第1章绪论1 1.1单片机的基本概念1 1.2单片机的体系结构2 1.3单片机的发展及应用3 1.3.1单片机的发展历程与趋势3 1.3.2单片机的应用领域5 1.4常见的单片机型号、存储器及封装5 1.4.151系列单片机简介5 1.4.2其他系列的单片机7 1.4.3不同程序存储器简介9 1.4.4单片机的封装形式简介10 1.5单片机的常用数制和编码基础知识12 1.5.1数制12 1.5.2常用编码13 习题1 15 第2章MCS51 单片机的结构与原理16 2.1MCS51单片机的内部结构16 2.1.1MCS51单片机的基本结构16 2.1.2MCS51单片机的内部结构17 2.2MCS51单片机的引脚功能19 2.3MCS51单片机的CPU21 2.3.1运算器21 2.3.2控制器23 2.3.3布尔处理器26 2.3.4振荡器和时钟电路26 2.3.5CPU的时序27 2.3.6CPU执行程序的过程30 2.4MCS51单片机的存储器30 2.4.1程序存储器31 2.4.2数据存储器31 2.5MCS51单片机的输入输出接口38 2.5.1P0口38 2.5.2P1口40 2.5.3P2口41 2.5.4P3口42 2.5.5接口的负载能力与要求43 2.6MCS51单片机的工作方式43 2.6.1复位工作方式43 2.6.2程序执行工作方式45 2.6.3低功耗工作方式45 2.6.4编程和校验工作方式47 2.6.5单片机的最小系统47 习题2 48 第3章MCS51单片机的指令系统50 3.1指令系统概述50 3.1.1机器语言指令与汇编语言指令50 3.1.2指令格式51 3.1.3指令分类53 3.2寻址方式53 3.2.1立即寻址54 3.2.2寄存器寻址54 3.2.3直接寻址55 3.2.4寄存器间接寻址56 3.2.5变址寻址56 3.2.6相对寻址57 3.2.7位寻址58 3.3MCS51单片机指令集58 3.3.1数据传送类指令59 3.3.2算术运算类指令66 3.3.3逻辑运算类指令71 3.3.4控制转移类指令76 3.3.5位操作类指令82 3.4MCS51单片机汇编语言程序设计87 3.4.1概述87 3.4.2汇编语言程序的格式91 3.4.3汇编语言程序的模块化结构化设计105 习题3 132 第4章基于单片机的应用系统设计实例入门137 4.1单片机应用系统设计步骤137 4.2单片机应用系统开发环境Keil C51 138 4.2.1Keil软件建立工程的方法138 4.2.2软件仿真调试过程142 4.3Proteus仿真平台145 4.3.1使用 Proteus设计仿真电路图147 4.3.2使用 Proteus设计源程序及调试方法153 4.3.3Proteus与Keil C51的连接及程序调试方法155 习题4 157 第5章MCS51单片机中断系统的原理及应用158 5.1中断的基本概念158 5.2中断控制159 5.2.1MCS51单片机的中断源159 5.2.2MCS51单片机的中断控制寄存器160 5.3中断服务程序的处理过程164 5.3.1中断服务程序的响应条件164 5.3.2中断服务程序的响应过程165 5.4中断服务程序举例165 习题5 168 第6章MCS51单片机的定时器/计数器170 6.1定时器/计数器的结构与工作原理170 6.1.1定时方法170 6.1.2定时器/计数器的结构170 6.1.3定时器/计数器的工作原理170 6.2定时器/计数器的工作方式寄存器和控制寄存器171 6.2.1工作方式寄存器TMOD171 6.2.2控制寄存器TCON172 6.3定时器/计数器的工作方式172 6.3.1工作方式0172 6.3.2工作方式1173 6.3.3工作方式2174 6.3.4工作方式3175 6.4定时器/计数器计数模式下对输入信号的要求176 6.5定时器/计数器的编程和应用176 6.5.1定时器/计数器的编程初始化176 6.5.2定时器/计数器的应用举例176 6.5.3定时器/计数器门控位的应用180 6.5.4时钟的设计181 习题6 182 第7章单片机串行通信原理及接口应用183 7.1串行通信的基本概念183 7.1.1通信的基本方式183 7.1.2串行通信的数据传输模式184 7.1.3串行通信的类型184 7.1.4波特率的基本概念185 7.1.5串行通信的错误校验185 7.2MCS51单片机串行接口的结构186 7.2.1串行接口的内部硬件结构186 7.2.2与串行接口相关的特殊功能寄存器186 7.3MCS51单片机串行接口的通信工作方式188 7.3.1工作方式0188 7.3.2工作方式1189 7.3.3工作方式2和工作方式3191 7.3.4各个工作方式波特率的设定192 7.4串行接口的多机通信工作原理193 7.5串行数据交换的接口标准195 7.5.1RS232C标准195 7.5.2RS422A标准196 7.5.3RS485标准197 7.6串行接口的应用举例197 7.6.1方式0的应用——串行接口与并行接口转换197 7.6.2方式1及方式3的应用——单片机之间的通信201 习题7 205 第8章MCS51单片机存储器及并行输入输出扩展207 8.1单片机系统扩展概述207 8.1.1总线结构207 8.1.2单片机扩展编码方法208 8.1.3地址锁存器211 8.2外部存储器的扩展212 8.2.1常用的静态随机存储器芯片212 8.2.2外部存储器的读写操作213 8.2.3MCS51单片机与静态随机存储器的接口电路设计214 8.3并行输入输出接口扩展217 8.3.1输入输出接口的功能218 8.3.2可编程输入输出接口芯片8255A218 8.3.38255A的3种工作方式220 8.3.4MCS51和8255A的接口电路设计223 习题8 225 第9章MCS51单片机人机接口电路设计226 9.1键盘接口电路及其应用226 9.1.1按键的结构和工作原理226 9.1.2独立按键的识别方法227 9.1.3矩阵式按键的识别方法229 9.2荧光数码管及其应用232 9.3液晶显示器237 习题9 243 第10章单片机数模及模数转换接口244 10.1数模转换器的接口技术244 10.1.1数模转换器概述244 10.1.2数模转换器的主要性能指标244 10.1.3MCS51单片机与DAC0832的接口245 10.2模数转换器的接口技术250 10.2.1模数转换器概述250 10.2.2模数转换器的主要性能指标250 10.2.3MCS51单片机与ADC0809的接口251 10.2.4MCS51单片机与MC14433的接口255 习题10 256 第11章单片机的串行扩展技术257 11.1SPI总线257 11.1.1SPI总线的数据传输258 11.1.2SPI总线的应用258 11.2IIC总线扩展技术264 11.3单总线扩展技术272 11.3.1单总线的基本原理272 11.3.2单总线的应用273 习题11 279 第12章C51语言程序设计280 12.1ANSI C语言与单片机C语言280 12.1.1标准C语言关键字280 12.1.2C51语言关键字282 12.2Keil C51对ANSI C的扩展283 12.2.1C51语言的存储器类型283 12.2.2C51语言的存储模式284 12.2.3C51语言的数据类型扩展285 12.2.4C51语言的函数扩展定义288 12.2.5C51语言的指针291 12.2.6C51语言硬件资源的绝对地址访问294 12.3Keil C51语言设计基础296 12.3.1C51语言的程序结构296 12.3.2C51语言的数据类型与运算297 12.3.3C51语言的语句303 12.4Keil C51语言与汇编语言的混合编程304 12.4.1直接嵌入汇编语言程序305 12.4.2调用汇编语言子程序306 12.5Keil C51语言编程举例308 12.5.1定时器中断编程示例308 12.5.280C51单片机扩展资源编程示例309 习题12 310 第13章基于Proteus软件的单片机工程实践实例311 13.1单片机输入输出接口实验311 13.2单片机外部中断实验313 13.3单片机定时器中断实验315 13.4单片机与PC串行接口通信实验316 13.5单片机荧光数码管显示实验320 13.5.1荧光数码管静态显示实验320 13.5.2荧光数码管动态显示实验321 13.6单片机液晶显示器显示实验323 13.7单片机键盘扫描显示实验326 13.7.1独立式键盘扫描显示实验326 13.7.2矩阵式键盘扫描显示实验328 13.8单片机扩展外部RAM的实验332 13.9单片机扩展输入输出接口实验335 13.10单片机IIC总线实验337 13.11单片机数模转换器实验340 习题13 342 参考文献343