第七章单片机并行接口技术_第1页
第七章单片机并行接口技术_第2页
第七章单片机并行接口技术_第3页
第七章单片机并行接口技术_第4页
第七章单片机并行接口技术_第5页
已阅读5页,还剩122页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 第七章第七章 单片机并行接口技术单片机并行接口技术 7.1 7.1 单片机与键盘接口单片机与键盘接口 7.2 7.2 单片机与显示器接口单片机与显示器接口 7.3 D/A7.3 D/A转换器接口转换器接口 7.4 A/D7.4 A/D转换器接口转换器接口 7.1 7.1 键盘接口键盘接口 7.1.1 键盘工作原理键盘工作原理 1按键的分类按键的分类 按键按照结构原理可分为两类,一类是触点式开关按键,如机械式开关、导电橡胶式开关等;另一类是无触点式开关按键,如电气式按键,磁感应按键等。前者造价低,后者寿命长。目前,微机系统中最常见的是触点式开关按键。 按键按照接口原理可分为编码键盘与非编码键盘

2、两类,这两类键盘的主要区别是识别键符及给出相应键码的方法。编码键盘主要是用硬件来实现对键的识别,非编码键盘主要是由软件来实现键盘的定义与识别。 全编码键盘能够由硬件逻辑自动提供与键对应的编码,此外,一般还具有去抖动和多键、窜键保护电路。这种键盘使用方便,但需要较多的硬件,价格较贵,一般的单片机应用系统较少采用。非编码键盘只简单地提供行和列的矩阵,其它工作均由软件完成。由于其经济实用,较多地应用于单片机系统中。下面将重点介绍非编码键盘接口。 2键输入原理键输入原理 在单片机应用系统中,除了复位按键有专门的复位电路及专一的复位功能外,其它按键都是以开关状态来设置控制功能或输入数据的。当所设置的功能

3、键或数字键按下时,计算机应用系统应完成该按键所设定的功能,键信息输入是与软件结构密切相关的过程。 对于一组键或一个键盘,总有一个接口电路与CPU相连。CPU可以采用查询或中断方式了解有无将键输入,并检查是哪一个键按下,将该键号送入累加器ACC,然后通过跳转指令转入执行该键的功能程序,执行完后再返回主程序。 3按键结构与特点按键结构与特点 微机键盘通常使用机械触点式按键开关,其主要功能是把机械上的通断转换成为电气上的逻辑关系。也就是说,它能提供标准的TTL逻辑电平,以便与通用数字系统的逻辑电平相容。 机械式按键再按下或释放时,由于机械弹性作用的影响,通常伴随有一定时间的触点机械抖动,然后其触点才

4、稳定下来。其抖动过程如图7.2所示,抖动时间的长短与开关的机械特性有关,一般为510 ms。图7.2按键触点的机械抖动闭合稳定键按下前沿抖动后沿抖动 在触点抖动期间检测按键的通与断状态,可能导致判断出错,即按键一次按下或释放被错误地认为是多次操作,这种情况是不允许出现的。为了克服按键触点机械抖动所致的检测误判,必须采取去抖动措施。这一点可从硬件、软件两方面予以考虑。在键数较少时,可采用硬件去抖,而当键数较多时,采用软件去抖。 在硬件上可采用在键输出端加R-S触发器(双稳态触发器)或单稳态触发器构成去抖动电路。图6.3是一种由R-S触发器构成的去抖动电路,当触发器一旦翻转,触点抖动不会对其产生任

5、何影响。图7.3双稳态去抖电路&VCC(5 V)Qab4.7 k4.7 k 电路工作过程如下:按键未按下时,a = 0,b = 1,输出Q = 1。按键按下时,因按键的机械弹性作用的影响,使按键产生抖动。当开关没有稳定到达b端时,因与非门2输出为0反馈到与非门1的输入端,封锁了与非门1,双稳态电路的状态不会改变,输出保持为1,输出Q不会产生抖动的波形。当开关稳定到达b端时,因a = 1,b = 0,使Q = 0,双稳态电路状态发生翻转。当释放按键时,在开关未稳定到达a端时,因Q = 0,封锁了与非门2,双稳态电路的状态不变,输出Q保持不变,消除了后沿的抖动波形。当开关稳定到达a端时,因

6、a = 0,b = 0,使Q = 1,双稳态电路状态发生翻转,输出Q重新返回原状态。由此可见,键盘输出经双稳态电路之后,输出已变为规范的矩形方波。 软件上采取的措施是:在检测到有按键按下时,执行一个10 ms左右(具体时间应视所使用的按键进行调整)的延时程序后,再确认该键电平是否仍保持闭合状态电平,若仍保持闭合状态电平,则确认该键处于闭合状态。同理,在检测到该键释放后,也应采用相同的步骤进行确认,从而可消除抖动的影响。 4. 按键编码按键编码 一组按键或键盘都要通过I/O口线查询按键的开关状态。根据键盘结构的不同,采用不同的编码。无论有无编码,以及采用什么编码,最后都要转换成为与累加器中数值相

7、对应的键值,以实现按键功能程序的跳转。 5. 编制键盘程序编制键盘程序 一个完善的键盘控制程序应具备以下功能: (1) 检测有无按键按下,并采取硬件或软件措施,消除键盘按键机械触点抖动的影响。 (2) 有可靠的逻辑处理办法。每次只处理一个按键,其间对任何按键的操作对系统不产生影响,且无论一次按键时间有多长,系统仅执行一次按键功能程序。 (3) 准确输出按键值(或键号),以满足跳转指令要求。 7.1.2 独立式按键独立式按键 单片机控制系统中,往往只需要几个功能键,此时,可采用独立式按键结构。 1. 独立式按键结构独立式按键结构 独立式按键是直接用I/O口线构成的单个按键电路,其特点是每个按键单

