教育Proteus和Keil的C51程序设计项目教程 理论、仿真、实践相结合PDF电子书下载
- 电子书积分:10 积分如何计算积分?
- 作 者:周灵彬主编;刘红兵,江伟,蒋鸣东,疏晓宇副主编
- 出 版 社:北京:电子工业出版社
- 出版年份:2016
- ISBN:9787121289583
- 页数:244 页
项目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:学习循环结构,求∑ 100 n=1 n 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 宏定义(#defiine)、数据类型的重新命名(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.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 进阶设计1 148
5.3 任务3:多少个小球——计数器应用 148
5.3.1 任务要求与分析 148
5.3.2 定时器/计数器T0、T1 149
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:TO定时产生不同频率的方波(推算公约数) 169
5.6.1 任务要求与分析 169
5.6.2 算法设计 170
5.6.3 程序流程及程序设计 170
5.6.4 编译、代码下载、仿真、测判 171
5.6.5 进阶设计5:矩形波设计 172
5.7 任务7:测量正脉冲宽度(巧用GATE位) 172
5.7.1 任务要求与分析 172
5.7.2 算法设计 172
5.7.3 程序流程及程序设计 173
5.7.4 编译、代码下载、仿真、测判 174
5.7.5 虚拟脉冲发生器??应用 174
5.7.6 进阶设计6:测量负脉冲的宽度 175
5.8 任务8:键控PWM调光灯 175
5.8.1 任务要求与分析 175
5.8.2 算法设计 176
5.8.3 程序流程及程序设计 177
5.8.4 编译、代码下载、仿真、测判 177
5.8.5 进阶设计7:呼吸灯 178
5.9 知识小结 178
习题与思考5 178
项目6 动态扫描技术的应用 180
6.1 任务1:并联数码管显示生日 180
6.1.1 任务要求与分析 180
6.1.2 算法设计 181
6.1.3 程序结构设计 181
6.1.4 流程与程序设计 182
6.1.5 编译、代码下载、仿真、测判 183
6.1.6 进阶设计1:轮流显示生日与手机短号 183
6.2 任务2:可调时钟 184
6.2.1 任务要求与分析 184
6.2.2 算法设计 184
6.2.3 程序结构设计 184
6.2.4 流程与程序设计 185
6.2.5 编译、代码下载、仿真、测判 187
6.2.6 进阶设计2:设计12小时制的时钟 188
6.3 任务3:多功能秒表——一键多功能 188
6.3.1 任务要求与分析 188
6.3.2 算法设计 189
6.3.3 程序结构设计 189
6.3.4 流程与程序设计 189
6.3.5 编译、代码下载、仿真、测判 191
6.4 任务4:矩阵键盘识别 192
6.4.1 任务要求与分析 192
6.4.2 电路设计 192
6.4.3 算法设计 193
6.4.4 程序结构设计 194
6.4.5 程序设计:key 16.h 194
6.4.6 编译、代码下载、仿真、测判 195
6.4.7 进阶设计3:以七段数码管显示键值 196
6.5 任务5:打地鼠游戏机设计 196
6.5.1 任务要求与分析 196
6.5.2 算法设计 196
6.5.3 程序结构设计 196
6.5.4 流程与程序设计 197
6.5.5 编译、代码下载、仿真、测判 199
6.5.6 进阶设计4:竞级打地鼠游戏设计 199
6.6 指针及其应用 199
6.6.1 为什么要设置指针 199
6.6.2 指针的运算符、定义 200
6.6.3 应用指针作为参数实现“传址” 201
6.6.4 指针与数组 202
6.6.5 指针与函数 203
6.7 知识小结 204
习题与思考6 205
项目7 单片机唱歌及串行数据传输 206
7.1 任务1:生日快乐歌 206
7.1.1 任务要求与分析 206
7.1.2 音乐数据准备 206
7.1.3 程序结构设计 208
7.1.4 程序设计 209
7.1.5 编译、代码下载、仿真、测判 210
7.2 任务2:595串出3位数据 210
7.2.1 任务要求与分析 210
7.2.2 74HC595简介 211
7.2.3 单片机串口通信简介 213
7.2.4 程序框架及程序设计 215
7.2.5 编译、代码下载、仿真、测判 216
7.2.6 进阶设计1:串出自己的手机长号数字 216
7.3 任务3:用595串行控制8×8点阵显示I?U 216
7.3.1 任务要求与分析 216
7.3.2 程序框架与程序设计 218
7.3.3 编译、代码下载、仿真、测判 219
7.3.4 进阶设计2:我的点阵图形设计 219
7.3.5 进阶设计3:人行道点阵小人指示灯设计 219
7.4 任务4:双单片机间串行通信 220
7.4.1 任务要求与分析 220
7.4.2 串口工作方式1及波特率计算 220
7.4.3 程序框架及程序设计 221
7.4.4 编译、代码下载、仿真、测判 223
7.4.5 用串口调试助手监测目标板上的数据 223
7.5 知识小结 224
习题与思考7 224
项目8 AD及DA接口应用 225
8.1 任务1:LCD显示的简易电压表 225
8.1.1 任务要求与分析 225
8.1.2 程序规划 226
8.1.3 LCM1602简介 226
8.1.4 LCD显示的头文件lcd1602.h设计 228
8.1.5 ADC0831简介及时序 230
8.1.6 ADC0831的头文件adc0831.h设计 231
8.1.7 C51对存储器和外设的绝对地址访问 232
8.1.8 主程序设计 233
8.1.9 编译、代码下载、仿真、测判 234
8.1.10 进阶设计1:在LCD上显示自己的姓名、学号 234
8.2 任务2:简易波形发生器 234
8.2.1 任务要求与分析 234
8.2.2 DAC0832简介 235
8.2.3 程序流程与程序设计 236
8.2.4 编译、代码下载、仿真、测判 237
8.2.5 进阶设计2:设计一可调频率1.20kHz的方波发生器 238
8.3 知识小结 238
习题与思考8 238
附录A 开发板原理图、使用说明 239
附录B C51程序设计实践报告要求 242
附录C C51的运算符优先级及结合性 243
参考文献 244
- 《激光加工实训技能指导理实一体化教程 下》王秀军,徐永红主编;刘波,刘克生副主编 2017
- 《指向核心素养 北京十一学校名师教学设计 英语 七年级 上 配人教版》周志英总主编 2019
- 《设计十六日 国内外美术院校报考攻略》沈海泯著 2018
- 《计算机辅助平面设计》吴轶博主编 2019
- 《高校转型发展系列教材 素描基础与设计》施猛责任编辑;(中国)魏伏一,徐红 2019
- 《景观艺术设计》林春水,马俊 2019
- 《数学物理方法与仿真 第3版》杨华军 2020
- 《程序逻辑及C语言编程》卢卫中,杨丽芳主编 2019
- 《先进激光加工技能实训》肖海兵主编 2019
- 《高等教育双机械基础课程系列教材 高等学校教材 机械设计课程设计手册 第5版》吴宗泽,罗圣国,高志,李威 2018
- 《电子测量与仪器》人力资源和社会保障部教材办公室组织编写 2009
- 《少儿电子琴入门教程 双色图解版》灌木文化 2019
- 《指向核心素养 北京十一学校名师教学设计 英语 七年级 上 配人教版》周志英总主编 2019
- 《北京生态环境保护》《北京环境保护丛书》编委会编著 2018
- 《指向核心素养 北京十一学校名师教学设计 英语 九年级 上 配人教版》周志英总主编 2019
- 《通信电子电路原理及仿真设计》叶建芳 2019
- 《高等院校旅游专业系列教材 旅游企业岗位培训系列教材 新编北京导游英语》杨昆,鄢莉,谭明华 2019
- 《电子应用技术项目教程 第3版》王彰云 2019
- 《中国十大出版家》王震,贺越明著 1991
- 《近代民营出版机构的英语函授教育 以“商务、中华、开明”函授学校为个案 1915年-1946年版》丁伟 2017