新書推薦:
《
偿还:债务与财富的阴暗面
》
售價:NT$
347.0
《
清华大学藏战国竹简校释(壹):《命训》诸篇
》
售價:NT$
408.0
《
封建社会农民战争问题导论(光启文库)
》
售價:NT$
296.0
《
虚弱的反攻:开禧北伐
》
售價:NT$
429.0
《
泰山:一种中国信仰专论(法国汉学经典译丛)
》
售價:NT$
380.0
《
花外集斠箋
》
售價:NT$
704.0
《
有兽焉.8
》
售價:NT$
305.0
《
大学问·明清经济史讲稿
》
售價:NT$
330.0
|
內容簡介: |
本书以项目为导向,将C51语言的知识、编程技能技巧和单片机基本原理融入任务中, 项目软件方面包括C51的基本语法、语句及结构、数据及其类型、函数、数组、指针;Keil、PROTEUS软件应用、代码调试、串口助手数据监测等;程序设计对象涵盖单片机IO端口应用、中断、定时计数器原理及应用、动态扫描、LCD及点阵、键盘接口技术、AD、DA、串行通信应用等。强调编程规范、算法及模块化设计,书中的程序都已经通过仿真与开发板验证,保证正确性。多个程序模块可直接移植到其他项目开发中,项目实用,上手快,与实际接轨,即学即用。
本书可作为各类大专院校、高职高专院校和各类培训用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 IO(输入输出)口结构、功能21
1.6.3 IO口的负载能力24
1.7 知识小结25
习题与思考125
项目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.h62
2.7.6 进阶设计与思路点拨7:变速流水灯63
2.8 知识小结63
习题与思考263
项目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 进阶设计180
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 进阶设计287
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
习题与思考392
项目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 外部函数调用——关键字extern112
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:新娘和新?O119
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
习题与思考4135
项目5 定时器计数器、中断应用138
5.1 任务1:用外中断干扰流水灯138
5.1.1 任务要求与分析138
5.1.2 中断系统简介139
5.1.3 中断控制寄存器140
5.1.4 中断过程141
5.1.5 清除中断请求的补充142
5.1.6 中断函数的编写143
5.1.7 算法设计144
5.1.8 程序设计144
5.1.9 编译、代码下载、仿真、测判145
5.2 任务2:两个外中断干扰流水灯145
5.2.1 任务要求与分析145
5.2.2 中断嵌套146
5.2.3 程序设计146
5.2.4 编译、代码下载、仿真、测判147
5.2.5 进阶设计 1148
5.3 任务3:多少个小球——计数器应用148
5.3.1 任务要求与分析148
5.3.2 定时器计数器T0、T1149
5.3.3 定时器计数器的控制及工作方式150
5.3.4 定时器计数器的计数容量及初值152
5.3.5 定时器计数器应用的基本步骤153
5.3.6 认识数码管、设计电路154
5.3.7 子任务:单个数码管循环显示手机短号156
5.3.8 算法与程序设计157
5.3.9 编译、代码下载、仿真、测判158
5.3.10 进阶设计2:999个小球,如何显示?158
5.3.11 虚拟数字时钟信号 应用159
5.4 任务4:定时产生2500Hz方波160
5.4.1 任务要求与分析160
5.4.2 查询方式下的程序框架160
5.4.3 查询方式下程序流程及程序设计161
5.4.4 用虚拟示波器观测信号周期162
5.4.5 定时中断方式下程序设计164
5.4.6 编译、代码下载、仿真、测判165
5.4.7 听单片机发声165
5.5 任务5:秒闪灯——长时间定时(应用static)165
5.5.1 任务要求与分析165
5.5.2 算法设计166
5.5.3 程序设计166
5.5.4 C51变量的存储类型167
5.5.5 编译、代码下载、仿真、测判168
5.5.6 进阶设计3:看谁耳尖手快——反应时间测试168
5.5.7 进阶设计4:可反复测试反应时间的设计169
5.6 任务6:T0定时产生不同频率的方波(推算公约数
|
內容試閱:
|
前 言
程序设计是理工科专业学生都要学习的课程。C语言既有高级语言的特性,接近自然语言和数学公式计算机语言,又有直接操纵硬件的能力,并以其丰富灵活的控制和数据结构、简洁高效的语句表达、清晰的程序结构和良好的可移植性被选为程序设计首选语言。程序设计学习是有难度的,鉴于高职学生的学习特点和就业岗位的针对性,程序设计类课程更需要针对性地应用落地学习才更有效。且C语言也是智能控制产品或系统的软件开发首选编程语言,故本书将C语言程序设计与最基础的51内核单片机知识融合。
本教材有如下特点:
1. 重渔程序设计方法
曾有学生在有程序设计内容的课堂上问你是怎么想到的?他这是求捕鱼之法,而不是简单的怎么写?求鱼!这一问也道出了程序设计教学的根本所在教学生如何想到的思维方法,进而训练其编程能力。故思维训练是本教材的核心,按照程序开发流程:问题算法设计数据抽象流程设计语句选择程序书写调试、测试与判定总结,解决学生 怎么想?(思想方法)怎么写(编程落地)?的疑问,培养学生分析和解决问题的捕鱼能力,而不是直接给鱼,即例程!同时,本书也努力建立全局意识,先整体后模块,通过算法设计、程序框架、程序流程等强调从整体上把控设计,而不是只记得零星的句式或语法;还特地安排强化逻辑思维训练项目,包括歌星大赛计分、推理车号、谁是罪犯、百钱百鸡、数据排序等任务,既为掌握程序设计的思想和方法来培养程序员,更重要的是训练思维解决实际问题,培养学生探索创新精神和实践能力。这对每个人都非常有用。
2.理论、仿真、实践相融合
针对高职学生乐于形象思维,适合在做中学的学习特点,本书应用最先进的单片机和嵌入式系统及电子电路仿真软件PROTEUS作为仿真教学与仿真实践的平台,将各种仿真调试工具融入其中,培养学生会想、会写、会调、会测试的综合能力。
仿真设计实践使学习如虎添翼,通过仿真实践快速完成程序设计,再经开发板实物测试,虚实无缝对接,使虚拟仿真落地生根,有效增强学习信心,培养学生程序设计能力。
3.趣味任务驱动,循序渐进
本书共设计了8个项目,包括42个任务、32个进阶任务,实用、上手快,与实际接轨,即学即用。项目任务的选取融合了知识、技术、技能、趣味性,如对象与工具、花样灯、键控灯、思维训练、小球计数、秒闪灯、测量正脉冲宽度、看谁反应快、键控PWM调光灯、可调时钟、多功能秒表、打地鼠游戏、生日快乐歌、串口控制88点阵、LCD显示的简易电压表、简易波形发生器等。
遵循学习规律和人的发展规律,以项目为导向,将知识点与技能、技巧、规范融入任务中,化解学习难度,通过完成任务来学习知识、训练技能、培养专业素养,力求让读者在完成每一个任务项目的实践中解决若干个技术难点。整体内容组织由易到难,由浅入深,由单一到综合,循序渐进,可操作性强。每一个任务都以步步高式层次化内容及组织安排,在进阶设计环节设置了思路点拨,满足不同能力学生的提升需求,举一反三,触类旁通。
4.注意工程意识的培养,强调编程书写规范、模块化设计
源码编写注重规范,有注释有说明有层次,引导学生规范的意识。
全书共8个项目,项目1是认识编程载体单片机和编程开发环境,项目2~3是花样灯及键控灯,训练单片机输入输出口应用及C51的基本运算、函数和语句结构。项目4~5突出算法设计、流程设计及测试,项目4是逻辑思维训练,包含数据类型、数据的存储模式&存储器类型、外部函数调用、数组、穷举、排序、逻辑运算、数据串口输出检测等;项目5主要是定时&计数器、外中断等内部资源应用。项目6~8为综合应用,突出结构化程序设计、程序框架设计,包含的主要技术有指针应用、动态扫描、键盘、串口应用、LCD、串行AD、DA等。其中一些实用模块头文件如dly_nms.h、seg_dis.h、key16.h、lcd1602.h、ADC0831.h、serial_init.c可移植到其他项目中。各任务的源程序均通过仿真测试、实物运行成功,保证正确性。
5.强调程序调试
运行测试异常或运行有问题时需要进行调试,而源码调试是解决问题的重要方法。本书讲解了Keil调试、PROTEUS调试及用串口助手实时监测数据。
本书项目1及2.1~2.2节、6.3~6.6节由周灵彬编写,2.3~2.7节及项目3.1~3.5节由刘红兵编写,3.6~3.9节及项目4由江伟编写,项目5和附录由蒋鸣东编写,项目7~8由疏晓宇编写。配套的实验板由周灵彬设计,全书由周灵彬主编并统稿。何炜杰、周晨翔、罗冬冬、潘蒙坤、陈文俊、沈翃等同学对本书所有程序进行了验证与调试。
感谢徐爱钧教授和王荣华工程师提出许多宝贵意见!
感谢张靖武教授鼓励和指导!
感谢绍兴职业技术学院与绍兴市教育局的重视与政策支持!感谢家人的默默付出与支持!感谢可爱的同学的配合与建议!感谢广州市风标电子技术有限公司、浙江利勃海尔中车交通公司、祈禧电器公司的大力支持!
本书可作为各类大专院校、高职高专院校、各类培训用C51程序设计教学用书,也可作为单片机技术应用的爱好者、程序发烧友的自学用书。相信通过本书的学习,读者能掌握51单片机的基本硬件知识,具备C51程序设计的基本技能。
由于作者水平有限,书中难免存在的谬误之处,敬请读者批评指正!
编 者
2016.6
|
|