8、独占用一根I/O口线,每个按键的工作不会影响其它I/O口线的状态。独立式按键的典型应用如图7.4所示。 独立式按键电路配置灵活,软件结构简单,但每个按键必须占用一根I/O口线,因此,在按键较多时,I/O口线浪费较大,不宜采用。图7.4独立式按键电路P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.78031VCC 2. 独立式按键的软件结构独立式按键的软件结构 独立式按键的软件常采用查询式结构。先逐位查询每根I/O口线的输入状态,如某一根I/O口线输入为低电平,则可确认该I/O口线所对应的按键已按下,然后,再转向该键的功能处理程序。图6.4中的I/O口采用P1口,请读者自行编制相应

9、的软件。 7.1.3 矩阵式按键矩阵式按键 单片机系统中,若使用按键较多时,通常采用矩阵式(也称行列式)键盘。 1. 矩阵式键盘的结构及原理矩阵式键盘的结构及原理 矩阵式键盘由行线和列线组成,按键位于行、列线的交叉点上,其结构如图7.5所示。 由图可知,一个44的行、列结构可以构成一个含有16个按键的键盘,显然,在按键数量较多时,矩阵式键盘较之独立式按键键盘要节省很多I/O口。图7.5矩阵式键盘结构0123456789101112131415001231235 V 矩阵式键盘中,行、列线分别连接到按键开关的两端,行线通过上拉电阻接到5V上。当无键按下时,行线处于高电平状态;当有键按下时,行、列

10、线将导通,此时,行线电平将由与此行线相连的列线电平决定。这是识别按键是否按下的关键。然而,矩阵键盘中的行线、列线和多个键相连,各按键按下与否均影响该键所在行线和列线的电平,各按键间将相互影响,因此,必须将行线、列线信号配合起来作适当处理,才能确定闭合键的位置。 2. 矩阵式键盘按键的识别矩阵式键盘按键的识别 识别按键方法很多,其中最常见的方法是扫描法。下面以图7.5中8号键的识别为例来说明扫描法识别按键的过程。 按键按下时,与此键相连的行线与列线导通,行线在无键按下时处在高电平。显然,如果让所有的列线也处在高电平,那么,按键按下与否不会引起行线电平的变化,因此,必须使所有列线处在低电平。只有这

11、样,当有键按下时,该键所在的行电平才会由高电平变为低电平。CPU根据行电平的变化,便能判定相应的行有键按下。8号键按下时,第2行一定为低电平。然而,第2行为低电平时,能否肯定是8号键按下呢? 回答是否定的,因为9、10、11号键按下,同样会使第2行为低电平。为进一步确定具体键,不能使所有列线在同一时刻都处在低电平,可在某一时刻只让一条列线处于低电平,其余列线均处于高电平,另一时刻,让下一列处在低电平,依此循环,这种依次轮流每次选通一列的工作方式称为键盘扫描。采用键盘扫描后,再来观察8号键按下时的工作过程,当第0列处于低电平时,第2行处于低电平,而第1、2、3列处于低电平时,第2行却处在高电平,

12、由此可判定按下的键应是第2行与第0列的交叉点,即8号键。 3. 键盘的编码键盘的编码 对于独立式按键键盘,因按键数量少,可根据实际需要灵活编码。对于矩阵式键盘,按键的位置由行号和列号惟一确定,因此可分别对行号和列号进行二进制编码,然后将两值合成一个字节,高4位是行号,低4位是列号。如图7.5中的8号键,它位于第2行,第0列,因此,其键盘编码应为20H。采用上述编码对于不同行的键离散性较大,不利于散转指令对按键进行处理。因此,可采用依次排列键号的方式对按排进行编码。以图6.5中的44键盘为例,可将键号编码为:01H、02H、03H、0EH、0FH、10H等16个键号。编码相互转换可通过计算或查表

13、的方法实现。 4. 键盘的工作方式键盘的工作方式 对键盘的响应取决于键盘的工作方式,键盘的工作方式应根据实际应用系统中CPU的工作状况而定,其选取的原则是既要保证CPU能及时响应按键操作,又不要过多占用CPU的工作时间。通常,键盘的工作方式有三种,即编程扫描、定时扫描和中断扫描。 1) 编程扫描方式编程扫描方式 编程扫描方式是利用CPU完成其它工作的空余时间,调用键盘扫描子程序来响应键盘输入的要求。在执行键功能程序时,CPU不再响应键输入要求,直到CPU重新扫描键盘为止。键盘扫描程序一般应包括以下内容:(1) 判别有无键按下。(2) 键盘扫描取得闭合键的行、列值。(3) 用计算法或查表法得到键

14、值。(4) 判断闭合键是否释放,如没释放则继续等待。(5) 将闭合键键号保存,同时转去执行该闭合键的功能。 图7.6是一个48矩阵键盘电路,由图可知,其与单片机的接口采用8155扩展I/O芯片,键盘采用编程扫描方式工作。8155C口的低4位输入行扫描信号,A口输出8位列扫描信号,二者均为低电平有效。8155的IO/ 与P2.0相连, 与P2.1相连, 、 分别与单片机的 、 相连。由此可确定8155的口地址为: 命令/状态口:0100H(P2未用口线规定为0) A 口:0101H B口:0102H C口:0103HMCSRDWRRD图7.68155扩展I/O口组成的矩阵键盘0123456789

