描述
开 本: 16开纸 张: 胶版纸包 装: 平装是否套装: 否国际标准书号ISBN: 9787121289422丛书名: 早学早成功
编辑推荐
内容简介
本书内容共3篇19章,完整展现了一位51单片机工程师成长的经历。51单片机共有21个特殊功能寄存器,而需要重点掌握的只有6个(需要熟练掌握对其位的操作),因此学习单片机其实很简单:学会6个寄存器的使用就学会了51单片机程序设计。这样,如果每天掌握1个寄存器,那么6天就能学会51单片机的使用。
目 录
入门篇
第1章 走近单片机
1.1 我们身边的单片机
1.2 认识单片机
1.3 了解51单片机
1.4 选择开发板
第2章 修炼我们的刀和剑:Proteus、Keil C51
2.1 Proteus介绍
2.2 Keil C51介绍
2.3 刀剑合并
2.4 准备开发板
第3章 让你的单片机眨眨眼
3.1 个单片机程序
3.2 不仅仅是让它亮起来
3.3 程序的改动
3.4 移植到开发板
3.5 连点花样
第4章 让数字显示出来
4.1 数码管的概念
4.2 多显示几个数字
4.3 仿真万年历
第5章 用按键告诉单片机你想做什么
5.1 让闪烁的LED灯停下来
5.2 如何实现软件消抖
5.3 如何实现按键复用
第6章 实时控制单片机
6.1 中断的引入
6.2 按键还可以这样用
6.3 中断的优先级
第7章 让定时更精确
7.1 定时/计数器的概念
7.2 工作方式0的应用
7.3 工作方式1的应用
7.4 工作方式2的应用
7.5 工作方式3的应用
7.6 计数器介绍
第8章 单片机与外界的联系——串口通信
8.1 串口通信的概念
8.2 如何发送
8.3 收发都能实现
第9章 让单片机“响”起来
9.1 单片机会响呢
9.2 用定时器模拟门铃
9.3 用蜂鸣器演奏曲子
9.4 重新认识AT89C51
提高篇
第10章 再说数码管
10.1 使用扩展芯片驱动数码管
10.2 显示译码器
第11章 按键多了怎么办
11.1 密码键盘
11.2 通过硬件实现扩展
11.2.1 了解编码器
11.2.2 应用编码器74LS148
11.3 开发板上的输入扩展芯片
第12章 深入串口通信
12.1 通信协议
12.1.1 协议制定
12.1.2 样例实现
12.2 单片机和PC真正通信
12.3 将例程移植到开发板
第13章 I2C总线及其应用
13.1 I2C总线介绍
13.1.1 初步了解I2C总线
13.1.2 I2C总线上的信号
13.2 认识E2PROM AT24C02
13.3 一个I2C通信的例子
第14章 SPI总线及其应用
14.1 SPI总线介绍
14.2 一款SPI接口的E2PROM
14.2.1 认识25AA040
14.2.2 25AA040的工作原理
14.3 应用25AA040
14.3.1 E2PROM 25AA040仿真
14.3.2 开发板上的SPI外设
第15章 A/D转换器和D/A转换器
15.1 A/D转换器
15.2 两个A/D转换器的例子
15.2.1 了解ADC0809
15.2.2 应用ADC0808
15.2.3 了解ADC0832
15.2.4 应用ADC0832
15.2.5 开发板上的A/D转换电路
15.3 D/A转换器
15.3.1 了解D/A转换器
15.3.2 D/A转换器的主要技术指标
15.3.3 了解DAC0832
15.3.4 应用DAC0832
15.3.5 开发板上的D/A转换电路
第16章 LED点阵和LCD1602
16.1 认识LED点阵屏
16.1.1 有关LED点阵屏
16.1.2 LED点阵的应用
16.1.3 驱动开发板点阵
16.2 使用字符LCD
16.2.1 了解LCD
16.2.2 认识LCD1602
16.2.3 LCD1602的指令说明
16.2.4 使用LCD1602
16.2.5 移植例程到开发板
第17章 LCD12864
17.1 认识LCD12864
17.2 认识HDG12864L-6
17.2.1 HDG12864L-6概述
17.2.2 HDG12864L-6指令说明
17.2.3 HDG12864L-6的时序图
17.3 应用HDG12864
17.3.1 LCD12864的并行应用
17.3.2 LCD12864的串行应用
应用篇
第18章 简易万年历
18.1 电路设计
18.2 时钟芯片DS1302
18.3 系统设计
18.4 开发板上实现万年历
第19章 智能温度控制系统
19.1 系统模型
19.2 分析电路
19.3 系统设计
19.4 系统移植
附录A AT89C51特殊功能寄存器速查表
附录B 常用字符与ASCII对照表
附录C 相关书籍、网站推荐
附录D delay.c文件、delay.h文件、main.h文件
参考文献
第1章 走近单片机
1.1 我们身边的单片机
1.2 认识单片机
1.3 了解51单片机
1.4 选择开发板
第2章 修炼我们的刀和剑:Proteus、Keil C51
2.1 Proteus介绍
2.2 Keil C51介绍
2.3 刀剑合并
2.4 准备开发板
第3章 让你的单片机眨眨眼
3.1 个单片机程序
3.2 不仅仅是让它亮起来
3.3 程序的改动
3.4 移植到开发板
3.5 连点花样
第4章 让数字显示出来
4.1 数码管的概念
4.2 多显示几个数字
4.3 仿真万年历
第5章 用按键告诉单片机你想做什么
5.1 让闪烁的LED灯停下来
5.2 如何实现软件消抖
5.3 如何实现按键复用
第6章 实时控制单片机
6.1 中断的引入
6.2 按键还可以这样用
6.3 中断的优先级
第7章 让定时更精确
7.1 定时/计数器的概念
7.2 工作方式0的应用
7.3 工作方式1的应用
7.4 工作方式2的应用
7.5 工作方式3的应用
7.6 计数器介绍
第8章 单片机与外界的联系——串口通信
8.1 串口通信的概念
8.2 如何发送
8.3 收发都能实现
第9章 让单片机“响”起来
9.1 单片机会响呢
9.2 用定时器模拟门铃
9.3 用蜂鸣器演奏曲子
9.4 重新认识AT89C51
提高篇
第10章 再说数码管
10.1 使用扩展芯片驱动数码管
10.2 显示译码器
第11章 按键多了怎么办
11.1 密码键盘
11.2 通过硬件实现扩展
11.2.1 了解编码器
11.2.2 应用编码器74LS148
11.3 开发板上的输入扩展芯片
第12章 深入串口通信
12.1 通信协议
12.1.1 协议制定
12.1.2 样例实现
12.2 单片机和PC真正通信
12.3 将例程移植到开发板
第13章 I2C总线及其应用
13.1 I2C总线介绍
13.1.1 初步了解I2C总线
13.1.2 I2C总线上的信号
13.2 认识E2PROM AT24C02
13.3 一个I2C通信的例子
第14章 SPI总线及其应用
14.1 SPI总线介绍
14.2 一款SPI接口的E2PROM
14.2.1 认识25AA040
14.2.2 25AA040的工作原理
14.3 应用25AA040
14.3.1 E2PROM 25AA040仿真
14.3.2 开发板上的SPI外设
第15章 A/D转换器和D/A转换器
15.1 A/D转换器
15.2 两个A/D转换器的例子
15.2.1 了解ADC0809
15.2.2 应用ADC0808
15.2.3 了解ADC0832
15.2.4 应用ADC0832
15.2.5 开发板上的A/D转换电路
15.3 D/A转换器
15.3.1 了解D/A转换器
15.3.2 D/A转换器的主要技术指标
15.3.3 了解DAC0832
15.3.4 应用DAC0832
15.3.5 开发板上的D/A转换电路
第16章 LED点阵和LCD1602
16.1 认识LED点阵屏
16.1.1 有关LED点阵屏
16.1.2 LED点阵的应用
16.1.3 驱动开发板点阵
16.2 使用字符LCD
16.2.1 了解LCD
16.2.2 认识LCD1602
16.2.3 LCD1602的指令说明
16.2.4 使用LCD1602
16.2.5 移植例程到开发板
第17章 LCD12864
17.1 认识LCD12864
17.2 认识HDG12864L-6
17.2.1 HDG12864L-6概述
17.2.2 HDG12864L-6指令说明
17.2.3 HDG12864L-6的时序图
17.3 应用HDG12864
17.3.1 LCD12864的并行应用
17.3.2 LCD12864的串行应用
应用篇
第18章 简易万年历
18.1 电路设计
18.2 时钟芯片DS1302
18.3 系统设计
18.4 开发板上实现万年历
第19章 智能温度控制系统
19.1 系统模型
19.2 分析电路
19.3 系统设计
19.4 系统移植
附录A AT89C51特殊功能寄存器速查表
附录B 常用字符与ASCII对照表
附录C 相关书籍、网站推荐
附录D delay.c文件、delay.h文件、main.h文件
参考文献
前 言
前言
编写本书有两个目的,一是为计算机、电子通信相关专业大学生指引一个学习的方向;二是用更为简单易学的方式引导读者走进嵌入式软件开发的大门。
近两年亲身走近在校大学生,与他们直接接触,感触深的是优与劣的差距太大,没有方向感、迷茫、沉迷于游戏的大学生太多。之所以出现这种现象,不能说和现在的教育状态无关!大学之前都是填鸭式教学,高中三年是三点一线式生活;大学之后,忽然没人管了,大把的时间是自己的,而大学的教育还停留在教师只讲好自己的课,没人引导人生职业规划的状态。这就造成了很多大学生在大一失去入学时的那股新鲜劲之后,慢慢沉迷于网络、游戏。但也并非都是如此,一些电子通信类专业的学生在大一学过C语言后,暑假就自学了51单片机,大二拿下STM32(Cortex-M3),大三就开始接项目了;当然也有些学生在大四做毕业设计时还读不懂别人写好的源代码,更谈不上设计了。鉴于此,我们希望看到本书的同学能够更清楚地认识自己的发展方向。我们无法按专业来一一分析,在此仅按照技术的应用方向给出一个发展方向引导图。
首先,你可以选择一个方向:是应用层开发,还是嵌入式开发呢?若不知道自己在哪方面更有兴趣,你可以看看自己所在专业的教学规划,看看更偏重哪个方面。例如,计算机专业大多偏重于应用层开发,而电子信息工程专业则偏重于嵌入式开发。而后,就可以由浅入深,慢慢深入学习了。
这里以嵌入式开发为例,在大一学习过C语言程序设计之后,你可以在51单片机上做一些练习,这样你会更熟悉C语言,同时对单片机也有浅显的认识,此时的转变是通过操作寄存器实现外围电路的控制;而后,可以选择一款更复杂的单片机,如AVR,此时的重点是学习如何通过数据手册来学习单片机,因为51单片机的数据手册大多过于简单,不能直接用来指导学习。在以上的学习过程中,你会用到电路、模电、数电的一些简单应用,这样在大二学习相关课程时,自然不会陷于“学这些枯燥的理论有什么用呢”的迷茫。
学习AVR之后,你对嵌入式开发就有了基本的认识,这时基本就可以确定后面自己要深入学习的方向了:继续MCU的学习、转向DSP的学习,还是学习CPLD、FPGA,当然也可以选择进行电路板设计。而且这些方向不是相互独立的,你在选择一个方向之后,还会扩展到其他相关方向的学习。例如,学习嵌入式程序设计,同样要读懂原理图,甚至自己去设计原理图,搭建开发环境。同时,你会对后期的专业课程有更清晰的认识,刚好可以在有些专业课程上花费更多的时间去深入研究。
有些同学会觉得在学习51单片机之后,直接跨入STM32(ARM之Cortex-M3系列)更好,我并不这样认为。我觉得学习51单片机是简单的入门,学习AVR是使用数据手册学习单片机的方法,而到STM32阶段可以重点通过固件库例程来学习单片机,同时扩展到文件系统、操作系统等,这样由浅入深会很轻松。而且,这样学习也并不耽误时间,以我的教学经验,在51单片机学习阶段用一个月的时间,多做一些简单的应用,可以更深刻地理解嵌入式开发的理念;而到AVR阶段,用两周就可以学会通过数据手册学习单片机的方法;到学STM32时,基本上一个月也就能够应用了。近几年,我按照这个思路编写了一套教材,在附录C中按照该学习方法推荐了一些相关书籍与网站,有兴趣的同学可以参考。
编写本书的第二个目的是用更简单易学的方式引导读者入门。这里根据读者的反馈,使用Proteus仿真和开发板共同学习。读者可以首先在Proteus中验证实验,而后将实验例程下载到开发板上运行,使之更接近工作研发的过程,同时比较仿真和实验练习有何区别;而后对例程进行修改,加深对例程的理解;后可以根据例程发挥想象,实现自己的设计。
另外,为了突出嵌入式开发的思想——通过操作单片机的寄存器实现外设电路的控制,本书第9章总结了51单片机的21个特殊功能寄存器,其中只有6个是需要重点掌握的(需要熟练掌握对其位的操作)。这就将学习的门槛降到:学习6个寄存器就能学会51单片机程序设计,如果每天掌握1个寄存器,那么6天就能学会单片机。
全书内容共3篇,3篇内容是独立的。入门篇,是对单片机概念的引入、工具的介绍、单片机基础知识的讲解。学习完入门篇,你会对单片机有个整体的认识,也会知道单片机编程是怎么一回事。如果要深入学习,可以看后面的章节,也可以直接选择其他教材进一步研究。提高篇,是在入门篇的基础上通过扩展外围元器件进一步讲解单片机的应用,可以作为扩展内容学习。应用篇,通过实例的形式应用前两篇的学习内容,如果你有一定的单片机基础,也可以直接用来作参考样例。
另外,除第19章外,本书所有的实例都没有提供电子版代码,因为我一直认为,学习程序设计重要的就是自己动手,只有自己把代码一个字一个字地输入进去,自己建立工程、编译、仿真,才能学到其中的精髓,如果仅仅是运行、仿真一下别人写好的程序,那是没有什么意义的。甚至,你不但要学会、看懂、调通书中的例程,而且要学会将自己的想法融入到实例之中,学会修改、优化代码。正所谓传授者应授人以渔而非授人以鱼,而读者若能做到授人以渔而非授人以鱼,那将是完美的教与学的过程。书中的所有实例都是我输入计算机做过仿真、实物调试之后才使用的,如果因为描述不清楚或其他原因使调试不能通过,请读者给我发电子邮件或者直接登录到我的博客(young45cublogcn)提问,我会尽快答复并给出解决办法(第19章的例程可以通过该博客下载)。
本书的开放环境是Windows 7系统,使用的工具是Proteus 78、Keil C51 952,学习时好能选择相近的版本。
全书共19章,由杨百军统稿。其中,杨百军编写第15~19章,湖南女子学院的张玲玲老师编写第1~4章,中国人民解放军国防科学技术大学张志洲老师编写第5~9章,苏州工业园区服务外包职业学院的举老师编写第10~14章。另外,参加本书编写的还有黄得建、康磊、李楠、刘远峰、聂运中、王路、许元霄、杨俊杰、赵景丽、周宏云和张延杰。此外,深圳市普中科技有限公司和西安网联商贸有限公司的王鸿先生为本书的编写提供了HC6800-EM3 V30开发板,在此表示感谢。
“学然后知不足,教然后知困。”由于我们能力有限,写作过程中难免会出现一些错误,希望读者给我发电子邮件(com)指出。
后感谢我的家人,特别是我的父母,是他们用辛勤的汗水培育了我,才有今天的成长;也感谢编写过程中给予我帮助的朋友:段富军、许元霄、高金龙、申雷、黄桂平、钦桂勤等,是他们的关心和帮助让我们完成了本书的编写;特别感谢远在东北的朋友郝云鹏,我们是通过单片机相识的,在近几年的工作和生活中他给我提供了很多的帮助;还有那些来信给出建议的读者们,如郭凯、张锋、王帅阳、牛鹏举、孔宁、李泽飞、吴祖顺、竹显涛、刘宇轩等;也感谢电子工业出版社的王敬栋、张剑、苏颖杰及其他编辑朋友。后,感谢人生路上伴我走过的所有朋友!
杨百军
于湖南长沙·国防科学技术大学
编写本书有两个目的,一是为计算机、电子通信相关专业大学生指引一个学习的方向;二是用更为简单易学的方式引导读者走进嵌入式软件开发的大门。
近两年亲身走近在校大学生,与他们直接接触,感触深的是优与劣的差距太大,没有方向感、迷茫、沉迷于游戏的大学生太多。之所以出现这种现象,不能说和现在的教育状态无关!大学之前都是填鸭式教学,高中三年是三点一线式生活;大学之后,忽然没人管了,大把的时间是自己的,而大学的教育还停留在教师只讲好自己的课,没人引导人生职业规划的状态。这就造成了很多大学生在大一失去入学时的那股新鲜劲之后,慢慢沉迷于网络、游戏。但也并非都是如此,一些电子通信类专业的学生在大一学过C语言后,暑假就自学了51单片机,大二拿下STM32(Cortex-M3),大三就开始接项目了;当然也有些学生在大四做毕业设计时还读不懂别人写好的源代码,更谈不上设计了。鉴于此,我们希望看到本书的同学能够更清楚地认识自己的发展方向。我们无法按专业来一一分析,在此仅按照技术的应用方向给出一个发展方向引导图。
首先,你可以选择一个方向:是应用层开发,还是嵌入式开发呢?若不知道自己在哪方面更有兴趣,你可以看看自己所在专业的教学规划,看看更偏重哪个方面。例如,计算机专业大多偏重于应用层开发,而电子信息工程专业则偏重于嵌入式开发。而后,就可以由浅入深,慢慢深入学习了。
这里以嵌入式开发为例,在大一学习过C语言程序设计之后,你可以在51单片机上做一些练习,这样你会更熟悉C语言,同时对单片机也有浅显的认识,此时的转变是通过操作寄存器实现外围电路的控制;而后,可以选择一款更复杂的单片机,如AVR,此时的重点是学习如何通过数据手册来学习单片机,因为51单片机的数据手册大多过于简单,不能直接用来指导学习。在以上的学习过程中,你会用到电路、模电、数电的一些简单应用,这样在大二学习相关课程时,自然不会陷于“学这些枯燥的理论有什么用呢”的迷茫。
学习AVR之后,你对嵌入式开发就有了基本的认识,这时基本就可以确定后面自己要深入学习的方向了:继续MCU的学习、转向DSP的学习,还是学习CPLD、FPGA,当然也可以选择进行电路板设计。而且这些方向不是相互独立的,你在选择一个方向之后,还会扩展到其他相关方向的学习。例如,学习嵌入式程序设计,同样要读懂原理图,甚至自己去设计原理图,搭建开发环境。同时,你会对后期的专业课程有更清晰的认识,刚好可以在有些专业课程上花费更多的时间去深入研究。
有些同学会觉得在学习51单片机之后,直接跨入STM32(ARM之Cortex-M3系列)更好,我并不这样认为。我觉得学习51单片机是简单的入门,学习AVR是使用数据手册学习单片机的方法,而到STM32阶段可以重点通过固件库例程来学习单片机,同时扩展到文件系统、操作系统等,这样由浅入深会很轻松。而且,这样学习也并不耽误时间,以我的教学经验,在51单片机学习阶段用一个月的时间,多做一些简单的应用,可以更深刻地理解嵌入式开发的理念;而到AVR阶段,用两周就可以学会通过数据手册学习单片机的方法;到学STM32时,基本上一个月也就能够应用了。近几年,我按照这个思路编写了一套教材,在附录C中按照该学习方法推荐了一些相关书籍与网站,有兴趣的同学可以参考。
编写本书的第二个目的是用更简单易学的方式引导读者入门。这里根据读者的反馈,使用Proteus仿真和开发板共同学习。读者可以首先在Proteus中验证实验,而后将实验例程下载到开发板上运行,使之更接近工作研发的过程,同时比较仿真和实验练习有何区别;而后对例程进行修改,加深对例程的理解;后可以根据例程发挥想象,实现自己的设计。
另外,为了突出嵌入式开发的思想——通过操作单片机的寄存器实现外设电路的控制,本书第9章总结了51单片机的21个特殊功能寄存器,其中只有6个是需要重点掌握的(需要熟练掌握对其位的操作)。这就将学习的门槛降到:学习6个寄存器就能学会51单片机程序设计,如果每天掌握1个寄存器,那么6天就能学会单片机。
全书内容共3篇,3篇内容是独立的。入门篇,是对单片机概念的引入、工具的介绍、单片机基础知识的讲解。学习完入门篇,你会对单片机有个整体的认识,也会知道单片机编程是怎么一回事。如果要深入学习,可以看后面的章节,也可以直接选择其他教材进一步研究。提高篇,是在入门篇的基础上通过扩展外围元器件进一步讲解单片机的应用,可以作为扩展内容学习。应用篇,通过实例的形式应用前两篇的学习内容,如果你有一定的单片机基础,也可以直接用来作参考样例。
另外,除第19章外,本书所有的实例都没有提供电子版代码,因为我一直认为,学习程序设计重要的就是自己动手,只有自己把代码一个字一个字地输入进去,自己建立工程、编译、仿真,才能学到其中的精髓,如果仅仅是运行、仿真一下别人写好的程序,那是没有什么意义的。甚至,你不但要学会、看懂、调通书中的例程,而且要学会将自己的想法融入到实例之中,学会修改、优化代码。正所谓传授者应授人以渔而非授人以鱼,而读者若能做到授人以渔而非授人以鱼,那将是完美的教与学的过程。书中的所有实例都是我输入计算机做过仿真、实物调试之后才使用的,如果因为描述不清楚或其他原因使调试不能通过,请读者给我发电子邮件或者直接登录到我的博客(young45cublogcn)提问,我会尽快答复并给出解决办法(第19章的例程可以通过该博客下载)。
本书的开放环境是Windows 7系统,使用的工具是Proteus 78、Keil C51 952,学习时好能选择相近的版本。
全书共19章,由杨百军统稿。其中,杨百军编写第15~19章,湖南女子学院的张玲玲老师编写第1~4章,中国人民解放军国防科学技术大学张志洲老师编写第5~9章,苏州工业园区服务外包职业学院的举老师编写第10~14章。另外,参加本书编写的还有黄得建、康磊、李楠、刘远峰、聂运中、王路、许元霄、杨俊杰、赵景丽、周宏云和张延杰。此外,深圳市普中科技有限公司和西安网联商贸有限公司的王鸿先生为本书的编写提供了HC6800-EM3 V30开发板,在此表示感谢。
“学然后知不足,教然后知困。”由于我们能力有限,写作过程中难免会出现一些错误,希望读者给我发电子邮件(com)指出。
后感谢我的家人,特别是我的父母,是他们用辛勤的汗水培育了我,才有今天的成长;也感谢编写过程中给予我帮助的朋友:段富军、许元霄、高金龙、申雷、黄桂平、钦桂勤等,是他们的关心和帮助让我们完成了本书的编写;特别感谢远在东北的朋友郝云鹏,我们是通过单片机相识的,在近几年的工作和生活中他给我提供了很多的帮助;还有那些来信给出建议的读者们,如郭凯、张锋、王帅阳、牛鹏举、孔宁、李泽飞、吴祖顺、竹显涛、刘宇轩等;也感谢电子工业出版社的王敬栋、张剑、苏颖杰及其他编辑朋友。后,感谢人生路上伴我走过的所有朋友!
杨百军
于湖南长沙·国防科学技术大学
媒体评论
在线试读
评论
还没有评论。