目前,51系列单片机在我国已得到大力推广和广泛应用,从工业控制系统到小型电子产品都可以见到51单片机的身影,它经典的结构使其成为单片机学习的入门首选,得到了广大单片机使用者的一致推崇,关于51单片机学习和应用的书也五彩纷呈,本书也是其中的一本。
编写本书的目的
笔者从事单片机设计工作已有多年,在这期间设计和参与设计了较多的单片机项目,取得了很多单片机实际设计经验,对单片机设计有了一些较深的认识。所以希望能通过这本书对初步学习单片机的读者有所帮助,并且也是自己对学习和应用单片机的一个总结。
通常在学校学习的单片机知识偏重于理论而不是技能,可是在工作中需要面对的是实际问题,而不是在纸上谈兵;作为一名单片机工程师,笔者在工作中对此深有感触。所以本书的着重点是想让读者了解一个完整的单片机设计过程所需的知识,而不仅仅只是讲述单片机的原理。通过本书的学习,读者可以独立设计和完成一个简单的单片机控制系统,即体验从原理图设计、制作电路板到单片机系统调试的整个过程。
本书的主要内容
本书概括地论述了单片机的基础知识,包括单片机的基本结构和工作原理;并就实际单片机项目开发中会遇到的各种问题进行了阐述,列举了单片机开发的流程和必须遵守的一些规范,说明了仿真器和编程器在开发中的作用以及基本的使用方法。具体内容如下。
首先论述了单片机的基础知识,包括单片机的基本结构和工作原理,阐述了目前单片机的发展情况,列举了最新流行的单片机种类,总结了单片机的选择方法。
在了解单片机基本知识的基础上,详细讲解了单片机的主要开发语言——汇编语言和C51语言;编程语言的使用是单片机和其他集成电路的重要区别,用它来赋给单片机命令,使单片机按照设计者的意志运行命令。
本书也花了一定的篇幅讲解了仿真器和编程器的原理和使用说明。编程器和仿真器是单片机项目开发中常用的工具,仿真器是单片机程序调试中很有用的辅助工具,可以逐步地观察单片机的运行过程,以便发现程序中的错误;而编程器是用来将编写好的程序写入单片机的工具。除了传统的仿真器和编程器外,还列举了一些最新的单片机开发手段,如在线仿真和ISP(在系统编程),这些新的方法大大降低了单片机的开发费用,在线仿真使得设计者不需要去购买昂贵的仿真器,而ISP则替代了编程器,这进一步降低了学习单片机开发的门槛。
在讲解这些理论知识的过程中,本书还简单讲述了单片机开发中的一些规范,包括单片机原理图、PCB图以及程序设计的设计规范。这在实际工作中是必须了解和遵守的,也是一个单片机设计工程师必须具备的基本知识。
完成了基本知识的学习后,本书由易至难列举了一些设计实例,这些实例基本上概括了单片机项目设计中遇到的各种问题。
通常,一个单片机系统设计可以分为如下五大方面。
(1)单片机能够运行的最小系统,包括振荡电路、复位电路以及电源电路。
(2)单片机I/O口的使用方法和定时器、中断系统的使用。
(3)单片机的通信接口,单片机的通信在单片机设计中是经常遇到的功能,所以必须注意目前单片机系统常用的各种通信接口和协议。
(4)单片机的系统扩展,系统扩展通常可以分为程序存储器的扩展、数据存储器的扩展以及单片机I/O口的扩展三部分。
(5)信号转换接口,主要是A/D、D/A转换以及PWM的实现。这是单片机信号处理中经常遇到的问题。
前面两部分是单片机最基本的功能,后面三部分则是单片机的扩展应用,掌握了这些基本知识,便可应对用单片机解决的各种项目。
本书的特点
本书具有知识全面、实例丰富、操作性强的特点,力求以全面、系统的知识和丰富、简短的实例指导初学者学习单片机各方面的知识。因此,本书适合于开始学习单片机设计和具有一定单片机基础知识的读者,目的是使读者通过本书的学习可以初步掌握单片机的开发应用。
本书安排有“提示”、“注意”、“说明”小栏目,通过这些小栏目可和读者分享一些经验和心得,同时也可为读者清除学习过程中的难点和疑点。
本光盘内容超值丰富,不但提供了书中全部范例的源代码和电路图,而且提供了多媒体视频教学录像,用以讲解如何使用本书光盘中的源代码,手把手引导读者直观深入地学习。
本书阅读顺序
本书章节的安排是依据读者对单片机学习的过程、以循序渐进的方式建立的,建议初学者从前至后阅读。
首先阅读第1章至第7章,这些章节是单片机设计的基础知识,必须掌握。只有熟读了这几章的内容,才能阅读后面的章节。其中,第3章可以放到完成基本知识的学习后阅读。
阅读第8章至第12章,这几章是讲述单片机设计中的一些基本手段和方法,涉及单片机系统设计中的方方面面,掌握这些知识可以解决单片机设计中的大部分问题。
阅读第13章——综合实例,它由浅入深、由简入繁,将前面讲解的一些知识应用到实际项目中,可以让读者对单片机设计项目有具体的认识。
致谢
经过紧张的策划、写作和编写,本书才得已完稿。在写作的过程中,得到了参与本书策划的各位编辑的大力协助;在此,对所有参与该书编辑、出版的老师表示衷心的感谢。
惠 仇
2008.6.28
惠仇,1999年毕业于北方工业大学,长期从事单片机应用开发工作,曾经参与和独立设计过的项目有条码门禁机、可视对讲系统、税控加油机、税控收款机、压力测试系统等,其中可视对讲项目获得国家专利,这些项目均以单片机为核心来实现项目设计功能,并使用了许多最新流行的单片机种类和设计方法。
本书语言简洁,由浅入深、循序渐进,基础知识与设计实践紧密结合,边讲边练,利于读者举一反三,巩固所学的知识。随书配套光盘内容超值丰富,不但提供了书中范例的代码和电路图,而且提供了多媒体视频教学录像,手把手引导读者直观深入地学习。
本书适合广大51单片机使用者阅读,也是从事单片机设计的科技工作者必备的首选宝典;同时也可作为大中专院校、高职计算机专业学生,以及社会相关培训班学员的教材。
加减一加法器,通过P1口输入一个八位无符号数,P2口输入另
#include<reg51.h>#define uchar unsigned charuchar num,time,limit=2;sbit led1=P1^0;sbit key1=P2...
1、查询方式:#include<reg51.h>main(){ unsigned char dat; TMOD=0x20; TH1=TL1=0xfd; SCON=0...
圈内资深单片机工程师精心编写,包含丰富的实践经验和专业技术
精心设计大量的应用实例,与读者分享51单片机应用开发过程中的经验和心得
安排有“提示”、“注意”、“说明”小栏目,将实际工作中遇到的问题各个击破
本书还简述了单片机开发中的一些规范,如单片机原理图、PCB图和程序设计的设计规范。最后,本书通过一些设计实例,全面阐述了单片机项目设计中遇到的各种问题。
第1章 MCS-51系列单片机的起源和发展 1
1.1 MCS-51系列单片机的起源 2
1.1.1 单片机的诞生 2
1.1.2 单片机的历史 2
1.1.3 MCS-51单片机的历史 3
1.1.4 MCS-51系列单片机的特点 4
1.2 MCS-51系列单片机的发展现况 5
1.2.1 概述 5
1.2.2 最新51系列单片机介绍 6
1.3 小结 12
第2章 开发一个51系列单片机项目需要的资源 14
2.1 基础知识的学习 15
2.1.1 单片机基础知识 15
2.1.2 汇编语言 15
2.1.3 C语言 16
2.1.4 模拟电路和数字电路 16
2.2 硬件资源 17
2.2.1 单片机试验电路板 17
2.2.2 仿真器 17
2.2.3 仿真器的选择和安装 19
2.2.4 编程器(烧录器) 20
2.3 软件开发环境 21
2.3.1 软件编辑环境 21
2.3.2 KEIL软件的安装 21
2.3.3 KEIL软件的使用方法 22
2.4 单片机型号的选择 22
2.5 51单片机下载线的制作 23
2.5.1 硬件调试 24
2.5.2 使用方法 24
2.6 MON51仿真器的制作 25
2.6.1 原理图 25
2.6.2 Mon51硬件调试 26
2.6.3 软件调试 27
2.7 小结 27
第3章 单片机项目的开发流程和需要遵守的规范 28
3.1 单片机项目开发流程介绍 29
3.2 原理图设计规范 30
3.3 PCB图设计规范 31
3.4 汇编语言设计规范 32
3.5 C51语言设计规范 34
3.6 小结 38
第4章 51单片机的基本结构 39
4.1 单片机的基本结构 40
4.1.1 中央处理器(CPU) 41
4.1.2 存储器 43
4.1.3 定时器/计数器 45
4.1.4 中断控制系统 45
4.1.5 串行口、并行口 46
4.1.6 总线(BUS) 46
4.1.7 时钟电路 47
4.2 二进制、十进制、十六进制 47
4.3 哈佛结构与冯·诺伊曼结构 48
4.3.1 哈佛结构 48
4.3.2 冯·诺伊曼结构 49
4.4 单片机的指令系统 50
4.4.1 指令系统 50
4.4.2 寻址方式 51
4.4.3 程序的执行过程 52
4.5 复杂指令集与精简指令集 52
4.5.1 基本概念 52
4.5.2 复杂指令集与精简指令集的特点 52
4.6 小结 53
第5章 51系列单片机指令系统 54
5.1 指令和指令格式 55
5.2 寻址模式 56
5.2.1 直接寻址 56
5.2.2 寄存器寻址 57
5.2.3 寄存器间接寻址 57
5.2.4 立即寻址 57
5.2.5 变址寻址 58
5.2.6 位寻址 58
5.2.7 相对寻址 58
5.3 数据传送指令 58
5.4 算术运算指令 60
5.5 逻辑运算及移位指令 63
5.6 控制转移指令 64
5.7 布尔变量操作指令 66
5.8 小结 67
第6章 汇编语言编程 68
6.1 什么是宏汇编器(Macro Assembler) 69
6.2 汇编语言的开发环境 69
6.3 汇编语言的汇编过程 70
6.3.1 源文件(.ASM) 70
6.3.2 目标代码文件(.HEX) 70
6.3.3 列表输出文件(.LST) 70
6.3.4 汇编处理过程 71
6.3.5 常见的编译错误 72
6.4 51单片机汇编语言指令与伪指令 72
6.4.1 常用单位与术语 72
6.4.2 常量与数值运算 72
6.4.3 汇编语言指令 74
6.4.4 汇编语言伪指令 74
6.5 用汇编语言设计程序的步骤 79
6.5.1 汇编语言程序设计的步骤 79
6.5.2 编制程序流程图 79
6.6 程序设计结构 80
6.6.1 主程序和子程序 80
6.6.2 顺序程序设计 81
6.6.3 分支结构程序设计 82
6.6.4 循环结构程序设计 83
6.6.5 查表程序设计 86
6.6.6 子程序设计 88
6.7 程序设计举例 90
6.7.1 多字节算术运算程序 90
6.7.2 数制转换程序 91
6.7.3 多分支程序 93
6.8 小结 95
第7章 单片机C51语言编程 96
7.1 单片机C51语言概述 97
7.1.1 单片机C51语言的起源和发展 97
7.1.2 C51语言编程的优点 97
7.2 C51关键字和标识符 98
7.3 C51语言的数据类型 99
7.3.1 基本数据类型 99
7.3.2 构造型数据类型 101
7.4 常量、变量和指针 105
7.4.1 常量 105
7.4.2 变量 106
7.4.3 指针 108
7.4.4 存储类型和存储模式 109
7.5 C51的基本运算 112
7.5.1 C51的赋值运算 112
7.5.2 C51的算术运算 113
7.5.3 关系运算符 114
7.5.4 逻辑运算符 115
7.5.5 位运算符 116
7.6 函数 116
C51的库函数 121
7.7 程序结构 122
7.7.1 顺序控制结构 123
7.7.2 选择控制语句 123
7.7.3 循环语句 124
7.7.4 C51语言编程实例 127
7.8 C51语言与汇编语言混合编程 128
7.8.1 在C51语言函数中嵌入汇编语言 128
7.8.2 在C51项目中加入汇编语言文件 129
7.9 一个简单的C语言项目的实施 131
7.10 小结 135
第8章 一些简单的实例 136
8.1 建立一个单片机小系统 137
8.1.1 原理图设计 137
8.1.2 制作电路 139
8.1.3 调试 140
8.2 利用单片机的I/O口控制LED 140
8.2.1 原理图设计 140
8.2.2 制作电路 141
8.2.3 设计程序 141
8.2.4 仿真和调试 143
8.3 利用定时器控制LED闪烁 143
8.3.1 原理图设计 143
8.3.2 制作电路 143
8.3.3 设计程序 143
8.3.4 仿真和调试 145
8.4 控制蜂鸣器发声 145
8.4.1 工作原理 145
8.4.2 原理图设计 146
8.4.3 制作电路 146
8.4.4 程序设计 146
8.4.5 仿真调试 148
8.5 用一个按键控制LED闪烁 148
8.5.1 工作原理 148
8.5.2 原理图设计 148
8.5.3 制作电路 149
8.5.4 程序设计 149
8.5.5 仿真调试 152
8.6 制作LED数码管显示 152
8.6.1 LED数码管结构 152
8.6.2 工作原理 153
8.6.3 原理图设计 153
8.6.4 制作电路 154
8.6.5 程序设计 155
8.6.6 仿真调试 157
8.7 设计一个键盘 158
8.7.1 键盘工作原理 158
8.7.2 原理图设计 159
8.7.3 制作电路 161
8.7.4 程序设计 161
8.7.5 仿真调试 164
8.8 看门狗电路的设计 165
8.8.1 工作原理 165
8.8.2 原理图设计 166
8.8.3 制作电路 168
8.8.4 程序设计 168
8.8.5 仿真调试 171
8.9 小结 172
第9章 51单片机电源系统的设计 173
9.1 开关稳压电源和线性稳压电源的基本知识 174
9.2 线性稳压电源工作原理 174
9.2.1 串联反馈型稳压电源的工作过程 174
9.2.2 稳压电路的保护环节 175
9.3 开关稳压电源工作原理 176
9.3.1 开关电源的起源和发展趋势 176
9.3.2 开关电源的分类 177
9.3.3 开关电源的工作原理 178
9.3.4 开关电源的选用 185
9.4 常用电源转换芯片介绍 186
9.4.1 三端集成稳压器 186
9.4.2 低压差线性稳压器(LDO)的原理与应用 188
9.4.3 常用DC/DC开关稳压电源芯片的选择 191
9.5 设计一个简单的线性电源单片机供电系统 193
常用的三端集成稳压电源 193
9.6 DC/DC开关电源单片机供电系统的设计 194
9.6.1 工作原理 194
9.6.2 基本应用设计 195
9.7 用MC34063设计开关电源 198
9.7.1 MC34063性能简介 198
9.7.2 MC34063降压变换器电路 199
9.7.3 MC34063升压变换器电路 199
9.7.4 MC34063大电流降压变换器电路 200
9.7.5 MC34063大电流升压变换器电路 200
9.7.6 MC34063反向变换电路 201
9.8 小结 201
第10章 51单片机通信接口实例 202
10.1 单片机常用总线简述 203
10.1.1 芯片级总线 203
10.1.2 设备级总线 204
10.2 单片机系统数据的并行传送方式与串行传送方式 207
10.3 单片机系统和计算机之间实现串行通信 207
10.3.1 RS232串行通信工作原理 207
10.3.2 MCS-51系列单片机的串行口和控制寄存器 209
10.3.3 原理图设计 210
10.3.4 制作电路 212
10.3.5 程序设计 213
10.3.6 仿真调试 216
10.4 实现与其他器件间的I2C通信 216
10.4.1 I2C协议 216
10.4.2 原理图设计 220
10.4.3 制作电路 221
10.4.4 程序设计 221
10.4.5 仿真调试 228
10.5 添加一个实时时钟 229
10.5.1 工作原理 229
10.5.2 原理图设计 231
10.5.3 制作电路 232
10.5.4 程序设计 233
10.6 液晶显示模块接口实例 238
10.6.1 液晶显示模块简介 238
10.6.2 原理图设计 243
10.6.3 制作电路 243
10.6.4 程序设计 243
10.6.5 仿真调试 251
10.7 小结 251
第11章 51系列单片机的系统扩展 252
11.1 单片机系统扩展原理 253
11.1.1 为什么扩展系统 253
11.1.2 单片机系统扩展原理 253
11.1.3 程序存储器芯片的选择 257
11.1.4 数据存储器芯片的选择 259
11.1.5 扩展系统I/O接口 260
11.2 存储器系统扩展系统实例 260
11.2.1 扩展系统程序存储器 260
11.2.2 用SRAM扩展数据存储器举例 262
11.2.3 同时扩展数据存储器和程序存储器 264
11.2.4 并行接口Flash存储器扩展实例 265
11.2.5 串行接口Flash存储器扩展实例 274
11.3 系统扩展I/O口实例 278
11.3.1 利用译码器扩展I/O口 278
11.3.2 利用并口扩展芯片8255扩展I/O口 280
11.3.3 8155扩展并行I/O接口 282
11.3.4 利用串并位移寄存器芯片扩展I/O口 286
11.3.5 利用I2C接口扩展I/O口 289
11.4 小结 291
第12章 信号转换接口 292
12.1 单片机与A/D转换接口 293
12.1.1 A/D转换原理 293
12.1.2 A/D转换器的主要技术指标 294
12.1.3 A/D转换器的分类 295
12.1.4 A/D转换器的选择原则 298
12.2 A/D转换设计实例 299
12.2.1 ADC0809介绍 299
12.2.2 原理图设计 300
12.2.3 制作电路 301
12.2.4 程序设计 301
12.2.5 仿真调试 306
12.3 D/A转换原理 306
12.3.1 D/A转换原理 306
12.3.2 D/A转换器的主要技术指标 307
12.3.3 D/A转换器的分类 308
12.3.4 D/A转换器的选择 309
12.4 D/A转换设计实例 310
12.4.1 DAC0832芯片介绍 310
12.4.2 原理图设计 311
12.4.3 制作电路 312
12.4.4 程序设计 312
12.4.5 仿真调试 314
12.5 实现PWM控制 314
12.5.1 PWM原理 314
12.5.2 PWM的实现和应用 314
12.5.3 程序设计 315
12.6 小结 317
第13章 单片机综合实例 318
13.1 用DS18B20实现的温控加热模块 319
13.1.1 DS18B20性能简介 319
13.1.2 DSl8B20时序及工作过程 322
13.1.3 原理图设计 324
13.1.4 程序设计 326
13.1.5 仿真调试 332
13.2 直流电动机控制 333
13.2.1 C8051F300简介 333
13.2.2 原理图设计 334
13.2.3 程序设计 335
13.2.4 仿真调试 340
13.3 数据采集仪设计实例 340
13.3.1 C8051F020介绍 340
13.3.2 CP2102简介 342
13.3.3 原理图设计 343
13.3.4 程序设计 345
13.4 小结 365
附录A 80C51单片机 指令速查表 366
附录B ASIIC码表 3702100433B
基于 51单片机的电子时钟设计 摘要 本电子时钟以 STC89C52单片机作为主控芯片,采用 DS12C887时钟芯片, 使用 1602液晶作为显示输出。该时钟走时精确,具有闹钟设置,以及可同时显 示时间、日期等多种功能。本文将详细介绍该电子时钟涉及到的一些基本原理, 从硬件和软件两方面进行分析。 【关键词】 STC89C52单片机 DS12C887时钟芯片 1602液晶 蜂鸣器 目 录 一、绪论⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 4 1.1 电子时钟功能⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 4 1.2 设计方案⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 4 二、硬件设计⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 4 2.1 51单片机部分设计⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 4 2.2 USB 供电电路设计⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 5 2.3 串行通信电路设计⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 6
摘 要 本次的课程设计基于单片机技术原理,以美国 ATMEL公司开发的 AT89S52 芯片作为核心控制器。 通过硬件电路的制作及软件程序的编制, 设计制作了一种 具有复位、校时功能的数字时钟系统。利用 1602液晶同时显示提示信息和时间 信息,用户可通过系统上的按键对时间进行调整, 实现实时的时钟显示。 本次设 计的硬件由主控模块、 复位模块以及显示模块构成。 复位模块主要由电阻、 电容、 按键和发光二极管组成而显示模块则由 1602字符液晶构成,用于显示提示信息 和实时时钟。 关键词: AT89S52;LCD 1602; 实时时钟 桂林电子科技大学课程设计(论文)报告用纸 Abstract The curriculum design is based on the principles of microcomputer technology and has adapted the
《手把手教你学AutoCAD2010建筑实战篇》是一本AutoCAD建筑案例自学手册,共115个AutoCAD建筑案例,通过《手把手教你学AutoCAD 2010建筑实战篇》的学习,读者不仅可以提高自身的绘图技巧,同时更能汲取设计精髓。《手把手教你学AutoCAD 2010建筑实战篇》从实用角度出发,采用“典型应用案例 零起点学习 实际工程应用”写作结构。考虑到初学者的具体学习需求,《手把手教你学AutoCAD 2010建筑实战篇》通过典型应用案例的操作,讲解了AutoCAD建筑绘图的一些基础知识,使读者熟练掌握所学到的绘图技能,然后通过实际工作的应用,精心挑选了一套完整安置房工程图,逐步讲解平面图、剖面图、立面图和三维模型图的设计和绘制技能,另外还讲解了工程图的布局、打印与发布操作,室内装饰设计的基础和各类装饰图的设计方法,起到画龙点睛的作用。
《手把手教你学CAN总线》以CAN总线的通信实例和基本实验为主线,以单片机、数据通信和工业控制网络的基础知识为出发点,介绍了CAN现场总线的基本概念、CAN节点的硬件设计和软件编程的方法。其立足点是基础化、实用化,试图通过很多实验实例的详细讲解,带领初学者能很快掌握CAN总线的基本知识、CAN通信的编程方法和CAN总线系统相关产品的调试开发。《手把手教你学CAN总线》提供的大量源程序可供读者在开发产品时直接使用和参考。
《手把手教你做审计:从入门到精通》结合作者日常给审计新手的培训实践,针对审计新手开展审计工作可能会遇到的问题以及解决办法,给予手把手指导。
每一个审计新手或打算从事审计工作的人都不可错过《手把手教你做审计:从入门到精通》,借鉴审计师傅的指点,不仅可以少走很多弯路,还可以更快地胜任岗位工作。另外,《手把手教你做审计:从入门到精通》对其他职场新人也有一定的启迪作用。