15、1617182425262728293031P2.7P2.0RDWRALECSIO/MRDWRALEPA0PA1PA2PA3PA4PA5PA6PA7PC0PC1PC2PC3+5 V8155D0D7P0.0P0.7MCS-51单片机1920212223151413121110 图7.6中,A口为基本输出口,C口为基本输入口,因此,方式命令控制字应设置为43H。在编程扫描方式下,键盘扫描子程序应完成如下几个功能: (1) 判断有无键按下。其方法为:A口输出全为0,读C口状态,若PC0PC3全为1,则说明无键按下;若不全为1,则说明有键按下。 (2) 消除按键抖动的影响。其方法为:在判断有键按下后,

16、用软件延时的方法延时10 ms后,再判断键盘状态,如果仍为有键按下状态,则认为有一个按键按下,否则当作按键抖动来处理 (3) 求按键位置。根据前述键盘扫描法,进行逐列置0扫描。图7.6中,32个键的键值分布如下(键值由4位十六进制数码组成,前两位是列的值,即A口数据,后两位是行的值,即C口数据,X为任意值):FEXE FDXE FBXE F7XE EFXE DFXE BFXE7FXE FEXD FDXD FBXD F7XD EFXD DFXD BFXD 7FXD FEXB FDXB FBXB F7XB EFXB DFXB BFXB 7FXB FEX7 FDX7 FBX7 F7X7 EFX7 D

17、FX7 BFX7 7FX7 按键键值确定后,即可确定按键位置。相应的键号可根据下述公式进行计算:键号=行首键号+列号。图6.6中,每行的行首可给以固定的编号0(00H),8(08H),16(10H),24(18H),列号依列线顺序为07。 (4) 判别闭合的键是否释放。按键闭合一次只能进行一次功能操作,因此,等按键释放后才能根据键号执行相应的功能键操作。 键盘扫描程序流程图请参阅图7.1中的主程序流程图。 键盘扫描程序请参阅实训7源程序中的键盘查询程序、键盘扫描程序和按键查询子程序三部分。 2) 定时扫描方式定时扫描方式 定时扫描方式就是每隔一段时间对键盘扫描一次,它利用单片机内部的定时器产生

18、一定时间(例如10 ms)的定时,当定时时间到就产生定时器溢出中断。CPU响应中断后对键盘进行扫描,并在有键按下时识别出该键,再执行该键的功能程序。定时扫描方式的硬件电路与编程扫描方式相同,程序流程图如图7.7所示。 图7.7定时扫描方式程序流程图开始有键闭合标志11标志21标志21识别按键执行按键功能返回标志10标志20标志11NYNYYN 图7.7中,标志1和标志2是在单片机内部RAM的位寻址区设置的两个标志位,标志1为去抖动标志位,标志2为识别完按键的标志位。初始化时将这两个标志位设置为0,执行中断服务程序时,首先判别有无键闭合,若无键闭合,将标志1和标志2置0后返回;若有键闭合,先检查

19、标志1,当标志1为0时,说明还未进行去抖动处理,此时置位标志1,并中断返回。由于中断返回后要经过10 ms后才会再次中断,相当于延时了10 ms,因此,程序无须再延时。 下次中断时,因标志1为1,CPU再检查标志2,如标志2为0说明还未进行按键的识别处理,这时,CPU先置位标志2,然后进行按键识别处理,再执行相应的按键功能子程序,最后,中断返回。如标志2已经为1,则说明此次按键已做过识别处理,只是还未释放按键。当按键释放后,在下一次中断服务程序中,标志1和标志2又重新置0,等待下一次按键。 3) 中断扫描方式中断扫描方式 采用上述两种键盘扫描方式时,无论是否按键,CPU都要定时扫描键盘,而单片

20、机应用系统工作时,并非经常需要键盘输入,因此,CPU经常处于空扫描状态。 为提高CPU工作效率,可采用中断扫描工作方式。其工作过程如下:当无键按下时,CPU处理自己的工作,当有键按下时,产生中断请求,CPU转去执行键盘扫描子程序,并识别键号。 图7.8是一种简易键盘接口电路,该键盘是由8051 P1口的高、低字节构成的44键盘。键盘的列线与P1口的高4位相连,键盘的行线与P1口的低4位相连,因此,P1.4P1.7是键输出线,P1.0P1.3是扫描输入线。图中的4输入与门用于产生按键中断,其输入端与各列线相连,再通过上拉电阻接至+5 V电源,输出端接至8051的外部中断输入端。 具体工作如下:当

21、键盘无键按下时,与门各输入端均为高电平,保持输出端为高电平;当有键按下时,端为低电平,向CPU申请中断,若CPU开放外部中断,则会响应中断请求,转去执行键盘扫描子程序。图7.8 中断扫描键盘电路P1.0P1.1P1.3P1.2P1.4P1.5P1.6P1.7INT08031&7.2 7.2 单片机与显示器接口单片机与显示器接口 7.2.1 LED显示和接口显示和接口 常用的LED显示器有LED状态显示器(俗称发光二极管)、LED七段显示器(俗称数码管)和LED十六段显示器。发光二极管可显示两种状态,用于系统状态显示;数码管用于数字显示;LED十六段显示器用于字符显示。本节重点介绍LED

