《MCS-51单片机应用开发实用子程序》PDF下载

  • 购买积分:15 如何计算积分?
  • 作  者:边春远,王志强编著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2005
  • ISBN:7115137129
  • 页数:459 页
图书介绍:本书介绍了MCS-51单片机在计算,转换,应用等方面的各种子程序。

目录 1

第1章 二进制定点数运算 1

1.1 加法 2

子程序1——双字节无符号数加法 2

子程序2——多字节无符号数加法 2

子程序3——双字节有符号数加法 3

子程序4——多字节有符号数加法 4

1.2 减法 5

子程序5——双字节无符号数减法 5

子程序6——多字节无符号数减法 6

子程序7——双字节有符号数减法 7

子程序8——多字节有符号数减法 8

1.3 乘法 9

子程序9——双字节无符号数乘法 9

子程序10——多字节无符号数乘法 10

子程序11——双字节有符号数乘法 11

子程序12——多字节有符号数乘法 13

1.4 除法 14

子程序13——双字节无符号数除法 14

子程序14——多字节无符号数除法 16

子程序15——双字节有符号数除法 19

子程序16——多字节有符号数除法 20

1.5 开方 21

子程序17——单字节开方 21

子程序18——双字节开方 22

子程序19——多字节开方 23

第2章 二进制浮点数运算 25

子程序20——双字节无符号数加法 26

子程序21——多字节无符号数加法 26

2.1 加法 26

子程序22——双字节有符号数加法 27

子程序23——多字节有符号数加法 28

2.2 减法 29

子程序24——双字节无符号数减法 29

子程序25——多字节无符号数减法 30

子程序26——双字节有符号数减法 31

子程序27——多字节有符号数减法 32

2.3 乘法 36

子程序28——双字节无符号数乘法 36

子程序29——多字节无符号数乘法 37

子程序30——双字节有符号数乘法 38

子程序31——多字节有符号数乘法 40

2.4 除法 42

子程序32——双字节无符号数除法 42

子程序33——多字节无符号数除法 43

子程序34——双字节有符号数除法 44

子程序35——多字节有符号数除法 46

第3章 十进制(BCD码)数运算 49

子程序37——双字节加法 50

3.1 加法 50

子程序36——单字节加法 50

子程序38——多字节加法 51

3.2 减法 51

子程序39——单字节减法 52

子程序40——双字节减法 52

子程序41——多字节减法 53

3.3 乘法 54

子程序42——单字节乘法 55

子程序44——多字节乘法 56

子程序43——双字节乘法 56

3.4 除法 57

子程序45——单字节除法 57

子程序46——双字节除法 58

子程序47——多字节除法 60

3.5 开方 62

子程序48——单字节开方 62

子程序49——双字节开方 63

子程序50——多字节开方 64

第4章 代码转换 67

子程序52——二位十六进制数转换为ASCII码 68

4.1 十六进制数到ASCII码的转换实例 68

子程序51——一位十六进制数转换为ASCII码 68

子程序53——多位十六进制数转换为ASCII码 69

4.2 ASCII码到十六进制数的转换实例 69

子程序54——ASCII码到十六进制数的转换 69

4.3 十六进制数到BCD码的转换实例 70

子程序55——单字节整数转换 70

子程序56——双字节整数转换 71

子程序57——多字节整数转换 71

子程序58——单字节十六进制小数转换成单字节BCD码小数 72

子程序59——双字节十六进制小数转换成双字节BCD码小数 73

子程序60——多字节十六进制小数转换成双字节BCD码小数 74

4.4 BCD码到十六制数的转换实例 76

子程序61——单字节整数转换 76

子程序62——双字节整数转换 77

子程序63——多字节整数转换 77

子程序64——小数转换 78

4.5 BCD码到ASCII码转换实例 79

子程序66——BCD码到ASCII码的转换 79

子程序65——双字节BCD码小数转换成双字节十六进制小数 79

4.6 ASCII码到BCD码转换实例 80

子程序67——ASCII码到BCD码的转换 80

4.7 二进制数到格雷码的转换实例 81

子程序68——二进制数到格雷码的转换 81

4.8 格雷码到二进制数的转换实例 82

子程序69——8位格雷码转换为二进制数 82

子程序70——9位格雷码转换为二进制数 82

第5章 数据变换 83

子程序71——二进制定点数移位 84

子程序72——BCD码移位 84

5.1 移位 84

5.2 求补 85

子程序73——二进制定点数求补 85

子程序74——BCD码求补 85

5.3 规格化 86

子程序75——二进制数左规 86

子程序76——二进制浮点数右规 87

子程序77——双字节定点数转换成格式化浮点数 88

子程序78——多字节二进制数转换为浮点数 89

子程序79——格式化浮点数转换成双字节定点数 90

