计算机
类型
可以朗读
语音朗读
130千字
字数
2021-01-01
发行日期
展开全部
主编推荐语
项目导向C51编程教材,融合理论与实践,提供丰富配套资源。
内容简介
本书是项目导向、任务驱动式的教材,将C51语言的知识、编程技巧和单片机原理及接口技术融入键控花样灯、音乐门铃、DS18B20测温、PWM调光灯、打地鼠等42个任务中。以工程教育为理念,采用五步软件开发流程(谋、写、仿、测、判)来组织内容。涵盖C51的基本语法,单片机的中断、定时及动态扫描、LCD及点阵、键盘、A/D、D/A等接口技术,代码调试、串口助手数据监测等内容。本书例程均经仿真调试与实验板运行验证。多个程序模块可直接移植到其他项目开发中。为配合本书的教学,作者在“浙江省高等学校在线开放课程共享平台”“学银在线”提供了配套的在线开放课程,还提供PPT、微课讲解、源代码、在线测试实验、作业、试卷库等配套资源,形成立体化移动式教学资源,供读者免费使用。另外,扫描书中的二维码,可以观看配套视频。
目录
- 封面
- 版权信息
- 内容简介
- 前言
- 项目1 认识编程载体——单片机和编程开发环境
- 1.1 单片机的应用及主要类型
- 1.2 单片机的外形与框架
- 1.2.1 内部结构框图和主要部件
- 1.2.2 引脚:数据输入/输出通道
- 1.3 C51语言及其开发环境简介
- 1.3.1 C语言的历史及特点
- 1.3.2 C51的KeilμVision开发环境简介
- 1.4 任务1:Keil C应用入门——单片机输出“Hello C51”
- 1.4.1 建立工程、设计程序、编译
- 1.4.2 Keil的初步调试:查看串口输出“Hello C51”
- 1.5 结构化程序设计——建立函数概念
- 1.5.1 仅由main()函数构成的C语言程序
- 1.5.2 由main()函数和max()函数构成的C语言程序
- 1.5.3 C51程序的一般结构
- 1.5.4 规范书写程序语句
- 1.5.5 程序设计流程
- 1.6 单片机硬件知识补充
- 1.6.1 存储器:永久程序和临时数据的住所
- 1.6.2 I/O(输入/输出)口结构、功能
- 1.6.3 I/O口的负载能力
- 1.6.4 STC89系列单片机新增资源及I/O口驱动能力举例
- 1.7 知识小结
- 习题与思考1
- 项目2 多变的花样灯
- 2.1 任务1:点亮一个灯
- 2.1.1 一个引脚定义和应用
- 2.1.2 定义一组引脚,输入/输出1字节数据
- 2.1.3 亮灯逻辑
- 2.1.4 Proteus界面与元器件操作
- 2.1.5 亮一个LED的电路、程序设计
- 2.1.6 编译、代码下载、仿真、测判
- 2.1.7 STC单片机代码下载
- 2.1.8 实物制作与上电测试
- 2.1.9 进阶设计与思路点拨1:亮多个灯
- 2.1.10 进阶设计与思路点拨2:用BCD数码管显示自己的学号
- 2.2 任务2:有规律变化的花样灯——亮点流动
- 2.2.1 任务要求与分析
- 2.2.2 头文件reg51.h解读
- 2.2.3 流程与程序设计——一个亮点流动
- 2.2.4 编译、代码下载、仿真、测判
- 2.2.5 应用移位函数_crol_设计亮点流动程序
- 2.3 任务3:有规律变化的花样灯——一一亮灯
- 2.3.1 任务要求与分析
- 2.3.2 用“位”运算符实现一一亮灯
- 2.3.3 预处理:条件编译#if、#else、#endif等
- 2.3.4 设计延时函数头文件“dly05s.h”
- 2.3.5 流程与程序设计
- 2.3.6 编译、代码下载、仿真、测判
- 2.3.7 进阶设计与思路点拨3:1~8个灯逐一熄灭
- 2.4 任务4:有规律变化的花样灯——高/低4位交替闪烁
- 2.4.1 任务要求与分析
- 2.4.2 流程与程序设计
- 2.4.3 编译、代码下载、仿真、测判
- 2.4.4 进阶设计与思路点拨4:用“>>”“<<”实现两个亮点相向和相背运动
- 2.4.5 进阶设计与思路点拨5:用移位函数实现两个亮点相向运动
- 2.4.6 进阶设计与思路点拨6:用移位函数实现两个亮点相背运动
- 2.5 任务5:三种效果的花样灯设计
- 2.5.1 任务与要求
- 2.5.2 流程与程序设计
- 2.5.3 编译、代码下载、仿真、测判
- 2.5.4 在Keil中进行延时程序调试
- 2.6 算术运算、赋值运算
- 2.6.1 算术运算
- 2.6.2 赋值及复合赋值运算
- 2.7 初识函数
- 2.7.1 函数格式
- 2.7.2 函数调用中参数的传递
- 2.7.3 自定义函数的声明
- 2.7.4 预处理:#include引用库、自定义函数
- 2.7.5 设计变时长的延时函数头文件Dly_nms.h
- 2.7.6 进阶设计与思路点拨7:变速流水灯
- 2.8 知识小结
- 习题与思考2
- 项目3 键控花样灯
- 3.1 任务1:键控花样灯1(用if语句实现)
- 3.1.1 任务要求与分析
- 3.1.2 if条件语句的结构
- 3.1.3 关系运算符和关系表达式
- 3.1.4 流程及程序设计
- 3.1.5 编译、代码下载、仿真、测判
- 3.2 任务2:键控花样灯2(用if-else语句实现)
- 3.2.1 任务要求与分析
- 3.2.2 流程及程序设计
- 3.2.3 编译、代码下载、仿真、测判
- 3.3 任务3:键控花样灯3(用if-else-if多分支语句实现)
- 3.3.1 任务要求与分析
- 3.3.2 流程及程序设计
- 3.3.3 编译、代码下载、仿真、测判
- 3.4 任务4:键控花样灯4(用if嵌套语句实现)
- 3.4.1 任务要求与分析
- 3.4.2 if语句嵌套
- 3.4.3 流程及程序设计
- 3.4.4 编译、代码下载、仿真、测判
- 3.5 任务5:键控花样灯5(用switch多分支语句实现)
- 3.5.1 任务要求与分析
- 3.5.2 switch语句
- 3.5.3 流程与程序设计
- 3.5.4 编译、代码下载、仿真、测判
- 3.5.5 加载*.omf代码文件,实施Proteus单步调试
- 3.5.6 进阶设计与思路点拨1
- 3.6 任务6:学习循环结构,求□
- 3.6.1 goto语句
- 3.6.2 while语句
- 3.6.3 do-while语句
- 3.6.4 for语句
- 3.6.5 循环结构的嵌套与跳转
- 3.6.6 break语句
- 3.6.7 continue语句
- 3.7 任务7:键控花样灯6(用for、while语句实现)
- 3.7.1 任务要求与分析
- 3.7.2 流程与程序设计
- 3.7.3 编译、代码下载、仿真、测判
- 3.7.4 进阶设计与思路点拨2
- 3.8 任务8:键控花样灯7(用for、break语句实现)
- 3.8.1 任务要求与分析
- 3.8.2 流程与程序设计
- 3.8.3 编译、代码下载、仿真、测判
- 3.8.4 将break改成continue的变化
- 3.9 任务9:一位示意计数器设计
- 3.9.1 任务要求与分析
- 3.9.2 流程与程序设计
- 3.9.3 编译、代码下载、仿真、测判
- 3.9.4 进阶设计与思路点拨3:两位示意计数器设计
- 3.9.5 进阶设计与思路点拨4:两位十进制计数器设计
- 3.10 知识小结
- 习题与思考3
- 项目4 逻辑思维训练
- 4.1 任务1:用printf语句输出各种类型数据
- 4.1.1 数据是对描述对象的数学抽象
- 4.1.2 C51的数据类型
- 4.1.3 标识符与关键字
- 4.1.4 常量与变量
- 4.1.5 宏定义(#define)、数据类型的重新命名(typedef)
- 4.1.6 C51的输入/输出函数
- 4.1.7 从单片机串口输出各种数据
- 4.1.8 数据的存储器类型
- 4.1.9 C51变量的存储模式(编译模式)
- 4.1.10 在Keil中查看各变量的存储地址及数值
- 4.2 任务2:歌星大赛计分——简单统计运算
- 4.2.1 任务要求与分析
- 4.2.2 算法设计
- 4.2.3 流程与程序设计
- 4.2.4 Proteus串口输出测试电路设计
- 4.2.5 编译、代码下载、仿真、测判
- 4.3 任务3:求车号是多少——推理
- 4.3.1 任务要求与分析
- 4.3.2 推理过程与算法设计
- 4.3.3 外部函数serial_init()调用——以关键字extern声明
- 4.3.4 流程与程序设计
- 4.3.5 编译、代码下载、仿真、测判
- 4.3.6 进阶设计与思路点拨1:角谷猜想
- 4.4 任务4:谁是罪犯——逻辑运算
- 4.4.1 任务要求与分析
- 4.4.2 逻辑运算、条件运算
- 4.4.3 算法设计
- 4.4.4 流程与程序设计
- 4.4.5 编译、代码下载、仿真、测判
- 4.4.6 进阶设计与思路点拨2:新娘和新郎
- 4.5 任务5:百钱百鸡问题——穷举、组合
- 4.5.1 任务要求与分析
- 4.5.2 算法设计
- 4.5.3 流程与程序设计
- 4.5.4 编译、代码下载、仿真、测判
- 4.5.5 进阶设计与思路点拨3:换钱币
- 4.6 任务6:数据从小到大排序——数组应用
- 4.6.1 任务要求与分析
- 4.6.2 数组
- 4.6.3 算法设计
- 4.6.4 流程与程序设计
- 4.6.5 编译、代码下载、仿真、测判
- 4.6.6 进阶设计与思路点拨4:从大到小排序
- 4.7 任务7:求解约瑟夫问题——结构数组应用
- 4.7.1 任务要求与分析
- 4.7.2 结构体、结构数组
- 4.7.3 算法设计
- 4.7.4 流程与程序设计
- 4.7.5 编译、代码下载、仿真、测判
- 4.7.6 进阶设计与思路点拨5:数3出局
- 4.8 局部变量、全局变量、外部变量
- 4.9 知识小结
- 习题与思考4
- 项目5 定时器/计数器、中断应用
- 5.1 任务1:用外中断干扰流水灯
- 5.1.1 任务要求与分析
- 5.1.2 中断系统简介
- 5.1.3 中断控制寄存器
- 5.1.4 中断过程
- 5.1.5 清除中断请求的补充
- 5.1.6 中断函数的编写
- 5.1.7 算法设计
- 5.1.8 程序设计
- 5.1.9 编译、代码下载、仿真、测判
- 5.2 任务2:两个外中断干扰流水灯
- 5.2.1 任务要求与分析
- 5.2.2 中断嵌套
- 5.2.3 程序设计
- 5.2.4 编译、代码下载、仿真、测判
- 5.2.5 进阶设计1
- 5.3 任务3:多少个小球——计数器应用
- 5.3.1 任务要求与分析
- 5.3.2 定时器/计数器T0、T1
- 5.3.3 定时器/计数器的控制及工作方式
- 5.3.4 定时器/计数器的计数容量及初值
- 5.3.5 定时器/计数器应用的基本步骤
- 5.3.6 认识数码管、设计电路
- 5.3.7 子任务:用单个数码管循环显示手机短号
- 5.3.8 算法与程序设计
- 5.3.9 编译、代码下载、仿真、测判
- 5.3.10 进阶设计2:如何显示999个小球
- 5.3.11 虚拟数字时钟信号□应用
- 5.4 任务4:定时产生2500Hz方波
- 5.4.1 任务要求与分析
- 5.4.2 算法设计
- 5.4.3 查询方式下程序流程及程序设计
- 5.4.4 用虚拟示波器观测信号周期
- 5.4.5 定时中断方式下程序设计
- 5.4.6 编译、代码下载、仿真、测判
- 5.4.7 听单片机发声
- 5.5 任务5:秒闪灯——长时间定时(应用static)
- 5.5.1 任务要求与分析
- 5.5.2 算法设计
- 5.5.3 程序设计
- 5.5.4 C51变量的存储类型
- 5.5.5 编译、代码下载、仿真、测判
- 5.5.6 进阶设计3:看谁耳尖手快——反应时间测试
- 5.5.7 进阶设计4:可反复测试反应时间的设计
- 5.6 任务6:T0定时产生不同频率的方波(推算公约数)
- 5.6.1 任务要求与分析
- 5.6.2 算法设计
- 5.6.3 程序流程及程序设计
- 5.6.4 编译、代码下载、仿真、测判
- 5.6.5 进阶设计5:矩形波设计
- 5.7 任务7:测量正脉冲宽度(巧用GATE位)
- 5.7.1 任务要求与分析
- 5.7.2 算法设计
- 5.7.3 程序流程及程序设计
- 5.7.4 编译、代码下载、仿真、测判
- 5.7.5 虚拟脉冲发生器□应用
- 5.7.6 进阶设计6:测量负脉冲的宽度
- 5.8 任务8:键控PWM调光灯
- 5.8.1 任务要求与分析
- 5.8.2 算法设计
- 5.8.3 程序流程及程序设计
- 5.8.4 编译、代码下载、仿真、测判
- 5.8.5 进阶设计7:呼吸灯
- 5.9 知识小结
- 习题与思考5
- 项目6 动态扫描技术的应用
- 6.1 任务1:并联数码管显示生日
- 6.1.1 任务要求与分析
- 6.1.2 算法设计
- 6.1.3 程序结构设计
- 6.1.4 流程与程序设计
- 6.1.5 编译、代码下载、仿真、测判
- 6.1.6 进阶设计1:轮流显示生日与手机短号
- 6.2 任务2:可调时钟
- 6.2.1 任务要求与分析
- 6.2.2 算法设计
- 6.2.3 程序结构设计
- 6.2.4 流程与程序设计
- 6.2.5 编译、代码下载、仿真、测判
- 6.2.6 进阶设计2:设计12小时制的时钟
- 6.3 任务3:多功能秒表——一键多功能
- 6.3.1 任务要求与分析
- 6.3.2 算法设计
- 6.3.3 程序结构设计
- 6.3.4 流程与程序设计
- 6.3.5 编译、代码下载、仿真、测判
- 6.4 任务4:矩阵键盘识别
- 6.4.1 任务要求与分析
- 6.4.2 电路设计
- 6.4.3 算法设计
- 6.4.4 程序结构设计
- 6.4.5 程序设计:key16.h
- 6.4.6 编译、代码下载、仿真、测判
- 6.4.7 进阶设计3:以七段数码管显示键值
- 6.5 任务5:打地鼠游戏设计
- 6.5.1 任务要求与分析
- 6.5.2 算法设计
- 6.5.3 程序结构设计
- 6.5.4 流程与程序设计
- 6.5.5 编译、代码下载、仿真、测判
- 6.5.6 进阶设计4:竞级打地鼠游戏设计
- 6.6 指针及其应用
- 6.6.1 为什么要设置指针
- 6.6.2 指针的运算符、定义
- 6.6.3 应用指针作为参数实现“传址”
- 6.6.4 指针与数组
- 6.6.5 指针与函数
- 6.7 知识小结
- 习题与思考6
- 项目7 音乐门铃及串行数据传输
- 7.1 任务1:生日快乐歌
- 7.1.1 任务要求与分析
- 7.1.2 音乐数据准备
- 7.1.3 程序结构设计
- 7.1.4 程序设计
- 7.1.5 编译、代码下载、仿真、测判
- 7.1.6 无线音乐门铃
- 7.2 任务2:用74HC595串出3位数据
- 7.2.1 任务要求与分析
- 7.2.2 74HC595简介
- 7.2.3 单片机串口通信简介
- 7.2.4 程序框架及程序设计
- 7.2.5 编译、代码下载、仿真、测判
- 7.2.6 进阶设计1:串出自己的手机长号数字
- 7.3 任务3:用74HC595串行控制8×8点阵显示I♥U
- 7.3.1 任务要求与分析
- 7.3.2 程序框架与程序设计
- 7.3.3 编译、代码下载、仿真、测判
- 7.3.4 进阶设计2:我的点阵图形设计
- 7.3.5 进阶设计3:人行道点阵小人指示灯设计
- 7.4 任务4:双单片机间串行通信
- 7.4.1 任务要求与分析
- 7.4.2 串口工作方式1及波特率计算
- 7.4.3 程序框架及程序设计
- 7.4.4 编译、代码下载、仿真、测判
- 7.4.5 用串口调试助手监测目标板上的数据
- 7.5 任务5:用单总线接口元件DS18B20测温
- 7.5.1 任务要求与分析
- 7.5.2 DS18B20简介
- 7.5.3 程序框架及程序设计
- 7.5.4 编译、代码下载、仿真、测判
- 7.6 知识小结
- 习题与思考7
- 项目8 A/D及D/A接口应用
- 8.1 任务1:LCD显示的简易电压表
- 8.1.1 任务要求与分析
- 8.1.2 程序规划
- 8.1.3 LCM1602简介
- 8.1.4 LCD显示的头文件lcd1602.h设计
- 8.1.5 ADC0831简介及时序
- 8.1.6 ADC0831的头文件adc0831.h设计
- 8.1.7 C51对存储器和外设的绝对地址访问
- 8.1.9 编译、代码下载、仿真、测判
- 8.1.10 进阶设计1:在LCD上显示自己的姓名、学号
- 8.2 任务2:简易波形发生器
- 8.2.1 任务要求与分析
- 8.2.2 DAC0832简介
- 8.2.3 程序流程与程序设计
- 8.2.4 编译、代码下载、仿真、测判
- 8.2.5 进阶设计2:设计一可调频率1~20kHz的方波发生器
- 8.3 知识小结
- 习题与思考8
- 附录A 开发板电路原理图、使用说明
- 附录B C51程序设计实践报告要求
- 附录C C51的运算符优先级及结合性
- 参考文献
- 反侵权盗版声明
- 封底
展开全部
出版方
电子工业出版社
电子工业出版社成立于1982年10月,是国务院独资、工信部直属的中央级科技与教育出版社,是专业的信息技术知识集成和服务提供商。经过三十多年的建设与发展,已成为一家以科技和教育出版、期刊、网络、行业支撑服务、数字出版、软件研发、软科学研究、职业培训和教育为核心业务的现代知识服务集团。出版物内容涵盖了电子信息技术的各个分支及工业技术、经济管理、科普与少儿、社科人文等领域,综合出版能力位居全国出版行业前列。