22、七段显示器。 例7.1 用定时/计数器模拟生产线产品计件,以按键模拟产品检测,按一次键相当于产品计数一次。检测到的产品数送P1口显示,采用单只数码管显示,计满16次后从头开始,依次循环。系统采用12 MHz晶振。图7.9模拟生产线产品计件数码管显示电路解:根据题意可设计出硬件电路如图6.9所示。agdefbcdpabcdefgdpDPY12345678510 8P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7P3.3MCS-51单片机5 V 其源程序可设计如下: ORG1000H MOV TMOD,#60H ;T1工作在方式2 MOV TH1,#0F0H ;T1置初值 MOV

23、TL1,#0F0H SETB TR1 ;启动定时器1MAIN: MOV A,#00H ;计数显示初始化 MOV P1,#0C0H ;数码管显示0 DISP:JBP3.3,DISP;监测按键信号 ACALL DELAY;消抖延时 JB P3.3,DISP;确认低电平信号 DISP1:JNB P3.3,DISP1 ;监测按键信号 ACALL DELAY;消抖延时NB P3.3,DISP1;确认高电平信号CLRP3.5 ;T0引脚产生负跳变NOP NOP SETBP3.5 ;T0引脚恢复高电平 INCA ;累加器加1MOV R1,A ;保存累加器计数值 ADDA,#08H ;变址调整 MOV CA,

24、A+PC ;查表获取数码管显示值 MOVP1,A ;数码管显示查表值 MOVA,R1 ;恢复累加器计数值 JBC TF1,MAIN ;查询定时器1计数溢出 SJM P DISP ;16次不到继续计数 TAB: DB 0C0H,0F9H,0A4H;0,1,2 DB 0B0H,99H,92H;3,4,5DB 82H,0F8H,80H;6,7,8DB 90H,88H,83H,;9,A,BDB 0C6H,0A1H,86H;C,D,EDB8EH;F DEALY: MOV R2,#14H;10 ms延时 DELAY1:MOV R3,#0FAH DJNZR3,$ DJNZR2,DEALY1 RET END

25、比较例6.4和例7.1可知,同样是显示数字信息,例6.4是通过P1口每一位状态的显示来获取信息,例7.1是直接通过数码管显示的数字来获取信息,显然,后者更加直观、快捷。从获取信息的角度来看,例7.1优于例6.4。由例7.1可具体剖析数码管的结构,分析其工作原理。 1. 数码管简介数码管简介 1) 数码管结构数码管结构 数码管由8个发光二极管(以下简称字段)构成,通过不同的组合可用来显示数字0 9、字符A F、H、L、P、R、U、Y、符号“”及小数点“”。数码管的外形结构如图7.10(a)所示。数码管又分为共阴极和共阳极两种结构,分别如图7.10(b)和图7.10(c)所示。图7.10数码管结构

26、图(a)外型结构;(b)共阴极;(c)共阳极agdfecb10 9876gfGNDabedGNDc dp12345VDVD 5 V(a)(b)(c)dp 2) 数码管工作原理数码管工作原理 共阳极数码管的8个发光二极管的阳极(二极管正端)连接在一起。通常,公共阳极接高电平(一般接电源),其它管脚接段驱动电路输出端。当某段驱动电路的输出端为低电平时,则该端所连接的字段导通并点亮。根据发光字段的不同组合可显示出各种数字或字符。此时,要求段驱动电路能吸收额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。 共阴极数码管的8个发光二极管的阴极(二极管负端)连接在一起。通常,公共阴极

27、接低电平(一般接地),其它管脚接段驱动电路输出端。当某段驱动电路的输出端为高电平时,则该端所连接的字段导通并点亮,根据发光字段的不同组合可显示出各种数字或字符。此时,要求段驱动电路能提供额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。 例7.1采用共阳极数码管与单片机P1口直接连接,其电路连接如图7.9所示。数码管公共阳极接+5 V电源,其它管脚分别接P1口的8个端口,限流电阻为510 ,数码管字段导通电流约为6 mA(额定字段导通电流一般为5 20 mA)。 3) 数码管字形编码数码管字形编码 要使数码管显示出相应的数字或字符,必须使段数据口输出相应的字形编码。对照图

28、7.10(a),字型码各位定义为:数据线D0与a字段对应,D1与b字段对应,依此类推。如使用共阳极数码管,数据为0表示对应字段亮,数据为1表示对应字段暗;如使用共阴极数码管,数据为0表示对应字段暗,数据为1表示对应字段亮。如要显示“0”,共阳极数码管的字型编码应为:11000000B(即C0H);共阴极数码管的字型编码应为:00111111B(即3FH)。依此类推,可求得数码管字形编码如表7.1所示。表7.1 数码管字型编码表显显示示字字符符字字型型共共 阳阳 极极共共 阴阴 极极dpgfedcba字型字型码码dpGfedcba字型字型码码0011000000C0H001111113FH111

29、1111001F9H0000011006H2210100100A4H010110115BH3310110000B0H010011114FH441001100199H0110011066H551001001092H011011016DH661000001082H011111017DH7711111000F8H0000011107H881000000080H011111117FH991001000090H011011116FHAA1000100088H0111011177HBB1000001183H011111007CHCC11000110C6H0011100139H 续表显显示示字字符符字字型型