子程序80——32位整数转换为4字节规格化浮点数 92

5.4 浮点数对阶 93

子程序81——多字节浮点数对阶 94

子程序82——多字节浮点数减法对阶 95

第6章 排序和查找 101

6.1 数据块的排序 102

子程序83——单字节无符号数据块排序 102

子程序84——单字节有符号数据块排序 103

子程序85——双字节无符号数据块排序 104

子程序87——浮点数顺序查找 105

子程序86——单字节顺序查找 105

6.2 数据的查找 105

子程序88——单字节折半查找 106

子程序89——单字节最值查找 108

子程序90——浮点数最值查找 110

子程序91——双字节字符串顺序查找 111

子程序92——N字节字符串顺序查找 112

6.3 线性表的排序 113

子程序93——插入排序 113

子程序94——选择排序 114

子程序95——冒泡排序 115

子程序96——并归排序 120

子程序97——快速排序 128

6.4 线性表的查找 131

子程序98——顺序查找单字节表 131

子程序99——顺序查找双字节表 131

子程序100——单字节无符号增序数据表对分查找 132

子程序101——双字节无符号增序数据表对分查找 133

子程序102——表的分块查找 134

子程序103——串的匹配 136

子程序104——求解阶乘问题的递归算法 138

6.5 递归实例 138

6.6 递推实例 141

子程序105——求解阶乘问题的递推算法 141

6.7 回溯实例 143

子程序106——用回溯算法求解简化背包问题 143

第7章 数学函数 147

7.1 浮点数操作与处理函数实例 148

子程序107——浮点数传送 148

子程序108——浮点数压栈 148

子程序110——浮点数代数值比较 149

子程序109——浮点数弹栈 149

子程序111——浮点绝对值函数 151

子程序112——浮点符号函数 151

子程序113——浮点取整函数 151

子程序114——浮点倒数函数 154

子程序115——浮点数牛顿迭代开平方 156

子程序116——浮点弧度数转换成浮点度数 157

子程序117——浮点度数转换成浮点弧度数 159

子程序118——最小二乘法拟合 162

子程序119——浮点数多项式计算 165

子程序120——浮点正弦函数 166

7.2 三角函数和反三角函数实例 166

子程序121——浮点余弦函数 173

子程序122——反正弦函数 175

子程序123——反余弦函数 177

子程序124——反正切函数 178

7.3 指数函数和对数函数实例 182

子程序125——以10为底的浮点指数函数 182

子程序126——以e为底的浮点指数函数 186

子程序127——以2为底的浮点指数函数 189

子程序128——以10为底的浮点对数函数 197

子程序129——以e为底的浮点对数函数 204

第8章 树和图 215

8.1 二叉树的遍历 216

子程序130——编号遍历 216

子程序131——前根遍历 217

子程序132——中根遍历 219

子程序133——后跟遍历 221

8.2 普通树的遍历实例 223

子程序134——利用父指针数组的普通树前根遍历算法 223

子程序135——利用子指针数组的普通树前根遍历算法 226

子程序136——利用子指针数组的普通树后根遍历算法 229

8.3 图的遍历实例 232

子程序137——利用邻接矩阵的图广度优先遍历算法 232

子程序138——利用邻接表的图广度优先遍历算法 235

子程序139——利用邻接矩阵的图深度优先遍历算法 239

子程序140——利用邻接表的图深度优先遍历算法 242

子程序141——利用邻接表图的深度优先生成树生成算法 245

8.4 网络最小生成树和最短路径实例 249

子程序142——利用邻接矩阵的网络最小生成树算法 249

子程序143——利用邻接表的图最短路径算法 252

第9章 延时与跳转控制 257

9.1 循环延时 258

子程序144——一重循环延时 258

子程序145——多重循环延时 258

9.2 简单延时 259

子程序146——精确延时 259

子程序147——突发等待延时 260

9.3 分支程序 261

子程序148——无条件转移 261

子程序149——条件分支转移 262

9.4 散转程序实例 265

子程序150——N种分支的散转程序 266

子程序151——256种分支的散转程序 267

第10章 人机交互接口 269

10.1 键盘接口 270

子程序152——键盘输入需要解决的问题 270

子程序153——独立式键盘接口 270

子程序154——8279键盘接口 271

子程序155——拨码盘接口 272

子程序156——键盘扫描 273

10.2 LED显示接口 274

子程序157——六位数码管时钟显示 274

子程序158——串行口扩展显示 280

子程序159——基于8155软件译码键盘显示 281

子程序160——基于8279的显示器 282

10.3 LCD显示接口 283

子程序161——段式LCD显示 283

子程序162——字符型LCD显示 284

子程序163——图形LCD显示 287

子程序164——LCD点阵字符型液晶显示 290

10.4 打印机接口实例 294

子程序165——LH-GP16打印机接口 294

