1、实例实例解读解读5151单片机单片机完全完全学习学习与应用与应用2单片机在哪里单片机在哪里?31.1.1 电磁炉与单片机电磁炉与单片机4输入设备(箭头指向单片机):加、减按钮输出设备(箭头指向设备):4个指示灯、电磁线圈的驱动电路1.1.2 MP3播放机与单片机播放机与单片机5单片机就好像核心控制者,统管着液晶屏、USB口、存储器、DAC及驱动电路、按钮等外部设备,并有序地在这些设备中传递、交换数据或信号。实例解读8051单片机完全学习与应用 1.1.3 更多单片机更多单片机6单片机还隐藏在我们日常生活的许多电子产品中,如鼠标、遥控器、洗衣机、机器人等。综观这些电子产品都有一个特点,它们都有输
2、入或输出设备。比如鼠标的按键、遥控器的按键等是输入设备;洗衣机的电机、机器人的执行机构是输出设备。形形色色的输入设备和输出设备都在单片机的控制下协调工作。实例解读8051单片机完全学习与应用 1.3.1 Intel 8051单片机单片机7Intel 8051单片机于1980年由Intel(英特尔)公司首先研制出来并应用于嵌入式系统中。AT89S51型单片机(8051兼容型单片机),呈现出集成电路特有的外观,两侧有整齐排列的金属管脚,尺寸为52mm(长)15mm(宽)。实例解读8051单片机完全学习与应用 1.3.2 PIC单片机单片机8PIC单片机的低功耗、广泛用途使其成为产品设计和爱好者首选
3、的控制器,PIC单片机家族的单片机在汽车电子、以太网、家电、机电一体化、USB、仪器仪表等产品中有着非常广泛的应用。实例解读8051单片机完全学习与应用 1.3.3 AVR单片机单片机9AVR是单片机设计及体系结构中的新生儿,它由Atmel公司于1996研制出来。目前AVR有UC3、XMEGA、megaAVR、tinyAVR等几大系列过百种型号的单片机可供设计时选择。实例解读8051单片机完全学习与应用 1.3.4 其他单片机其他单片机10ARM系列单片机ST Microelectronics公司的ST系列单片机 Freescale公司的单片机系列 Texas Instruments公司的单片
4、机系列“中国的半导体行业与世界先进水平的差距目前依然很大,我国半导体公司与世界著名公司不在一个数量级上。”-Intel视觉计算事业部首席高级华人工程师江宏实例解读8051单片机完全学习与应用 1.4.1 数字温度计工作原理数字温度计工作原理11腋下的体表皮肤温度由温度传感器采集,温度传感器把体温这个物理量进行某种变换后形成电信号,这个电信号是连续的模拟信号,需要转换成数字信号才能显示。于是模数转换和显示处理电路实现转换并输出到液晶屏显示。实例解读8051单片机完全学习与应用 1.4.1 数字温度计工作原理数字温度计工作原理12实例解读8051单片机完全学习与应用 1.5.1 需求分析需求分析1
5、3某工厂有一条图1-13所示的装小球生产线,小球被传送带运送并掉入下方的纸箱中,纸箱在另一条传送带上被运送,每个纸箱装满10个小球后就换下一个纸箱装球。现在需要设计一个单片机控制系统,实现以上的小球装箱要求,并实时显示当前装球的纸箱序号和已装的小球数。实例解读8051单片机完全学习与应用 1.5.2 系统框架系统框架14 实例解读8051单片机完全学习与应用 15知识储备知识储备16一个电子系统,比如机器人,其背后蕴涵的知识往往是相当丰富的。既有模拟电路、数字电路,还有嵌入式系统、机电一体化等。实例解读8051单片机完全学习与应用 2.1.1 综合素质综合素质17电子血压计,测量时将一个密封的
6、袖带套在上臂上,按下按钮启动血压测量后,单片机控制气泵工作,向袖带中打气从而增加其中的压力。当压力达到200mmHg左右时即停止打气并缓慢放气,在气压下降的过程中,压力传感器实时监测袖带中的压力变化,通过ADC进行模数转换后送给单片机分析,从而计算出收缩压(高压)和舒张压(低压)。实例解读8051单片机完全学习与应用 2.1.2 软件工具软件工具18单片机及电路仿真:Proteus、Multisim等。电路原理图及PCB设计:Altium Designer(Protel)等 实例解读8051单片机完全学习与应用 2.1.3 硬件工具之一:面包板硬件工具之一:面包板19在面包板上观察电路的现象是
7、不是与设计的一致,以验证电路图设计的正确性,这在电子电路设计中经常用到。实例解读8051单片机完全学习与应用 2.1.3 硬件工具之一:面包板硬件工具之一:面包板20面包板的表面有规则排列的供插装元器件的插孔,在面包板中间有一条中心分隔槽把它分成上、下两个部分。上半部分每列5个插孔之间是导通的,下半部分每列5个插孔之间也是导通的。而上、下部分插孔之间不导通。实例解读8051单片机完全学习与应用 2.1.3 硬件工具之一:面包板硬件工具之一:面包板21电阻1,它一支管脚插在电源正极排孔上,与电路的电源正极导通;另一支管脚插在下半部分的插孔中,而该插孔下方用一根导线跨接到第3列插孔中,而三极管1的
8、e极插于同列插孔中,这样就实现了电阻1与三极管1的e极的电气连接。实例解读8051单片机完全学习与应用 2.1.4 硬件工具之二:万用板和印刷电路板硬件工具之二:万用板和印刷电路板22元器件插在万用板的一面,元器件管脚穿过万用板上的过孔,在万用板另一面使用电烙铁焊接管脚与万用板上的焊盘,然后焊接导线并通过导线实现元器件之间的电气连接。元器件一般都安装在万用板的同一面,导线可以焊接在万用板的任意一面。实例解读8051单片机完全学习与应用 2.1.4 硬件工具之二:万用板和印刷电路板硬件工具之二:万用板和印刷电路板23电路原理图可生成印刷电路板图。把印刷电路板图交给电路板生产厂家就可以把印刷电路板
9、加工出来。电子产品的电路板已经具备工作的基本条件了。实例解读8051单片机完全学习与应用 2.1.5 焊接工具焊接工具24 实例解读8051单片机完全学习与应用 2.1.6 焊接方法焊接方法25插元器件入过孔,焊接元器件管脚与焊盘。实例解读8051单片机完全学习与应用 2.1.6 焊接方法焊接方法26焊接时,从个头较小的电阻、瓷介电容等元器件开始。把元器件插入印刷电路板的过孔,并从另一侧伸出。左手拇指和食指捏着焊锡丝,右手拿电烙铁(左撇子可反过来),先在电烙铁头上轻轻蹭一点焊锡以便更好的导热。接着把电烙铁头贴到管脚和焊盘之间,等焊盘上的温度升高之后,一般会看到铜黄色的焊盘表面产生微小的泡泡,这
10、时再把焊锡丝推到焊盘上。由于焊盘温度已经可以把焊锡丝熔化,所以焊锡丝很快熔化在管脚和焊盘之间,当焊点形成一个较为圆滑、饱满的锡点后立即把焊锡丝拿走,然后是电烙铁头。不一会,焊锡冷却而即形成一个焊点。实例解读8051单片机完全学习与应用 2.2.1 需求分析需求分析27需求分析是分析功能、确定参数要求的过程。无论在学习单片机系统设计或是将来设计一些解决实际问题的项目,明确最终要达到的功能非常重要。比如一个简单的单片机控制发光二极管的例子,功能确定为单片机控制一个发光二极管点亮500ms,熄灭500ms,再点亮500ms,再熄灭500ms如此反复。实例解读8051单片机完全学习与应用 2.2.2
11、电路设计电路设计28左边阴影框里就是单片机,右边的是发光二极管。实例解读8051单片机完全学习与应用 2.2.3 程序设计程序设计29单片机程序用汇编语言或C51语言编写,有许多计算机上的应用软件可支持这两种语言的单片机程序开发,比如第4章将要介绍的Vision软件等。用汇编或C51语言设计好的单片机程序,将通过一个连接计算机USB口和单片机下载接口的下载器,下载到单片机中。下载完成后,单片机启动时运行下载的程序就可以实现相应的控制功能了。实例解读8051单片机完全学习与应用 2.2.4 系统调试系统调试30在调试阶段,也就是“磨合”软件和硬件以便它们共同实现系统功能。当程序下载到单片机系统后
12、,启动单片机运行程序,观察系统的“反应”和我们的设计是不是相符。比如发光二极管以500ms为间隔进行闪烁。当程序设计完成并下载到单片机之后,可能出现的问题是发光二极管不闪烁或闪烁的时间间隔不对。如果出现这些与设计不符的实验效果,首先在保证硬件电路是正确的前提下,回到程序中找错误,修改后再下载到单片机系统中。如此反复,直到系统运转正常为止。实例解读8051单片机完全学习与应用 2.3.1 发光二极管工作原理发光二极管工作原理31发光二极管(LED,电路符号)是一种最常用的指示器件,近几年因其成本下降和节能的特点大量使用在照明设备中。发光二极管有极性之分,当有足够的正向电流(正极流向负极的电流,约
13、10mA30mA)通过时便会发光。实例解读8051单片机完全学习与应用 2.3.2 单片机的控制单片机的控制32我们把发光二极管D1的负极连接在单片机的P0.4口(35管脚)上,电阻R1起到限流的作用。根据器件的连接关系分析知道:当单片机的P0.4口输出低电平时(接地),发光二极管D1正、负极之间获得电压而被点亮;当P0.4口输出高电平时(+5V),发光二极管D1则熄灭。所以要实现图2-17所示的功能,即让发光二极管以500ms为间隔闪烁,变成了让单片机的P0.4口以500ms为间隔输出高、低电平。实例解读8051单片机完全学习与应用 2.3.3 体验单片机控制发光二极管体验单片机控制发光二极
14、管33 实例解读8051单片机完全学习与应用 2.4.1 需求分析需求分析34反应时间测试仪的功能:单片机向蜂鸣器输出一个很短的鸣响信号Vout(比如500ms),测试者听到这个信号后立即按下按钮开关向单片机输入一个信号Vin,单片机只要计算出输出信号Vout与输入信号Vin之间的时间差就得到反应时间(以ms为单位),最后输出到反应时间显示器上显示即可。实例解读8051单片机完全学习与应用 2.4.2 电路设计电路设计35系统由4个模块(部分)组成:单片机、蜂鸣器及驱动电路、按钮开关、反应时间显示器。实例解读8051单片机完全学习与应用 2.4.3 程序设计程序设计36单片机P1.0在t1时刻
15、输出一个高电平使驱动电路工作从而使蜂鸣器鸣响。同时单片机内部开始计时,等到按钮开关按下时,因开关的短路P1.7变成了低电平,此时为t2时刻,单片机计时结束。单片机的计时时长(t2-t1)即为反应时间,只要输出到显示器显示即可。实例解读8051单片机完全学习与应用 实例解读8051单片机完全学习与应用 37典型的单片机系统典型的单片机系统38洗衣机是一个非常典型的单片机系统,外设如按钮、状态指示灯、电机等都在它的统一“领导”下发挥各自的功能并协同工作。当用户通过“程序”按钮选择了标准的洗涤程序,单片机获知后点亮标准程序对应的状态指示灯,并在洗涤时间显示器上显示所需洗涤时间。接着,用户按下“启动(
16、暂停)”按钮,单片机通过重量传感器知道洗衣机中有多少衣物,从而估计控制注水阀打开的时间以注入适当的水量。当注水完成后单片机控制电机启动,电机带动波轮开始洗涤。实例解读8051单片机完全学习与应用 3.1.1 单片机本身单片机本身39内部结构:在塑料基底的中央有一个微型的芯片,还有连接芯片和单片机管脚的细导线。单片机起主要作用的是芯片部分,细导线只是起到了在芯片和管脚之间传递信号的作用。实例解读8051单片机完全学习与应用 3.1.2 系统的构成系统的构成40 实例解读8051单片机完全学习与应用 3.2.1 AT89S51单片机的单片机的“外衣外衣”41AT89S51单片机作为51系列单片机一
17、个代表,被广泛应用在控制领域中。AT89S51是单片机的一个型号,这个型号下有DIP、PLCC、TQFP等封装。实例解读8051单片机完全学习与应用 3.2.1 AT89S51单片机的单片机的“外衣外衣”42 实例解读8051单片机完全学习与应用 3.2.2 AT89S51单片机的管脚单片机的管脚43注意,有些电路符号中的管脚不是排从小到大的顺序排列的,而是把相近功能的管脚放到了一起。而旁边实际的AT89S51单片机器件的管脚则是按逆时针顺序排列的。实例解读8051单片机完全学习与应用 3.3.1 变压器基础知识变压器基础知识44把220V AC转换成低压直流电压的第一步是降压,常使用的元器件
18、是电源变压器(transformer),它专门用于变换交流信号的电压。实例解读8051单片机完全学习与应用 3.3.2 电源变压器电源变压器45选购变压器时需要知道初级线圈和次级线圈的电压。一般初级线圈为220V AC,次级则需要根据实际需要来确定。比如单片机系统常常用5V DC供电,所以变压器可以选择次级线圈相等或略高的,比如6V AC等。还有一个参数在选购变压器时非常重要变压器功率。如果某电路的工作电压为5V、工作电流为200mA,则电路的消耗功率P=VI=5V200mA=1W,于是选择一个次级5V、额定功率1W以上的电源变压器就可以了。类似的,为电路设计电源时,可以大致估计一下电路的最大
19、工作电流,用它乘以工作电压就可得到电路的消耗功率。电源的功率,或者说变压器的功率应该比这个功率大,否则电路有可能无法正常工作。变压器在使用前一定要注意区分好初级和次级管脚(见图3-6),一旦反接,轻则烧断电源保险,重则会使变压器线圈烧毁而彻底损坏。一般电源变压器在初级上都会标注有“220V”字样,如果没有标注可以按照下面的方法进行分辨:用万用表的电感器测量档,分别测量变压器的初级、次级线圈。电感大的为初级,应当接入220V。电感小的为次级,是输出端(相对降压变压器而言)。实例解读8051单片机完全学习与应用 3.4.1 二极管基础知识基础知识二极管基础知识基础知识46二极管(diode),只允
20、许电流单向流过它。二极管有两个管脚,这两个管脚分成正极和负极,电流只能从正极流向负极。电路符号中倒三角一端为正极,短横线一端为负极。实际器件中,二极管圆柱形外壳一端一般都有一个色环(银色、黑色、白色等),作为二极管负极的标记,与这个标记同侧的管脚为负极,另一侧的管脚则为正极。有些二极管在圆柱形外壳上还印刷有器件的型号。注意,二极管的正极、负极在电路中是不能接反的,否则二极管发挥不了单向导电的作用,有时还会烧毁二极管。实例解读8051单片机完全学习与应用 3.4.1 二极管基础知识基础知识二极管基础知识基础知识47当电流从二极管正极流向负极时称为正向偏置(forward bias),正向偏置一般
21、在正极电压高于负极时产生。相反地,如果二极管负极电压高于正极,则处于反向偏置(reverse bias)状态下,二极管不导通。正向偏置时,二极管正、负极之间会产生一个压降(电压下降)。这个压降也称为正向电压(VF,forward voltage),它的大小与二极管的种类有关。如果是硅半导体材料制成的二极管,正向电压VF=0.7V;如果是锗半导体材料制成则正向电压VF=0.15V。实例解读8051单片机完全学习与应用 3.4.2整流整流48变压器帮我们变换了交流电压,不过从变压器次级输出的仍然是交流信号,这个交流信号的频率与市电相同,都是50Hz,其波形是正弦波。通常会用整流电路把交流信号变成单
22、向脉动电压。常用的整流电路是一种称为桥式全波整流的电路结构:4支型号相同的二极管D1D4按图示的方法连接在一起从而实现全波整流。实例解读8051单片机完全学习与应用 3.4.2整流整流49 实例解读8051单片机完全学习与应用 3.4.3整流全桥整流全桥50因为桥式全波整流实在应用得太多了,许多厂家干脆把4个同一型号的二极管集成在一起,制成整流全桥器件供电路设计时选用。整流全桥有3种等效的电路符号,每种电路符号的4个管脚分别为:2个AC管脚接交流输入信号(接变压器的输出),由于交流信号没有正负之分,所以这2个AC管脚可以混用。另外,“”管脚为整流全桥的正极输出,“”管脚为负极输出,这两个是整流
23、全桥的输出。由于经过整流信号已经具有直流信号的特征,所以“”和“”管脚不能混用,否则将烧毁负载。实例解读8051单片机完全学习与应用 3.5.1 电容基础知识电容基础知识51电容器(capacitor)是一种储能器件,它不允许直流通过,但能让交流通过。电容容量的大小用法拉(farads,简写F)来描述,这也是电容容量的单位。由于F(法)是一个非常大的单位,通常还有mF(毫法)、F(微法)、nF(纳法)、pF(皮法)等,它们之间的换算关系为:1F=103mF=106F=109nF=1012pF 实例解读8051单片机完全学习与应用 3.5.1 电容基础知识电容基础知识52电容采取直观的数字标记法
24、来指明容量,方法为:1.电容表面印刷有容量的数值和单位,如1000F等。另外,耐压值也常印在表面。2.单位缩写的方法来标记,如3n3代表3.3nF,33n代表33nF、4p7代表4.7pF等。3.纯数字的方法来标记,如103,其中“10”代表容量的前两位数,最后一位“3”代表倍数(0的个数),单位一律是pF。所以103代表10 000pF,即10nF=0.01F。类似的222代表2200pF、474代表470000pF,即470nF等。实例解读8051单片机完全学习与应用 3.5.1 电容基础知识电容基础知识53电容工作在电路中,需要考虑其耐压值的问题。如果在其两端的电压超过了这个值电容肯定是
25、要烧毁的。如果电压超过得很夸张,那电容还会发生爆炸,殃及其他元器件。电容的耐压值一般都会标记在其外壳上,在容量参数旁边往往都能找到其耐压值。如3n3的电容,其耐压值为2000V,说明施加在该电容两端的电压不能超过2000V。实例解读8051单片机完全学习与应用 3.5.2 电容的种类电容的种类54电容分为涤纶电容、云母电容、瓷介电容、电解电容、可变电容等几种。其中涤纶、云母、瓷介电容为无极性电容,它们有图所示相同的电路符号和外观。无极性电容的两个管脚没有极性之分,可以调换使用。实例解读8051单片机完全学习与应用 3.5.2 电容的种类电容的种类55电解电容是一种极性电容,其电路符号和外观如图
26、所示,它在无极性电容电路符号的基础上多出了一个“+”号。标有“”号的一端为正极,另一端为负极。实例解读8051单片机完全学习与应用 3.5.2 电容的种类电容的种类56注意,无论是铝电解电容还是钽电解电容都是有极性的电容,两个管脚有正、负极之分,在使用时切不可接反,否则很容易烧毁器件。此外,电解电容在选用时还需要注意其额定电压,在器件两端施加的电压值如果超过了额定电压,器件就会发热甚至爆炸。常用的额定电压有10V、16V、25V、35V、50V、75V、100V、125V、300V等,如图所示的铝电解是一个容量为1000F、额定电压10V的器件。在已知电路工作电压VCC的情况下,要选择额定电压
27、高于VCC的电解电容器件。实例解读8051单片机完全学习与应用 3.5.3 电源滤波电源滤波57利用电容对电源进行滤波是一种最简单的方法。在整流全桥之后加上了一个滤波电容C1,这样一来,从整流全桥输出的单向脉动电压信号在上升段给电容C1充电,而在下降段电容C1向负载R1放电而使电压不会马上掉下来,相当于滤波之后输出了一个直流电压信号。滤波电容C1根据负载电流大小和滤波需要一般选择容量范围为100F10000F,耐压值应该高于变压器的输出电压。实例解读8051单片机完全学习与应用 3.6.1 三端稳压基础知识三端稳压基础知识58稳压,也就要在负载等条件改变时尽量稳定、稳住电源的输出电压,使电路中
28、的用电器不受影响。许多电子电路中都使用集成电路稳压器(IC regulator)对电源进行稳压。集成电路稳压器按管脚的多少可分为三端固定式、三端可调式、多端可调式等。其中以三端式集成电路稳压器(简称三端稳压)最为常用。图示为78系列三端稳压的外观及管脚排布,该系列三端稳压可提供最大1A的电流,在大电流流过时发热量较大,所以在使用时通常都在器件背面安装散热器。实例解读8051单片机完全学习与应用 3.6.1 三端稳压基础知识三端稳压基础知识5978系列三端稳压共有10个型号的器件(其管脚排布相同):7805、7806、7808、7809、7810、7812、7815、7818、7820、7824
29、。每个型号后两位数字表示器件的稳压值。三端稳压基本应用电路:在220V AC经过变压器降压、整流全桥整流、电容滤波之后,输入到7805的IN端,从其OUT端输出的信号就形成稳定的5 V 直流电压(5V DC)。即便输入电压(市电)或负载电流在一定范围内变化,三端稳压总能将输出电压维持在5V DC。电容C1、C3起到储能、滤波的作用,电容C2、C4容量较小,可对高频噪音进行滤波。实例解读8051单片机完全学习与应用 3.7.1 晶振基础知识晶振基础知识60晶振(crystal,全称为“石英晶体振荡器”)是利用石英晶体的压电效应制成的一种谐振器件。每一个晶振都有自己惟一且稳定的固有振荡频率,这个频
30、率会印在晶振器件的外壳上。由于石英晶体的固有振荡频率不会随温度变化而改变,因此,晶振的振荡频率非常稳定,并且利用晶振设计的振荡器电路广泛应用于计算机、家电等各类电子系统中。图示为一种金属外壳封装的无源晶振外观,其两个管脚对应着电路符号中两端的引脚,没有极性之分。实例解读8051单片机完全学习与应用 3.8.1 单片机最简系统单片机最简系统61最简系统,是使用最少的外围元器件让单片机能够工作的电路。AT89S51单片机的最简系统如图所示,首先,单片机的VCC、GND接+5V以获得工作电源。此外,还多出了两个部分(阴影框),一个是复位电路,另一个是振荡器。最后还有一个细节,就是单片机的(31管脚)
31、也接到了+5V上。实例解读8051单片机完全学习与应用 3.8.2 电源端(电源端(VCC、GND)62AT89S51的VCC(40管脚)和GND(20管脚)分别为电源端和接地端,AT89S51的供电电压范围为直流+4.0+5.5V。电路中所有具有同名的电源标号或网络标号之间是连通的,只是为了电路图的美观,没有把这些连通的节点全部连接起来。实例解读8051单片机完全学习与应用 3.8.3 时钟信号端(时钟信号端(XTAL1、XTAL2)63AT89S51单片机的XTAL1端(19管脚)、XTAL2(18管脚)内部有一个片内振荡器结构,但仍然需要在XTAL1和XTAL2之间连接一个晶振Y1,并加
32、上两个容量介于2040pF的电容C1、C2组成时钟电路,如图所示。单片机上电后,用示波器可在XTAL1管脚观察到频率与晶振频率相同的方波信号。实例解读8051单片机完全学习与应用 3.8.3 时钟信号端(时钟信号端(XTAL1、XTAL2)64像图示这种使用晶振配合产生时钟信号的方法称为内部时钟方式。晶振的频率决定了该系统的时钟频率,比如晶振频率选择12MHz,那么单片机工作的频率就是12MHz。根据系统对速度的要求,一般可以选择1.2MHz12MHz的晶振。通常我们使用12MHz的晶振。实例解读8051单片机完全学习与应用 3.8.4 复位端(复位端(RST)65AT89S51单片机的RST
33、端(9管脚)是复位端。当向RST端输入一个短暂的高电平单片机就会复位,复位后单片机从头开始执行程序。如果在单片机执行程序的过程中触发复位,则单片机立即放弃当前操作而被强行从头开始执行程序。最简单的复位电路就是在RST端与电源端之间连接一个10F左右的电解电容。单片机上电瞬间,电容C3的正极电压瞬间变为+5V,C3对于这个瞬间的电压突变相当于短路(隔直通交),于是+5V(高电平)相当于直接加到了单片机的RST端上。正是这个加在RST端的瞬间高电平使单片机复位。很快,电容C3充满电,在电路中相当于断路,于是RST端电平由高转低,单片机随即开始执行程序。实例解读8051单片机完全学习与应用 3.8.
34、4 复位端(复位端(RST)66有时,只使用一个电解电容的复位电路可靠性不高,所以图中给出两种较好的复位电路。其中,按钮开关S1可对单片机实现手动复位,当按下S1时,RST端获得复位信号(高电平)而使单片机复位,此时无论单片机在进行什么操作都得乖乖的从头开始执行程序。实例解读8051单片机完全学习与应用 3.8.5 外部程序存储器访问控制端外部程序存储器访问控制端67最简系统中,AT89S51单片机的 端(31管脚)接了高电平。这是单片机的外部程序存储器访问控制端,顾名思义,的电平控制着单片机是否去访问外部程序存储器。接高电平时,单片机执行本单片机内部程序存储器中的程序,并在读取完内部程序存储
35、器地址为0FFFH上的数据后自动转向读取外部的程序存储器;如果 接低电平,则单片机访问的全部是外部程序存储器。实例解读8051单片机完全学习与应用 EA/VPP3.8.6 从最简系统出发从最简系统出发68最简单片机系统是所有AT89S51单片机系统的基础,翻开任何一幅单片机系统电路图都离不开这个最简系统。就拿单片机控制一支发光二极管闪烁的系统电路来说,可在最简系统的基础上向单片机的I/O口(比如P0.4口)添加一个发光二极管D1和限流电阻R1。实例解读8051单片机完全学习与应用 3.9.1 电阻基础知识电阻基础知识69电阻器(resistor),简称电阻,是一种两端电子器件,当电流流过时,其
36、两端的电压与电流成正比。任何材料都会对流经的电流产生一定的“阻力”,这种阻碍电流的作用叫阻抗,电阻就是利用材料的这一特性制作出来的。电阻是电路中使用得最多的器件,由于电流流经它时会在其两端形成不同的电压,于是可利用电阻改变电路节点的电压。欧姆(Ohm)是电阻阻值的单位,用来描述电阻阻值的大小。通常用希腊字母(欧)来表示。比更大的阻值单位有k(千欧)和M(兆欧)。以下是它们之间的换算关系。1M=103k=106 实例解读8051单片机完全学习与应用 3.9.1 电阻基础知识电阻基础知识70电阻表面有五颜六色的色环,图为常用的5(色)环电阻及颜色所代表的数值。5(色)环电阻使用前4个色环标示电阻的
37、阻值,第5个色环标示电阻的允许误差。实例解读8051单片机完全学习与应用 3.9.2 电阻的参数和种类电阻的参数和种类71电阻的功率也是常常需要考虑的。电路设计时需要明确电阻在电路中会获得多大的实际功率,从而选择一个额定功率比这个实际功率还要大的电阻。电阻的额定功率一般有1/16W、1/8W、1/4W、1/2W、1W、2W、5W、10W等几种,如果电阻功率大于1/4W,应该在电路图中按照图所示的大功率电阻电路符号标明,否则很容易让自己或他人因误用电阻而导致事故的发生。如果电路中使用的是电阻的一般符号,则可使用额定功率为1/16W、1/8W、1/4W的电阻。实例解读8051单片机完全学习与应用
38、3.9.3 电阻的分压、限流、上拉作用电阻的分压、限流、上拉作用72电阻常常在单片机系统中实现分压、限流、上拉等作用。分压,顾名思义就是分担电压。图示的电路,电阻R1、R2串联,电流I从3V电源正极流出,从节点A流向P点,继而流向B点后回到电源负极。接地符号定义电源负极(也就是节点B)为电势零点,于是B点电压VB=0V。因电源为3V,得A点电压VA=3V。根据欧姆定律,可计算电路的干路电流,则P点电压。实例解读8051单片机完全学习与应用 3.9.3 电阻的分压、限流、上拉作用电阻的分压、限流、上拉作用73电阻的另一个角色是限流,顾名思义就是限制电流。如图示,由于单片机系统常常使用+5V电源,
39、而发光二极管D1只需要2V左右的电压就可以被点亮,点亮时电流约为15mA。如果在发光二极管D1两端直接加+5V将有可能烧毁它。于是我们常常串联一个限流电阻R1。假设发光二极管工作电流为15mA,正常工作时两端的压降VF=2V,所以电阻R1上应该分担的电压为3V。于是得电阻R1的阻值为:R1=3V/15mA=200。实例解读8051单片机完全学习与应用 3.9.3 电阻的分压、限流、上拉作用电阻的分压、限流、上拉作用74除了分压、限流作用之外,电阻还常常作为上拉电阻存在于开集电极输出的电路中。如图示,三极管Q1的集电极作为非门输出端,如果没有上拉电阻R1,无论IC输出是高电平或低电平,也就是无论
40、三极管Q1的基极是高电平或低电平,它都因为集电极没有电压而不工作。如果Q1不工作,其集电极输出就像开路一样,没有什么状态可言。这个“像开路一样”就是“开集电极输出”的由来。实例解读8051单片机完全学习与应用 3.10.1 发光二极管交替发光发光二极管交替发光75 需求分析:将要设计一个单片机控制系统,如图示,单片机控制发光二极管1和发光二极管2交替发光,交替的时间间隔为500ms。电路设计:因为外设为两支发光二极管,所以可以在最简系统基础上添加这两个外设,并给每个发光二极管串联一个限流电阻,。两支发光二极管的负极分别与单片机的P0.4口(35管脚)和P2.0口(21管脚)相连,如果这两个I/
41、O口为高电平发光二极管不发光,而如果I/O口为低电平发光二极管发光。实例解读8051单片机完全学习与应用 3.10.2 程序设计程序设计76程序操作流程如图所示:一开始,令 P0.4=0、P2.0=1,这样,发光二极管D1点亮而D2熄灭。延时500ms使得这个状态保持500ms,接着P0.4=1、P2.0=0,发光二极管D1熄灭而D2点亮,再保持这个状态500ms后回到一开始的D1点亮而D2熄灭。以此循环,发光二极管D1、D2就在不断的交替发光。实例解读8051单片机完全学习与应用 3.10.2 程序设计程序设计77 ORG 00H;设置起始地址 MAIN:;标号MOVP0,#00H;向P0口
42、输出低电平,使发光二极管D1点亮MOVP2,#0FFH;向P2口输出高电平,使发光二极管D2熄灭CALL DELAY;调用延时子程序MOV P0,#0FFH;向P0口输出高电平,使发光二极管D1熄灭MOVP2,#00H;向P2口输出低电平,使发光二极管D2点亮CALL DELAY;调用延时子程序JMPMAIN;跳回MAIN,循环执行DELAY:;延时子程序(500ms)MOVR3,#50D1:MOVR4,#20D2:MOVR5,#248DJNZR5,$DJNZR4,D2DJNZR3,D1RET;返回主程序END;汇编程序结束3.10.3 初见汇编语言初见汇编语言78汇编语言书写的单片机程序,以
43、伪指令ORG和END为开始和结束的标志。伪指令只是告诉汇编器一些汇编的信息,对单片机的操作没有影响。真正指挥单片机干活的是从“MAIN:”开始到“END”之前的多行指令。实例解读8051单片机完全学习与应用 3.10.4 初识指令初识指令79汇编程序中除了标号以外每一行都是一条指令,每一条指令都指挥着单片机完成一个操作。比如指令“MOV P0,#00H”,实现将立即数00H从单片机的P0口输出,执行完这条指令后,单片机的8个P0口全为低电平。则与P0口相连的发光二极管被点亮。指令一般由助记符、目的操作数、源操作数、注释(有时可省略)组成,如图示,有时还为某条指令或某段程序添加标号。汇编语言对字
44、母的大小写不敏感,但习惯上程序中都使用大写字母。实例解读8051单片机完全学习与应用 3.10.4 初识指令初识指令80标号以英文字母开头的字符串,用于指向某条指令的地址。例如“LOOP_1:”、“START:”、“KEY2”等都可作为标号。另外,标号可以和其他指令在同一行,也可以单独为一行。助记符表达指令的功能。比如助记符“MOV”是移动的单词“Move”的缩写,其功能是把源操作数“移入”或者“载入”目的操作数中。目的操作数指令最终作用的对象。一条指令执行过后最终影响的是目的操作数。源操作数参与指令的操作。指令的执行将使用到源操作数,如图示指令把源操作数00H载入目的操作数P0口。在源操作数
45、中的“#”号代表其后的00H(十六进制数)是一个立即数,表明该指令的源操作数由一个立即数充当。立即数可以暂时理解为一个常数。注意目的操作数和源操作数之间有“,”号分隔。注释是为了他人或自己阅读程序时方便而标记的。汇编程序中,“;”号之后的部分都是注释,不会被单片机执行。注释可提高程序的可读性和调试的方便性。实例解读8051单片机完全学习与应用 3.10.5 立即数立即数81在图示指令中,立即数00H是一个十六进制数,“H”是十六进制数(hex)特有的后缀。在汇编语言中,十六进制数后面必须附上H,否则将认作十进制数。如果十六进制数以字母A、B、C、D、E、F开头时,应该在前面加上0。例如,十六进
46、制数B7H,在指令中应当写成0B7H,如“MOV P1,#0B7H”。如果把十六进制的立即数转换成二进制数,就可知道指令所影响目的操作数每一位的情况。比如指令“MOV P0,#00H”,立即数00H转换成二进制数为0000 0000,所以指令把这8个0载入P0口,于是单片机P0口都出现低电平。有时为了直观,可把二进制数作为立即数,但是需要在后面加上B,如“MOV P0,#00000000B”。当然,立即数也可以由十进制数充当,比如“MOV P0,#23”实现把十进制数23载入P0寄存器中,执行后P0口的状态为0001 0111(十进制数23对应的二进制数)。实例解读8051单片机完全学习与应用
47、 3.11.1 控制交替发光的原理控制交替发光的原理82 实例解读8051单片机完全学习与应用 3.12.1 开关基础知识开关基础知识83开关(switch)是一种允许电流通过或阻止电流通过的器件。开关的种类非常多,如乒乓开关、拨动开关、船型开关等。开关的底部都有管脚,与电路符号的引脚对应,使用时将开关的管脚接到电路中即可。实例解读8051单片机完全学习与应用 3.13.1 需求分析需求分析84需求分析:一开始,两支发光二极管与3.10节、3.11节中介绍的一样以500ms为间隔进行交替发光,直到按钮开关按下时,交替发光的频率变快,变成以200ms为间隔。直到按钮开关释放后交替发光又恢复以50
48、0ms为间隔。实例解读8051单片机完全学习与应用 3.13.2 电路设计电路设计85 实例解读8051单片机完全学习与应用 3.13.3 程序设计程序设计86当S1没有按下时,由于电阻R3的上位作用P1.0=1;当S1按下后,P1.0口因接入地中于是P1.0=0。只要单片机检测P1.0口的状态就知道用户有没有按下按钮开关,从而对发光二极管的闪烁时间进行调整即可。实例解读8051单片机完全学习与应用 3.13.3 程序设计程序设计87 实例解读8051单片机完全学习与应用 3.13.3 程序设计程序设计88 实例解读8051单片机完全学习与应用 3.13.3 程序设计程序设计89 实例解读80
49、51单片机完全学习与应用 3.13.3 程序设计程序设计90 实例解读8051单片机完全学习与应用 3.13.4 延时子程序延时子程序91在主程序中指令“CALL DELAY”的功能是调用子程序DELAY。当单片机执行到“CALL DELAY”时,就转到子程序DELAY中去执行,而在子程序DELAY的最后一行的指令RET是子程序结束的标志,表明将要返回主程序的CALL DELAY的下一行继续执行。实例解读8051单片机完全学习与应用 3.13.4 延时子程序延时子程序92在标号“D1:”后的指令“MOV R4,#20”使R4=20,R4是单片机的工作寄存器,可以保存数据,这里也可以理解成为一个
50、变量。同理,指令“MOV R5,#248”使R5=248。指令“DJNZ R5,$”的功能是将R5的值减1,不等于0则重新执行本行指令,继续将R5减1看是否等于0。指令中的美元符号“$”指向本条指令的地址。实例解读8051单片机完全学习与应用 3.13.4 延时子程序延时子程序93一条DJNZ指令执行花费的时间为2个机器周期(附录B),由于R5=248,所以执行完“DJNZ R5,$”所耗时间为2248个机器周期。加上前一条1个机器周期的指令“MOV R5,#248”共花去1+2248=497个机器周期。接下来,指令“DJNZ R4,D2”将R4的值减1,不等于0则跳回标号D2处继续执行。由于