单片机C51语言是目前最流行的MCS51系列单片机程序设计语言。《单片机C语言教程》以“基础、实用”为原则,通过基础知识与大量实例结合的形式,循序渐进地讲解了C51应用编程的各种方法与技巧,是一本重在应用、兼顾理论的实用教程。
全书共9章,通过大量的典型实例全面详细地讲述了单片机的c语言程序设计规范及应用案例。第1章为基础知识,首先简要介绍了C51单片机的硬件结构、指令系统及开发应用特点;第2章~第7章介绍C51编程语言的基本规范、常用开发工具的使用、C语言与汇编混合编程等知识;第8章结合单片机的硬件资源讲解了如何应用C51语占进行编程操作;第9章介绍了在各个领域中常用到的一些C语言编程典型案例,以供读者在学习和工作中参考,同时对所学知识融会贯通,从而开阔思路,提高实际工作能力。
《单片机C语言教程》特别适合单片机及其编程语言的初学者,可作为大专院校电子信息类、通信类、自动化类、机电类等专业学生学习与实践单片机c语言程序设计的教材或参考书,或进行单片机课程设计、毕业设计和大学生电子设计竞赛的参考用书,也可供从事自动控制、智能仪器仪表、电力电子、机电一体化等专业的单片机应用开发技术人员参考。
第一台电子数字计算机的诞生引发了20世纪的电子工业革命,而单片机的问世和飞速发展则开创了计算机工程应用的另一个新时代。由于单片机具有高性价比、高速度、低功耗和方便功能扩展等优点,被广泛应用于工业控制系统、数据采集系统、自动测试系统、智能仪表以及各类功能模块等广阔领域。单片机技术也成为电子信息类各专业的一门必修课程。
Intel公司的MCS-51单片机是目前在我国应用最广泛的单片机之一。20世纪80年代中期,Intel公司将8051内核使用权以专利互换或出售形式转给世界许多著名IC制造厂商,如Philips、Atmel、Dallas、Infineon、ADI、TI、Winbond和Siliconc Labs公司等。这样,8051就变成有众多制造厂商支持、发展出上百个品种的大家族。到目前为止,其他任何一个单片机系列均未发展到如此的规模。随着硬件的发展,8051软件工具已有C级编译器及实时多任务操作系统RTOS(Real Time Operating system)。在RTOS的支持下,单片机的程序设计更简单、更可靠,因而8051是单片机教学的首选机型。
单片机的程序设计可以采用汇编语言和单片机C51语言。C51是在通用C语言基础上发展起来的专门用于51系列单片机编程的编译型高级语言。与汇编语言相比,C51具备可读性、可移植性、可维护性好、编译效率高等特点,兼具功能丰富的函数库,且可直接实现对系统硬件的控制,以上特点使C51语言逐渐成为单片机应用中的主流编程语言。目前国内最流行的C51编译器是Keil Software公司推出的Keil C51。
第1章 单片机基础知识
1.1 单片机简介
1.1.1 单片机的发展史
1.1.2 单片机的基本组成
1.1.3 单片机的特点
1.1.4 单片机的应用领域
1.1.5 单片机的发展方向
1.1.6 8051单片机系列成员
1.2 8051的内部结构
1.2.1 中央处理器
1.2.2 存储器组织
1.2.3 片内并行接口
1.2.4 8051的内部资源
1.2.5 8051的芯片引脚
1.2.6 单片机的工作方式
1.3 8051的系统扩展
1.3.1 外部总线的扩展
1.3.2 外部程序存储器的扩展
1.3.3 外部数据存储器的扩展
1.4 8051指令系统
1.4.1 指令基本格式
1.4.2 寻址方式
1.4.3 指令说明
1.4.4 伪指令
1.4.5 指令系统表
1.5 实用汇编程序设计
1.5.1 顺序程序
1.5.2 分支程序
1.5.3 循环程序
1.5.4 查表程序
1.5.5 散转程序
1.6 本章小结
第2章 C与8051
2.1 8051的编程语言
2.2 C51编译器
2.3 Keil C51开发工具
2.3.1 Keil C5l开发系统基本知识
2.3.2 在Keil μVision下创建应用程序
2.3.3 在Keil μVision下调试程序
2.4 C51程序设计简介
2.5 本章小结
第3章 C51数据与运算
3.1 数据与数据类型
3.2 常量与变量
3.3 c51数据的存储类型与8051存储器结构
3.3.1 存储类型
3.3.2 存储模式
3.4 8051特殊功能寄存器(sFR)及其c51定义
3.5 8051并行接口及其c51定义
3.6 位变量(BIT)及其C51定义
3.7 c51的运算符与表达式
3.7.1 C51的算术运算符与算术表达式
3.7.2 c51的关系运算符与关系表达式
3.7.3 c51的逻辑运算符与逻辑表达式
3.7.4 c51的条件运算符与条件表达式
3.7.5 c51的逗号运算符与逗号表达式
3.7.6 C51中的位操作符及其表达式
3.7.7 复合运算符及其表达式
3.8 本章小结
第4章 C51流程控制语句
4.1 c51语言程序的基本结构及流程图
4.1.1 顺序结构及其流程图
4.1.2 选择结构及其流程图
4.1.3 循环结构及其流程图
4.2 选择语句
4.2.1 选择语句if
4.2.2 switch/case语句
4.3 循环语句
4.3.1 while语句
4.3.2 do-while语句
4.3.3 for循环语句
4.3.4 循环结束语句
4.4 本章小结
第5章 C51构造数据类型
5.1 数组
5.1.1 一维数组
5.1.2 二维数组
5.1.3 字符数组
5.1.4 查表
5.1.5 数组与存储空间
5.2 指针
5.2.1 指针的基本概念
5.2.2 数组指针和指向数组的指针变量
5.2.3 指向多维数组的指针和指针变量
5.2.4 Keil C5l的指针类型的特殊要求
5.3 结构(Stfuction)
5.3.1 结构的定义和引用
5.3.2 结构数组
5.3.3 指向结构类型数据的指针
5.4 联合(union)
5.5 枚举(enum)
5.6 本章小结
第6章 C51的函数
6.1 函数的分类
6.2 函数的定义
6.3 函数的参数和函数值
6.4 函数的调用
6.4.1 函数调用的一般形式
6.4.2 函数调用的方式
6.4.3 对被调用函数的说明
6.4.4 函数的嵌套
6.4.5 函数的递归调用
6.4.6 用函数指针变量调用函数
6.5 数组、指针作为函数的参数
6.5.1 用数组作为函数的参数
6.5.2 用指向函数的指针变量作为函数的参数
6.5.3 用指向结构的指针变量作函数的参数
6.5.4 返回指针的函数
6.6 本章小节
第7章 模块化程序设计
7.1 基本概念
7.2 模块化程序开发
7.3 连接/定位器
7.4 C51语言与汇编语言的混合编程
7.4.1 Keil C5l和A51接口所涉及的几个主要问题
7.4.2 在C5l中调用汇编程序应用举例
7.4.3 Keil C51初始化代码
7.5 程序优化
7.6 本章小结
第8章 8051内部资源的c51编程
8.1 中断
8.1.1 中断源
8.1.2 中断的控制
8.1.3 中断响应
8.1.4 寄存器组切换
8.1.5 中断编程
8.2 定时器/计数器(T/C)
8.2.1 与T/C有关的特殊功能寄存器
8.2.2 定时器/计数器的工作方式
8.2.3 定时器/计数器的初始化
8.2.4 定时器/计数器的应用实例
8.3 串行口
8.3.1 与串行口有关的SFR
8.3.2 串行口的工作方式
8.3.3 串行口初始化
8.3.4 串行口应用范例
8.4 本章小结
第9章 C语言编程示例
9.1 带有串行EEPR()M的cPu监控器X5045
9.1.1 X5043/5045简介
9.1.2 X5045与单片机的连接
9.1.3 读写X5045的C语言程序
9.2 涓流充电时钟保持芯片DSl302
9.2.1 DS1302简介
9.2.2 DS1302与单片机的连接
9.2.3 读写DSl302的C语言程序
9.3 串行EEPR()M芯片AT24C04/512
9.3.1 AT24C04/512简介
9.3.2 AT24C04/512与单片机的连接
9.3.3 读写AT24C04/AT24C512的C语言程序
9.4 12C接口的实时时钟/日历芯片P8563
9.4.1 P8563简介
9.4.2 P8563与单片机的连接
9.4.3 读写P8563的C语言程序
9.5 单芯片温度测量芯片DS1820
9.5.1 DS1820简介
9.5.2 DS1820与单片机的连接
9.5.3 读写DSl820的C语言程序
9.6 2路8位串行模/数转换器TLC0832
9.6.1 TLC0832简介
9.6.2 TLC0832与单片机的连接
9.6.3 读写TLC0832的C语言程序
9.7 LED驱动芯片MAX7219/7221
9.7.1 MAx7219/722l简介
9.7.2 MAX7219/7221与单片机的连接
9.7.3 基于MAx7221在LED上显示十六位数据的C语言程序
9.8 1602字符液晶模块控制
9.8.1 1602字符液晶模块简介
9.8.2 1602字符液晶模块与单片机的连接
9.8.3 控制1602字符液晶显示的C语言程序
9.9 语音录放芯片ISD4002
9.9.1 ISD4002芯片简介
9.9.2 ISD4002与单片机的连接
9.9.3 基于ISD4002的语音录放系统的C语言编程
9.1 0本章小结
参考文献