30、共共 阳阳 极极共共 阴阴 极极 dpgfedcba字型字型码码dpGfedcbaDD10100001A1H010111105EHEE1000011086H0111100179HFF100011108EH0111000171HHH1000100189H0111011076HLL11000111C7H0011100038HPP100011008CH0111001173HRR11001110CEH0011000131HUU11000001C1H001111103EHYY1001000191H011011106EH 10111111BFH0100000040H.011111117FH10000000

31、80H熄熄灭灭灭灭11111111FFH0000000000H字型字型码码 例7.1采用共阳极数码管,因此,应采用表7.1中的共阳极字型码。具体实施是通过编程将需要显示的字型码存放在程序存储器的固定区域中,构成显示字型码表。当要显示某字符时,通过查表指令获取该字符所对应的字型码。 LED七段数码管有静态显示和动态显示两种方式,下面分别加以叙述。 2. 静态显示接口静态显示接口 1) 静态显示概念静态显示概念 静态显示是指数码管显示某一字符时,相应的发光二极管恒定导通或恒定截止。 这种显示方式的各位数码管相互独立,公共端恒定接地(共阴极)或接正电源(共阳极)。每个数码管的8个字段分别与一个8位I

32、/O口地址相连,I/O口只要有段码输出,相应字符即显示出来,并保持不变,直到I/O口输出新的段码。采用静态显示方式,较小的电流即可获得较高的亮度,且占用CPU时间少,编程简单,显示便于监测和控制,但其占用的口线多,硬件电路复杂,成本高,只适合于显示位数较少的场合。 2) 多位静态显示接口应用多位静态显示接口应用 例7.1是数码管静态显示方式的一种典型应用,其硬件及软件都非常简单,但其只能显示一位,如要用P1口显示多位,则每位数码管都应有各自的锁存、译码与驱动器,还需有相应的位选通电路。位选通电路输出位码。 例7.2 将例7.1中的单位数码管显示改为6位显示,具体要求如下: (1) 右边第一位进

33、行正常计数,显示当前计数状态,其功能与例7.1完全一样。 (2) 左边5位分别显示前5次计数状态,当连续计数时,会产生计数数据从左至右移动的感觉。 解:整体设计思路如下: P1口控制段码输出,P3口控制位码输出,每个数码管接一个锁存器。锁存器除用来锁存待显示段码外,还兼作显示驱动器直接驱动共阳极数码管。在单片机内部RAM设置待显示数据缓冲区,由查表程序完成显示译码(俗称软件译码),将缓冲区内待显示数据转换成相应的段码,再将段码送P1口显示。 硬件电路设计如下: P1口的段码输出直接接至锁存器的输入端,锁存器采用74LS373(或74LS273、74LS374)。锁存器的输出接至数码管的各段,同

34、时还经300 上拉(或限流)电阻接至电源。位选通电路由P3口的P3.0(RXD)、P3.1(TXD)和P3.2(INT0)与3-8译码器74LS138连接组成。74LS138输出的位码经倒相器74LS04后接至74LS373的使能端LE(或74LS273、74LS374的时钟端),以此来控制相应显示位段码数据的刷新。模拟生产线计数的按键信号接至P3.3(INT1)口,具体电路如图6.11所示。 7.11六位数码管静态显示电路D03Q02D14Q15D27Q26D38Q39D413Q412D514Q515D617Q616D718Q719OE1LE74LS373D03Q02D14Q15D27Q26

35、D38Q39D413Q412D514Q515D617Q616D718Q719OE1LE74LS373D03Q02D14Q15D27Q26D38Q39D413Q412D514Q515D617Q616D718Q719OE1LE74LS373D03Q02D14Q15D27Q26D38Q39D413Q412D514Q515D617Q616D718Q719OE1LE74LS373D03Q02D14Q15D27Q26D38Q39D413Q412D514Q515D617Q616D718Q719OE1LE74LS373D03Q02D14Q15D27Q26D38Q39D413Q412D514Q515D617Q6

36、16D718Q719OE1LE74LS373A1B2C3E14E25E36Y015Y114Y213Y312Y411Y510Y69Y7774LS138EA/VP31X119X218RESET9RD17WR16INT012INT113T014T1151234567839383736353433322122232425262728PSEN29ALE/P30TXD11RXD108031abfcgdeDPYabcdefgdpdpabfcgdeDPYabcdefgdpdpabfcgdeDPYabcdefgdpdpabfcgdeDPYabcdefgdpdpabfcgdeDPYabcdefgdpdpabfcg

37、deDPYabcdefgdpdp74LS04 5 V12345689101112131A1Y2A2Y3A3Y4A4Y5A5Y6A6Y123456781234567812345678123456781234567812345678300 8300 8300 8300 8300 8300 8P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7P2.0P2.1P2.2P2.3P2.4P2.5P2.6P2.7P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7 5 V111111111111 软件设计如下: 以单片机内部RAM的30H35H单元作为显示数据缓冲区。六位数码管段码

38、的获取及显示控制由显示子程序完成。单片机每接收一次按键信号(即模拟生产线计数信号),显示缓冲区的待显示数据就被刷新一次,然后再调用一次显示子程序。如连续按键,即可产生计数数据从左至右循环移动的效果。软件流程图如图7.12所示。源程序设计(略)。 图7.12六位数码管静态显示软件流程图主程序开始初始化显示缓冲区清0显示全0有否按键(P3.3)计数显示缓冲区数据左移计数值16(TF1)缓冲区右边第一位(30H)130H显示0030H显示子程序开始LED显示位数R6右边第1位缓冲地址选中右边第1位位码P3右边第1位显示数A查表取段码段码送P1口显示下一位位码P3下一位缓冲区地址R0下一位显示数A6位

