
本书首先以AT89S51为例简单介绍51单片机的基本结构、工作原理、硬件设计基础,同时介绍了相应的汇编程序设计与C程序设计,并以AT89S51的简单实验电路为硬件平台,设计了实现不同功能的例题,可以使读者快速入门单片机;随后介绍高速SoC增强型51单片机C8051F330,加深读者对新型51内核单片机内部模块的理解与应用,快速上手智能电子产品的开发。 本书给出了与AT89S51单片机简单实验电路为硬件平台相对应的大量例题,这些例题的程序中没有用到复杂的C语法,全部通过Keil软件编译、连接,并加了注释,目的是使读者轻松读懂单片机程序。
前 言 虽然芯片生产厂商开发出了各种各样的单片机新产品,但应用最广、技术最成熟、资料最多的仍是51系列单片机,国内各个大学以51单片机作为单片机课程的教学内容,培养出大量的单片机人才。 在市场需求与技术进步的推动下,众多单片机生产厂商获得了51单片机生产许可后,开发出了基于51内核的新型单片机,使51单片机家族长盛不衰。 本书第1版为普通高等教育“十一五”国家级规划教材。 这次的第2版是在第1版的基础上,结合高等学校单片机课程的教学现状,以及广大师生的反馈意见,对全书的内容、结构重新进行了编排,并补充完善了相应内容,以满足高等学校单片机课程教学的需要,以及广大工程技术人员对学习、掌握51单片机应用技术的需要。 本书重点考虑了以下问题: (1)注重原理和应用的结合,避免只关注原理介绍和例题分析。本书基础篇在介绍51单片机原理的基础上,以Atmel公司的AT89S51为例设计了相应的实验电路,并以此实验电路为平台,设计了大量的例题,通过例题可以使学生进一步熟悉并掌握单片机的工作原理,也可以通过学习原理来加强学生设计单片机应用系统的能力。 (2)突出内容的典型性和实用性。本书中给出的例题,都是最常用、简单和典型的方案,学生可以在设计系统时直接将例题中的方案应用于系统设计中,因此非常有利于提高学生设计单片机系统的效率。 (3)注重内容深入浅出,通俗易懂,注重电路易于设计,便于自学。本书中给出的电路都是用常用元件搭建而成的,尤其是用AT89S51设计的实验电路,学生可以很容易地利用万能板搭建起来,可以提高学生学习单片机的兴趣。 本书共分3篇:基础篇、提高篇和高级篇。基础篇主要包括第1~4章,介绍51单片机结构、指令系统与汇编语言程序设计、C程序设计,并以AT89S51单片机简单实验电路为硬件平台给出了大量的例题程序;提高篇包括第5~8章,主要包括51单片机的存储器扩展、显示系统扩展,以及中断、定时器、通信模块工作原理与ADC芯片、DAC芯片的接口技术;高级篇包括第9~12章,主要介绍C8051F330单片机的工作原理、功能模块与通信接口,以及智能仪器设计基础。 本书介绍的两种单片机都可以实现在系统编程,读者可以花费极低的成本自己制作编程电缆,并实现自制实验装置,为自己建立起实践单片机的实验平台。 本书适合作为单片机课程或智能仪表设计课程的教材,具体教学安排如下: 32学时安排:课堂教学20学时,讲授第1~4章,实验12学时,其他章节简要介绍。 48学时安排:课堂教学32学时,讲授第1~8章,实验16学时,其他章节简要介绍。 56学时安排:课堂教学40学时,讲授第1~10章,实验16学时。 参加本书编写工作的有太原理工大学马春燕(第7章),陈燕(第9章),武兴华(第11章),张灵(第8章),郑丽君(第3章);山西农业大学刘振宇(第1、10章),刘琪芳(第6章);太原科技大学何秋生(第5、12章),刘红兵(第4章);太原工业学院原菊梅(第2章)。何秋生和刘振宇任主编,负责全书的组织、修改与定稿;原菊梅和马春燕任副主编,协助主编工作;夏路易任本书的主审。 本书在编写过程中,参考了Atmel、Silicon Laboratories、Keil公司的数据手册与应用注释。广州周立功单片机发展有限公司的网站、新华龙公司的网站、众多51内核单片机等网站提供的资料以及相关51内核单片机的参考书,在此对这些网站、网站资料作者与参考书作者表示衷心感谢! 由于编者水平有限,错误与不妥之处在所难免,恳请读者批评指正。 编者电子邮件:heqs2008@126.com 编 者
目 录 基 础 篇 第1章 单片机概述 1 1.1 单片机发展概况 1 1.2 基于51内核的单片机 2 1.3 单片机的常用术语 2 1.4 单片机特点及应用 4 习题1 5 第2章 51单片机结构及硬件系统设计基础 6 2.1 单片机的基本结构 6 2.2 单片机的引脚 7 2.3 单片机的内部结构 10 2.3.1 51单片机的内部结构 10 2.3.2 51单片机的存储器 12 2.3.3 时序与指令周期 17 2.4 单片机硬件系统设计基础 18 2.4.1 单片机基础知识 18 2.4.2 从数据手册了解AT89S51单片机 22 2.4.3 AT89S51单片机最小系统 24 2.4.4 基于STC89C51RC单片机的最小系统 28 习题2 32 第3章 51单片机的指令系统与汇编程序 34 3.1 51单片机的指令与指令系统 34 3.2 寻址方式 34 3.3 51单片机指令 36 3.3.1 数据传送指令 36 3.3.2 算术运算指令 37 3.3.3 逻辑运算指令 38 3.3.4 控制转移指令 39 3.3.5 位操作指令 40 3.4 汇编语言程序设计 41 3.4.1 汇编语言简介 41 3.4.2 汇编器 43 3.4.3 Keil环境下汇编程序设计过程 44 3.5 汇编程序设计举例 50 习题3 53 第4章 C51程序设计 54 4.1 C51程序与汇编程序的不同之处 54 4.2 C语言基础知识 55 4.3 运 算 符 62 4.4 C程序基本结构与流程控制 65 4.4.1 C程序设计的3种基本结构 65 4.4.2 条件与分支结构 66 4.4.3 各种循环结构 68 4.5 C51中的构造数据类型 70 4.5.1 数组 71 4.5.2 指针 71 4.5.3 结构体 73 4.5.4 共用体 75 4.5.5 枚举 76 4.5.6 用typedef重定义数据类型 76 4.6 函数 77 4.6.1 定义函数 77 4.6.2 调用函数 79 4.6.3 函数变量的作用域 81 4.7 编译预处理 81 4.8 C51内部函数 83 4.9 C51编译过程中用到的文件 84 4.10 C51程序结构 85 4.11 Keil环境下C程序设计过程 88 4.12 AT89S51单片机C51程序举例 89 习题4 92 提 高 篇 第5章 51单片机的存储器扩展 94 5.1 存储器概述 94 5.2 存储器并行扩展 95 5.2.1 地址锁存器及地址译码器 96 5.2.2 51单片机扩展ROM 97 5.2.3 51单片机扩展RAM 102 5.3 存储器串行扩展 105 5.3.1 I2C总线简介 105 5.3.2 I2C接口的E2PROM存储器芯片24C02 106 5.3.3 读写I2C接口存储器24C02举例 108 习题5 111 第6章 51单片机的显示扩展 112 6.1 单片机系统中的数码管显示扩展 112 6.1.1 数码管显示原理 112 6.1.2 数码管显示扩展 113 6.2 液晶显示器在单片机系统中的扩展 118 6.2.1 字符型液晶LCD 1602简介 119 6.2.2 液晶1602常用的C51读写及初始化程序 124 6.2.3 液晶1602在单片机系统中的应用 125 6.3 LED点阵屏扩展 128 6.3.1 点阵屏工作原理 128 6.3.2 点阵屏显示接口及举例 129 习题6 132 第7章 51单片机的中断、定时与串行通信 134 7.1 51单片机的中断 134 7.1.1 中断原理 134 7.1.2 具有中断的汇编与C程序举例 138 7.2 51单片机的定时器 140 7.2.1 定时器基础 140 7.2.2 定时器的4种工作方式 142 7.2.3 具有定时器的汇编与C程序举例 145 7.3 51单片机的串行口和控制寄存器 150 7.3.1 串行口工作原理 150 7.3.2 RS-232接口 152 7.3.3 单片机串口与PC通信举例 153 习题7 158 第8章 51单片机ADC与DAC接口 160 8.1 模拟量接口技术 160 8.1.1 单电源运放工作原理 160 8.1.2 测量模拟电压与电流的接口电路 165 8.1.3 温度测量接口技术 170 8.1.4 应力测量接口技术 176 8.1.5 光耦隔离输入技术 179 8.2 模拟量输出电路 180 8.2.1 电压电流转换电路 180 8.2.2 功率输出接口技术 181 8.3 51单片机串行连接ADC 186 8.3.1 TLC1549简介 186 8.3.2 TLC1549芯片应用举例 189 8.4 51单片机串行连接DAC 192 8.4.1 TLC5615简介 192 8.4.2 89S51单片机驱动TLC5615芯片举例 194 习题8 196 高 级 篇 第9章 C8051F330单片机技术基础 198 9.1 C8051F330单片机特点 198 9.2 C8051F330单片机的CIP-51内核 199 9.3 C8051F330单片机的存储器结构 201 9.4 C8051F330单片机的电源管理方式 205 9.5 C8051F330单片机的复位源 205 9.6 C8051F330单片机的时钟电路 209 9.7 C8051F330单片机实验板设计 213 习题9 217 第10章 C8051F单片机功能模块工作原理 218 10.1 C8051F330单片机的输入/输出端口 218 10.2 C8051F330单片机的中断 227 10.3 C8051F330单片机的定时器 232 10.3.1 定时器0与定时器1 232 10.3.2 定时器2 237 10.3.3 定时器3 241 10.4 C8051F330单片机的FLASH存储器 244 10.5 C8051F330单片机的10位模数转换器ADC0 250 10.6 C8051F330单片机的10位电流模式DAC(IDA0) 259 10.7 C8051F330单片机的电压基准 263 10.8 C8051F330单片机的模拟电压比较器 265 10.9 C8051F330单片机的可编程计数器阵列 269 习题10 280 第11章 C8051F330单片机的通信接口 281 11.1 串行外设接口(SPI0) 281 11.2 异步通信接口UART0 287 11.3 SMBus接口 295 习题11 303 第12章 基于51内核单片机的智能仪表设计 304 12.1 电子系统智能化与智能仪表概述 304 12.2 智能仪表中的数据处理算法 306 12.2.1 常用软件滤波算法 306 12.2.2 热电阻与热电偶的非线性校正算法 308 12.2.3 标度变换 310 12.3 周期与频率测量算法 310 12.4 控制算法 313 12.4.1 位式控制算法 313 12.4.2 PID控制算法 315 12.5 软件任务的编程实现 321 12.6 智能仪表抗干扰技术 326 12.7 简易智能仪表设计举例 329 12.7.1 基于PT100传感器测温的智能测温仪表 329 12.7.2 采用热敏电阻KTY81测温的智能测温仪表 337 12.7.3 数显压力控制仪表设计 341 12.7.4 采用C8051F330单片机的数显转速表 343 12.7.5 电机工作电流与电压监测报警电路设计 346 12.7.6 全自动反冲洗滤水器控制电路设计 349 12.7.7 智能电子产品开发过程 354 习题12 355 参考文献 357