基于PROTEUS和Keil的C51程序设计项目教程——理论、仿真、实践相融合

基于PROTEUS和Keil的C51程序设计项目教程——理论、仿真、实践相融合
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: 主编
2016-07
版次: 1
ISBN: 9787121289583
定价: 39.80
装帧: 平装
开本: 16开
纸张: 胶版纸
10人买过
  • 本书以项目为导向,将C51语言的知识、编程技能技巧和单片机基本原理融入任务中, 项目软件方面包括C51的基本语法、语句及结构、数据及其类型、函数、数组、指针;Keil、PROTEUS软件应用、代码调试、串口助手数据监测等;程序设计对象涵盖单片机I/O端口应用、中断、定时/计数器原理及应用、动态扫描、LCD及点阵、键盘接口技术、A/D、D/A、串行通信应用等。强调编程规范、算法及模块化设计,书中的程序都已经通过仿真与开发板验证,保证正确性。多个程序模块可直接移植到其他项目开发中,项目实用,上手快,与实际接轨,即学即用。
      本书可作为各类大专院校、高职高专院校和各类培训用C51程序设计教学用书,也可作为程序发烧友的自学用书。通过这些项目任务的学习,读者可以轻松掌握单片机C51程序设计的基本方法和技能。 周灵彬,副教授。自2002年中北大学硕士研究生毕业后一直从事应用电子技术专业的教学工作。主要讲授单片机、程序设计、电路分析、电路PCB设计等课程并指导相关实训课程。主编《基于PROTEUS的电路与PCB设计》,参编《单片机原理、应用与PROTEUS仿真》《单片机系统的PROTEUS设计与仿真》,其中原理一书获电子学会全国优秀教材二等奖。曾主持获得浙江省教学成果二等奖,指导学生竞赛获省一等奖。 目    录

    项目1  认识编程载体——单片机和编程开发环境 1

    1.1  单片机的应用及主要类型 1

    1.2  单片机外形与框架 3

    1.2.1  内部结构框图和主要部件 3

    1.2.2  引脚:数据输入/输出通道 4

    1.3  C51语言及其开发环境简介 5

    1.3.1  C语言的历史及特点 5

    1.3.2  C51的Keil ?Vision3开发环境简介 6

    1.4 任务1:Keil C应用入门——单片机输出“Hello C51” 6

    1.4.1  建立工程、设计程序、编译 6

    1.4.2  Keil的初步调试:查看串口输出“Hello C51” 11

    1.5  任务2:结构化程序设计——建立函数概念 12

    1.5.1  仅由main()函数构成的C语言程序 13

    1.5.2  由main()函数和max()构成的C语言程序 13

    1.5.3  C51程序的一般结构 13

    1.5.4  规范书写程序语句 14

    1.5.5  程序设计流程图 14

    1.6  单片机硬件知识补充 15

    1.6.1  存储器:永久程序和临时数据的住所 15

    1.6.2  I/O(输入/输出)口结构、功能 21

    1.6.3  I/O口的负载能力 24

    1.7  知识小结 25

    习题与思考1 25

    项目2  多变的花样灯 26

    2.1  任务1:点亮一个灯 26

    2.1.1  一位引脚定义和应用 26

    2.1.2  一组引脚定义、输入/输出1字节数据 28

    2.1.3  亮灯逻辑 28

    2.1.4  PROTEUS界面与元件操作 29

    2.1.5  亮一个灯的电路、程序设计 33

    2.1.6  编译、代码下载、仿真、测判 34

    2.1.7  STC单片机代码下载 35

    2.1.8  实物制作与上电测试 39

    2.1.9  进阶设计与思路点拨1:亮多个灯 39

    2.1.10  进阶设计与思路点拨2:用简易数码管显示自己的学号 40

    2.2  任务2:有规律变化的花样灯——亮点流动 41

    2.2.1  任务要求与分析 41

    2.2.2  头文件reg51.h解读 42

    2.2.3  亮点流动的程序设计——依序而下 43

    2.2.4  编译、代码下载、仿真、测判 44

    2.2.5  应用移位库函数_crol_设计亮点流动程序 44

    2.3  任务3:有规律变化的花样灯一一亮起来 46

    2.3.1  任务要求与分析 46

    2.3.2 用“位”运算符实现一一亮灯 46

    2.3.3  预处理:条件编译#if、#else、#endif等 48

    2.3.4  设计延时函数头文件“dly05s.h” 48

    2.3.5  流程与程序设计 49

    2.3.6  编译、代码下载、仿真、测判 49

    2.3.7  进阶设计与思路点拨3:1~8个灯逐一熄灭 49

    2.4  任务4:有规律变化的花样灯——高低4位交替闪烁 50

    2.4.1  任务要求与分析 50

    2.4.2  流程与程序设计 51

    2.4.3  编译、代码下载、仿真、测判 51

    2.4.4  进阶设计与思路点拨4:两个亮点相向或相背运动 51

    2.4.5  进阶设计与思路点拨5:用移位函数实现两个亮点相向运动 54

    2.4.6  进阶设计与思路点拨6:用移位函数实现两个亮点相背运动 54

    2.5  任务5:3种效果的花样灯设计 55

    2.5.1  任务与要求 55

    2.5.2  流程与程序设计 55

    2.5.3  编译、代码下载、仿真、测判 56

    2.5.4  在Keil中进行延时程序调试 56

    2.6  算术运算、赋值运算 58

    2.6.1  算术运算 58

    2.6.2  赋值及复合赋值运算 59

    2.7  初识函数 60

    2.7.1  函数格式 60

    2.7.2  函数的调用中参数的传递 60

    2.7.3  自定义函数的声明 61

    2.7.4  预处理:#include 引用库、自定义函数 61

    2.7.5  设计变时长的延时函数头文件Dly_nms.h 62

    2.7.6  进阶设计与思路点拨7:变速流水灯 63

    2.8  知识小结 63

    习题与思考2 63

    项目3  键控花样灯 65

    3.1  任务1:键控灯1(用if语句实现) 65

    3.1.1  任务要求与分析 65

    3.1.2  if条件语句结构 66

    3.1.3  关系运算符和关系表达式 68

    3.1.4  程序流程及程序设计 68

    3.1.5  仿真、分析、记录 69

    3.2  任务2:键控灯2(用if-else语句实现) 69

    3.2.1  任务要求与分析 69

    3.2.2  程序流程及程序设计 70

    3.2.3  仿真、分析、记录 70

    3.3  任务3:键控灯3(用if-else-if多分支语句实现) 71

    3.3.1  任务要求与分析 71

    3.3.2  程序流程及程序设计 72

    3.3.3  仿真、分析、记录 72

    3.4  任务4:键控灯4(用if嵌套语句实现) 72

    3.4.1  任务要求与分析 72

    3.4.2  if语句嵌套 73

    3.4.3  程序流程及程序设计 73

    3.4.4  仿真、分析、记录 74

    3.5  任务5:键控灯5(用switch多分支语句实现) 74

    3.5.1  任务要求与分析 74

    3.5.2  switch语句 75

    3.5.3  程序流程与程序设计 76

    3.5.4  仿真、分析、记录 77

    3.5.5  PROTEUS单步调试 77

    3.5.6  进阶设计1 80

    3.6  任务6:学习循环结构,求  81

    3.6.1  goto语句 81

    3.6.2  while语句 82

    3.6.3  do-while语句 83

    3.6.4  for语句 83

    3.6.5  循环结构的嵌套与跳转 84

    3.6.6  break语句 85

    3.6.7  continue语句 85

    3.7  任务7:键控灯6(用for、while语句实现) 85

    3.7.1  任务要求与分析 85

    3.7.2  程序流程与程序设计 86

    3.7.3  仿真、分析、记录 87

    3.7.4  进阶设计2 87

    3.8  任务8:键控灯7(用for、break语句实现) 88

    3.8.1  任务要求与分析 88

    3.8.2  程序流程与程序设计 88

    3.8.3  仿真、分析、记录 89

    3.8.4  将break改成continue的变化 89

    3.9  任务9:一位示意计数器设计 90

    3.9.1  任务要求与分析 90

    3.9.2  程序流程与程序设计 91

    3.9.3  仿真、分析、记录 91

    3.9.4  进阶设计3:两位示意计数器设计 91

    3.9.5  进阶设计4:两位十进制计数器设计 91

    3.10  知识小结 92

    习题与思考3 92

    项目4  逻辑思维训练 95

    4.1  任务1:用printf语句输出各种类型数据 95

    4.1.1  数据是对描述对象的数学抽象 95

    4.1.2  C51的数据类型 96

    4.1.3  标识符与关键字 97

    4.1.4  常量与变量 97

    4.1.5  宏定义(#define)、数据类型的重新命名(typedef) 99

    4.1.6  C51的输入/输出函数 100

    4.1.7  从单片机串口输出各种数据 102

    4.1.8  数据的存储器类型 104

    4.1.9  C51变量的存储模式(编译模式) 105

    4.1.10  在Keil中查看各变量的存储地址及数值 105

    4.2  任务2:歌星大赛计分——简单统计运算 107

    4.2.1  任务要求与分析 107

    4.2.2  算法设计 108

    4.2.3  流程与程序设计 108

    4.2.4  PROTEUS串口输出测试电路设计 109

    4.2.5  编译、代码下载、仿真、测判 110

    4.3  任务3:求车号是多少——推理 111

    4.3.1  任务要求与分析 111

    4.3.2  算法设计 111

    4.3.3  外部函数调用——关键字extern 112

    4.3.4  流程与程序设计 112

    4.3.5  编译、代码下载、仿真、测判 113

    4.3.6  进阶设计与思路点拨1:角谷猜想 114

    4.4  任务4:谁是罪犯——逻辑运算 114

    4.4.1  任务要求与分析 114

    4.4.2  逻辑运算、条件运算 115

    4.4.3  算法设计 116

    4.4.4  流程与程序设计 118

    4.4.5  编译、代码下载、仿真、测判 119

    4.4.6  进阶设计与思路点拨2:新娘和新郞 119

    4.5  任务5:百钱百鸡问题——穷举、组合 120

    4.5.1  任务要求与分析 120

    4.5.2  算法设计 120

    4.5.3  流程与程序设计 121

    4.5.4  编译、代码下载、仿真、测判 122

    4.5.5  进阶设计与思路点拨3:换钱币 122

    4.6  任务6:数据从小到大排序——数组应用 122

    4.6.1  任务要求与分析 122

    4.6.2  数组 123

    4.6.3  算法设计 125

    4.6.4  流程与程序设计 126

    4.6.5  编译、代码下载、仿真、测判 127

    4.6.6  进阶设计与思路点拨4:从大到小排序 127

    4.7  任务7:求解约瑟夫问题——结构数组应用 128

    4.7.1  任务要求与分析 128

    4.7.2  结构体、结构数组 128

    4.7.3  算法设计 130

    4.7.4  流程与程序设计 131

    4.7.5  编译、代码下载、仿真、测判 132

    4.7.6  进阶设计与思路点拨5:数3出局 132

    4.8  局部变量、全局变量、外部变量 133

    4.9  知识小结 135

    习题与思考4 135

    项目5  定时器/计数器、中断应用 138

    5.1  任务1:用外中断干扰流水灯 138

    5.1
  • 内容简介:
    本书以项目为导向,将C51语言的知识、编程技能技巧和单片机基本原理融入任务中, 项目软件方面包括C51的基本语法、语句及结构、数据及其类型、函数、数组、指针;Keil、PROTEUS软件应用、代码调试、串口助手数据监测等;程序设计对象涵盖单片机I/O端口应用、中断、定时/计数器原理及应用、动态扫描、LCD及点阵、键盘接口技术、A/D、D/A、串行通信应用等。强调编程规范、算法及模块化设计,书中的程序都已经通过仿真与开发板验证,保证正确性。多个程序模块可直接移植到其他项目开发中,项目实用,上手快,与实际接轨,即学即用。
      本书可作为各类大专院校、高职高专院校和各类培训用C51程序设计教学用书,也可作为程序发烧友的自学用书。通过这些项目任务的学习,读者可以轻松掌握单片机C51程序设计的基本方法和技能。
  • 作者简介:
    周灵彬,副教授。自2002年中北大学硕士研究生毕业后一直从事应用电子技术专业的教学工作。主要讲授单片机、程序设计、电路分析、电路PCB设计等课程并指导相关实训课程。主编《基于PROTEUS的电路与PCB设计》,参编《单片机原理、应用与PROTEUS仿真》《单片机系统的PROTEUS设计与仿真》,其中原理一书获电子学会全国优秀教材二等奖。曾主持获得浙江省教学成果二等奖,指导学生竞赛获省一等奖。
  • 目录:
    目    录

    项目1  认识编程载体——单片机和编程开发环境 1

    1.1  单片机的应用及主要类型 1

    1.2  单片机外形与框架 3

    1.2.1  内部结构框图和主要部件 3

    1.2.2  引脚:数据输入/输出通道 4

    1.3  C51语言及其开发环境简介 5

    1.3.1  C语言的历史及特点 5

    1.3.2  C51的Keil ?Vision3开发环境简介 6

    1.4 任务1:Keil C应用入门——单片机输出“Hello C51” 6

    1.4.1  建立工程、设计程序、编译 6

    1.4.2  Keil的初步调试:查看串口输出“Hello C51” 11

    1.5  任务2:结构化程序设计——建立函数概念 12

    1.5.1  仅由main()函数构成的C语言程序 13

    1.5.2  由main()函数和max()构成的C语言程序 13

    1.5.3  C51程序的一般结构 13

    1.5.4  规范书写程序语句 14

    1.5.5  程序设计流程图 14

    1.6  单片机硬件知识补充 15

    1.6.1  存储器:永久程序和临时数据的住所 15

    1.6.2  I/O(输入/输出)口结构、功能 21

    1.6.3  I/O口的负载能力 24

    1.7  知识小结 25

    习题与思考1 25

    项目2  多变的花样灯 26

    2.1  任务1:点亮一个灯 26

    2.1.1  一位引脚定义和应用 26

    2.1.2  一组引脚定义、输入/输出1字节数据 28

    2.1.3  亮灯逻辑 28

    2.1.4  PROTEUS界面与元件操作 29

    2.1.5  亮一个灯的电路、程序设计 33

    2.1.6  编译、代码下载、仿真、测判 34

    2.1.7  STC单片机代码下载 35

    2.1.8  实物制作与上电测试 39

    2.1.9  进阶设计与思路点拨1:亮多个灯 39

    2.1.10  进阶设计与思路点拨2:用简易数码管显示自己的学号 40

    2.2  任务2:有规律变化的花样灯——亮点流动 41

    2.2.1  任务要求与分析 41

    2.2.2  头文件reg51.h解读 42

    2.2.3  亮点流动的程序设计——依序而下 43

    2.2.4  编译、代码下载、仿真、测判 44

    2.2.5  应用移位库函数_crol_设计亮点流动程序 44

    2.3  任务3:有规律变化的花样灯一一亮起来 46

    2.3.1  任务要求与分析 46

    2.3.2 用“位”运算符实现一一亮灯 46

    2.3.3  预处理:条件编译#if、#else、#endif等 48

    2.3.4  设计延时函数头文件“dly05s.h” 48

    2.3.5  流程与程序设计 49

    2.3.6  编译、代码下载、仿真、测判 49

    2.3.7  进阶设计与思路点拨3:1~8个灯逐一熄灭 49

    2.4  任务4:有规律变化的花样灯——高低4位交替闪烁 50

    2.4.1  任务要求与分析 50

    2.4.2  流程与程序设计 51

    2.4.3  编译、代码下载、仿真、测判 51

    2.4.4  进阶设计与思路点拨4:两个亮点相向或相背运动 51

    2.4.5  进阶设计与思路点拨5:用移位函数实现两个亮点相向运动 54

    2.4.6  进阶设计与思路点拨6:用移位函数实现两个亮点相背运动 54

    2.5  任务5:3种效果的花样灯设计 55

    2.5.1  任务与要求 55

    2.5.2  流程与程序设计 55

    2.5.3  编译、代码下载、仿真、测判 56

    2.5.4  在Keil中进行延时程序调试 56

    2.6  算术运算、赋值运算 58

    2.6.1  算术运算 58

    2.6.2  赋值及复合赋值运算 59

    2.7  初识函数 60

    2.7.1  函数格式 60

    2.7.2  函数的调用中参数的传递 60

    2.7.3  自定义函数的声明 61

    2.7.4  预处理:#include 引用库、自定义函数 61

    2.7.5  设计变时长的延时函数头文件Dly_nms.h 62

    2.7.6  进阶设计与思路点拨7:变速流水灯 63

    2.8  知识小结 63

    习题与思考2 63

    项目3  键控花样灯 65

    3.1  任务1:键控灯1(用if语句实现) 65

    3.1.1  任务要求与分析 65

    3.1.2  if条件语句结构 66

    3.1.3  关系运算符和关系表达式 68

    3.1.4  程序流程及程序设计 68

    3.1.5  仿真、分析、记录 69

    3.2  任务2:键控灯2(用if-else语句实现) 69

    3.2.1  任务要求与分析 69

    3.2.2  程序流程及程序设计 70

    3.2.3  仿真、分析、记录 70

    3.3  任务3:键控灯3(用if-else-if多分支语句实现) 71

    3.3.1  任务要求与分析 71

    3.3.2  程序流程及程序设计 72

    3.3.3  仿真、分析、记录 72

    3.4  任务4:键控灯4(用if嵌套语句实现) 72

    3.4.1  任务要求与分析 72

    3.4.2  if语句嵌套 73

    3.4.3  程序流程及程序设计 73

    3.4.4  仿真、分析、记录 74

    3.5  任务5:键控灯5(用switch多分支语句实现) 74

    3.5.1  任务要求与分析 74

    3.5.2  switch语句 75

    3.5.3  程序流程与程序设计 76

    3.5.4  仿真、分析、记录 77

    3.5.5  PROTEUS单步调试 77

    3.5.6  进阶设计1 80

    3.6  任务6:学习循环结构,求  81

    3.6.1  goto语句 81

    3.6.2  while语句 82

    3.6.3  do-while语句 83

    3.6.4  for语句 83

    3.6.5  循环结构的嵌套与跳转 84

    3.6.6  break语句 85

    3.6.7  continue语句 85

    3.7  任务7:键控灯6(用for、while语句实现) 85

    3.7.1  任务要求与分析 85

    3.7.2  程序流程与程序设计 86

    3.7.3  仿真、分析、记录 87

    3.7.4  进阶设计2 87

    3.8  任务8:键控灯7(用for、break语句实现) 88

    3.8.1  任务要求与分析 88

    3.8.2  程序流程与程序设计 88

    3.8.3  仿真、分析、记录 89

    3.8.4  将break改成continue的变化 89

    3.9  任务9:一位示意计数器设计 90

    3.9.1  任务要求与分析 90

    3.9.2  程序流程与程序设计 91

    3.9.3  仿真、分析、记录 91

    3.9.4  进阶设计3:两位示意计数器设计 91

    3.9.5  进阶设计4:两位十进制计数器设计 91

    3.10  知识小结 92

    习题与思考3 92

    项目4  逻辑思维训练 95

    4.1  任务1:用printf语句输出各种类型数据 95

    4.1.1  数据是对描述对象的数学抽象 95

    4.1.2  C51的数据类型 96

    4.1.3  标识符与关键字 97

    4.1.4  常量与变量 97

    4.1.5  宏定义(#define)、数据类型的重新命名(typedef) 99

    4.1.6  C51的输入/输出函数 100

    4.1.7  从单片机串口输出各种数据 102

    4.1.8  数据的存储器类型 104

    4.1.9  C51变量的存储模式(编译模式) 105

    4.1.10  在Keil中查看各变量的存储地址及数值 105

    4.2  任务2:歌星大赛计分——简单统计运算 107

    4.2.1  任务要求与分析 107

    4.2.2  算法设计 108

    4.2.3  流程与程序设计 108

    4.2.4  PROTEUS串口输出测试电路设计 109

    4.2.5  编译、代码下载、仿真、测判 110

    4.3  任务3:求车号是多少——推理 111

    4.3.1  任务要求与分析 111

    4.3.2  算法设计 111

    4.3.3  外部函数调用——关键字extern 112

    4.3.4  流程与程序设计 112

    4.3.5  编译、代码下载、仿真、测判 113

    4.3.6  进阶设计与思路点拨1:角谷猜想 114

    4.4  任务4:谁是罪犯——逻辑运算 114

    4.4.1  任务要求与分析 114

    4.4.2  逻辑运算、条件运算 115

    4.4.3  算法设计 116

    4.4.4  流程与程序设计 118

    4.4.5  编译、代码下载、仿真、测判 119

    4.4.6  进阶设计与思路点拨2:新娘和新郞 119

    4.5  任务5:百钱百鸡问题——穷举、组合 120

    4.5.1  任务要求与分析 120

    4.5.2  算法设计 120

    4.5.3  流程与程序设计 121

    4.5.4  编译、代码下载、仿真、测判 122

    4.5.5  进阶设计与思路点拨3:换钱币 122

    4.6  任务6:数据从小到大排序——数组应用 122

    4.6.1  任务要求与分析 122

    4.6.2  数组 123

    4.6.3  算法设计 125

    4.6.4  流程与程序设计 126

    4.6.5  编译、代码下载、仿真、测判 127

    4.6.6  进阶设计与思路点拨4:从大到小排序 127

    4.7  任务7:求解约瑟夫问题——结构数组应用 128

    4.7.1  任务要求与分析 128

    4.7.2  结构体、结构数组 128

    4.7.3  算法设计 130

    4.7.4  流程与程序设计 131

    4.7.5  编译、代码下载、仿真、测判 132

    4.7.6  进阶设计与思路点拨5:数3出局 132

    4.8  局部变量、全局变量、外部变量 133

    4.9  知识小结 135

    习题与思考4 135

    项目5  定时器/计数器、中断应用 138

    5.1  任务1:用外中断干扰流水灯 138

    5.1
查看详情
12
相关图书 / 更多