39、显示完了返回NYYNNY 3动态显示接口动态显示接口 1) 动态显示概念动态显示概念 动态显示是一位一位地轮流点亮各位数码管,这种逐位点亮显示器的方式称为位扫描。通常,各位数码管的段选线相应并联在一起,由一个8位的I/O口控制;各位的位选线(公共阴极或阳极)由另外的I/O口线控制。动态方式显示时,各数码管分时轮流选通,要使其稳定显示,必须采用扫描方式,即在某一时刻只选通一位数码管,并送出相应的段码,在另一时刻选通另一位数码管,并送出相应的段码。依此规律循环,即可使各位数码管显示将要显示的字符。虽然这些字符是在不同的时刻分别显示,但由于人眼存在视觉暂留效应,只要每位显示间隔足够短就可以给人以同时

40、显示的感觉。 采用动态显示方式比较节省I/O口,硬件电路也较静态显示方式简单,但其亮度不如静态显示方式,而且在显示位数较多时,CPU要依次扫描,占用CPU较多的时间。 用8051系列单片机构建数码管动态显示系统时,常采用8155可编程I/O扩展接口,其典型应用如图7.13所示。 图中,数码管采用共阴极LED,8155的A口线经过8路驱动电路后接至数码管的各段。当A口线输出“1”时,驱动数码管发光。8155的C口线经过6路驱动电路后接至数码管的公共端。当C口线输出“0”时,选通相应位的数码管发光。 图6.138155构成的六位数码管动态显示电路abcdefgdp81558 路 驱 动 器6 路

41、驱 动 器PA1PA2PA3PA4PA5PA6PA7PA0C5C4C3C2C1C0PC0PC1PC2PC3PC4PC5显示器接口 A口、C口应定义为基本输出,分别控制数码管的段码(段驱动端)和位码(公共端),B口未用,可定义为基本输入。此时,命令寄存器中的PA=1,PB=0,PC1=1,PC2=1。因不用A、B口中断,也不用定时/计数器,故IEA=0,IEB=0,TM1=1,TM2=0。由此可得命令字为:01001101B=4DH。编程时的步骤如下: MOVDPTR,#CWR ;选中8155命令寄存器 MOVA,#4DH ;命令字送A MOV DPTR,A ;命令字写入命令寄存器 2) 多位动

42、态显示接口应用采用8051与8155接口,再采用8155的I/O口控制数码管的段码和位码,同时,采用动态扫描方式依次循环点亮各位数码管,即可构成多位动态数码管显示电路。 例7.3 用动态显示方式实现例7.2的所有功能。 解:整体设计思路如下: 由8155的A口控制段码输出,C口控制位码输出。采用定时器中断方式实现动态扫描,每隔20ms扫描一次,每位数码管点亮的时间为1ms。在单片机内部RAM设置待显示数据缓冲区,由查表程序完成显示译码。 将缓冲区内待显示数据转换成相应的段码,再将段码通过8051的P0口送至8155的A口;位码数据由累加器循环左移指令产生,再通过P0口送至8155的C口。 硬件

43、电路设计如下: 图7.14为数码管动态显示电路。其中,8路驱动采用74LS244总线驱动器,6路驱动采用74LS07 OC门驱动器。74LS244输出经300 上拉(或限流)电阻后接至电源,同时,接至数码管的各段,控制数码管的显示字符。74LS07输出经1 k上拉电阻接至电源,同时接至各位数码管的公共端,控制每位数码管的显示时间,实现动态扫描。模拟生产线计数的按键信号接至P3.3口。图7.14六位数码管动态显示电路EA/VPX1X2RESETRDWRINT0INT1T0T1PSENALE/PTXDRXD8031AD0PA0AD1PA1AD2PA2AD3PA3AD4PA4AD5PA5AD6PA6

44、AD7PA7PB0CEPB1RDPB2WRPB3IO/MPB4ALEPB5PB6PB7TMROUTPC0PC1TMRINPC2PC3PC4RESETPC581551A11A21A31A42A12A22A32A41Y1181Y2161Y3141Y4122Y192Y272Y352Y431G2G74LS244abfcgdeabcdefgdpabfcgdeabcdefgdpabfcgdeabcdefgdpabfcgdeabcdefgdpabfcgdeabcdefgdpabfcgdeabcdefgdp74LS0712345689101112131A1Y2A2Y3A3Y4A4Y5A5Y6A6Y 5 V30

45、0 81 k6 5 V1 k311918917161213141512345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7P2.0P2.1P2.2P2.3P2.4P2.5P2.6P2.7DPYDPYDPYDPYDPYDPYdpdpdpdpdpdp1234567812345678123456781234567812345678123456782468111315171192122232425262728293031323334353637383912512131415161718198910711634393

46、8373635343332212223242526272829301110 软件设计如下: 以单片机内部RAM的30H35H单元作为显示数据缓冲区,六位数码管段码的获取及每位数码管的显示时间均由显示子程序完成。采用定时器中断方式实现动态扫描,每隔20 ms扫描一次,每位数码管点亮的时间为1 ms。单片机每接收一次按键信号(即模拟生产线计数信号),显示缓冲区的待显示数据被刷新一次,数码管相应的显示数值也就随之发生变化。如连续按键,即可产生计数数据从左至右循环移动的效果。根据图中IO/、与单片机的连接可知,可以确定命令/状态字A口、B口、C口、计数值低8位寄存器及高6位和方式寄存器地址分别为:01

