【文档说明】微型单片计算机与接口技术-第六章_47课件3.ppt,共(87)页,744.000 KB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-77601.html
以下为本文档部分文字说明:
安徽工程大学计算机与信息学院导读单一的单片机芯片是无法独立工作的,必须为其配置相应的电源、时钟、复位等电路,然后才能正常工作。它们合在一起构成了最小系统。在实际应用中,对于不同的应用需求,还需要扩展一些必要的硬件接口来满足应用需求。针对不同的应用需求,由于选择的芯片不同,接口的设计
与使用方法可能不同。本章将详细描述最小系统的设计过程及基本的应用接口电路的设计方法。6.151单片机系统核心的硬件设计这里主要考虑:芯片的选择、时钟与电源的管理以及中断系统的应用。6.1.1处理器芯片的选择6.1.2时钟与电源管理6.1.3中断系统在选用处理器芯片时,应该从所设计的产品
的应用角度,综合考虑性能、成本、技术支持等因素,选取满足系统要求的芯片。通常从以下几个方面的指标来选择。1、在片资源2、系统时钟3、电源管理4、芯片的封装方式5、片内存储器的容量时钟与电源是整个嵌入式产品硬件系统工作的
基础。计算机电路均为时序电路,都必须有一个时钟信号才能正常工作;电源系统为整个产品提供能量,如果电源系统处理的好,整个系统的故障会减少很多。为了提高系统效率和实时性,可以采用中断传送方式。6.1.1处理器芯片的选择1、在片资源2
、系统时钟3、电源管理4、芯片的封装方式5、片内存储器的容量在选用处理器芯片时,首先应该考虑芯片的在片资源,如果芯片的在片资源能够满足应用系统的需要,将会大大减少外围电路的设计,降低成本、减小体积。系统时钟决定了芯片的处
理速度,系统时钟越高,处理速度越快。处理器的功耗是处理器选择的一个重要性能指标。如果应用系统需要使用电池供电,并且需要在无人值守的环境下进行长时间工作,那就需要选择低功耗的处理器。一般来讲,芯片的耗电量与工作频率成正比,系统的功耗还可以通过电源模式的变化来
获得最好的控制,因此处理器能提供多种电源管理模式也是非常重要的。处理器芯片的封装形式有QFP、TQFP、PQFP、LQFP、BGA、LBGA等形式(参见附录B),BGA封装具有芯片面积小的特点,可以减少PCB板的面积,但是需要专用的焊接设备,无法手工焊接。另外一般BGA封装的芯片无法用
双面板完成PCB布线,需要多层PCB板布线。很多单片机芯片都有内置的存储器,大小不等,如果片内存储器的容量能够满足应用系统的需求,就不需要在片外扩展存储器了。6.1.2时钟与电源管理1、电源电路2、振荡器与时钟电路3、复位电路为嵌入
式产品设计电源系统是一个权衡的过程,必须考虑输出电压、电流、功率;输入电压、电流;安全因素;输出波纹;电磁兼容和电磁干扰;功耗及成本等多种因素。在设计系统的前级电源时需要综合考虑多种因素,过高的输入电压会使芯片发热量增大,波动的电压对输出电压的波动也有一
定的影响,低功耗设计对于嵌入式系统有着非常重要的意义,在电源模块的设计中,应该考虑到低功耗设计。51单片机片内设有一个由反向放大器所构成的振荡电路,XTALl和XTAL2分别为振荡电路的输入端和输出端。时钟可以由
内部方式产生或外部方式产生。51单片机的复位电路如图所示。在RESET(图中表示为RST)输入端出现高电平时实现复位和初始化。在振荡器运行的情况下,要实现复位操作,必须使RST引脚至少保持两个机器周期(24个振荡器周期)高电平。CPU在第二个机器周期内执行内部复位操作、以后每一个
机器周期重复一次,直至RST端电平变低。复位期间不产生ALE及PSEN信号。6.1.3中断系统1、51单片机的中断系统⑴.中断请求源51单片机的中断系统可用图来表示,基本的中断源有五个:◆/INT0来
自P3.2引脚上的外部中断请求(外中断0)。◆/INT1来自P3.3引脚上的外部中断请求(外中断l)。◆T0片内定时计数器0溢出(TF0)中断请求。◆T1片内定时计数器1溢出(TF1)中断请求。◆RI+TI片内串行口完成一帧发送或接收中断请求源TI或RI。6.
1.3中断系统1、51单片机的中断系统⑵.中断请求标志每一个中断源都对应有一个中断请求标志位,它们设置在特殊功能寄存器TCON和SCON中。当这些中断源请求中断时,分别由TCON和SCON中的相应位来锁存。①定时计数器的中断请求标志TCON是定时计数器0和1(T0,T1)的控制寄存器,它同时也用来
锁存T0,T1的溢出中断请求源和外部中断请求源,TCON寄存器中与中断有关的位如图所示。②串行口的中断请求标志串行口控制寄存器SCON中的低2位用作串行口中断标志,如图所示。6.1.3中断系统2、中断控制寄存器⑴.中断允许和禁止在51单片机的中
断系统中,中断允许或禁止是由片内的中断允许寄存器IE(IE为特殊功能寄存器)控制的,IE中的各位功能如图⑵.中断优先级控制51单片机的中断系统提供两个中断优先级,对于每一个中断请求源都可以编程为高优先级中断源或低优先级中断源,以便实现二级中断嵌套。中断优
先级是由片内的中断优先级寄存器IP(特殊功能寄存器)控制的。IP寄存器中各位的功能说明如图6.1.3中断系统3、中断优先级结构⑴.响应中断的基本规则⑵.中断优先级结构⑶.内部查询顺序51单片机的中断优先级遵循
下列两条基本规则:①低优先级中断源可被高优先级中断源所中断,而高优先级中断源不能被任何中断源所中断;②一种中断源(不管是高优先级或低优先级)一旦得到响应,与它同级的中断源不能再中断它。为了实现上述两条规则,中断系统内部包含两个不可
寻址的优先级状态触发器。其中一个用来指示某个高优先级的中断源正在得到服务,并阻止所有其它中断的响应;另一个触发器则指出某低优先级的中断源正得到服务;所有同级的中断都被阻止,但不阻止高优先级中断源。当同时收到几个同一优先级的中断时,响应哪一个中断源取决于内
部查询顺序。其优先级排列如下:中断源同级内的中断优先级外部中断0最高定时器/计数器0溢出中断|外部中断1|定时器/计数器1溢出中断|串行口中断最低6.1.3中断系统4、中断响应过程⑴.采样⑵.CPU不能响应中断的条件⑶.查询⑷.中断处
理⑸.五个中断源服务程序的入口地址CPU在每个机器周期的S5P2时刻采样中断标志,而在下一个机器周期对采样到的中断进行查询。下面的任何一个都能封锁CPU对中断的响应:①CPU正在处理同级的或高一级的中断;②现行的机
器周期不是当前所执行指令的最后一个机器周期;③当前正在执行的指令是返回(RETI)指令或是对IE或IP寄存器进行访问的指令。上述三个条件中,第二条是保证把当前指令执行完,第三条是保证如果在当前执行的是RETI指令或是对
IE、IP进行访问的指令时,必须至少再执行完一条指令之后才会响应中断。如果在前一个机器周期的S5P2有中断标志,则在查询周期内便会查询到并按优先级高低进行中断处理,中断系统将控制程序转入相应的中断服务程序。中断查询在每个机器周期中重复执行,所查询到的状态为前一个机器周期的S
5P2时采样到的中断标志。这里要注意的是:如果中断标志被置位,但因上述条件之一的原因而未被响应,或上述封锁条件已撤消,但中断标志位已不再存在(已不再是置位状态)时;被拖延的中断就不再被响应,CPU将丢弃中断查询的结果。也就是说,CPU对中断标志置位后,如未能
及时响应而转入中断服务程序的中断标志不作记忆。CPU响应中断时,先置相应的优先级激活触发器,封锁同级和低级的中断。然后根据中断源的类别,在硬件的控制下,程序转向相应的向量入口单元,执行中断服务程序。硬
件调用中断服务程序时,把程序计数器PC的内容压入堆栈(但不能自动保存程序状态字PSW的内容),同时把被响应的中断服务程序的入口地址装入PC中。中断源入口地址外部中断00003H定时器0溢出000BH外部中断10013H定时器1溢出001BH串行口中断0023H通常,在中断入口地址处安排一条跳转
指令,以跳转到用户的服务程序入口。中断服务程序的最后一条指令必须是中断返回指令RETI。6.1.3中断系统5、外部中断触发方式51单片机的外部中断INTx(INT0和INT1)可以用程序控制为电平触发或跳变触发(通过编程对定时计数器控制寄存器TCON中的IT0和
IT1位进行清“0”或置“1”)。若ITx(x=0,1)为0,则外部中断INTx程控为电平触发,由INTx引脚上所检测到的低电平(必须保持到CPU响应该中断时为止,并且还应在中断返回前变为高电平)触发。若ITx=1,则外部中断INTx由负跳变
触发。即在相继的两个机器周期中,前一个周期从INTx引脚上检测到高电平,而在后一个周期检测到低电平,则置位TCON寄存器中的中断请求标志IEx(IE0或IE1),由IEx发出中断请求。由于外部中断引脚在每个机器周期内被采样一次,所以中断引脚上的电平应至少保持12个振荡周期,以
保证电平信号能被采样到。对于跳变触发方式的外部中断,要求输入的负脉冲宽度至少保持12个振荡周期(若晶振频率为6MHZ,则宽度为2us),以确保检测到引脚上的电平跳变,而使中断请求标志IEx置位。对于电平触发的外部中断源,要求在中断返回前撤销中断请求(使引脚上的电平变高)是为了避
免在中断返回后又再次响应该中断而出错。电平触发方式适用于外部中断输入为低电平,而且能在中断服务程序中撤销外部中断请求源的情况。6.1.3中断系统6、中断响应时间外部中断INT0和INT1的电平在每个机器周期的S5P2时被采样并锁存到IE0和IE1中,这
个置入到IE0和IEl的状态在下一个机器周期才被查询电路查询。如果产生了一个中断请求,而且满足响应的条件,CPU响应中断,由硬件生成一条长调用指令转到相应的服务程序入口。这条指令是双机器周期指令。因此,从中断请求有效到执行中断服务程序的第一条指令的时间间隔至少需要三个完整的机
器周期。如果中断请求被前面所述的三个条件之一所封锁,将需要更长的响应时间。①若一个同级的或高优先级的中断已经在进行,则延长的等待时间显然取决于正在处理的中断服务程序的长度。②如果正在执行的一条指令还没有进行到最后
一个周期,则所延长的等待时间不会超过二个机器周期,这是因为51单片机指令系统中最长的指令(MUL和DIV)也只有四个机器周期。③假若正在执行的是RETI指令或者是访问IE或IP指令,则延长的等待时间不会超过五个机器周期(为完成
正在执行的指令还需要一个周期,加上为完成下一条指令所需要的最长时间四个周期,如MUL和DIV指令)。因此,在系统中只有一个中断源的情况下,响应时间总是在三个机器周期到八个机器周期之间。6.1.3中断系统7、中断程序设计⑴初始化程序要使用中断系统,必须首先进行初始化,初始化主要完成以下工作:◆设置
中断优先级设置中断优先级寄存器(IP),选择中断源为高优先级中断源或低优先级中断源。◆允许中断设置中断允许寄存器(IE),将中断允许标志(EA)和与中断源相应的位设置为1,允许中断。⑵中断服务程序为了处理具体的
中断事件需要编写相应的程序。6.2存储器接口存储器是用来存放程序与数据的部件,本节主要介绍51单片机的存储器组织和扩展外部存储器的接口设计方法。6.2.151单片机的存储器组织6.2.2程序存储器的扩展6.2.3数据存储器的扩展6.2.4非易
失性数据存储器6.2.151单片机的存储器组织51单片机的存储器组织采用哈弗结构,它把程序存储器和数据存储器分开,各有自己的寻址系统、控制信号和功能。程序存储器为只读存储器(ROM),用来存放程序和始终要保留的常数。数据存储器为随机存取存储器(RAM),通常用来存放程序运行中所需要的常数或变量。从
物理地址空间看,51单片机有四个存储器地址空间,即:片内程序存储器;片外程序存储器;片内数据存储器;片外数据存储器。51单片机的存储器结构如图1、程序存储器程序存储器用来存放编制好的始终保留的固定程序和表格常数。程序存储器以程序计数
器PC作地址指针,通过16位地址总线,可寻址的地址空间为64K字节。51单片机中,64K字节程序存储器的地址空间是统一的。对于有内部ROM的单片机,在正常运行时,应把/EA引脚接高电平,使程序从内部ROM开始执行。当PC值超出内部ROM的容量时;会自动转向外部程序存储器空间。对这类单片机,
若把/EA接低电平,可用于调试程序,即把要调试的程序放在与内部ROM空间重叠的外部程序存储器内,进行调试和修改。对于无内部ROM的单片机,地址从0000H~FFFFH都是外部程序存储器空间。/EA应始终接低电平,使系统只从外部程序存储器中取指。51单片机复位后,程序计数器PC的内容为0000
H,因此系统从0000H单元开始取指,并执行程序,它是系统执行程序的起始地址。通常在该单元中存放一条跳转指令,从而避开中断服务程序的入口地址,用户程序从跳转地址开始存放。2、内部数据存储器51单片机的数据存储器无论在
物理上或逻辑上都分为两个地址空间,一个为内部数据存储器,访问内部数据存储器用MOV指令;另一个为外部数据存储器,访问外部数据存储器用MOVX指令。内部数据存储器是最灵活的地址空间,它分成物理上独立的且性质不同的几个区;00H~7FH(0~127)单元组成的低128字节地址空间的RA
M区;80H~FFH(128~255)单元组成的高128字节地址空间的RAM区;另外有128字节地址空间的专用寄存器(又称特殊功能寄存器)区,专用寄存器(SFR)地址空间为80H~FFH。00H~1FH(0~31)共
32个单元是四个通用工作寄存器区,每一个区有八个工作寄存器;编号为R0~R7。当前程序使用的工作寄存器区是由程序状态字PSW(特殊功能寄存器,字节地址为D0H)中的D4,D3位(RS1和RS0)来指示的,PSW的状态和工作寄存
器区对应关系见表PSW.4PSW.3R0—R7RS1RS0当前工作寄存器区000011102113内部RAM的20H~2FH为位寻址区域(见表2-4),这16个单元的每一位都有一个位地址,位地址范围为00H~7FH。位寻址区的每一位都可以视作软件触发器,由程序直
接进行位处理。通常把各种程序状态标志、位控制变量设在位寻址区内。同样,位寻址区的RAM单元也可以作一般的数据缓冲器使用。内部RAM的30H~7FH为数据缓冲区。在一个实际的程序中,往往需要一个后进先出的RAM区,以保存CPU的现
场,这种后进先出的缓冲器区称为堆栈。51单片机的堆栈原则上可以设在内部RAM的任意区域内,但一般设在30H-7FH的范围内。栈顶的位置由栈顶指针SP指出。注意:高128字节的RAM和专用寄存器(SFR)的地址空间都是80H~FFH,区别是访问时的寻址方式不同。专用寄存器(SFR),只能用直接寻址
方式访问,部分SFR还可用位寻址。高128字节的RAM区,只能用间接寻址方式访问。3、专用功能寄存器51单片机内的锁存器、定时器、串行口数据缓冲器以及各种控制寄存器和状态寄存器都是以专用功能寄存器(或称特殊功能寄存器)的形式出现的,它们分散地分布在内部RAM地址空间范围(80
H~FFH)内,表列出了这些专用功能寄存器(SFR)的助记标识符、名称及地址。其中,凡字节地址可以被8整除的专用功能寄存器都可以位寻址。累加器ACC累加器是一个最常用的专用寄存器。大部分单操作数指令的操作取自累加器。
很多双操作数指令的一个操作数取自累加器。加、减、乘、除算术运算指令的运算结果都存放在累加器A或AB寄存器对中。指令系统中用A作为累加器的助记符。B寄存器在乘除指令中,用到了B寄存器。乘法指令的两个操作数分别取自A和B其结果
存放在AB寄存器对中。除法指令中,被除数取自A,除数取自B,商数存放于A,余数存放于B。在其它指令中,B寄存器可作为RAM中的一个单元来使用。程序状态字PSW程序状态字是一个8位寄存器,它包含了程序状态信息。此寄存器各位的含义参见
如下:栈指针SP栈指针SP是一个8位专用寄存器。它指示出堆栈顶部在内部RAM中的位置。系统复位后,SP初始化为07H,使得堆栈事实上由08H单元开始。考虑到08H~lFH单元分属于工作寄存器区1~3,若程序设计中要用到这些区,则最好把SP值改置为1FH或更大的值。SP的初始值越小,堆栈
深度就可以越深。堆栈指针的值可由软件改变,因此堆栈在内部RAM中的位置比较灵活。除用软件直接改变SP值外,在执行PUSH,POP指令,各种子程序调用,中断响应,子程序返回(RET)和中断返回(RETI)等指令时,SP值将自
动增量或减量。数据指针DPTR数据指针DPTR是一个16位专用寄存器,其高位字节寄存器用DPH表示;低位字节寄存器用DPL表示。既可以作为一个16位寄存器DPTR来处理,也可以作为两个独立的8位寄存器DPH和DPL来处理。DPTR主要用来存放16位地址,当对64KB外部数据
存储器空间寻址时,可作为间址寄存器用。传送指令有下列两条:MOVXA,@DPTRMOVX@DPTR,A在访问程序存储器时,DPTR可用作基址寄存器,有一条采用基址个变址寻址方式的指令MOVCA,@A+DPTR,常用于读取存放在程序存储器内的表格常数。端口P0~P3
专用寄存器P0,P1,P2和P3分别是I/O端口P0~P3的锁存器。P0~P3作为专用寄存器还可用直接寻址方式参与其它操作指令。4、外部数据存储器51单片机具有扩展64K字节的外部数据存储器和I/O口的能力,这对很多应用领域已足够使用。对外部数据存储器的访问采用M
OVX指令,用间接寻址方式,R0,R1和DPTR都可作为间址寄存器。6.2.2程序存储器的扩展当51单片机片内ROM不能满足使用时,就需要在片外扩展。1、程序存储器的常用扩展芯片外部程序存储器可选用EPROM、EEP
ROM或FlashROM。2、扩展连接方法51单片机片外程序存储器的一般连接方法如图51单片机的低8位地址必须经锁存器接到外部存储器,51单片机的nPSEN引脚接外部程序存储器的片选信号nOE。应注意nEA的连接:若0
地址在片内,nEA接Vcc;若0地址在片外,nEA接GND。6.2.3数据存储器的扩展51单片机芯片内部具有128/256个字节RAM存储器,它们可以作为工作寄存器、堆栈、软件标志和数据缓冲器。CPU对其内容RAM有丰富的操作指令,因此这个RAM是十分珍贵的资源,我们应合
理地充分地使用片内RAM存储器,发挥它的作用。在诸如数据采集处理的应用系统中,仅仅片内的RAM存储器往往是不够的,在这种情况下,可利用51单片机的扩展功能,外接RAM电路,作为外部数据存储器以扩大存储器的容量。1、外部数据存储器的选配原则在选择数据
存储器芯片时,除了考虑容量和使存储器的读取时间与主机的时钟匹配之外,还必须考虑到存储器的写入时间要求。2、数据存储器的常用扩展芯片外部数据存储器可选用RAM、EEPROM或FlashROM。RAM分为动态RAM和静态RAM两类。由于静态RAM不需考虑刷新问题,接口简单,所以在单片机系统中
常用静态RAM。3、扩展连接方法6.2.3数据存储器的扩展3、扩展连接方法⑴.51单片机与外部数据存储器的一般连接方法,如图:51单片机的低8位地址必须经锁存器接到外部数据存储器。51单片机的/RD(P3.7)引脚接外部数据存储器的读选通信号/OE,/WR(P3.6)引脚接外部
数据存储器的写允许信号/WE。6.2.3数据存储器的扩展3、扩展连接方法⑵.外部数据存储器的扩展容量超过64KB的扩展方法当外部数据存储器的扩展容量超过64KB时,可采用页面选择技术来进行扩展。例:采用一片29C020来扩展256KB的数据存储器见图我们
可将这256KB的空间划分成8个页面,每个页面为32KB。外设一个锁存器作为页面存储器。访问时,先输出页面号,然后按页内地址访问。如图:在P2.7输出“1”时,写页面地址;在P2.7输出“0”时,访问存储器。6.2.3数据存储器的扩展3、扩展连接方法⑶.将外部程序存储器和数据存储器
空间合并的扩展方式为了节约成本,我们可以选用一片EEPROM或FlashROM既作为外部程序存储器,也作为外部数据存储器使用。这时外部程序存储器和数据存储器的空间是合并的。在读存储器时,既可用MOVX指令,也可用MOVC指令。在写存储器时,只可以用MOVX指令。6.
2.4非易失性数据存储器一些新型的51内核单片机,片内除了FlashROM和RAM以外,还包含有数据EEPROM或FlashRAM,可以用于存放断电以后不能丢失的数据。例如:ATMEL公司的AT89S8252单片机,片内包含有2KB的EEPR
OM。1、AT89S8252的EEPROM的编址方式AT89S8252的EEPROM独立编址,空间上与片外RAM重叠,借助于标志位(EEMEN)区分。6.2.4非易失性数据存储器2、AT89S8252的EEPROM相关的端口(寄存器
)AT89S8252的EEPROM的访问需要用到3个标志位:EEMWE、EEMEN和WDTRST。这3个标志位在看门狗及存储器控制寄存器(WMCON)中。◆EEMWE:写EEPROM使能控制位。在用MOVX指令写EEPROM
之前必须置位。写完EEPROM之后要清零。◆EEMEN:EEPROM访问使能控制位。EEMEN=1时,指令MOVXA,@DPTR和MOVX@DPTR,A访问的不再是外部数据存储器,而是访问EEPROM;当EEMEN=0时,这两条指令则访问外部数据存储器。◆WDT
RST:看门狗复位控制写EEPROM时,这一位用做只读的RDY/BSY。在内部编程过程起动后,RDY/BSY为“0”。而编程结束后,RDY/BSY自动恢复为“1"。也就是说,RDY/BSY为“1”时表示可以对EEPROM
进行写操作。6.2.4非易失性数据存储器3、AT89S8252的EEPROM的访问方法访问片内EEPROM的指令为MOVX@DPTR,A和MOVXA,@DPTR。在访问(读/写)片内EEPROM之前,首先要置位WMCON的EEMEN。否则,MOVX指令访问的是片外的RAM。⑴、读操作如果要对E
EPROM进行读操作,需要以下步骤:①.置位WMCON的EEMEN(EEMEN=1),选择访问片内EEPROM②.执行MOVXA,@DPTR,读数据;③.清除EEMEN,结束对EEPROM的操作。⑵、写操作如果要对EEPROM进行写操作,需要以下步骤:①.置位WMCON的EEMEN(EEME
N=1),选择访问片内EEPROM置位EEMWE(EEMWE=1),允许写操作;②.执行MOVX@DPTR,A指令,写数据;③.检查WMCON的WDTRST是否为“1”,等待写操作结束。如果为“0",则返回等待;如果为“1",表明编程结束。④.清除E
EMWE和EEMEN,结束对EEPROM的操作。6.2.4非易失性数据存储器4、AT89S8252的EEPROM的访问例程读操作:MOVDPTR,#7FFH;要访问的EEPROM地址MOVA,#08H;置位EEMENORL96H,AMOVXA,@DPTR;读数据MOVxxH,A;保存数据
MOVA,#0F7HANL96H,A;清除EEMEN写操作MOVDPTR,#7FFH;要访问的EEPROM地址MOVA,#18H;置位EEMEN和EEMWEORL96H,AMOVA,#77HMOVX@DPTR,A;写数据77HHFRF:MOVA,96HJN
BACC.1,HFRF;等待编程结束MOVA,#0F7HANL96H,A;清除EEMEN和EEMWE习题1.选用处理器芯片时,要考虑的主要因素有哪些?2.51单片机的时钟频率范围是多少?若采用内部时钟,外接的电容起什么作用?5.51单片机的程序存储器与数据存储器在物理上和逻辑上都是相互独立的,各有
自己的、和。程序存储器用来存放和始终要保持的;数据存储器用来存放程序运行中所需要的或。7.51单片机内部RAM区中,有4个工作寄存器区,它们的字节地址范围分别是、、、,要选择当前的工作寄存器区,应对PSW寄存器的和位进行设
置。8.51单片机的程序存储器是统一编址的,要使程序从内部ROM开始执行,应将/EA接,要使程序从外部ROM开始执行,应将/EA接。6.3通用I/O接口6.3.151单片机的通用I/O接口51单片机设有四个8位双向I/O端口(P0,P
1,P2,P3),每一条I/O线都能按位编程设置,独立地用作输入或输出。它们都被定义为特殊功能寄存器,可以进行位寻址,也可按字节寻址。P0口为三态双向口,能带8个LSTTL电路,作为一般的I/O口使用
时,P0口也是一个准双向口。P1,P2,P3口为准双向口(用作输入线时,端口锁存器必须先写入“1”,故称为准双向口),负载能力为4个LSTTL电路。一些新型的51单片机,I/O口的负载能力大大提高。端口名字节地址位地址负载能力P08
0H80H-87H8个LSTTL电路P190H90H-97H4个LSTTL电路P2A0HA0H-A7H4个LSTTL电路P3B0HB0H-B7H4个LSTTL电路P0~P3口的复位状态为FFH,即高电平输出。为了避免事故,一般采用负逻辑控制关系,即低电平有效。6.3.2通用I/O接口的基
本应用1、简单的开关输入接口这类应用的典型电路如左图所示,这里的开关K可以是普通的按钮开关、拨动开关、行程开关,也可以是继电器的常开触点。P0口作为输入接口时,内部无上拉电阻,需要外接上拉电阻,将其拉到高电平。这里的电阻R值一般取10KΩ~100KΩ。如果采用P1、P2或P3作为输
入接口,由于内部有上拉电阻,就不需要外接上拉电阻了。由于51单片机的I/O口都是准双向口,用作输入时,必须先写入“1”,然后读入。为了提高系统的抗干扰能力,可以在开关与单片机之间采用光电耦合器进行隔离,典型电路如右图所示。6.3.2通用I/O接口的基本应用2
、简单的LED输出接口传统的51单片机的I/O口的驱动能力比较小,不能直接驱动LED,所以必须外接驱动电路,这类应用的典型电路如左图所示。外接驱动的LED输出接口灌电流方式驱动LED目前的一些新型的51内核的单片机,I/O口的驱动能力大大加强,完全可以直接驱动LED。例如,89C2051单片
机的I/O口的灌电流可达20mA。采用灌电流方式驱动LED,只需加一个限流电阻R即可。这类应用时,需要将相应的I/O口设置为输出口,当输出0时,LED点亮;当输出1时,LED熄灭。电阻R值计算如下:R=(U电源-ULED压降)/I这里的I可以按照LED的工作电流取4mA
,U电源为5V,ULED压降一般为1.7V,所以R=660Ω,为了保护I/O口,限流电阻一般偏大一点取值,这里可以取1KΩ。6.3.2通用I/O接口的基本应用3、微型继电器输出接口这类应用的典型电路如图所示,
由于单片机的I/O口不能够直接驱动继电器,所以需要通过晶体管T驱动。二极管V1的作用是防止当继电器线圈电压大于+5V时,串入单片机。V2的是续流二极管,为了保护晶体管。6.3.3通用I/O接口的应用实例(组合逻辑控制)利用单片机的运算、逻辑处理能力,能很容易地实现输入输出的逻辑控制。如:
组合逻辑控制和时序逻辑控制,功能上完全可取代数字逻辑电路。优点:柔性控制。只要改变输入输出控制字表,就能实现不同的功能控制。缺点:响应速度较数字电路慢。组合逻辑控制就是对应不同的输入开关状态的组合,要求有相应的输出开关状态。实现组合逻辑控制的基本思想有两种:
1、应用逻辑运算实现逻辑控制2、应用查表程序实现逻辑控制应用逻辑运算实现逻辑控制的基本思想类同逻辑电路的设计,首先根据输入输出的关系列出真值表;然后根据真值表列出逻辑表达式,进行化简。应用程序主要有三部
分组成:首先读取输入状态;再用逻辑运算实现逻辑表达式;最后输出结果。典型的PLC就是采用这个思想。我们可以将输入输出的关系列表,通过查表程序来查找某输入状态,查到后,将对应的输出字输出;若查不到,则表明不是规定的输入状态,作相应处理。1、应用逻辑运算实现逻辑控制例:要求
三个开关控制一盏灯,任一开关状态的改变,均能改变灯的状态。设:K1、K2、K3为三个开关,分别从P1.1、P1.2、P1.3接入;D为灯,从P3.0经驱动控制。真值表如下:则:灯亮的条件为D=/P1.1*/P1.2*P1.3+/P1.1*P1.2*/
P1.3+P1.1*/P1.2*/P1.3+P1.1*P1.2*P1.3参考程序如下:CNTR:MOVC,P1.3ANLC,/P1.1ANLC,/P1.2MOVF0,CMOVC,P1.2ANLC,/P1.1ANLC,/P1.3ORLC,F0MOVF0,CMOVC,P1.1ANLC,/P1.2ANL
C,/P1.3ORLC,F0MOVF0,CMOVC,P1.1ANLC,P1.2ANLC,P1.3ORLC,F0MOVP3.0,CSJMPCNTR2、应用查表程序实现逻辑控制例:一台T6113镗床,有十个互锁的运动----主
轴左伸、主轴右缩、主轴箱上升、主轴箱下降、工作台前移、工作台后移、工作台左移、工作台右移、工作台左旋、工作台右旋,加上停止,共11种状态。在任何时刻,决不允许有2个或2个以上的工作状态同时出现。原机的设计采用了2个十字开关和一个2*3转换开关作指令
;用了14个中间继电器共约60个接点;数百条连接线,来完成互锁和译码的工作。系统复杂,故障点较多,维修困难。这里,完全可以采用单片机来设计一个专用模块。成本不足百元。输入指令与输出执行元件之间的逻辑关系2、应用查表程序实现逻辑控制设:原机采用的2个十字开关
和一个2*3转换开关分别单片机的P0和P1口,低电平有效;P2口输出经驱动控制执行元件,低电平有效,输入输出关系参见表将上述10种有效工作状态的输入输出关系顺序存放在一个表内,程序根据输入的(P0和P1)状态,查表取出输
出状态经P2口输出。参考程序如下:STR:MOVA,P0ORLA,#0F0H;将高4位设置为“F”MOV70H,A;暂时保存在70H单元MOVR2,#10;设置循环指针(查表用)MOVDPTR,#TAB;设置表首地址LOP:CLRAMOVCA,@A+DPTR;读取
表中P0相关值INCDPTRCJNEA,70H,LNF1;P0不符,转移CLRAMOVCA,@A+DPTR;读取表中P1相关值INCDPTRCJNEA,P1,LNF2;P1不符,转移CLRAMOVCA,@A+DPTR;读取表中P2相关值MOVP2,ASJMPSTRLNF1:INCD
PTRLNF2:INCDPTRDJNZR2,LOP;循环控制TZ:MOVP2,#0BFH;查不到,作为“停止”状态SJMPSTRTAB:DB0FEH,0FFH,0EFH,0FDH,0FFH,0DFHDB0FBH,0FFH,0AEH,0F7H,0FFH,9EHDB0FFH,0FEH,
0ADH,0FFH,0FDH,9DHDB0FFH,0FBH,0ABH,0FFH,0F7H,9BHDB0FFH,0EFH,0A7H,0FFH,0DFH,97HEND6.3.451单片机I/O口的扩展方法51单片机虽然设有四个8位双向I/O端口(P0,P1,P2,
P3),但是P3口常常需要用作为第二功能,P0口需要用作为地址数据总线,P2口用来提供高8位地址,所以能够完全作为I/O口使用的只有P1口。如果实际应用中,I/O口不够用,就需要进行扩展。这里常用的扩展
方法有两类:总线扩展和利用串行口扩展。1、总线扩展方法从51单片机的P0口提供并行数据线接到扩展芯片上。这种方法要分时占用P0口,但不影响P0口与其它扩展芯片的连接操作,不会增加单片机硬件上的额外开支。因此,得到广泛应用。在51单片机的应用系统中,I/
O扩展芯片主要有两大类:通用I/O芯片和TTL/CMOS锁存器、缓冲器。2、利用串行口扩展方法这是51单片机串行口在方式0工作状态下所提供的I/O口扩展功能。串行口方式0为移位寄存器工作方式,外接串入并出的移位寄存器74
LS164,可扩展并行输出口;外接并入串出的移位寄存器74LS163,可扩展并行输入口。(详见串行口方式0)⑴、应用TTL/CMOS锁存器、缓冲器的扩展设计对扩展芯片的基本要求扩展为输入口时:要求芯片具有三态输出电路。扩展为输出口时:要求芯片具有锁
存功能。常用的TTL/CMOS锁存器、缓冲器74LS373、74LS374、74LS244、74LS273、74LS267等。①应用74LS244扩展输入口参见图,扩展输入口既可与程序存储器统一编址,采用访问程序存储器的指令(
MOVC型指令)来读取,也可与数据存储器统一编址,采用访问数据存储器的指令(MOVX型指令)来读取。②应用74LS373扩展输出口参见图,扩展输出口只能与数据存储器统一编址,采用访问数据存储器的指令(MOVX型指令)来读取。应用74LS244扩展输入口图6-
22应用74LS373扩展输出口⑵、应用可编程I/O芯片扩展常用的通用I/O芯片有:Intel公司的8255A可编程并行I/O扩展接口;8155可编程并行I/O扩展接口;Zilog公司的PIO等。应用8255A的扩展电路应用8155的扩展电路6.4定时计数器51单片机内部
有两个16位可编程的定时计数器,即定时器T0和定时器T1(8052提供3个,这第三个称为定时器T2)。它们既可用作定时方式,又可用作计数方式。定时/计数器的基本结构如图所示。基本部件是两个8位的计数器(其中TH1,TL1是T1的计数器
,TH0,TL0是T0的计数器)。定时计数器相关的两个特殊功能寄存器1、定时器的方式寄存器TMOD特殊功能寄存器TMOD为定时器的方式控制寄存器;寄存器中每位的定义如图所示。高4位用于定时器1,低4位用于定时器0。M1、M0用来确定所选的工作方式C/nT定时器方式或计数器方
式选择位。C/nT=1时,为计数器方式;C/nT=0时,为定时器方式。GATE定时计数器运行控制位,用来确定对应的外部中断请求引脚(INT0,INT1)是否参与T0或T1的操作控制。当GATE=0时,只要定时器控制寄存器TCON中的TR0(或TR1)被置1时,T
0(或T1)被允许开始计数(TCON各位含义见后面叙述);当GATE=1时,不仅要TCON中TR0或TR1置位;还需要P3口的INT0或INTl引脚为高电平;才允许计数。定时计数器相关的两个特殊功能寄存器2、定时器控制寄存器TCON特殊功能寄存器TCON用
于控制定时器的操作及对定时器中断的控制。其各位定义如图6-27所示。其中D0~D3位与外部中断有关,在中断系统一节中介绍。定时计数器的工作方式1、方式0当M1;M0设置为0时,定时器选定为方式0工作。在这种方式下,
16位寄存器只用了13位,TL0的高三位未用。由TH0的8位和TL0的低5位组成一个13位计数器。工作方式0的逻辑图如图所示。当GATE=0时,只要TCON中的TR0为1,TL0及TH0组成的13位计数器就开始计数:
当GATE=1时,此时仅TR0=1仍不能使计数器计数,还需要INT0引脚为1才能使计数器工作。由此可知,当GATE=1和TR0=1时,THO和TL0是否计数取决于INT0引脚的信号,当INT0已由0变1时,开始计数;当INT0由1变0时,停
止计数,这样就可以用来测量在INT0端出现的脉冲宽度。当13位计数器加1到全“1”以后,再加1就产生溢出。这时,置TCON的TF0位为1;同时把计数器变为全“0”。定时计数器的工作方式2、方式1方式1和方式0的工作相同,唯一的差别是TH0和TL0组
成一个16位计数器。定时计数器的工作方式3、方式2方式2把TL0配置成一个可以自动恢复初值(初始常数自动重新装入)的8位计数器,TH0作为常数缓冲器,如图所示。TH0由软件预置值;当TL0产生溢出时,一方面使溢出标志TF0置1,
同时把TH0中的8位数据重新装入TL0中。方式2常用于定时控制。例如希望每隔250us产生一个定时控制脉冲,则可以采用12MHz的振荡器,把TH0预置为6,并使C/T=0就能实现。方式2还用作串行口波特率发生器。定时计数器的工作方式4、方式3方式3对定时器T0和
定时器T1是不相同的。若T1设置为方式3,则停止工作(其效果与TR1=0相同)。所以方式3只适用于T0。方式3使51单片机具有三个定时计数器(增加了一个附加的8位定时计数器)。当T0设置为方式3时,将使TL0和TH0成为
两个相互独上的8位计数器,如图所示。定时/计数器的初始化1、可编程接口的特征①提供多种工作方式可供选择。②按约定的规则,向有关控制寄存器写入控制字,即可选定一种工作方式。2、使用可编程接口的要素①要弄清如何选择工作方式②要弄清有关控制寄存器各控制位的功能,以便写入
控制字。③在用户程序中设置相应的指令,以预置控制字,达到选择工作方式的目的。3、51单片机定时/计数器的使用要素①选择计数脉冲源即选定:定时器方式还是计数器方式②选择工作方式即选定:方式0、方式1、方式2、方式3③选择启停的操作方式。④对计数器置初值。⑤若要使用中断,还要作相应的中断设置。⑥启动定
时/计数器的初始化4、计数器方式时间常数计算设T0为方式2工作时(自动装入时间常数的8位计数器),在外界发生一次事件时产生中断请求。时间常数的计算:方式2工作时,当计数到28时计数器就产生溢出。设时间常数
值为X,当发生一次外界事件时就溢出;则X+1=28X=28-1=11111111=FFH5、定时器方式时间常数计算设方式0工作时,定时时间为lms,时钟振荡频率为6MHz,计算:1个机器周期为:12×1/f=12×(1/6MHz)
=2us设时间常数为X,则(213-X)×2us=lms=1000usX=213-500=7692化成二进制数为:X=1111000001100F00C根据13位定时/计数器特性,高8位0F0H送至TH0;低5位0CH送TL0,可用下列指令实现:MOVTL0,#0CH;低5位送TL0寄
存器MOVTH0,#0F0H;高8位送TH0寄存器定时/计数器的初始化6、定时/计数器初始化程序举例设T1作定时器,以方式1工作,定时时间为10ms;T0作计数器,以方式2工作,外界发生一次事件即溢出。T0的时间常数为
:28-X=1X=FFHT1的时间常数为:(216-X)*2us=10msX=EC78H初始化程序:MOVTMOD,#16H;T1定时方式1,T0计数方式2,;即置TMOD寄存器的内容为00010110MOVTL0,#0FFH;T0时间常数送TL0MOVTH0,#
0FFH;T0时间常数送TH0MOVTL0,#78H;T1时间常数(低8位)送TL0MOVTH1,#0ECH;T1时间常数(高8位)送TH1。SETBTR0;置TR0为1允许T0启动计数SETBTR1;置TR1为1允许T1启动计数定时/计数器的应用实例利用单片机的运算、逻辑处
理能力,能很容易地实现输入输出的时序逻辑控制,功能上完全可取代数字逻辑电路。应用实例:设计一个系统,多段延时输出。我们可以建立一个表,顺序存放定时参数TH0、TL0。将定时计数器0设定为方式1计数器工作状态,计数常数由表内数据提供。硬件上外接秒脉冲源,每秒钟计数器
加1,计满则申请中断。参考程序如下:ORG0000HAJMPSTARORG000BHINT_0:CLREA;中断服务CLRET0CLRTR0SETB7FHRETIORG0030HSTAR:MOVTMOD,#05HRUN1:MOVDPTR,#TABLOOP1:CLR7
FHCLRAMOVCA,@A+DPTRMOVR0,AINCDPTRCLRAMOVCA,@A+DPTRINCDPTRLOOP2:MOVR1,AADDA,R0JNZLOOP3;表查完了吗?AJMPRUN1;是LOOP3:MOVTH0,R0MOV
TL0,R1CLRAMOVCA,@A+DPTRMOVP0,ASETBTR0;开中断SETBEASETBET0LOOP4:JNB7FH,LOOP4;等待中断AJMPLOOP1TAB:DB01H,32H,52H;TH0,TL0,
控制字DB03H,23H,54H......DB00H,00H;表结束标志END习题19.51单片机的定时计数器设置为计时器方式时,最大计数频率为多少?20.利用P1口控制8个发光管,编一程序让8个发光管周而复始地轮流发亮,设电路要求发光管点亮时,
P1口为高电平。每次点亮时间持续为0.5s。21.试编程对8155进行初始化。设A口为选通输出,B口为基本输入,C口作为控制联络口,并启动定时计数器按方式1工作,定时时间为10ms,定时器计数脉冲频率为单片机的时钟频率24分频,fosc=12MHZ。6.5键盘接口按键是一种简单的输入器件,在单片
机应用系统是经常使用的。如果我们的应用需要的按键数目不很多,而且处理器的I/O口足够使用,可以采用独立式连接方式,如果我们的应用需要的按键数目比较多,或者是处理器的I/O口不够用,就需要采用矩阵式键盘
或者直接采用计算机的标准的通用键盘。6.5.1独立式键盘接口每个独立式按键单独占用一个I/O口线,每个I/O口线上的按键状态不会影响其它I/O口线的状态。独立式按键的特点是:配置灵活,软件结构简单,但是每个按键必须占用一个I/O口线,在按键数目较多
时,占用I/O口资源较大。所以,一般仅用于按键数目不多的场合。独立式按键的识别通常有两种方法:一是查询方式,一是中断方式。查询方式:就是由程序不断地查询是否有按键按下,如果有按键按下的话,就读取键值执行相应的操作,否则继续查询。中断方式:在键盘没有按键按下时,CPU不理
睬键盘;在键盘按键按下时产生中断请求,通知CPU;CPU停下正在处理的工作,响应中断,停下正在处理的工作,执行按键的中断处理程序,判断哪个按键被按下,并处理按键操作,再回来继续原来的工作。6.5.2矩阵式键盘接口矩阵式键盘就是
将众多的按键排成矩阵式,每一个按键连接相应的行线与列线,在按键数目较多时,可节省I/O口线。51单片机的内部没有矩阵式键盘接口,要使用矩阵式键盘,有两种基本方式:直接通过I/O口线连接选用专用的键盘接口芯片连接。1、直接通过I/O口线连接的矩阵式键盘接口设计通过I/
O口线直接连接矩阵式键盘,键盘的管理全部由处理器来完成。例如:需要一个4×4的矩阵键盘,可以选择4个I/O引脚连接键盘的列线,再选择4个I/O引脚连接键盘的行线,如图所示。在处理器的程序中,需要具有以下功能:⑴键盘扫描:⑵去除抖动:⑶识别按键识
别有无键按下,通常有两种方法:一是查询方式,一是中断方式。查询方式:就是由程序不断地查询是否有按键按下,如果有按键按下的话,就读取键值执行相应的操作,否则继续查询。中断方式:在键盘没有按键按下时,CPU不理睬键盘;在键盘按
键按下时产生中断请求,通知CPU,CPU响应中断,停下正在处理的工作,执行按键的中断处理程序,判断哪个按键被按下,并处理按键操作,再回来继续原来的工作。由于按键的机械特性,当按键闭合及断开的瞬间,一定会产生抖动。按键抖动会引
起按键错误的识别,为此必须去除抖动的影响。消除抖动影响的基本方法有两种:硬件去抖和软件去抖。由于硬件去抖会使系统的成本提高,因此常使用软件去抖方法。软件去抖主要是采用延时的方法去除抖动的影响。由于按键的机械特性,抖动的时
间一般在5-10ms,软件去抖的基本思想是当检测出按键闭合后执行一个延时程序(10-20ms),然后再一次检测按键的状态,如仍保持闭合状态,则确认真正有键按下。在有按键按下时,需要识别是哪一个按键按下,按照对键盘的扫描方式不同,又分
为行扫描法和线反转法。行扫描法行扫描法的基本思想是:用软件程序把一个“步进的0”送至行线(让P1.3~P1.0依次输出1110B、1101B、1011B、0111B)扫描键盘各行,每一次“步进”都检测一下列线上的状态(读P1.7一P1.4),如果列线上有“0”则停止“步进”。
然后,把“步进的0”和列输入结合起来形成一个能反映按键所在行、列的键特征值,查ROM键特征值表确定按键健代号。其相应的软件流程如图。行扫描法的参考程序KEY:MOVP1,#0F0HMOVA,P1ANLA,#0F0HCJNEA,#0F0H,KEY1AJMPDISIN;退出,转显示程序入口DIS
INKEY1:ACALLD20MSMOVR2,#0FEHKEY2:MOVP1,R2MOVA,P1ANLA,#0F0HCJNEA,#0F0H,KEY3MOVA,R2CLRCRLCAMOVR2,AJBACC.1,KEY2AJM
PDISIN;退出,转显示程序入口DISINKEY3:MOVR3,AMOVA,R2KEY31:ANLA,#0FHORLA,R3MOVR3,AMOVDPTR,#KEYTABMOVR2,#0KEY4:CLRAMOVCA,@A+DPT
RXRLA,R3JZKEY5INCR2INCDPTRCJNER2,#10H,KEY4AJMPDISIN;退出,转显示程序入口DISINKEY5:MOVP1,#0F0HMOVA,P1ANLA,#0F0HCJNEA,#0F0H,KEY5ACALLD20MSAJMPKEYP;转键处理程序K
EYPD20MS:MOVR4,#20DD20MS1:MOVR5,#250DD20MS2:DJNZR5,D20MS2DJNZR4,D20MS1RETKEYTAB:DB0EEH,0DEH,0BEH,7EHDB0EDH,0DDH,0BDH,7DHDB0EBH,0DBH,0B
BH,7BHDB0E7H,0D7H,0B7H,77H线反转法所谓线反转,就是把原来作为输出的线变为输入,作为输入的线反过来变为输出。这样,键识别程序被简化了,不再需要逐行扫描时间了。利用51系列单片机P1口的“准双向特性”可方便地实现线反转。下面是参考的键识别程序。KEY:MOVP1,#0F0
HMOVA,P1ANLA,#0F0HCJNEA,#0F0H,KEY1AJMPDISIN;退出,转显示程序入口DISINKEY1:ACALLD20MSMOVP1,#0F0HMOVA,P1ANLA,#0F0HMOVR3,A
MOVP1,#0FHMOVA,P1KEY31:ANLA,#0FHORLA,R3MOVR3,AMOVDPTR,#KEYTABMOVR2,#0KEY4:CLRAMOVCA,@A+DPTRXRLA,R3JZKEY5INCR2INCDPTRCJNER2
,#10H,KEY4AJMPDISIN;退出,转显示程序入口DISINKEY5:MOVP1,#0F0HMOVA,P1ANLA,#0F0HCJNEA,#0F0H,KEY5ACALLD20MSAJMPKEYP;转键处理程序KEYPD20MS:MOVR4,#20DD20MS1:MOVR
5,#250DD20MS2:DJNZR5,D20MS2DJNZR4,D20MS1RETKEYTAB:DB0EEH,0DEH,0BEH,7EHDB0EDH,0DDH,0BDH,7DHDB0EBH,0DBH,0BBH,7BHDB0E7H,0D7
H,0B7H,77H2、选用键盘接口芯片连接矩阵式键盘的接口设计选用键盘接口芯片连接矩阵式键盘,键盘的管理不需要由处理器来完成,而是由键盘接口芯片来完成,但是处理器需要对接口芯片进行初始化操作。例如:采用8279芯片连接矩阵式键盘8279是Intel公司
生产的通用可编程键盘和显示器I/O接口器件。由于它本身可提供扫描信号,因而可代替微处理器完成键盘和显示器的控制,单个芯片就能完成键盘输入和LED显示控制两种功能。6.6显示器接口具有友好的人机接口,是嵌入式
系统的一个基本特征,在实际的应用系统中,常常需要配置显示装置,显示相应的信息。目前使用较多的显示装置有:LED数码管和LCD显示器,如果需要显示的信息量大,还可以使用VGA接口的显示器。6.6.1LED数码管显示接口在一些小型的应用系统中,仅仅需要显示一些字符
信息,就可以采用LED数码管显示。1、LED数码管的结构与原理⑴结构⑵显示原理⑶常用字符的段选码2、多位LED数码管的显示方式将多个LED数码管组合在一起就构成了多位LED数码管。每个LED数码管的段引脚称为段选线,公共端称为位选线。段选线控制显示的字符,位选线控制该LED的亮和灭。按照数码管的工
作方式不同,位选线和段选线的连接方法也不同。多位LED数码管有静态显示和动态显示两种方式。⑴静态显示⑵动态显示八段LED显示器的每一段均由一个或几个LED组成,依靠段的组合来显示所需的数字或字符。段的标记一般采用字母a、b、c、d、e、f、g、h来表示。八段LED显示器有共阴极的和共阳极的两种。如
图所示。八段LED显示器与单片机的接口比较简单,只要将一个8位并行口与显示器的引脚对应相接即可。由8位并行口输出不同的字节数据,显示出不同的数字或字符。控制LED显示出不同的数字或字符的8位字节数据称为“段选
码”。共阴极LED与共阳极LED的段选码互为补码。设8位并行口与LED数码管各段的连接是:D7、D6、D5、D4、D3、D2、D1、D0分别对应h、g、f、e、d、c、b、a,常用字符的段选码如下:显示字符共阴极共阳极显示字符共阴极共阳极03FHC0HA77
H88H106HF9Hb7CH83H25BHA4HC39HC6H34FHB0Hd5EHA1H406H99HE79H86H56DH92HF71H8EH67DH82HU3EHC1H707HF8HY6EH91H87FH80H8.FFH00H96FH90H
全灭00HFFH所谓静态显示,就是当数码管显示某一个字符时,相应的发光二极管恒定地导通或截止。例如,数码管的a,b,c,d,e,f导通,g截止,则显示0。这种数码管显示方式,每一位都需要有一个8位输出口控制。所以占用硬件多,一般用于数码管位数较小(很少)的
场合。当位数较多时;用静态显示所需的I/O口太多,一般采用动态显示方法。所谓动态显示,就是将所有数码管各位的段选线并联在一起,由一个8位并行口控制,而各位的公共端COM分别由相应的I/O口线控制。要使各位显示出不同的字符,就得采用扫描的方法,一位一位地轮流点亮各位数
码管(扫描)。对于每一位数码管来说,每隔一段时间点亮一次。数码管的点亮既跟点亮时的导通电流有关,也跟点亮时间和间隔时间的比例有关。调整电流和时间的参数,可实现亮度较高较稳定的显示。若数码管的位数不大于8位,则控制数码管公共极电位只需
一个I/O口(称为扫描口),控制各位数码管所显示的字形也需一个I/O口(称为段数据口)多位LED数码管与处理器的接口设计LED数码管与处理器的接口设计一般有两种:采用TTL锁存器和采用专用的键盘显示接口芯片。⑴、采用TTL锁存器构成的接口电路通过处理
器的通用I/O引脚,采用74HC574锁存器和74LLS138译码器可以构成数码管显示接口电路,如图所示。其中,采用51单片机的8个通用I/O引脚通过74HC574锁存器作为LED数码管的段选信号,另外3个通用I/O引脚通过74LLS138(3-8
译码器)作为LED数码管的位选信号。这种接口电路的显示程序需要采用动态扫描输出,逐位显示。从左到右或者从右到左,首先输出位选信号,选中要显示的位,然后输出段选信号,显示相应的字符,经延时后再换一位输出显示。多位LED数码管与处理
器的接口设计⑵、采用专用的键盘显示接口芯片构成的接口电路例如:采用8279键盘显示接口芯片8279不仅能够连接多达64键的键盘矩阵,,而且能够同时驱动16位共阴式数码管,如图所示。接口程序包括3个部分:①8279初始化程序②读8279的FIFORAM程序(取键值)③显示子程序设定键盘和显示
器的工作方式设定时钟分频率,以使8279的内部时钟为100KHz。按照硬件电路选定的中断口,设置中断控制字。参考程序如下:INIT:MOVA,#00000000B;设定为:8字符显示、左入、编码键盘、2键封锁
MOVDPTR,#0FEFFH;假定8279命令状态字的选通地址为0FEFFHMOVX@DPTR,AMOVA,#00101010B;设CPU时钟为6MHz,ALE输出为6MHz/6=1MHz,10分频,即可
得100KHz。MOVX@DPTR,ASETBIT1;INT1设置为边沿触发方式SETBEX1;打开中断SETBEA在键盘方式下,8279的读出总是按先入先出的顺序,所以不需设置FIFORAM首地址。KEY:MOVDPTR,#0FCFFH;假定8279数据字的选通地址为0F
CFFHMOVXA,@DPTR设:段选码(字库)的首地址为SEGPT。下列程序可将显示缓冲区中待显示的数据(8位)转换为相应的段选码,再写入8279的显示RAM。DISUP:MOVA,#10010000B;写RAM,从0000B地址开始,自动加1。MOVDPTR,#0FEFF
HMOVX@DPTR,AMOVR0,#79H;设置显示缓冲区指针MOVR2,#8H;设置显示的位数DISUP1:MOVA,@R0;按待显示的数据从字库中取出段选码MOVDPTR,#SEGPTMOVCA,@A+DPTRMOVDPTR,#0FCFFH;写入显示RAMMOV
X@DPTR,AINCR0DJNZR2,DISUP1RET6.6.2LCD显示接口1、LCD显示器目前市场上用于嵌入式系统的LCD显示器主要有两类:STN(SuperTwistedNematic,超扭曲向列型)和TFT(ThinFilmTransistor,薄膜晶体管型)。这两类显示器的
主要区别在于:STN主要是通过增大液晶分子的扭曲角,而TFT为每个像素点设置一个开关电路,做到完全独立控制每个像素点。从品质上看,STN的亮度较暗,画面的显示质量较差,颜色显示也不够丰富,但功耗小,价格便宜,可用显示
要求不高的嵌入式产品中。TFT型显示器在亮度、画面显示质量、显示颜色数量以及刷新速度等方面都优于STN显示器,但价格相对较高,主要用于显示要求高的视频播放类嵌入式产品中。51内核的单片机内部一般都没有LCD控制接口,要使用LCD显示器必须要有LCD控制器和一定空间的存储器支持,所以选
择LCM比较好。LCM是一种液晶显示模块,将LCD显示器、LCD控制器和存储器做成一体。接口简单,使用方便,使用时,只要向LCM输入命令和数据即可显示。产品分字符和图形两种。6.6.2LCD显示接口2、采用AMPIRE12864的LCD显示接口⑴AMPIRE12864的接口信号AMP
IRE12864是一种128*64点阵的LCM显示模块,其接口信号如下表⑵AMPIRE12864的显示控制命令该类液晶显示模块(即KS0108B及其兼容控制驱动器)的显示控制命令比较简单,总共只有七种。如表所示6.6.2
LCD显示接口⑶AMPIRE12864与51单片机的接口电路AMPIRE12864显示模块与51单片机的接口电路比较简单,例如图所示:⑷AMPIRE12864的接口程序AMPIRE12864的接口程序包括:开显示设置显示起始行设置页地址设
置列地址写数据表RSEQU090h;P1.0RWEQU091H;P1.1EEQU092H;P1.2CS1EQU094H;P1.4CS2EQU095H;P1.5CLRESETBRSSETBCS1;SELECT-CS1CLRCS2CLRRSMOVP1,#3FH;DISPLAYONLCALLWRITE
MOVR7,#01HSETBCS2;SELECT-CS2CLRCS1CLRRSMOVP1,#3FH;DISPLAYONCLRECLRRSMOVP1,#0C0H;显示起始行(ROW)设置为0LCALLWRITEMOVP1,#40H;列地址设置为0LCALLWRIT
EMOVP1,#0B8H;页(PAGE)设置为0LCALLWRITECOM:CLR00HCPL00HCOM1:MOVR1,#40HJNB00H,J43MOVR3,#10HCLRCSETBRSMOVA,DPLPUSHDPHADDA,#10HPUS
HDPLMOVDPL,AJ4:CLRAJNCJ42MOVCA,@A+DPTRINCDPHMOVP1,AAJMPJ42LCALLWRITEJ43:CLRCINCDPTRMOVA,DPLDJNZR3,J41ADDA,#70HMOVR3,#
10HMOVDPL,ACLRCJNCJ42MOVA,DPLINCDPHADDA,#10HJ42:DJNZR0,COM1MOVDPL,ARETJNCJ41WRITE:CLRRWINCDPHCLREJ41:DJNZR1,J4SETBECLRRSLCALLDELAY2MSINCR2
CLREMOVP1,R2RETLCALLWRITEMOVP1,#40HLCALLWRITEPOPDPLPOPDPH6.7A/D接口A/D转换器是模拟信号和CPU之间联系的接口,它是将连续变化的模拟信号转换为数字信号,以供计算机和数字系统进行分析
、处理、存储、控制和显示。在工业控制和数据采集及许多其它领域中,A/D转换是不可缺少的。6.7.1A/D转换的基本原理按照转换速度、精度、功能以及接口等因素,常用的A/D转换器有以下两种:1、双斜积分型的A/D转换器双斜积分型也称为二重积分式,其实质是测量和比较两个积分的时间,
一个是对模拟信号电压的积分时间T,此时间常是固定的,另一个是以充电后的电压为初值,对参考电源Vn的反向积分,积分电容被放电至零,所需的时间Ti。模拟输入电压Vi与参考电压Vref之比,等于上述两个时间之比。由于Vref
、T时间固定,而放电时间Ti可以测出,因而可以计算出模拟输入电压的大小。双斜积分式A/D转换原理见图基本原理双斜积分式A/D转换器通过两次积分,将被测电压Vx变成一个时间间隔,其持续时间与Vx的平均值成正比。用计数器测量此时间间隔
,就可以得到其数字结果。转换过程分3个阶段进行:休止阶段T0:K3闭合,积分器接地。采样阶段T1:K1闭合,积分器在固定的时间间隔T1内对Vx积分,最后在积分电容上获得一个与被测电压Vx平均值成正比的充电电压的。比
较阶段T2:K2闭合,一个与Vx极性相反的基准电压Vref被投入,使积分器进入反向积分过程,经过一个时间间隔T2,积分电容上的电压回零,整个转换过程结束。计数器在反向积分时间间隔内的计数值N即为转换结果(计数器在进
入比较阶段时开始计数,检零器检测到积分器输出回零时停止计数)。由于双斜积分式A/D转换器要通过两次积分才能得到相应的字结果,因而速度低,但对周期性的干扰信号积分为零,抗干扰性很好。6.7.1A/D转换的基本原理2、逐次逼近型的A/D转换器逐次比较式A/D转换器的原理框图如图所示。逻辑构成主要
由逐次逼近寄存器SAR、D/A转换器、比较器及时序控制逻辑构成,控制逻辑实现类似于对分搜索的控制,其转换原理用流程图表述如图所示。工作过程比较开始时,首先对最高数字位加以调整,把该位试置“1”,然后进行转换、比较、判断。若Vin<Vo,则说明这位置成“1”不合适重新置为“
0”,如Vin仍大于Vo,说明这次置成“1”是对的。然后对较低的位依次按照该办法进行调整和测试。这个办法好比用天平衡量一个物体的重量,第一次放最大的砝码若不合适,就改放小一号的,依次类推,一旦天平指示法码太重
说明刚才放进去的那个应当取走,显然,对于n位的转换器,总共需要重复这种调整n次。主要优点逐次逼近型模/数转换器的主要优点就是速度比较快。此外,与有同样分辨率的双积分型转换器相比较,它不需要高精度的运算放大器,而且成本也较低。
这种形式的模/数转换器在微型机系统中被广泛应用。6.7.2扩展的集成A/D转换接口一般的51内核单片机内部都没有ADC接口,要输入模拟量必须扩展A/D转换器,常用的A/D转换器有ADC0809系列芯片。集成的ADC0809系列芯片主要有八通道的ADC
0809/ADC0808和16通道的ADC0816/ADC0817。1、ADC0809集成A/D转换器2、ADC0809与51单片机的接口方法3、A/D转换的程序设计A/D转换的程序设计包括两部分内容:其一是启动转
换;其二是读取转换结果。ADC0809是逐次逼近比较型转换器,包括一个高阻抗斩波比较器。一个带有256个电阻分压器的树状开关网络;一个控制逻辑环节和八位逐次逼近数码寄存器;最后输出级有一个八位三态输出锁存器。其内部结构如图所示。ADC0809带有三态输出锁存器,可以直接与51单片机总线连接
。由于A/D转换需要时间,必须确定转换完毕才能够读取转换结果,所以不可以采用无条件传送方式,只能采用程序查询方式或程序中断方式。若采用程序查询方式,ADC0809的转换结束信号EOC需要连接到单片机的一个I/O口线;若采用程序中断方式,ADC0809的转换结束信号EOC需要经
反相后连接到单片机的一个外部中断引脚。图是采用程序中断方式的接口电路。启动各通道转换的程序可以如下:CLRP2.5;允许ADC0809启动MOVA,#N;N为通道号MOVX@R0,A;启动N通道若采用程序查询方式,需要首先读取连接转换结束信号EOC的I/O口,判别A/D转换是否结束,若已结束,就读
取转换结果;否则,返回读取,持续不断地查询,直到转换结束,再读取转换结果。若采用程序中断方式,需要在中断服务程序中读取转换结果。如图接口的读取转换结果程序可以如下:CLRP2.5MOVXA,@R06.7.3C8051F021的内置ADC
接口一些新型的51内核单片机,片内含有ADC接口,如:Cygnal公司的C8051F系列单片机和华邦公司的LPC-51系列单片机。C8051F021片内有一个12位SARADC(ADC0)和一个8位SARADC(ADC
1),下面以12位模/数转换器(ADC0)为例,作一个简单的介绍。1、C8051F021的12位模/数转换器(ADC0)C8051F021的ADC0子系统包括一个9通道的可编程模拟多路选择(AMUX0),一个可编程增益放大器(PGA0)和一个100ksps、12位分辨率的逐次逼近寄存器型AD
C,ADC中集成了跟踪保持电路和可编程窗口检测器。AMUX0、PGA0、数据转换方式及窗口检测器都可用软件通过特殊功能寄存器来控制。6.7.3C8051F021的内置ADC接口2、C8051F021的ADC
0相关的寄存器在C8051F021中,与ADC0相关的寄存器如下:⑴、AMUX0配置寄存器(AMUX0CF)用来配置AMUX0的功能。⑵、AMUX0通道选择寄存器(AMUX0SL)用来选择AMUX0的通道。⑶、ADC0配置寄存器(ADC0CF)用来设定ADC0的SAR转换时钟周期和内部放大器增益。
⑷、ADC0控制寄存器(ADC0CN)用来对ADC0进行初始化。⑸、ADC0数据寄存器(ADC0H和ADC0L)用来存放ADC0转换的结果。◆AIN01ICAIN0AIN1输入对配置位0:AIN0和AIN1为独立的单端输入1:AIN0,AIN1为分别为+,-差分输入
对◆AIN23ICAIN2AIN3输入对配置位0:AIN2和AIN2为独立的单端输入1:AIN2,AIN2为分别为+,-差分输入对◆AIN45ICAIN4AIN5输入对配置位0:AIN4和AIN5为独立的单端输入1:AIN4,AIN5为分别为+,-差分输入对◆
AIN67ICAIN6AIN7输入对配置位0:AIN6和AIN7为独立的单端输入1:AIN6,AIN7为分别为+,-差分输入对AA注:对于被配置成差分输入的通道ADC0数据字格式为2的补码。◆AMX0AD3~0AMUX0的通道地址0000~0111对应AIN0~71XXX对应温度
传感器◆AD0SC4-0:AC0SAR转换时钟周期控制位◆AMP0GN2-0:ADC0内部放大器增益SAR转换时钟来源于系统时钟由下面的方程000:增益=1001:增益=2给出,其中AD0SC表示AD0SC4-0中保持的010:增益=4011:增益=8数值
,CLKSAR0表示所需要的ADC0SAR10x:增益=1611x:增益=0.5时钟。(注:ADC0SAR时钟应小于或等于2.5MHz。)◆AD0ENADC0允许位0ADC0禁止ADC0处于低耗停机状态。1ADC
0允许ADC0处于活动状态并准备转换数据。◆AD0TMADC跟踪方式位0当ADC被允许时除了转换期间之外一直处于跟踪方式。1由ADSTM1-0定义跟踪方式。◆AD0INTADC0转换结束中断标志该标志必须用软件清0。0从最后一次将该位清0后ADC0还没有完成一次数据转换。1ADC完成了
一次数据转换。◆AD0BUSYADC0忙标志位◆AD0CM1-0ADC0转换启动方式选择位◆AD0WINTADC0窗口比较中断标志0自该标志被清除后未发生过ADC0窗口比较匹配。1发生了ADC0窗口比较匹配。◆AD0LJSTADC0数据左
对齐选择位0ADC0H:ADC0L寄存器数据右对齐。1ADC0H:ADC0L寄存器数据左对齐。6.7.3C8051F021的内置ADC接口一些新型的51内核单片机,片内含有ADC接口,如:Cygnal公司
的C8051F系列单片机和华邦公司的LPC-51系列单片机。C8051F021片内有一个12位SARADC(ADC0)和一个8位SARADC(ADC1),下面以12位模/数转换器(ADC0)为例,作一个简单的介绍。1、C8051F0
21的12位模/数转换器(ADC0)2、C8051F021的ADC0相关的寄存器在C8051F021中,与ADC0相关的寄存器如下:⑴、AMUX0配置寄存器(AMUX0CF)用来配置AMUX0的功能。⑵、AMUX0通道选择寄存器(AMUX0SL)用来选择AMUX0的通道。⑶、ADC0配置寄
存器(ADC0CF)用来设定ADC0的SAR转换时钟周期和内部放大器增益。⑷、ADC0控制寄存器(ADC0CN)用来对ADC0进行初始化。⑸、ADC0数据寄存器(ADC0H和ADC0L)用来存放ADC0转换
的结果。3、C8051F021的ADC0程序设计C8051F021的ADC0子系统包括一个9通道的可编程模拟多路选择(AMUX0),一个可编程增益放大器(PGA0)和一个100ksps、12位分辨率的逐次逼近寄存器型ADC,ADC中集成了
跟踪保持电路和可编程窗口检测器。AMUX0、PGA0、数据转换方式及窗口检测器都可用软件通过特殊功能寄存器来控制。6.7.3C8051F021的内置ADC接口3、C8051F021的ADC0程序设计C8051F021的ADC0程序
设计包括三部分内容:其一是初始化;其二是启动转换;其三是读取转换结果。⑴初始化程序C8051F021的ADC0使用前必须进行初始化,初始化的工作就是写AMUX0CF、AMUX0SL、ADC0CF和ADC0CN寄存器,此外还要允许ADC0中断。⑵启动
转换C8051F021的ADC0有4种转换启动方式,转换触发源有:①向ADC0CN的AD0BUSY位写“1”。②定时器3溢出,即定时的连续转换。③外部ADC转换启动信号的上升沿CNVSTR。④定时器2溢出,即定时的连
续转换。在初始化时,由ADC0CN中的AD0CM1AD0CM0的状态选择转换启动方式。⑶读取转换结果当通过向AD0BUSY写“1”启动数据转换时,应查询AD0INT位,以确定转换何时结束。也可以使用ADC
0中断,建议的查询步骤如下①写“0”到AD0INT②向ADBUSY写“1”③查询并等待AD0INT变1④处理ADC0数据若采用程序中断方式,需要在中断服务程序中读取转换结果。6.8D/A接口D/A转换器
的基本功能是将一个用二进制表示的数字量转换成相应的模拟量。实现这种转换的基本方法是对应于二进制数的每一位,产生一个相应的电压(电流),而这个电压(或电流)的大小则正比于相应的二进制位的权。6.8.1D/A转换的基本原理D/A转换器的基本功能是将一个用二进制
表示的数字量转换成相应的模拟量。实现这种转换的基本方法是对应于二进制数的每一位,产生一个相应的电压(电流),而这个电压(或电流)的大小则正比于相应的二进制位的权。图6-48就是一种“加权网络D/A转换器”的简化原理图。目前,大多数单片集成的D/A转换芯片都采用R-2R电阻网络来实现转换,如图6
-49。图6-48加权网络D/A转换器图6-49R-2R电阻网络6.8.1D/A转换的基本原理对于电阻网络来讲,无论开关Ki打到哪边,只要基准电压Vr恒定,则电流I和Ii的大小都不会改变。但是,开关Ki确定了Ii的流向,使得流向Σ点的电流可见,V0与输入数字量的大小成比例,此外还与放大器的反馈电阻
Rf和基准电压Vr有关。通常,调整Rf和Vr可改变满度值和输出范围。Uout的极性总是与基准电压Vr相反的。6.8.2扩展的D/A转换接口一般的51内核单片机内部都没有DAC接口,要输出模拟量必须扩展D/A转换器,DAC0832是目前国内用得较普遍的D/A转换器,DAC08
30系列产品包括DAC0830、DAC0831、DAC0832三种型号,它们可以完全互换。1、DAC0832D/A转换器DAC0832D/A转换器的内部结构如图6-50所示。由一个数据寄存器、DAC寄存器和D/A转换器三大部分组成。DAC08
32内部采用R—2R梯形电阻网络。两个寄存器输入数据寄存器和DAC寄存器用以实现两次缓冲,故在输出的同时,尚可准备一个数据,这就提高了转换速度。当多芯片同时工作时;可用同步信号实现各模拟量同时输出。6.8.2扩展的D/A
转换接口2、DAC0832和51单片机的接口DAC0832可工作在单、双缓冲器方式和直通工作方式,其数据传送方式可以是无条件传送方式。①单缓冲器方式即输入寄存器的信号和DAC寄存器的信号同时控制,使一个数据直接写入DAC寄存器。这种方式适用于只有一路
模拟量输出或几路模拟量不需要同步输出的系统。图为具有单极性一路模拟量的系统。图中ILE接+5V,Iout2接地,Iout1输出电流,经运5G24(F007)输出一个单极性电压,范围为0~5V。片选信号nCS和传
送信号nXFER都连到地址线P2.7,输入寄存器和DAC寄存器地址都可选为7FFFH,写选通输入线nWR1,nWR2都和单片机的写信号nWR连接,CPU对DAC0832执行一次写操作,则把一个数据直接写入DAC寄存器,DAC0832的模拟量随之变化。执行下面的程
序,将在运放输出端得到一个锯齿波电压。START:MOVDPTR,#7FFFH;0832口地址MOVA,#00HLOOP:MOVX@DPTR,AINCAAJMPLOOP在实际应用时,有许多场合要用双极性电压波形,这时只要将Iout2接地改为接入一个运放即可。6.8.2扩展的
D/A转换接口②双缓冲器工作方式即输入寄存器的信号和DAC寄存器信号分开控制,这种方式适用于几个模拟量需同时输出的系统。下面我们分别讨论上述两种方式时的接口方法。DAC0832可工作于双缓冲器方式,输入寄存器的锁存信号和DAC寄存器的锁存信号分开控制,这种方式适用于几个模拟量需同
时输出的系统,每一路模拟量输出需一个DAC0832,构成多个DAC0832同步输出的系统。图6-53为二路模拟量同步输出的DAC0832系统。在图6-53中,1#0832输入寄存器地址为DFFFH,2#0832输入寄存器地址BFFFH。1#和2#DAC0832的
DAC寄存器地址为7FFFH,DAC0832的输出分别按图形显示器(示波器)的XY偏转放大器输入端。执行下面程序,可完成一次转换。MOVDPTR,#0DFFFHMOVA,#DATA1MOVX@DPTR,AMOVDPTR,#0BFFFHMOVA,#D
ATA2MOVX@DPTR,AMOVDPTR,#7FFFHMOVX@DPTR,A6.8.2扩展的D/A转换接口③直通工作方式直通就是不进行缓冲,CPU送来的数字量直接送到DAC转换器,条件是除ILE端加高电平以外,将所有的控制信号都接低电平。执行下面程序,可完成一
次转换。MOVA,#DATAMOVP1,A6.8.3C8051F021的内置DAC接口一些新型的51内核单片机,片内含有DAC接口,如:Cygnal公司的C8051F系列单片机。1、C8051F021的12位D/A转换器(DAC)每个C8051F021器件都有两个片内12位电压方式D/A
转换器DAC0和DAC1。每个DAC的输出摆幅均为0V到(VREF-1LSB),对应的输入码范围是0x000到0xFFF。可以用对应的控制寄存器DAC0CN和DAC1CN允许/禁止DAC0和DAC1。在被禁止时,DAC的输出保持在高阻状态,DAC的供电电流降到1μA或更
小。每个DAC的电压基准在VREF引脚提供。注意:C8051F021的VREF引脚可以由内部电压基准或一个外部源驱动。如果使用内部电压基准,为了使DAC输出有效,该基准必须被使能。6.8.3C8051F021的内置DAC接口2、C8051F021的DAC相关的寄存
器C8051F021中,与DAC相关的寄存器有两种:DAC控制寄存器和数据寄存器。⑴、DAC控制寄存器C8051F021的每个D/A转换器都有一个控制寄存器(DAC0CN和DAC1CN),用来设定D/A转换器的数据格式、启动方式和使能控制。◆DAC0DF2-0DAC0数据格式位,由其编码确定DAC
的数据格式。000DAC0数据字的高4位在DAC0H[3:0],低8位在DAC0L中。001DAC0数据字的高5位在DAC0H[4:0],低7位在DAC0L[7:1]。010DAC0数据字的高6位在DAC0H[5:0],低6位在DAC0
L[7:2]。011DAC0数据字的高7位在DAC0H[6:0],低5位在DAC0L[7:3]。1xxDAC0数据字的高8位在DAC0H中,低4位在DAC0L[7:4]。◆DAC0MD1-0DAC0的启动方式位,由其编码确定DAC的启动方式。00DAC输出更新发生在写DAC0
H时。01DAC输出更新发生在定时器3溢出时。10DAC输出更新发生在定时器4溢出时。11DAC输出更新发生在定时器2溢出时。◆DAC0ENDAC0使能控制位0DAC0禁止,DAC0输出引脚为高阻态,DAC0处于节电停机方式。1DAC
0允许,DAC0正常输出,DAC0处于工作状态。⑵、DAC数据寄存器C8051F021的每个D/A转换器都有两个数据寄存器(DAC0H、DAC0L和DAC1H、DAC1L),用来存放转换输出的12位数据,12位数据的格式由控制
寄存器的低3位确定。6.8.3C8051F021的内置DAC接口3、C8051F021的DAC程序设计C8051F021的DAC程序设计包括两部分内容:其一是初始化;其二是启动转换。⑴初始化程序C8051F021的DAC使用前必须进行初始化,初始化的
工作就是写控制寄存器,设定D/A转换器的数据格式和启动方式,并且进行使能控制。若选择启动方式为定时的连续转换,还要对相应的定时器进行初始化,设置定时器的溢出速率(即转换输出的定时)。⑵启动转换C8051F021的DAC有4种转换启动方式,转换触发源有:①写DAC0H(或DA
C1H)时。②定时器3溢出,即定时的连续转换。③定时器4溢出,即定时的连续转换。④定时器2溢出,即定时的连续转换。在初始化时,由控制寄存器中的DAC0MD1-0(或DAC1MD1-0)的状态选择转换启
动方式。DAC采用的是无条件传送方式,只要将转换输出的数据传送到相应的数据寄存器即可。这里要注意两点:一是数据的格式应符合初始化时设定的格式要求;二是传送数据时,应先传送低位数据,后传送高位数据。本章小结本章介
绍了51内核单片机的基本应用接口的设计方法,详细介绍了存储器接口、通用I/O接口、键盘显示接口、显示接口、以及模拟接口的设计原理和设计方法。通过本章的学习,使读者对应用接口有了更深入的了解,可以按照不同的应用需求选择不同的接口进行应用开发。习题22.什么是编码键盘?什么是非编码键盘?24.为什么要
消除键盘的机械抖动?有哪些方法?27.试采用8279A芯片设计一个键盘显示接口。(关于8279A芯片资料,自己到网上搜索)28.在一个51单片机系统中,选用ADC0809作为接口芯片,用于测量炉温,温度传感信号接IN3,设计一个能实现A/D转换的接口及相应的转换程序。单片机与接口的连接如下图所示。