1、 单片机C语言编程与 Proteus仿真技术 徐爱钧 著 Publishing House of Electronics Industry 北京BEIJING 内 容 简 介 本书在介绍8051单片机组成原理的基础上,结合目前流行的Keil C51编译器和Proteus虚拟仿真环境,阐述单片机C语言编程和虚拟仿真应用技术,包括单片机中断系统、定时器/计数器、串行口等片内资源的工作原理、单片机系统扩展、DAC与ADC、键盘与显示器接口技术,详细介绍了单片机片内、片外资源的C语言程序设计及其Proteus虚拟仿真应用方法,给出了大量单片机C语言程序范例和Proteus原理电路图,所有范例均在Pro
2、teus软件平台上调试通过,可以直接运行。为帮助读者更好地学习和掌握C51应用编程方法和Proteus仿真技术,本书附赠一张CD-ROM光盘,包含Keil公司全功能C51评估软件包、Proteus仿真电路图及各章所有范例的程序源代码。本书适合从事单片机应用系统开发研制的广大工程技术人员阅读,也可以作为高等院校相关专业大学生或研究生的教学参考书。未经许可,不得以任何方式复制或抄袭本书之部分或全部内容。版权所有,侵权必究。图书在版编目(CIP)数据 单片机 C 语言编程与 Proteus 仿真技术/徐爱钧著.北京:电子工业出版社,2016.1 ISBN 978-7-121-27538-8.单 .徐
3、 .单片微型计算机C 语言程序设计 单片微型计算机系统仿真应用软件 .TP312 P368.1 中国版本图书馆 CIP 数据核字(2015)第 267039 号 责任编辑:富 军 印 刷:三河市华成印务有限公司 装 订:三河市华成印务有限公司 出版发行:电子工业出版社 北京市海淀区万寿路 173 信箱 邮编 100036 开 本:7871092 1/16 印张:22.5 字数:576 千字 版 次:2016 年 1 月第 1 版 印 次:2016 年 1 月第 1 次印刷 印 数:3 000 册 定价:59.00 元(含光盘 1 张)凡所购买电子工业出版社图书有缺损问题,请向购买书店调换。若书
4、店售缺,请与本社发行部联系,联系及邮购电话:(010)88254888。质量投诉请发邮件至 ,盗版侵权举报请发邮件至 。服务热线:(010)88258888。8051是目前国内外工业测量控制领域内使用极为广泛的一类8位单片机。它在一块芯片上同时集成CPU、ROM、RAM及多种外围功能接口,具有体积小、价格低、功能强、可靠性高、使用方便灵活等特点,以单片机为核心设计各种智能化电子设备,周期短,成本低,易于更新换代,维修方便,已成为电子设计中最为普遍的应用手段。世界上许多大半导体厂商,如Atmel、Analog Device、Infineon、NXP、TI、SiLAB等公司都推出了各具特色的805
5、1系列单片机。早期,单片机应用开发大多采用汇编语言编程,编程效率不高,程序不易移植和维护。随着Keil C51编译器的流行,现在已经普遍采用C语言进行单片机应用编程。C语言具有类似自然语言的特点,既能直接操作机器硬件,又可以进行方便灵活的高级语言编程。在单片机应用系统开发过程中,除了编程工具之外,硬件平台也必不可少。目前,各种单片机开发平台层出不穷,英国Labcenter公司推出的Proteus软件是一款极好的单片机虚拟硬件平台,以其特有的仿真技术很好地解决了单片机及其外围电路的设计和协同仿真问题,可以在没有单片机实际硬件的条件下,利用PC机进行虚拟仿真实现单片机系统的软、硬件设计。Prote
6、us虚拟硬件平台可以与Keil C51完美结合,在原理图中直接进行单片机C语言程序的源代码仿真调试,实现对系统性能的综合评估,验证各项技术指标。Proteus平台涵盖了8051等多种微处理器模型及各种常用电子元器件,包括74系列、CMOS4000系列集成电路、A/D和D/A转换器、键盘、LCD显示器、LED显示器,还提供示波器、逻辑分析仪、通信终端、电压/电流表、I2C/SPI终端等各种虚拟仪表,可以直接用于虚拟仿真,结合原理图和源码级程序调试,能够立即观察到单片机应用系统的输入、输出效果,极大地提高了应用系统的设计效率。本书在构思及选材上符合单片机应用发展要求,突出先进性和实用性,对C51应
7、用编程方法、Proteus虚拟仿真技术等进行详尽阐述,给出了大量单片机C语言程序和Proteus仿真设计范例。所有范例均已在Proteus平台上调试通过,可以直接运行。全书共9章:第1章阐述8051单片机基本组成、存储器结构、CPU时序、并行I/O端口及指令系统。第2章阐述Proteus虚拟硬件平台,介绍在ISIS集成环境中绘制原理电路图、与Keil C51联机实现源代码仿真调试的方法。第3章阐述Keil C51应用程序设计,介绍C51的基本语句、数据类型、Keil C51对ANSI C的扩展、与汇编语言程序接口及C51库函数等。第4章阐述单片机片内资源应用,介绍C51编程的基本原则方法,给出
8、中断系统、定时器/计数器、串行口等功能部件的C语言应用编程实例。第5章阐述系统扩展与低功耗应用,介绍存储器、并行I/O端口的扩展及单片机低功耗应用方法,给出并行接口扩展芯片和低功耗工作方式的C语言应用编程实例。第6章阐述键盘与显示器接口应用,介绍矩阵接盘、数码管、点阵字符和图型液晶显示单片机C语言编程与Proteus仿真技术 IV 器等与单片机的接口方法,给出C语言应用编程实例。第7章阐述数模与模数转换接口应用,介绍传统并行及新型串行D/A、A/D转换器芯片及其与单片机的接口方法,给出C语言应用编程实例。第8章阐述I2C总线接口应用,介绍I2C总线结构与数据传输,给出I2C接口存储器芯片、A/
9、D-D/A转换芯片及时钟芯片的C语言应用编程实例。第9章给出5个单片机Proteus虚拟仿真设计实例及其完整的C51源程序。本书在编写过程中得到广州风标电子技术有限公司(http:/)匡载华总经理的大力支持和热情帮助,电子工业出版社柴燕、富军编辑提出了许多宝贵意见,徐阳、彭秀华等参加了部分章节的编写和程序调试工作,在此一并表示感谢。由于作者水平有限,书中难免会有错误和不妥之处,恳请广大读者批评指正,读者可通过电子邮件:、直接与作者联系。Proteus的DEMO软件可到官方网站http:/www.labcenter.co.uk下载,或者与国内代理商广州风标电子技术有限公司联系购买正版软件。徐爱钧
10、 于长江大学 第1章 8051单片机基础1 1.1 8051单片机的特点与基本结构1 1.2 8051单片机的存储器结构5 1.3 CPU时序 8 1.4 复位信号与复位电路10 1.5 并行I/O端口结构11 1.6 指令系统13 1.7 指令的寻址方式15 1.7.1 寄存器寻址15 1.7.2 直接寻址15 1.7.3 立即寻址15 1.7.4 寄存器间接寻址16 1.7.5 变址寻址16 1.7.6 相对寻址17 1.7.7 位寻址18 1.8 指令分类详解18 1.8.1 算术运算指令18 1.8.2 逻辑运算指令20 1.8.3 数据传送指令21 1.8.4 控制转移指令23 1.
11、8.5 位操作指令25 1.9 汇编语言程序设计26 第2章 Proteus虚拟仿真31 2.1 集成环境ISIS31 2.2 绘制原理图35 2.3 创建汇编语言源代码仿真文件37 2.4 在原理图中进行源代码仿真调试 39 2.5 原理图与Keil环境联机仿真调试 42 第3章 Keil C51应用程序设计49 3.1 Keil C51程序设计的基本语法49 3.1.1 Keil C51程序的一般结构49 3.1.2 数据类型50 单片机C语言编程与Proteus仿真技术 VI 3.1.3 常量、变量及其存储模式51 3.1.4 运算符与表达式52 3.2 C51程序的基本语句56 3.2
12、.1 表达式语句56 3.2.2 复合语句56 3.2.3 条件语句56 3.2.4 开关语句57 3.2.5 循环语句57 3.2.6 goto、break、continue语句58 3.2.7 返回语句58 3.3 函数59 3.3.1 函数的定义与调用59 3.3.2 中断服务函数与寄存器组定义 60 3.4 Keil C51编译器对ANSI C的扩展61 3.4.1 存储器类型与编译模式61 3.4.2 关于bit、sbit、sfr、sfr16数据类型62 3.4.3 一般指针与基于存储器的指针及其转换 65 3.4.4 C51编译器对ANSI C函数定义的扩展66 3.5 C51编译
13、器的数据调用协议69 3.5.1 数据在内存中的存储格式69 3.5.2 目标代码的段管理71 3.6 与汇编语言程序的接口73 3.6.1 参数传递规则73 3.6.2 C51与汇编语言混合编程举例77 3.7 绝对地址访问80 3.7.1 采用扩展关键字“_at_”或指针定义变量的绝对地址80 3.7.2 采用预定义宏指定变量的绝对地址 81 3.8 Keil C51库函数81 3.8.1 本征库函数82 3.8.2 字符判断转换库函数82 3.8.3 输入、输出库函数83 3.8.4 字符串处理库函数87 3.8.5 类型转换及内存分配库函数88 3.8.6 数学计算库函数89 第4章
14、单片机片内资源应用91 4.1 采用Keil C51编写应用程序的基本原则91 4.2 并行I/O端口92 4.2.1 典型单片机输入、输出电路92 4.2.2 单片机I/O端口应用编程94 目 录 VII4.3 中断系统100 4.3.1 中断系统结构与中断控制101 4.3.2 中断响应104 4.3.3 中断系统应用编程106 4.4 定时器/计数器110 4.4.1 定时器/计数器的工作方式与控制110 4.4.2 定时器方式应用编程113 4.4.3 计数器方式应用编程119 4.4.4 利用定时器产生音乐121 4.5 串行口124 4.5.1 串行口的工作方式与控制125 4.5
15、.2 串口/并口转换应用编程128 4.5.3 单片机与PC机通信应用编程 130 4.5.4 单片机与单片机通信应用编程 132 4.5.5 修改底层函数实现printf()重新定向139 第5章 系统扩展与低功耗应用143 5.1 存储器扩展143 5.1.1 程序存储器扩展143 5.1.2 数据存储器扩展144 5.2 并行I/O端口扩展146 5.2.1 线选法146 5.2.2 地址译码法147 5.2.3 8155和8255并行接口扩展芯片应用编程 149 5.3 8051单片机的低功耗应用158 5.3.1 空闲工作方式158 5.3.2 掉电工作方式159 5.3.3 低功耗
16、方式应用编程159 第6章 键盘与显示器接口应用163 6.1 LED显示器接口技术 163 6.1.1 七段LED数码管显示器 163 6.1.2 单个74HC595驱动多位LED数码管168 6.1.3 串行接口8位共阴极LED驱动器MAX7219 171 6.2 键盘接口技术177 6.2.1 编码键盘接口178 6.2.2 非编码键盘接口180 6.3 8279可编程键盘/显示器芯片接口技术183 6.3.1 8279的引脚排列183 6.3.2 8279的数据输入、显示输出及命令格式 184 单片机C语言编程与Proteus仿真技术 VIII 6.3.3 8279接口应用编程189 6.4 点阵字符型LCD接口技术191 6.4.1 点阵字符型LCD显示模块192 6.4.2 直接方式接口应用编程197 6.4.3 间接方式接口应用编程200 6.4.4 4位数据总线接口应用编程203 6.5 12864点阵图型LCD接口技术206 6.5.1 12864点阵图型LCD显示模块206 6.5.2 12864 LCD接口应用编程209 6.6 T6963点阵图型LCD接口技术2