1、 勇敢的芯系列丛书 丛书 丛书 新编 51 单片机 C 语言教程 从入门到精通实例详解全攻略 蔡杏山 蔡玉山 编著 Publishing House of Electronics Industry 北京BEIJING 内 容 简 介 本书是一本以实例详解方式介绍 51 单片机与 C 语言编程的图书,主要内容有单片机入门、51 单片机的硬件系统、Keil C51 编程软件的使用、单片机驱动 LED 与 LED 数码管的电路及编程、中断的使用及编程、定时器/计数器的使用及编程、独立按键与矩阵键盘输入电路及编程、点阵和液晶显示屏的使用及编程、步进电动机的使用及编程、串行通信的使用及编程、I2C 总线
2、通信的使用及编程、AD(模数)与 DA(数模)转换电路及编程。本书起点低、由浅入深、语言通俗易懂,并且内容结构安排符合学习认知规律。本书适合作为初学者学习 51 单片机及编程的自学图书,也适合作为职业院校电类专业的单片机教材。未经许可,不得以任何方式复制或抄袭本书之部分或全部内容。版权所有,侵权必究。图书在版编目(CIP)数据 新编 51 单片机 C 语言教程:从入门到精通实例详解全攻略/蔡杏山,蔡玉山编著.北京:电子工业出版社,2017.2 ISBN 978-7-121-30695-2.新 .蔡 蔡 .单片微型计算机基本知识 语言程序设计 .TP368.1 TP312.8 中国版本图书馆 C
3、IP 数据核字(2016)第 312931 号 策划编辑:张 楠 责任编辑:王凌燕 印 刷:装 订:出版发行:电子工业出版社 北京市海淀区万寿路 173 信箱 邮编 100036 开 本:7871 092 1/16 印张:17 字数:435.2 千字 版 次:2017 年 2 月第 1 版 印 次:2017 年 2 月第 1 次印刷 定 价:49.00 元 凡所购买电子工业出版社图书有缺损问题,请向购买书店调换。若书店售缺,请与本社发行部联系,联系及邮购电话:(010)88254888,88258888。质量投诉请发邮件至 ,盗版侵权举报请发邮件至 。本书咨询联系方式:(010)8825457
4、9。前 言 单片机是什么?单片机全称为单片微型计算机,由于单片机主要用在控制方面,故又称为微型控制器(MCU)。微型计算机(又称个人电脑、PC)是将 CPU、存储器和输入/输出接口电路等安装在主电路板(简称主板)上,外部的输入/输出设备(如键盘、显示器等)通过导线与主板上的输入/输出接口电路连接起来。单片机则是将 CPU、存储器和输入/输出接口电路等制作在一块半导体硅片上,再接出引脚并封装起来构成集成电路,外部的输入/输出设备通过单片机的引脚与内部的输入/输出接口电路连接起来。也就是说,单片机是一块内部包含 CPU、存储器和输入/输出接口等电路的 IC 芯片。哪些地方要用到单片机?单片机的应用
5、非常广泛,已深入到工业、农业、商业、教育、国防及日常生活等各个领域。单片机在家电方面的应用主要有:彩色电视机、影碟机内部的控制系统;数码相机、数码摄像机中的控制系统;中高档电冰箱、空调器、电风扇、洗衣机、加湿器和消毒柜中的控制系统;中高档微波炉、电磁灶和电饭煲中的控制系统等。单片机在通信方面的应用主要有:移动电话、传真机、调制解调器和程控交换机中的控制系统;智能电缆监控系统、智能线路运行控制系统和智能电缆故障检测仪等。单片机在商业方面的应用主要有:自动售货机、无人值守系统、防盗报警系统、灯光音响设备、IC 卡等。单片机在工业方面的应用主要有:数控机床、数控加工中心、无人操作、机械手操作、工业过
6、程控制、生产自动化、远程监控、设备管理、智能控制和智能仪表等。单片机在航空、航天和军事方面的应用主要有:航天测控系统、航天制导系统、卫星遥控遥测系统、载人航天系统、导弹制导系统和电子对抗系统等。单片机在汽车方面的应用主要有:汽车娱乐系统、汽车防盗报警系统、汽车信息系统、汽车智能驾驶系统、汽车全球卫星定位导航系统、汽车智能化检验系统、汽车自动诊断系统和交通信息接收系统等。本书讲授单片机技术有什么特色?由于单片机应用广泛,学习电工电子技术的人几乎都希望能掌握单片机技术,但真正掌握单片机技术并能进行单片机软、硬件开发的人却不多。为什么会这样呢?一句话概括就是“学单片机编程太难了!”。本书就是为解决学
7、习单片机编程难而推出的,全书是以“单片机实际电路+大量典型的实例程序+详细易懂的程序逐条说明”方式编写的,读者阅读程序时,除了可查看与程序对应的单片机电路外,遇到某条程序语句不明白时还可查看该程序语句的详细说明,从而理解程序运行的来龙去脉。读懂并理解程序后,读者可模仿尝试采用类似方法自己编写一些程序,慢慢就可以自己编写一些复杂的程序,IV 新编 51 单片机 C 语言教程 IV 从而成为单片机软件编程高手。另外,读者可登录 www.eTV(易天电学网)免费下载或查看与本书有关的技术资源和其他图书。本书在编写过程中得到了很多老师的支持,其中江西工程学院的蔡玉山教授编写了第2、5、6 章内容,另外
8、感谢刘元能、刘凌云、黄勇、蔡春霞、邓艳姣、何慧、詹春华、黄晓玲、万四香、邵永亮、蔡华山、王娟、李清荣、刘海峰、蔡理刚、何彬、王玉兰、何宗昌、蔡理忠、邵永明、蔡任英、余要先、石韧和王丽等参与了部分章节的编写工作,在此一致表示感谢。由于我们水平有限,书中的错误和疏漏之处在所难免,望广大读者和同人予以批评指正。需要配套软件与代码的读者,可发送电子邮件至 索取!编 者 目 录 第 1 章 单片机入门1 1.1 单片机简介1 1.1.1 什么是单片机1 1.1.2 单片机应用系统的组成及举例说明2 1.1.3 单片机的分类3 1.1.4 单片机的应用领域4 1.2 用实例了解单片机应用系统的开发过程 5
9、 1.2.1 明确控制要求并选择合适型号的单片机5 1.2.2 设计单片机电路原理图5 1.2.3 制作单片机电路6 1.2.4 用 Keil 软件编写单片机控制程序7 1.2.5 计算机、下载(烧录)器和单片机的连接10 1.2.6 用烧录软件将程序写入单片机13 1.2.7 单片机电路的供电与测试15 1.3 与单片机有关的基础知识 17 1.3.1 单片机基础电路17 1.3.2 数制与数制的转换24 1.3.3 单片机的数的表示及运算27 1.4 C51 语言基础29 1.4.1 常量 29 1.4.2 变量 30 1.4.3 运算符 31 1.4.4 关键字 34 1.4.5 数组
10、34 1.4.6 循环语句36 1.4.7 选择语句37 新编 51 单片机 C 语言教程 VI 第 2 章 51 单片机的硬件系统40 2.1 8051 单片机的引脚功能与内部结构 40 2.1.1 引脚功能说明40 2.1.2 单片机与片外存储器的连接与控制43 2.1.3 内部结构说明44 2.2 8051 单片机 I/O 端口的结构与工作原理47 2.2.1 P0 端口47 2.2.2 P1 端口48 2.2.3 P2 端口49 2.2.4 P3 端口50 2.3 8051 单片机的存储器 51 2.3.1 存储器的存储单位与编址51 2.3.2 片内、外程序存储器的使用与编址52 2
11、.3.3 片内、外数据存储器的使用与编址53 2.3.4 数据存储器的分区53 2.3.5 特殊功能寄存器(SFR)56 2.4 STC89C5x 系列单片机介绍 59 2.4.1 STC89C5x 单片机的版本、封装形式和引脚功能说明60 2.4.2 STC89C5x 系列单片机的型号命名规则63 2.4.3 STC89C5x 系列单片机的常用型号的主要参数64 2.4.4 STC89C5x 系列单片机的 I/O 端口 64 2.4.5 STC89C5x 系列单片机的程序存储器与数据存储器68 2.4.6 STC89C5x 系列单片机的特殊功能寄存器69 第 3 章 Keil C51 编程软
12、件的使用72 3.1 Keil C51 软件的安装72 3.1.1 Keil C51 软件的版本及获取72 3.1.2 Keil C51 软件的安装72 3.2 程序的编写与编译75 3.2.1 启动 Keil C51 软件并新建工程文件75 3.2.2 新建源程序文件并与工程关联起来77 3.2.3 编写程序79 3.2.4 编译程序81 目 录VII3.3 程序的仿真与调试84 3.3.1 软件仿真调试85 3.3.2 硬件仿真调试91 第 4 章 单片机驱动 LED 与 LED 数码管的电路及编程95 4.1 单片机驱动 LED 的电路及编程95 4.1.1 发光二极管(LED)外形、性
13、质与检测95 4.1.2 单片机连接 8 个 LED 的电路97 4.1.3 位操作与字节操作方式点亮单个 LED 的程序及详解98 4.1.4 单个 LED 闪烁发光的程序及详解100 4.1.5 单个 LED 以不同频率闪烁发光的程序及详解101 4.1.6 位操作和字节操作方式点亮多个 LED 的程序及详解102 4.1.7 多个 LED 以不同频率闪烁发光的程序及详解102 4.1.8 多个 LED 左移和右移的程序及详解103 4.1.9 LED 循环左移和右移的程序及详解105 4.1.10 LED 左右移动并闪烁发光的程序及详解106 4.1.11 用查表方式控制 LED 发光的
14、程序及详解107 4.1.12 LED 花样发光的程序及详解108 4.1.13 用 PWM(脉宽调制)方式调节 LED 亮度的原理与程序108 4.2 单片机驱动一位 LED 数码管显示的电路及编程110 4.2.1 一位 LED 数码管外形、结构与检测110 4.2.2 单片机连接一位 LED 数码管的电路112 4.2.3 单个数码管静态显示一个字符的程序及详解113 4.2.4 单个数码管动态显示多个字符的程序及详解113 4.2.5 单个数码管环形转圈显示的程序及详解114 4.2.6 单个数码管显示逻辑电平的程序及详解115 4.3 单片机驱动 8 位 LED 数码管显示的电路及编
15、程115 4.3.1 多位 LED 数码管外形、结构与检测115 4.3.2 单片机连接 8 位共阴极数码管的电路117 4.3.3 8 位数码管显示一个字符的程序及详解118 4.3.4 8 位数码管逐位显示 8 个字符的程序及详解119 4.3.5 8 位数码管同时显示 8 个字符的程序及详解120 4.3.6 8 位数码管动态显示 8 个以上字符的程序及详解120 新编 51 单片机 C 语言教程 VIII 第 5 章 中断的使用及编程122 5.1 中断的基本概念与处理过程 122 5.1.1 什么是中断122 5.1.2 中断的基本概念122 5.1.3 中断的处理过程123 5.2
16、 8051 单片机的中断系统结构与控制寄存器123 5.2.1 中断系统的结构123 5.2.2 中断源寄存器124 5.2.3 中断允许寄存器 IE125 5.2.4 中断优先级控制寄存器 IP126 5.3 中断的应用编程举例 127 5.3.1 中断使用的电路例图127 5.3.2 外部中断 0 以低电平方式触发中断的程序128 5.3.3 外部中断 1 以下降沿方式触发中断的程序128 第 6 章 定时器/计数器的使用及编程 131 6.1 定时器/计数器的定时与计数功能 131 6.1.1 定时功能131 6.1.2 计数功能132 6.2 定时器/计数器的结构原理132 6.2.1 定时器/计数器的结构132 6.2.2 定时器/计数器的工作原理133 6.3 定时器/计数器的控制寄存器与 4 种工作方式 134 6.3.1 定时器/计数器控制寄存器 TCON134 6.3.2 工作方式控制寄存器 TMOD135 6.3.3 定时器/计数器的工作方式136 6.4 定时器/计数器的应用及编程140 6.4.1 产生 1kHz 方波信号的程序及详解140 6.4.2 产生 5