47、00H、0101H、0102H、0103H、0104H、0105H 。图7.15六位数码管动态显示软件流程图 软件流程图如图7.15所示。主程序开始初始化显示缓冲区清0有按键计数显示缓冲区数据左移计数值16(30H)130H0030HNYNY中断响应置定时器初值保护现场置8155显示位数R6延时初值R5位码R2显示数据A查表取段码段码8155A口位码8155C口点亮LED延时1 ms下一位位码R26位显示完了关显示恢复现场返回NY 源程序设计(略) 比较例7.2与例7.3可知,二者功能完全一样。前者数码管较亮,且显示程序占用CPU的时间较少,但其硬件电路复杂,占用单片机口线多,成本高;后者硬件

48、电路相对简单,成本较低,但其数码管显示亮度偏低,且采用动态扫描方式,显示程序占用CPU的时间较多。具体应用时,应根据实际情况,选用合适的显示方式。 例7.3中针对数码管显示亮度偏低的情况,可采用提高扫描速度(如由20 ms改为10 ms),或适当延长单只数码管导通的时间(如导通延时时间由1 ms改为2 ms)等措施来弥补,但其带来的后果是显示程序占用CPU的时间更多,导致CPU利用率更低。 4典型的键盘、显示接口电路典型的键盘、显示接口电路 在单片机应用系统中,键盘和显示器往往需同时使用,为节省I/O口线,可将键盘和显示电路做在一起,构成实用的键盘、显示电路。图7.16是用8155并行扩展I/

49、O口构成的典型的键盘、显示接口电路。键盘、显示器共用一个接口电路的设计方法除上述方案外,还可采用专用的键盘、显示器接口的芯片8279。图7.168155构成的键盘、显示接口电路0123456789101112131415161718192021222324252627282930318路驱动器8路驱动器+5 V+5 Vabcdefgdp8155CEIO/MALERDWRD0D7+ 5 V8031P2.7P2.0ALEP0RDWR8RESETPB7PB6PB5PB4PB3PB2PB1PB0PC0PC1PC2PC3PA7PA6PA5PA4PA3PA2PA1PA05.1 k100 8 由图可知,LE

50、D显示器采用共阴极数码管。8155的B口用作数码管段码输出口;A口用作数码管位码输出口,同时,它还用作键盘列选口;C口用作键盘行扫描信号输入口。当其选用4根口线时,可构成48键盘,选用6根口线时,可构成68键盘。LED采用动态显示软件译码,键盘采用逐列扫描查询工作方式,LED的驱动采用74LS244总线驱动器。 7.2.2 LED大屏幕显示大屏幕显示 无论是单个LED(发光二极管)还是LED七段码显示器(数码管),都不能显示字符(含汉字)及更为复杂的图形信息,这主要是因为它们没有足够的信息显示单位。LED点阵显示是把很多的LED按矩阵方式排列在一起,通过对各LED发光与不发光的控制来完成各种字

51、符或图形的显示。最常见的LED点阵显示模块有57(5列7行),79,88结构,前两种主要用于显示各种西文字符,后一种可用于大型电子显示屏的基本组建单元。本书将简略介绍LED大屏幕显示原理及接口。 188 LED点阵简介点阵简介 88LED点阵的外观及引脚图如图7.21所示,其等效电路图如图7.22所示。图7.22中只要各LED处于正偏(Y方向为1,X方向为0),则对应的LED发光。如Y7(0)=1,X7(H)=0时,则其对应的右下角的LED会发光。各LED还需接上限流电阻,实际应用时,限流电阻即可接在X轴,也可接在Y轴。图7.2188点阵的外观及引脚图0DF3A1GH25E7CB6488矩阵焊

52、接面引脚图7.2288点阵的等效电路(A)X0(B)X1(C)X2(D)X3(E)X4(F)X5(G)X6(H)X7(7)Y0(6)Y1(5)Y2(4)Y3(3)Y4(2)Y5(1)Y6(0)Y7 2LED大屏幕显示器接口电路大屏幕显示器接口电路 LED大屏幕显示器不仅能显示文字,还可以显示图形、图像,而且能产生各种动画效果,是广告宣传、新闻传播的有力工具。LED大屏幕不仅有单色显示,还有彩色显示,其应用越来越广,已渗透到人们的日常生活之中。 1) LED大屏幕的显示方式大屏幕的显示方式 LED大屏幕显示可分为静态显示和动态扫描显示两种。 静态显示每一个像素需要一套驱动电路,如果显示屏为nm个

53、像素,则需要nm套驱动电路;动态扫描显示则采用多路复用技术,如果是P路复用,则每P个像素需一套驱动电路,nm个像素仅需nmP套驱动电路。 对动态扫描显示而言,P越大,所需驱动电路就越少,成本也就越低,引线也大大减少,更有利于高密度显示屏的制造。在实际使用的LED大屏幕显示器中,很少采用静态驱动。 2) 8051与与LED大屏幕显示器的接口大屏幕显示器的接口 实际应用中,由于显示屏体与计算机及控制器有一定距离,所以应尽量减少两者之间控制信号线的数量。信号一般采用串行移动传送方式,由计算机控制器送出的信号只有5个,即时钟PCLK,显示数据DATA,行控制信号HS(串行传送时,仅需一根信号线),场控

