本书是以单片机工程应用实例为重点的技术书,在简述了51单片机的软硬件基础之后,重点通过一系列工程应用实例,详细介绍了单片机的软硬件开发和调试方法,包括自制单片机编程器的方法,单片机的串口通信、定时/计数器、键盘输入、LED和LCD显示器等内外资源的使用和编程,在汇编程序中调用C程序的方法。实例中使用了很多当前流行的单片机智能外围芯片,包括实时钟、数字温度传感器、DDS波形发生器、无线数传模块、FM收音机和USB接口芯片等。书中用一章专题介绍了这些芯片所采用的单总线、IIC总线、SPI总线和USB总线等新型总线技术的原理;两个实例中还详细讲解了单片机与上位机RS232串口通信的高级语言编程方法以及用IJSB接口通信的方法。
本书附带光盘,内有实例程序的源代码。实例中所用的器材,取材容易,适合读者自己动手来做,特别适合电子技术类专业的大学生作为动手实践的教材,弥补他们在就业时缺乏实践经验的不足。本书涉及了电子工程应用的诸多方面,可作为各类单片机应用开发工程师的参考书。
《51单片机工程应用实例》附带光盘,内有实例程序的源代码。
实例中所用的器材,取材容易,适合读者自己动手来做,特别适合电子技术类专业的大学生作为动手实践的教材,弥补他们在就业时缺乏实践经验的不足。《51单片机工程应用实例》涉及了电子工程应用的诸多方面,可作为各类单片机应用开发工程师的参考书。
全书共分10章,第1、2章介绍开发51单片机必备的基础知识和工具,有关这部分内容的书籍已很多,一般都讲得很详细,本书不打算再重复这样的写法,占用读者过多的时间。本书将把那些在单片机开发过程中难以记忆、又经常使用的资料汇总起来,力图做到重点突出、内容精炼。第1章介绍51单片机的硬件结构,重点介绍目前使用较多的具有Flash闪存的兼容型51单片机,也简单介绍一类能够通过串口编程的新型51单片机。第2章在简单介绍51单片机指令系统和汇编语言程序设计之后,重点介绍Keil μVision2集成开发环境的使用方法,特别是使用模拟仿真器调试程序的方法。第3章介绍单片机常用的扩展总线,包括并行和串行扩展总线两部分,重点介绍串行扩展总线,其中包括DALLAS公司的单总线、PHILIPS公司的IIC总线(也称I2C总线)以及SPI和USB总线等,这些都是目前一些新型单片机外设芯片广泛使用的通信总线,掌握这些知识是使用这些IC芯片的基础。从第4章到第10章是本书的实例部分。第4章电子钟的内容相对简单,硬件包括按键和LED显示器的用法,软件主要是定时器及其中断。第5章的电容电感测量仪是进行电路实验的有力工具。硬件主要是一个LC振荡器和字符型LCD显示器,软件除了定时/计数器外,主要是浮点运算,还有字符型LCD显示器的编程方法。第6章DDS波形信号发生器也是一个很有用的电路实验仪器。硬件介绍DDS芯片的使用,软件介绍IIC接口器件的编程方法。实际上,本书的某些实例对于那些从未接触过单片机的读者来说还是有一定难度的。第7章自制简单的51编程器。制作该编程器其实并不简单,需要掌握两个难点,一个是51单片机的编程时序,另一个是单片机串口通信。因此,感到困难的读者可以先跳过这部分难点,直接使用书中提供的程序,只要能使编程器工作即可,待以后再慢慢消化难点。并行编程的方法虽然在慢慢淡出市场,但是其中用到的时序逻辑和编程方法,对读者来说仍然是十分有用的知识和工具,这些知识永远不会过时。本章最后介绍USB转换器CH341,它能将一个串口编程器转换成一个USB接口编程器。第8章温度数据无线传输系统是一个综合性的实用工程实例。硬件包括DS18B20数字温度传感器、nRF905无线数传模块、AT89C2051单片机和上位机,软件包括单总线器件的编程方法、SPI接口器件的编程以及用高级语言编写的上位机串口数据发送和接收程序。上位机串口数据发送和接收程序在第7章和第8章中都用到了,是一个很有用的工具,我曾用它使一台价值30万元、即将报废的日产精密仪器起死回生,得到了公司的奖励。第9章熔断时间测试仪结合一种工业用的电量传感器,介绍单片机在精密时间测试中的应用。第10章FM收音机围绕PHILIPS公司的单芯片调频收音机集成电路,比较系统地介绍有关调频广播的知识,包括调频信号的原理、调频信号产生的方法和调频收音机的原理。软件方面进一步强化了IIC总线的编程方法。本章特别详细介绍在汇编语言程序中调用具有传递参数和返回参数的C程序的方法,并给出了完整的实例。
书中实例内容丰富、取材广泛,除了单片机本身之外,还涉及电子工程应用的诸多方面,包括信号源、测试测量、传感器、无线电通信和广播信号接收等,具有较高的实用价值和广泛的应用范围,有利于拓展读者的知识面,适合工程应用的各类人士借鉴。
本书实例中的所有程序源代码都可在随书附带的光盘中找到,以方便读者使用。经常听到一些大学应届毕业生就业难的消息,今年以来,受社会经济各种因素的影响,这种情况尤其甚于往年。前些天,我的风华高科的同事来电话与我讨论关于招聘应用电子工程师的问题,多数用人单位认为应届大学生的经验不足,动手能力差,知识面太窄,不能立即胜任工作。由于大学教育受在校时间、实验条件等各方面因素的限制,学生确实也存在着这样的问题。所以,我希望本书能给电子技术等相关专业的学生提供一些自己动手进行实验的实例,通过这些实例切实提高他们的实际工作能力,开阔他们的视野。另外我要强调的是,这些实例无需昂贵的仪器设备,都是花费不多即可在自家环境下进行实验。如果能将这些实验真正自己动手做好,那么你的实践经验和动手能力就会有一个较大的提高。
本书能够出版,首先感谢北京航空航天大学出版社的胡晓柏主任,没有他的鼓励和支持,也就没有勇气完成这项工作。当然,还要感谢本书的责任编辑宋淑娟老师,由于她认真、细致的编审,去除了书中不少瑕疵,使读者能更好地读懂书中所讲的知识。
我要感谢为本书付出辛勤劳动的我的同事和朋友们。没有他们的帮助,本书不可能在短期内完稿。本书第1章由杨扬执笔完成,第3章的部分内容由张瑶婵完成,其余部分由唐继贤完成。实验电路板PCB版图由陈海同设计绘制。杨晓平和郭铁成提供了片式电阻器的有关资料。欧阳克勇、汉泽西、魏聚英、李守为、刘月旻帮助验证了本书的部分例程。文字校对工作主要由刘树祥、房俊、段石、王洁完成。另外,参与本书编写和提供资料的还有杨明、王泰安、尚涤世、杨崇仁、王启如和孙毓明等。
本人作为EDN博客上首位写书的网友,得到了EDN网站的特别关注和支持,网站专门成立了本书的书友会小组,EDN代理本书的网上销售业务,免费为部分读者提供PCB实验板,代购实验板所用套件,并将持续开展有关该书的一些活动。因此,我要特别感谢EDN网站,感谢网站上各位支持我的网友。书友会的网址是: http://group.ednchina.com/1023/。
最后感谢我的女儿唐娜,书中主要图表,都是她帮助完成的。
由于本人水平有限,书中的瑕疵在所难免,欢迎专家和各位读者批评指正。我的电子邮箱是: tang_jx@163.com。
唐继贤,高级工程师,1982年毕业于西安交通大学信息与控制工程系无线电工程学士。长期在电子设备制造业工作,担任过总工、副总经理等。曾参加过秦山核电站北京正负电子对撞机等国家重点工程配套电子设备的研制工作近年来对单片机应用技术具有浓厚的兴趣,开发出多种基于单片机和微电脑的应用产品。2006年底在EDN电子设计技术上开始博客写作,全部为作者原创主要是单片机应用技术以及电子电路、设备维修等方面的内容受到了读者的欢迎,多次入选EDN博客名人堂,并获得最佳博客三等奖,是EDN博客首位写书的网友。作者还是一位资深的业余无线电爱好者,个人呼号BD9AH,在新浪上有一个记录个人业余生活的博客。
第1章 C51系列单片机的硬件结构
1.1 AT89C51单片机
1.1.1 AT89C51单片机的内部结构
1.1.2 AT89C51单片机的封装和引脚
1.1.3 AT89C51单片机的存储器
1.1.4 AT89C51单片机定时/计数器
1.1.5 AT89C51单片机的串口
1.1.6 AT89C51单片机的中断
1.1.7 AT89C51单片机的时钟电路和时序
1.1.8 AT89C51的工作方式
1.1.9 AT89C51的程序封锁位
1.2 AT89C2051单片机
1.3 STC51单片机
1.3.1 STC51单片机的特点
1.3.2 典型代表型号性能简介
1.3.3 STC51单片机的编程
第2章 C51单片机的指令系统和汇编语言程序设计
2.1 指令组成
2.2 寻址方式
2.3 指令说明
2.4 汇编语言程序设计
2.4.1 汇编语言程序的格式
2.4.2 伪指令
2.4.3 汇编语言程序示例
2.5 集成开发环境μVision2
2.5.1 μVision2的窗口界面和功能
2.5.2 创建项目
2.5.3 调试
第3章 单片机的总线扩展
3.1 并行总线的扩展
3.1.1 用锁存器扩展并行口
3.1.2 用三态门扩展并行口
3.1.3 用串行口扩展并行口
3.2 IIC总线
3.2.1 IIC总线的工作原理
3.2.2 IIC总线的工作时序
3.2.3 IIC总线的数据传送格式
3.2.4 IIC总线的寻址方式
3.2.5 在MCS-51单片机中软件模拟IIC总线的方法
3.3 DALLAS公司的单总线
3.3.1 硬件结构和连接
3.3.2 单总线的工作原理
3.3.3 单总线通信协议
3.3.4 单总线命令编程
3.4 SPI总线
3.4.1 SPI总线的接口信号
3.4.2 SPI总线的工作原理
3.4.3 SPI总线在8051单片机系统中的应用
3.5 USB总线
3.5.1 USB系统硬件
3.5.2 USB系统的软件设计
第4章 采用LED显示的电子钟
4.1 数字钟的硬件组成
4.2 实时钟电路PCF8563简介
4.2.1 PCF8563的封装和引脚功能
4.2.2 PCF8563的内部资源和寄存器
4.2.3 PCF8563的应用电路
4.2.4 PCF8563程序设计
4.3 设置当前时间的方法
4.4 六位LED显示器的工作原理
4.4.1 硬件电路
4.4.2 汇编程序
4.5 数字钟编程
4.5.1 程序流程
4.5.2 汇编程序
第5章 电容电感测量仪
5.1 LCD1602液晶显示器简介
5.1.1 LCD1602的引脚功能
5.1.2 LcD1602与单片机的连接
5.1.3 LCD1602的指令集
5.1.4 LCD1602的应用编程
5.2 用单片机测量频率的方法
5.3 电容电感测量仪的测量原理
5.3.1 电容量测量的一般原理
5.3.2 本机的测量原理
5.4 电容电感测量仪的制作
5.4.1 测量仪的硬件原理
5.4.2 测量仪的编程
第6章 DDS波形发生器
6.1 DDS原理与特点
6.2 AD9835的应用与编程
6.2.1 内部原理
6.2.2 引脚及功能
6.2.3 内部寄存器、控制字和编程
6.2.4 AD9835的基本应用电路
6.3 矩阵键盘的使用
6.4 用AD9835和单片机制作的波形发生器
6.5 调试方法
6.5.1 硬件电路的调试
6.5.2 软件调试
第7章 自制简单的51编程器
7.1 8051系列单片机编程器的基本原理
7.2 编程器的硬件电路
7.3 上位机程序
7.3.1 串口通信控件MScomm的使用
7.3.2 上位机程序窗口说明
7.3.3 VB程序源码及说明
7.4 监控单片机程序
7.4.1 编程函数及编程方法
7.4.2 主函数流程图
7.4.3 监控单片机程序
7.5 使用USB接口的编程器
7.5.1 USB接口芯片CH341简介
7.5.2 CH341的应用电路
7.5.3 CH341在编程器中的应用
第8章 温度数据无线传输系统
8.1 DS18820数字温度传感器简介
8.1.1 DS18820的引脚封装和性能
8.1.2 DS18820的内部结构
8.1.3 DS18820在单片机系统中的应用
8.1.4 DS18820的功能命令
8.1.5 DS18820的编程
8.2 nRF905无线数传芯片
8.2.1 芯片内部结构
8.2.2 nRF905的封装和引脚
8.2.3 工作模式
8.2.4 nRF905的配置
8.2.5 应用电路
8.3 NewMsg-RF905SE无线收发模块
8.3.1 用户接口
8.3.2 NewMsg-RF905SE与单片机的连接
8.4 系统的硬件结构
8.5 单片机编程
8.6 上位机编程
第9章 熔断时间测试仪
9.1 慢熔型片式熔断器
9.2 电流传感器
9.3 测试仪的硬件结构
9.4 测试仪的编程
第10章 FM收音机
10.1 FM广播系统的基础知识
10.1.1 调频广播系统
10.1.2 调频广播收音机的原理
10.2 TEA5767HN单片FM调谐器
10.2.1 TEA5767HN的性能
10.2.2 TEA5767HN的引脚和封装
10.2.3 TEA5767HN的内部结构和功能
10.2.4 TEA5767HN的总线接口和控制寄存器
10.2.5 TEA5767HN的典型应用电路
10.3 FM收音模块
10.4 使用单片机和FM收音模块制作FM收音机
10.4.1 收音机硬件电路的说明
10.4.2 收音机的编程
10.5 调试方法和有关问题
附录
附录A 51指令码速查表
附录B ASCII码表
附录C 实验电路板
附录D 英汉名词对照
参考文献
后记