51单片机应用开发案例手册(txt+pdf+epub+mobi电子书下载)


发布时间:2020-05-26 22:53:28

点击下载

作者:程国钢

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

51单片机应用开发案例手册

51单片机应用开发案例手册试读:

前言

51单片机具有体积小、功能强、价格低的特点,在工业控制、数据采集、智能仪表、机电一体化、家用电器等领域有着广泛的应用。其应用可以大大提高生产、生活的自动化水平。近年来,随着嵌入式的应用越来越广泛,51单片机的开发也变得更加灵活和高效率,51单片机的开发和应用已经成为嵌入式应用领域的一个重大课题。本书主要介绍如何在51单片机的应用系统中使用51单片机的内部资源和外围器件,这些资源和器件包括I/O引脚、外部中断、定时/计数器、串行接口、人机交互通道、数据采集和输出通道、存储器模块、通信模块。另外,本书还介绍了51单片机C语言部分库函数的详细使用方法,以及RTX51操作系统的工作原理和使用方法。本书从内容上分为三个部分,即51单片机内部资源应用、51单片机外围器件应用和51单片机应用系统开发,共14章。第一部分包括第1~7章,介绍51单片机内部资源的应用实例。第1章主要介绍51单片机I/O引脚的应用实例,包括LED、数码管、按键和键盘、继电器、蜂鸣器等。第2章主要介绍51单片机中断系统基础及外部中断的应用实例。第3章主要介绍51单片机定时/计数器的应用实例,包括方波产生、PWM波形产生、交通灯等。第4章主要介绍51单片机串行模块的应用实例,包括双机高速通信、多级通信等。第5章主要介绍51单片机C语言库函数应用实例,包括C语言的库函数、C语言的编译错误及解决方法等。第6章主要介绍51单片机内部资源的高阶应用实例,包括使用定时计数器模拟外部中断、波特率自适应等,并且介绍一个51单片机内部资源的综合应用实例。第7章主要介绍51单片机RTX51实时多任务操作系统的应用实例,包括RTX51操作系统的工作原理、库函数及如何应用RTX51操作系统等。第二部分包括第8~13章,介绍51单片机外围器件的应用实例。第8章主要介绍51单片机外部资源扩展的应用实例,包括I2C总线的工作原理及库函数、SPI总线的工作原理及库函数、1-wire总线的工作原理及库函数等。第9章主要介绍51单片机外围 I/O引脚扩展的应用实例,包括使用译码器、锁存器、NEC8255扩展I/O引脚等。第10章主要介绍51单片机人机交互通道扩展的应用实例,包括CH452键盘和数码管扩展芯片、1602数字字符液晶、12864汉字图形液晶等。第11章主要介绍51单片机数据采集和输出通道扩展的应用实例,包括A/D通道、D/A通道、时钟芯片PCF8563、温度芯片DS12B80等。第12章主要介绍51单片机存储器扩展的应用实例,包括内部RAM扩展、E2PROM存储器扩展、U盘扩展等。第13章主要介绍51单片机通信通道扩展的应用实例,包括RS232C通信协议扩展、RS485通信协议扩展、无线通信扩展等。第三部分包括第14章,介绍51单片机应用系统开发的应用实例。第14章主要介绍51单片机应用系统的开发流程及注意事项,并且给出了太阳能电池监控模块和手持倾角仪两个应用系统开发的综合实例。本书特色● 按照由浅入深、循序渐进的原则覆盖51单片机的内部硬件资源、C语言、外围器件的使用和综合应用的开发;● 包含大量的实例,每个实例都给出了详尽的代码和运行结果;● 软、硬件结合,在涉及硬件电路的例子中给出了完整的电路原理图;● 紧密联系实际,详细介绍了实际应用中常用的器件、芯片。● 作者介绍本书由程国钢编著。参加本书编写的还有李龙、魏勇、王华、李辉、刘峰、徐浩、李建国、马建军、唐爱华、朱丽云、马淑娟、周毅、张浩、张玉兰等。作者力图使本书的知识性和实用性相得益彰,但由于水平有限,书中不妥、纰漏之处在所难免,欢迎广大读者、同仁批评斧正。第1章 51单片机I/O引脚应用实例常见的51单片机通常有20~40个I/O引脚,这些I/O引脚是51单片机最重要的基础模块之一,承担了与外部系统进行信息和数据交互的重要责任,可以用于扩展外围器件,或者直接驱动键盘、LED等简单外部设备。本章将详细介绍51单片机I/O引脚的应用实例。1.1 51单片机I/O引脚模块基础51单片机有4个8位的并行I/O口,分别为P0、P1、P2、P3,其中P0和P2既可以用做普通I/O端口也可以当成数据地址端口,P3则在作为普通 I/O端口的同时还具有其他 (第二)功能,只有 P1仅仅用做普通 I/O口。图1.1是51单片机的外部引脚示意图。图1.1 51单片机外部引脚示意图P0~P3口支持位寻址操作,均有一定的电流驱动能力,可以驱动一些外部设备,但是由于P0是开漏输出的结构,所以用做普通I/O引脚时需要外加上拉电阻。P3的第二功能如表1.1所示。表1.1 P3的第二功能列表说明:现在某些增强型51单片机的P0引脚上已经有了内部上拉电阻,不需要再外接电阻;而P0~P3的驱动能力也得到了极大的提高,可以直接驱动LED等功率较小的外部器件。1.2 I/O引脚驱动LEDLED(发光二极管)是51单片机系统中最常见的一种指示型外部设备,是半导体二极管的一种,可以把电能转化成光能;其主要结构是一个PN结,具有单向导电性,常常用于指示某个开关量的状态。LED的实物如图1.2所示。图1.2 红色的发光二极管实物说明:发光二极管有红、黄、绿等多种不同颜色及不同的大小 (直径),还有高亮等型号它们主要的区别是封装、功率和价格。1.2.1 LED的工作原理发光二极管LED和普通二极管一样,具有单向导电性,当加在发光二极管两端的电压超过了它的导通电压 (一般为1.7~1.9V)时就会导通,当流过它的电流超过一定电流 (一般为2~3mA)时则会发光。51单片机系统中发光二极管的典型应用电路如图1.3所示。图1.3 51单片机系统中LED的典型应用电路图图1.3中P1端口上的LED驱动方式称为 “拉电流”驱动方式,当51单片机I/O引脚输出高电平时,发光二极管导通发光;当51单片机I/O引脚输出低电平时,发光二极管截止。图1.3中P3端口上的LED驱动方式称为 “灌电流”驱动方式,当51单片机引脚输出低电平时,发光二极管导通发光;当51单片机引脚输出高电平时,发光二极管截止。图1.3中的电阻均为限流电阻,当电阻值较小时,电流较大,发光二极管亮度较高;当电阻值较大时,电流较小,发光二极管亮度较低。一般来说该电阻值选择范围为1~10kΩ,具体电阻的选择与该型号单片机的I/O口驱动能力、LED的型号及系统的功耗有关。说明:P1端口不直接用I/O引脚驱动LED,而是外加了VCC,原因是51单片机I/O口的驱动能力有限;同理,P3中的电阻值不宜过小,因为51单片机I/O口吸收电流的能力也有限,过大的电流容易烧毁单片机。1.2.2 应用实例———LED闪烁和流水灯1.LED闪烁实例LED闪烁实例中使用51单片机控制8个LED间隔亮、灭,形成闪烁效果,这种效果常常用于指示单片机系统的运行状态。图1.4是LED闪烁实例的电路图,8个LED使用灌电流的驱动方式连接在51单片机的P1端口上,表1.2是实例使用的典型器件说明。表1.2 LED闪烁实例器件列表在实例中,51单片机通过一个软件延时程序控制P1端口轮流输出高电平和低电平,驱动发光二极管发光和熄灭,【例1.1】是LED闪烁实例的代码。图1.4 LED闪烁实例电路图【例1.1】 代码使用两个嵌套的for循环语句来控制延时,当到达延时之后使P1输出电平翻转。2.流水灯实例流水灯实例使用51单片机控制8个LED轮流点亮,常常用于指示单片机系统的工作进程,或者用于构造特殊效果。例如,用红、绿、黄三种颜色来制造舞台效果等。流水灯实例的电路图和LED闪烁实例相同,如图1.4所示,【例1.2】是流水灯实例的代码。【例1.2】 与LED闪烁实例类似,51单片机使用两个嵌套的for循环语句来进行软件延时,当延时完成之后使用“”移位语句将当前输出高电平的P1端口引脚向高位移动一位,由于“”语句不带进位功能(即到达最高位之后不会自动循环到最低位),所以需要用一个判断语句将点亮端口位移动到最低位。1.3 I/O引脚驱动数码管在单片机系统中,有时需要显示一些简单的数字或者字符,此时可以使用数码管。数码管是一种由多个发光二极管组成的半导体发光器件,是51单片机系统常用的一种外围显示器件。常见的数码管可按显示的段数分为7段数码管、8段数码管和异型数码管;按能显示多少个字符/数字分为一位、两位等 “X”位数码管;按照数码管中各个发光二极管的连接方式分为共阴极数码管和共阳极数码管。常见的数码管实物如图1.5所示。图1.5 常见数码管实物1.3.1 单位数码管的工作原理常见的单位 (一位)8段数码管的内部结构如图1.6所示,其由8个发光二极管组成,通过点亮不同的发光二极管组合可显示数字0~9,字符A、F、H、L、P、R、U、Y,符号 “-”及小数点 “.”。图1.6 一位8段数码管内部结构如图1.6所示,8段共阳极数码管中8个发光二极管的阳极 (正极)连接在一起,其他引脚接各段驱动电路输出端。当这些发光二极管的正极输入高电平,对应发光二极管的输出端为低电平时,对应发光二极管导通,对应的段点亮,根据发光字段的不同组合显示出各种数字或字符。八段共阴极数码管的结构正好相反,8个发光二极管的阴极 (负极)连接在一起,其他引脚接各段驱动电路输出端,当这些发光二极管的负极输入低电平,对应发光二极管的输出端为高电平时,对应的发光二极管导通,对应的段点亮,根据发光字段的不同组合可显示出各种数字或字符。与LED类似,当通过数码管的电流较大时显示段的亮度较高,反之较低,通常使用限流电阻来决定数码管的亮度。51单片机一般采用软件译码和硬件译码两种方式来扩展数码管,前者是指通过软件控制51单片机的I/O输出从而达到控制数码管显示的方式,后者则是指使用专门的译码驱动硬件来控制数码管显示的方式;前者的硬件成本较低,但是占用单片机更多的I/O引脚,软件较为复杂,后者的硬件成本较高,但是程序设计简单,只占用较少的 I/O引脚。根据8段数码管的显示原理,要使数码管显示出相应的字符必须使单片机I/O口输出的数据即输入到数码管每个字段发光二极管的电平符合想要显示的字符要求。这个从目标输出字符反推出数码管各段应该输入数据的过程称为字形编码,8段数码管的字形编码如表1.3所示。表1.3 8段数码管的字形编码续表也就是说,对于I/O口驱动的数码管而言,只需在I/O上输出对应的字形编码,8段数码管即可显示所需要的字符或者数字。应该注意,在扩展数码管时也要考虑单片机的I/O驱动能力,与LED的驱动方式类似,数码管也有 “拉电流”和 “灌电流”两种驱动方式。1.3.2 应用实例———流水数字流水数字是一个51单片机使用I/O引脚驱动单位8段数码管的实例,数码管轮流地循环显示 “0”~ “F”数字或者字符,通常用于在单片机系统中显示一些数字或者字符。流水数字实例的电路图如图1.7所示,单位8段共阳极数码管的公共端连接到VCC上,数码管的8位数据引脚则连接到P1的八位引脚上,使用电阻作为限流电阻,表1.4是实例使用的典型器件说明。表1.4 数字流水实例器件列表图1.7 流水数字实例电路图【例1.3】 与LED闪烁实例类似,51单片机使用两个嵌套的for循环来进行软件延时,然后通过P1引脚将对应字符的字形编码送出供数码管显示,代码中使用一个存放在code存储器的数组SEGtable来存放字形编码,用一个conter计数器来指示当前应该输出的数字或者字符的字形编码在表格中的位置。1.3.3 多位数码管的工作原理在实际的单片机系统应用中,常常是使用多个数码管来显示多个字符或者数字,此时需要多位数码管。可以使用多个独立的8段数码管来自己拼接,其优点是位数不限,布局灵活;也可以直接使用集成好的多位数码管,优点是引线简单 (只有一套8段驱动引脚),价格相对来说便宜一些。图1.8是6位共阳极集成数码管的结构图,可以看到,6位数码管的a、b、c、d、e、f、dp引脚都集成到了一起,而位选择1、2、3、4、5、6引脚则对应位数码管的阳极端点,用于选择点亮的位。图1.8 6位共阳极集成数码管的结构图多位数码管可以使用多个I/O端口驱动,如P0~P3分别驱动4个数码管,但是这样极大地浪费了I/O资源,所以通常在实际使用中用动态扫描的方法来实现多位数码管的显示。动态扫描是针对静态显示而言的,所谓静态显示是指数码管显示某一字符时,相应的发光二极管恒定导通或恒定截止,这种显示方式的每个数码管相互独立,公共端恒定接地 (共阴极)或接电源 (共阳极),每个数码管的每个字段分别与一个I/O口地址相连或与硬件译码电路相连,这时只要I/O口或硬件译码器有所需电平输出,相应字符即显示出来,并保持不变,直到需要更新所显示字符。采用静态显示方式占用单片机时间少,编程简单,但其占用的口线多,硬件电路复杂,成本高,只适合于显示位数较少的场合。而动态扫描则是一个一个地轮流点亮每个数码管,方法是多位数码管的a~dp数据段都用相同的I/O引脚来驱动,而使用不同的I/O引脚来控制位选择引脚。在动态扫描显示时,先选中第一个数码管,把数据送给它显示,一定时间后再选中第二个数码管,把数据送给它显示,一直到最后一个。这样虽然在某一时刻只有一个数码管在显示字符,但是只要扫描的速度足够高 (超过人眼的视觉暂留时间),动态显示的效果在人看来就是几个数码管同时显示。采用动态扫描的方式比较节省I/O口,硬件电路也较静态显示方式简单,但其亮度不如静态显示方式,而且在显示的数码管较多时,51单片机要依次扫描,占用了单片机较多的时间。在动态扫描的电路中,使用不同的I/O引脚来进行位选择,此时该I/O引脚必须能完成“点亮”→ “熄灭”数码管的控制功能。该功能一般是通过一个通断电路控制共阳/共阴极端 (位选择端)来实现的,当I/O引脚控制该电路接通时共阳/共阴极端被连接到VCC/地,对应的位数码管被选中显示。通常这个通断电路使用三极管来实现,图1.9是使用三极管控制4位8段数码管的电路结构图。图1.9 用三极管控制4位8段数码管电路结构图图1.9中,使用4个PNP三极管来控制4位数码管,当对应的控制引脚NUM1~NUM4输出高电平时,三极管导通,VCC被加在对应数码管的公共端 (选择端),对应的数码管被选中,按照该数码管的数据输入显示对应的字符或者数字。1.3.4 应用实例———多位数字显示和流水数码管显示1.多位数字显示实例本实例使用51单片机驱动6位数码管显示 “123456”6位数字,该应用常常用于需要显示多位数字或者字符的应用系统。图1.10是实例的应用电路,51单片机用P1给NUM0~NUM5共6个独立的8段数码管提供字形编码,而用P2.0~P2.5共6个引脚通过PNP三极管来选通对应的数码管显示。表1.5是实例使用的典型器件说明。图1.10 多位数码管显示数字实例电路图表1.5 多位数字显示实例器件列表【例1.4】 为了精确控制延时的时间以便于造成 “扫描”效果,使用 Delayus和DleayMs两个函数来控制精确延时。整个扫描过程如下:先通过P1端口输出要显示数字或者字符对应的字形编码,然后用P2口控制对应的位选通引脚输出高电平,PNP三极管导通,数码管显示;延时一段时间,关闭P2口对应的引脚,切换到下一位数码管,重复上述操作。2.流水数码管显示实例流水数码管显示实例中,使用6位数码管从左到右轮流显示 “0”~ “F”字符。在类似于广告牌等的实际应用场合中,常常需要从左到右或者从右到左流动显示一些数字或字符。该实例的电路图和多位数码管显示数字实例相同,如图1.10所示,【例1.5】是流水数码管显示实例的代码。【例1.5】 与 【例1.4】类似,使用51单片机的P1口输出字形编码,使用P2口选通对应的位数码管,区别在于使用两个for循环嵌套,构成较长时间的延时,没有 “视觉残留”效果。在P2输出选择的代码段,用switch-case语句来判断应该使P2的哪一位引脚输出高电平。1.4 I/O引脚驱动继电器在一些51单片机的应用系统中,需要使用I/O引脚来控制一些大电流设备的启动或者停止,如电磁铁等,此时需要使用继电器作为中间介质,用单片机的I/O引脚来控制继电器的通/断,然后再用继电器来控制这些设备的启动或者停止。1.4.1 继电器的工作原理继电器是一种电子控制器件,它由控制系统 (又称输入回路)和被控制系统 (又称输出回路)组成,通常应用于自动控制电路中,其实质是用较小的电流去控制较大电流的一种 “自动开关”,在应用系统中起着自动调节、安全保护、转换电路等作用,在51单片机系统中常常用于通/断控制。其基本参数如下。● 额定工作电压/电流:继电器工作时线圈需要的电压/电流,决定了51单片机驱动这个继电器接通或者闭合所需要的电压/电流。● 直流电阻:线圈的直流电阻,是指当继电器被接入电路之后其等效电阻的大小,也就是说其在电路中的实际效果和多少欧姆的电阻相同。● 吸合电流:继电器能够产生吸合动作的最小电流,51单片机系统要想控制继电器闭合,所提供的控制电流必须高于这个电流。● 释放电流:继电器产生释放动作的最大电流,当51单片机系统的控制电流小于这个电流时,继电器释放。● 触点负荷:继电器触点上允许通过的电压或电流,决定了继电器能否用于控制外部设备。● 封装和控制形式:前者是指继电器的体积大小、引脚分布;后者是指一对控制点能控制几对线圈。图1.11是常见的继电器实物图,其在单片机系统中的具体用法和LED的区别不大,需要特别注意的是继电器的额定工作电压和吸合电流这两个参数。由于51单片机I/O引脚承受的电压最高只能达到5V,而很多继电器的额定工作电压达到了12V、24V甚至更高,并且前面已经介绍过51单片机I/O引脚的驱动电流能力有限,此时就需要外加功率驱动器件来驱动继电器。图1.11 常见的继电器实物图1.4.2 功率驱动器件的工作原理功率驱动器件是将小信号 (电压/电流)放大的器件,常见的功率驱动器件有三极管、达林顿管和功率光耦等。1.三极管工作原理半导体三极管是一种用电流来控制电流的半导体器件,是51单片机系统中最常用的功率驱动器件,其作用是把微弱信号放大成辐值较大的电信号,也常常用做无触点开关 (如用做多位数码管的选择控制器件)。三极管可以按材料分为锗管和硅管,而每一种按照电流结构又有NPN和PNP两种形式,但使用最多的是硅NPN管和锗PNP管两种。图1.12是常见的三极管实物图。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载