子程序166——XLF微型打印机接口 295

10.5 CRT显示实例 297

子程序167——CRT显示 297

第11章 单片机测控接口 301

11.1 8位A/D转换器ADC0809接口实例 302

子程序168——用中断方式读取转换结果的数字量 302

子程序169——AD578模数转换 303

11.2 12位A/D转换器AD578/AD678/AD1678接口实例 303

11.3 12位串行A/D转换器接口实例 304

子程序170——TLC2543数据采集 304

11.4 串行A/D转换器MAX187接口实例 305

子程序171——MAX187数据采集 305

11.5 16位A/D转换器ADC1 143接口实例 307

子程序172——ADC1143数模转换 307

11.6 单路8位D/A转换器DAC0832接口实例 308

子程序173——DAC0832同步波形输出 308

11.7 单路10位D/A转换器AD7520接口实例 309

子程序174——AD7520正弦波输出 309

子程序175——AD7543数模转换 310

11.8 12位串行D/A转换器7543接口实例 310

11.9 16位D/A转换器AD1147接口实例 311

子程序176——AD1147数模转换 311

第12章 51单片机内部资源编程实例 313

12.1 51单片机I/O口的应用 314

子程序177——P1口的应用 314

子程序178——P0口的扩展使用 314

子程序179——并行I/O口编程 315

子程序180——单片机的FPGA并行配置 316

子程序181——利用T0、T1作为外部中断源 318

12.2 中断服务子程序 318

子程序182——INT0中断 319

12.3 定时器/计数器应用 320

子程序183——定时器/计数器0工作在模式0方式 321

子程序184——定时器/计数器0工作在模式1方式 322

子程序185——定时器/计数器0工作在模式2方式 323

子程序186——定时器/计数器0工作在模式3方式 323

12.4 程序存储器的扩展 325

子程序187——扩展EPROM的典型电路 325

子程序188——扩展EPROM 325

子程序189——扩展EEPROM的典型电路 326

子程序190——扩展EEPROM 327

12.5 数据存储器的扩展 328

子程序191——数据存储区扩展的典型电路 328

子程序192——扩展RAM到扩展RAM的数据复制 328

子程序193——扩展RAM到片内RAM数据复制 329

第13章 单片机数据传输接口 331

13.1 串行接口 332

子程序194——RS-232-C/RS-485接口标准 332

子程序195——数据传输率发生 332

子程序196——单片机RS-485接口 334

子程序197——用外部中断配合查询方式接收串行数据 337

子程序198——PC机和51单片机的快速串行通信 338

子程序199——单片机多机通信 340

13.2 USB总线接口 345

子程序200——USB总线协议 345

子程序201——通用USB程序模块 347

13.3 I2C总线接口 354

子程序202——基于I2C的时钟模块X1203 354

子程序203——用两个普通IO模拟I2C总线 356

子程序204——SPI和Microwire串行总线协议 360

13.4 SPI和Microwire串行总线接口 360

子程序205——SPI接口LCD显示模块EDM1079 362

子程序206——SPI接口语音录放模块ISD4104 364

子程序207——SPI接口时钟日历模块DS1302 365

子程序208——Microwire接口E2PROM存储器NM93Cx6应用 368

13.5 1-WIRE总线接口 370

子程序209——单总线数据通信协议 370

子程序210——单总线数字温度传感器 370

13.6 CAN总线接口 372

子程序211——CAN接口汇编语言编程 373

子程序212——CAN接口C语言编程 381

13.7 单片机的红外接口 389

子程序213——遥控显示数码0123456789 389

第14章 波形发生与控制 395

14.1 波形发生实例 396

子程序214——锯齿波信号发生 396

子程序215——单极性PWM信号发生 396

子程序216——正弦信号发生 397

14.2 控制实例 397

子程序217——位置式PID控制 398

子程序218——增量式PID控制 409

第15章 C51单片机软件抗干扰和数字滤波 419

15.1 单片机执行过程中的软件抗干扰措施 420

子程序219——采用指令冗余对程序“跑飞”的软件处理 420

子程序220——采用软件陷阱对程序“跑飞”的软件处理 421

子程序221——软件“看门狗”对程序“跑飞”的处理 424

子程序222——通过“复位”使系统恢复正常 425

15.2 信息冗余校验实例 426

子程序223——汉明码校验实例 426

子程序224——循环冗余校验 427

15.3 数字滤波子程序 428

子程序225——程序判断滤波 429

子程序226——中值滤波 432

子程序227——算术均值滤波 433

子程序228——加权平均滤波 439

子程序229——滑动平均滤波 440

子程序230——防脉冲干扰数字滤波 443

子程序231——一阶滞后滤波 445

附录1 ATMEL8051系列单片机 447

附录2 单片机常见缩略语 451

附录3 常用存储器型号 455