单片机程序设计基础(修订版)
2019-04-15 15:24发布
生成海报
单片机程序设计基础(修订版)
下载:单片机程序设计基础(修订版) (大小:18.2MB)
单片机程序设计基础 介绍
内容简介 本书是《单片机应用程序设计技术》(修订版)一书的姐妹篇。《单片机应用程序设计技术》的内容以程序设计的经验和技巧为主,而本书内容则以程序设计的基本算法为主,目的在于全面提高单片机程序设计者的软件素质。基本内容包括:单片机常用的线性数据结构和相关算法、排序和查找算法、树和图在单片机中的实现、常用的数据处理算法及常用编码方法等。从单片机系统的实际硬件环境出发,语言通俗易懂,使读者轻松地将单片机程序设计基本算法学到手。为加强学习效果和增加实用价值,本书配套了上机学习光盘,在光盘中还提供了最新修订的子程序库和相关调试工具软件,以及众多单片机资料。
本书可作为电子技术人员自学单片机程序设计基本算法的教材,也可供高等院校电子技术类专业本科生和研究生参考。
前言 嵌入式系统的应用越来越广,我国从事嵌入式系统开发的人员也越来越多,而单片机是嵌入式系统的核心单元。从我国主要的几种电子杂志上可以看出,有关单片机应用的文章也越来越多。
在开发一种嵌入式系统产品(含单片机产品)时,有关单片机部分的工作主要是做两方面的设计:硬件设计和软件设计。在硬件设计方面,世界上几家主要的半导体公司(如INTEL,PHILIPS,MOTOROLA等)竞相推出各种高性能、低功耗、低成本的单片机和外围芯片,使我们在进行硬件设计时可以很快地得到最先进的芯片。在这种情况下,硬件设计的外部条件越来越好,集成度越来越高,在实现相同功能的情况下线路越来越简化。在软件设计方面,虽然开发工具和程序设计语言也在不断提高,但技术人员本身的软件素质对软件设计水平无疑起决定作用。软件设计水平在嵌入式系统产品开发的过程中占有重要地位,直接影响到产品的水平和竞争能力。不容置疑,在我国各大专院校、科研院所和大中型企业中,有一批专家,他们的软、硬件水平均非常高;但另一方面,我国目前绝大多数从事电子产品开发的技术人员身在基层,基本上不是计算机专业毕业的,有的没有上过大学,他们未接受过系统的软件基础理论教育,软件设计水平不太高。在软件开发过程中,他们只是不自觉地采用了一些规律性的设计方法,或者模仿别人的程序设计方法,而有更多成熟的基本方法没有被掌握,致使开发出来的软件水平不高,使产品的功能和可靠性受到一定的制约。
作者已经出版了《单片机应用程序设计技术》(修订版)一书。该书内容以程序设计的经验和技巧为主,而本书内容则以程序设计的基本算法为主,目的在于全面提高单片机程序设计者的软件素质。
软件设计是一门科学,有其自身的规律,也有很多成熟的理论和算法。对于广大电子技术人员来说,不大可能再脱产进大学系统学习基础理论,只能一边干一边学。要学习就要选教材,而目前能选到的教材大都是专为大学生编写的,如《数据结构》、《计算方法》、《线性代数》及《代数与编码》等。这些教材起点较高,偏重理论证明,不考虑单片机的特点,对于广大电子产品开发人员来说不是十分适合,学起来会感到比较抽象和吃力。
出于提高我国广大电子产品开发人员软件素质的愿望,我决定编写一本适合自学软件理论基础和基本算法的书。该书起点不高,只要有中学数学基础,并已从事了一段时间电子产品的开发,就可以看懂。学完本书后,对单片机程序设计的主要基础理论和常用成熟算法能初步掌握,在进行软件设计时,可以减少很多盲目性,并为更系统、更深入地学习计算机理论打下良好基础。
在内容上,我们选择最基本和最成熟的理论和算法予以介绍。主要范围为数据结构、计算方法、线性代数及代数与编码,但不可能介绍全部内容,只是选取与单片机应用系统开发联系最紧密的内容加以重新整理、编排,打破大学教科书的传统教材格式,基本取消推导证明过程,尽量结合单片机的特点,使广大读者能够比较顺利地理解和接受。
在单片机中应用最多的是线性数据结构,故本书第1章首先介绍常用的线性数据结构及部分基础算法;第2章和第3章集中介绍线性数据结构的排序算法和查找算法;第4章介绍几种常用的特殊算法,为进一步介绍非线性数据结构作准备;对于常用的非线性数据结构及其有关算法分别在第5,6章进行介绍;带单片机的电子仪器设备一般都具有较强的数据处理能力,为此在第7章中介绍常用线性方程组的解法;第8章介绍插值算法;第9章介绍数理统计中常用的计算方法;第10章介绍常用编码方法,这对优化设计很有帮助;第11章介绍两个实例,作为全书的一个总结;附录A介绍浮点数据处理的基本原理,这对不熟悉浮点数的读者会有一定帮助;附录B为本书上机学习光盘文件说明。
为了更好地掌握本书内容,建议上机实际运行一下书中的程序,效果一定要好得多。为配合学习,我们将书中的程序添加上主程序和各种支撑子程序以及数据样品,形成可执行、可调试的运行程序,并进行了较严格的测试,然后汇总成一张配套的上机学习光盘,附在本书中。在该光盘中还包含了经过长期考验和优化的最新版本的子程序库,实用价值较高。
本书1997年出版了第一版,受到读者好评;但也存在一些缺陷,本次修订工作就显得十分必要。修订工作如下:
(1) 对过时或不合适的字句进行修改,对插图中少量的瑕疵进行了弥补。
(2) 对汇编语言程序中的常量和变量在定义时分别用EQU和DATA进行区分,使程序更准确、更规范。
(3) 对上机学习光盘中的程序进行了全面整理,更方便上机学习。
(4) 为配合C51的推广,增加了大量与汇编语言程序对应的C算法程序。
(5) 增加了少量新内容。
在本书修订过程中,得到北京航空航天大学出版社的大力支持,在此表示衷心感谢!
由于水平有限,书中错误及不足之处敬请广大读者予以指正,不胜感谢!
作者于江西省抚州市
2003年3月
目录 第1章 单片机中常用的线性数据结构
1.1 数据结构的基本概念(1)
1.1.1 逻辑结构(2)
1.1.2 存储结构(3)
1.1.3 算法(4)
1.2 简单变量(5)
1.2.1 系统变量(5)
1.2.2 临时变量(5)
1.2.3 计数器(5)
1.2.4 指针(7)
1.3 表格(8)
1.3.1 固定表格(9)
1.3.2 动态表格(9)
1.3.3 线性表的插入算法(10)
1.3.4 线性表的删除算法(15)
1.4 数组和数据块(19)
1.4.1 一维数组(19)
1.4.2 多维数组(20)
1.4.3 数据块操作(22)
1.5 数据缓冲区(24)
1.5.1 输入缓冲区(24)
1.5.2 输出缓冲区(25)
1.6 队列(26)
1.6.1 队列的基本概念(26)
1.6.2 队列的存储结构(27)
1.6.3 入队的算法(29)
1.6.4 出队的算法(30)
1.6.5 队列的应用实例(33)
1.7 用户堆栈(35)
1.7.1 用户堆栈的基本概念(36)
1.7.2 用户堆栈的存储结构(37)
1.7.3 入栈的算法(38)
1.7.4 出栈的算法(39)
第2章 线性表的排序算法
2.1 插入排序(41)
2.2 选择排序(43)
2.3 冒泡排序(45)
2.4 归并排序(49)
2.5 快速排序(60)
2.6 排序算法比较(66)
第3章 线性表的查找算法
3.1 顺序查找(67)
3.2 折半查找(68)
3.3 分块查找(70)
3.4 串的匹配(73)
3.5 查找算法应用实例(78)
第4章 几种常用的特殊算法
4.1 递归算法(80)
4.1.1 递归算法的特点(80)
4.1.2 递归算法举例(80)
4.2 递推算法(83)
4.2.1 递推算法的适用性(83)
4.2.2 递推算法举例(83)
4.3 回溯算法(85)
4.3.1 回溯算法的特点(86)
4.3.2 回溯算法举例(86)
第5章 树及其在单片机中的算法实现
5.1树的基本概念(92)
5.1.1 树的定义(92)
5.1.2 树的基本概念(93)
5.2 二叉树(93)
5.2.1 二叉树的定义及其性质(93)
5.2.2 完全二叉树及其特点(94)
5.2.3 二叉树的顺序存储(95)
5.2.4 二叉树按编号的遍历算法(97)
5.2.5 二叉树的前根遍历算法(98)
5.2.6 二叉树的中根遍历算法(101)
5.2.7 二叉树的后根遍历算法(103)
5.3 普通树(105)
5.3.1 普通树的存储方法(105)
5.3.2 普通树的前根遍历算法(108)
5.3.3 普通树的后根遍历算法(113)
第6章 图及其在单片机中的算法实现
6.1 图的基本概念(118)
6.1.1 图的定义(118)
6.1.2 图的基本概念(118)
6.2 图的存储结构(119)
6.2.1 邻接矩阵(120)
6.2.2 邻接表(121)
6.3 图的遍历算法(123)
6.3.1 图的深度优先搜索遍历算法(123)
6.3.2 图的广度优先搜索遍历算法(129)
6.4 图的生成树和最短路径问题(136)
6.4.1 图的生成树(136)
6.4.2 图的最短路径问题(142)
6.5 网络的最小生成树和最短路径问题(145)
6.5.1 网络的最小生成树(146)
6.5.2 网络的最短路径问题(153)
第7章 常用线性方程组求解算法
7.1 引言(159)
7.2 主元消去法 (159)
7.2.1 无回代过程的主元消去法(160)
7.2.2 有回代过程的主元消去法(168)
7.3 三元线性方程组的行列式法(173)
7.3.1 行列式法概述(173)
7.3.2 三元线性方程组的行列式法(173)
第8章 常用插值算法
8.1 引言(179)
8.2 线性插值算法(179)
8.3 抛物线插值算法(181)
8.3.1 算法概述(181)
8.3.2 逐次线性插值算法(182)
8.4 插值算法应用实例(184)
8.4.1 线性插值算法应用实例(184)
8.4.2 抛物线拟合算法应用实例(186)
第9章 常用数理统计分析
9.1 引言(189)
9.2 均值和标准离差的估算(190)
9.2.1 计算(估算均值μ)(190)
9.2.2 计算S(估算标准离差σ)(191)
9.3 用数理统计方法消除粗大误差(192)
第10章 编码方法简介
10.1 信息源及编码(197)
10.1.1 顺序编码(197)
10.1.2 特征编码(198)
10.1.3 哈夫曼编码(变长码)(199)
10.2 检错码(202)
10.2.1 检错原理(202)
10.2.2 奇偶校验(203)
10.2.3 和校验(205)
10.2.4 循环冗余校验(CRC)(210)
10.3 纠错码(213)
10.3.1 纠错原理(214)
10.3.2 汉明码(214)
10.3.3 检二纠一码(218)
10.3.4 矩形码(231)
10.4 随机数发生器(235)
10.4.1 交互式随机数发生器(235)
10.4.2 用线性移位寄存器构成随机数发生器(238)
10.4.3 软件随机数发生器(242)
第11章 算法设计示例
11.1 老鼠过迷宫(245)
11.1.1 数学模型分析(245)
11.1.2 算法设计(247)
11.1.3 数据结构设计(251)
11.1.4 程序设计(252)
11.2 仪器系数自动标定(256)
11.2.1 数学模型分析(257)
11.2.2 算法设计(258)
11.2.3 数据结构设计(260)
11.2.4 程序设计(260)
附录A浮点数据处理的基本原理
A.1浮点数的基本概念(266)
A.1.1十进制浮点数(266)
A.1.2二进制浮点数(267)
A.1.3浮点数的规格化(268)
A.2浮点运算基本原理(269)
A.2.1浮点加减运算基本原理(270)
A.2.2浮点比较运算基本原理(272)
A.2.3浮点乘法运算基本原理(273)
A.2.4浮点除法运算基本原理(274)
A.2.5浮点开平方运算基本原理(274)
A.2.6浮点多项式运算基本原理(277)
A.2.7浮点超越函数运算基本原理(279)
附录B本书配套上机学习光盘说明
参考文献
---★ 本文转自『IT在线:http://www.itolhome.cn』→原文地址:http://www.itolhome.cn/thread-79799-1-3.html
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