54、制信号VS(串行传送时,仅需一根信号线)以及地线。 图7.23是8051与LED大屏幕显示器接口的一种具体应用。图中,LED显示器为864点阵,由8个88的点阵的LED显示块拼装而成。8个块的行线相应地并接在一起,形成8路复用,行控制信号HS由Pl口经行驱动后形成行扫描信号输出(并行传送,8根信号线)。8个块的列控制信号分别经由各74LS164驱动后输出。74LS164为8位串入并出移位寄存器,8个74LS164串接在一起,形成8864位串入并出的移位寄存器,其输出对应64点列。显示数据DATA由8051的RXD端输出,时钟PCLK由8051的TXD端输出。RXD发送串行数据,而TXD输出移位

55、时钟,此时串行口工作于方式0,即同步串行移位寄存器状态。 显示屏体的工作以行扫描方式进行,扫描显示过程是每一次显示一行64个LED点,显示时间称为行周期。8行扫描显示完成后开始新一轮扫描,这段时间称为场周期。3路信号都为同步传送信号,显示数据DATA与时钟PCLK配合传送某一行(64个点)的显示信息。在一行周期内有64个PCLK脉冲信号,它将一行的显示信息串行移入8个串入并出移位寄存器74LS164中。在行结束时,由行信号HS控制存入对应锁存电路并开始新一行显示,直到下一行显示数据开始锁入为止,由此实现行扫描。 因图7.23所示LED显示屏只有8行,无需采用场扫描控制信号VS,且行、场扫描的控

56、制可通过单片机对P1口编程实现。图中的锁存与驱动电路可采用74LS273、74LS373、74LS374等集成电路。 图7.238051与LED大屏幕显示器的接口164164164164164164164164驱动驱动驱动驱动驱动驱动驱动驱动LED点阵LED点阵LED点阵LED点阵LED点阵LED点阵LED点阵LED点阵扫描驱动8031P1RXDTXDPCLKDATAHS88888888888888888888888888888888888 888888 3) LED大屏幕显示的编程要点:大屏幕显示的编程要点: 由上述内容可知,LED大屏幕显示一般都采用动态显示,要实现稳定显示,需遵循动态扫描

57、的规律,现将编程要点叙述如下: (1) 从串行口输出8字节共64bit的数据到74LS 164中,形成64列的列驱动信号; (2) 从P1口输出相应的行扫描信号,与列信号在一起,点亮行中有关的点; (3) 延时l2 ms。此时间受50 Hz闪烁频率的限制,不能太大,应保证扫描所有8行(即一帧数据)所用时间之和在20 ms以内; (4) 从串行口输出下一组数据,从P1口输出下一行扫描信并延时l2 ms,完成下一行的显示; (5) 重复上述操作,直到所有8行全扫描显示一次,即完成一帧数据的显示; (6) 重新扫描显示的第一行,开始下一帧数据的扫描显示工作,如此不断地循环,即可完成相应的画面显示;

58、(7) 要更新画面时,只须将新画面的点阵数据输入到显示缓冲区中即可; (8) 通过控制画面的显示,可以形成多种显示方式,如左平移、右平移、开幕式、合幕式、上移、下移及动画等。 4) LED大屏幕显示的扩展大屏幕显示的扩展 如将图7.23显示屏扩展为32032点阵的显示屏,则水平方向应有40个88 LED点阵,垂直方向应有4个88 LED点阵,整个显示屏由404=160个88 LED点阵组成。由于一行的 LED点数太多,可将行驱动分成5组驱动,每一组驱动8864个LED点。由于每一场对应的行数达32行,如仍采用8路复用,则垂直方向应分成4组驱动,每一组驱动8行LED点。此时,必须引入场扫描控制信

59、号VS,如采用并行传送方式,则需占用单片机的4根I/O口线(加译码器只需两根)。场扫描控制信号VS与相应的行驱动电路配合,使行扫描信号分时送入垂直方向的4组LED点阵,以此实现场扫描。 上述大屏幕LED显示的行、场控制信号的传输均采用并行方式,扫描驱动电路相对简单,但其占用单片机的资源较多(需1012根I/O口线),且信号传输线多,成本高,抗干扰性能差,不适合远距离控制。因此在实用电路中,经常采用串行传输方式。采用串行传输只需占用两根I/O口线,相应的信号传输线减少,成本降低,抗干扰性能增强。不足之处是扫描驱动需增加8位移位寄存器(可采用74LS164),硬件电路相对复杂一些。7.3 D/A7

60、.3 D/A转换器接口转换器接口 7.3.1 D/A转换器概述转换器概述 D/A转换器输入的是数字量,经转换后输出的是模拟量。有关D/A转换器的技术性能指标很多,例如绝对精度、相对精度、线性度、输出电压范围、温度系数、输入数字代码种类(二进制或BCD码)等。 1) 分辩率分辩率 分辨率是D/A转换器对输入量变化敏感程度的描述,与输入数字量的位数有关。如果数字量的位数为n,则D/A转换器的分辨率为2-n。这就意味着数/模转换器能对满刻度的2-n输入量作出反应。 例如,8位数的分辨率为1/256,10位数的分辨率为1/1024等。因此,数字量位数越多,分辨率也就越高,亦即转换器对输入量变化的敏感程度也就越高。使用时,应

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论