单片机第10章课件_第1页
单片机第10章课件_第2页
单片机第10章课件_第3页
单片机第10章课件_第4页
单片机第10章课件_第5页
已阅读5页,还剩104页未读 继续免费阅读

下载本文档

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

文档简介

第10章89C51与键盘、显示器、拨盘、打印机的接口设计输入外设:键盘、BCD码拨盘等;输出外设:LED显示器、LCD显示器、打印机等。10.1LED显示器接口原理LED(LightEmittingDiode):发光二极管的缩写。显示器前面冠以“LED”。10.1.1LED显示器的结构LED显示器为8段(或7段,8段比7段多了一个小数点“dp”有共阳极和共阴极两种。如图10-1所示。图10-1为使LED显示不同的符号或数字,要为LED提供段码(或称字型码)。提供给LED显示器的段码(字型码)正好是一个字节(8段)。各段与字节中各位对应关系如表10-1。表10-1按上述格式,8段LED的段码如表10-2所示。表10-2只列出了部分段码,可根据实际情况选用,也可重新定义。

N个LED显示块有N位位选线和8×N根段码线。10.1.2LED显示器工作原理图10-2是4位LED显示器的结构原理图。图10-2段码线控制显示的字型,位选线控制该显示位的亮或暗。静态显示和动态显示两种显示方式。1.LED静态显示方式各位的公共端连接在一起(接地或+5V)。每位的段码线(a~dp)分别与一个8位的锁存器输出相连。显示字符一确定,相应锁存器的段码输出将维持不变,直到送入另一个段码为止。显示的亮度高。

图10-3:

4位静态LED显示器电路。该电路各位可独立显示。图10-4:4位8段LED动态显示电路。其中段码线占用一个8位I/O口,而位选线占用一个4位I/O口。图10-4图10-5为8位LED动态显示2008.10.10的过程。图(a)是显示过程,某一时刻,只有一位LED被选通显示,其余位则是熄灭的;图(b)是实际显示结果,人眼看到的是8位稳定的同时显示

的字符。图10-510.2键盘接口原理1.键盘输入的特点键盘:一组按键开关的集合。行线电压信号通过键盘开关机械触点的断开、闭合,其输出波形如图10-6。图10-610.2.2键盘接口的工作原理独立式按键接口和行列式键盘接口。1.独立式键盘接口各键相互独立,每个按键各接一根输入线,通过检测输入线的电平状态可很容易判断那个键被按下。此种接口适于键数较少或操作速度较高的场合。图10-7(a)为中断方式的独立式键盘工作电路图10-7(b)为查询方式的独立式键盘工作电路。图10-7图10-8为82C55扩展I/O口的独立式按键接口电路。图10-8(1)行列式键盘工作原理无键按下,该行线为高电平,当有键按下时,行线电平由列线的电平来决定。由于行、列线为多键共用,各按键彼此将相互发生影响,必须将行、列线信号配合起来并作适当的处理,才能确定闭合键的位置。(2)按键的识别方法a.扫描法

图10-9(b)中3号键被按下为例,来说明此键时如何被识别出来的。识别键盘有无键被按下的方法,分两步进行:第1步:识别键盘有无键按下;第2步:如有键被按下,识别出具体的按键。把所有列线置0,检查各行线电平是否有变化,如有变化,说明有键按下,如无变化,则无键按下。上述方法称为扫描法,即先把某一列置低电平,其余各列为高电平,检查各行线电平的变化,如果某行线电平为低,可确定此行列交叉点处的按键被按下。b.线反转法

只需两步便能获得此按键所在的行列值,线反转法的原理如图10-10。图10-10原则:即要保证能及时响应按键操作,又不要过多占用CPU的工作时间。通常,键盘工作方式有3种,即编程扫描、定时扫描和中断扫描。1.编程扫描方式只有当单片机空闲时,才调用键盘扫描子程序,扫描键盘。工作过程:(1)在键盘扫描子程序中,先判断有无键按下。方法:PA口8位输出全0,读PC口低4位状态,若PC0~PC3为全1,则说明键盘无键按下;若不全为1,则说明键盘可能有键按下。(2)用软件来消除按键抖动的影响。如有键按下,则进行下一步。(3)求按下键的键号。(4)等待按键释放后,再进行按键功能的处理操作。2.定时扫描工作方式利用单片机内的定时器,产生10ms的定时中断,对键盘进行扫描。3.中断工作方式只有在键盘有键按下时,才执行键盘扫描程序,如无键按下,单片机将不理睬键盘。键盘所做的工作分为三个层次。第1层:单片机如何来监视键盘的输入。三种工作方式:①编程扫描②定时扫描③中断扫描。第2层:确定具体按键的键号。体现在按键的识别方法上就是:①扫描法;②线反转法。第3层:执行键处理程序。10.3键盘/显示器接口设计实例一般把键盘和显示器放在一起考虑。10.3.1利用并行I/O芯片实现键盘/显示器接口图10-11:8031用扩展I/O接口芯片81C55实现的6位LED显示和32键的键盘/显示器接口电路。图中81C55也可用82C55来替代。89C51外扩一片8155H。RAM地址:7E00H~7EFFH。I/O口地址:7F00H~7F05H。

PA口为输出口,控制键盘列线的扫描,同时又是6位共阴极显示器的位扫描口。

PB口作为显示器段码输出口,PC口作为键盘的行线状态的输入口。75452:反相驱动器,7407:同相驱动器。1.动态显示程序设计内部RAM6个显示缓冲单元:79H~7EH,存放要显示的6位数据。81C55的PB口输出相应位的段码,依次改变PA口输出为高的位使某一位显示某一字符,其它位为暗。动态地显示出由缓冲区中显示数据所确定的字符。参考程序:DIR:MOVR0,#79H ;置缓冲器指针初值MOVR3,#01H ;位选码的初值送R3MOVA,R3LD0:MOVDPTR,#7F01H;位选码→PA口(PA.0位);最左边LED亮MOVX@DPTR,AINCDPTR ;数据指针指向PB口MOVA,@R0;显示数据→AADDA,#0DH;加偏移量(下条指令到表首间;所有指令占的单元数)MOVCA,@A+PC;根据显示数据来查表取段码DIR1:

MOVX@DPTR,A ;段码→8155HPB口ACALLDL1ms;该位显示1msINCR0 ;指针指向下一个数据单元MOVA,R3 ;位选码送入A中JBAcc.5,LD1;判断是否扫描到最右边的;LED,如到最右边则返回RLA;位选码向左移一位,准备让;右边的下一位LED亮MOVR3,A ;位选码送R3中保存AJMPLD0;LD1:RET;DSEG:DB3FH,06H,5BH,4FH,66H,6DH;共阴极段码表 DB7DH,07H,7FH,6FH,77H,7CHDB39H,5EH,79H,71H,73H,3EHPA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0 1 1 1 1 1 1 1

0

1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 …… …… …… 1

0 1 1 1 1 1 1 0 1 1 1 1 1 1 1相应地,依次读PC口的状态,若PC0~PC3全为“1”,则列线为“0”的这一列上没有键闭合。闭合键的键号等于为低电平的列号加上行线为低电平的行的首键号。例如,PA口输出为时,读出PC0~PC3为1101,则1行1列相交的键处于闭合状态,第一列的首键号为8,列号为1。因此,闭合键的键号N为

N=行首键号+列号=8+1=9 (4)使CPU对键的一次闭合仅作一次处理键盘程序的流程如图10-12。图10-12键盘子程序如下:KEYI:ACALLKS1 ;调用判有无键闭合子程序JNZLK1;有键闭合,跳LK1NI:ACALLDIR ;无键闭合,调用显示子程序,延;迟6ms后,跳KEYIAJMPKEYILK1:ACALLDIR ;可能有键闭合,软件延迟12ms去抖ACALLDIRACALLKS1;调用判有无键闭合子程序JNZLK2 ;经去抖,判键确实闭合,跳LK2ACALLDIR ;调用显示子程序延迟6msAJMPKEYI ;抖动引起,跳KEYILK2:MOVR2,#0FEH ;列选码→R2MOVR4,#00H ;R4为列号计数器LK4:MOVDPTR,#7F01H;列选码→81C55的PA口MOVA,R2;MOVX@DPTR,A;INCDPTR ;数据指针增2,指向PC口INCDPTR;MOVXA,@DPTR ;读81C55

PC口JBAcc.0,LONE ;0行线为高,无键闭合,跳LONE,转判1行MOVA,#00H ;0行有键闭合,首键号0→AAJMPLKP ;跳LKP,计算键号LONE:JBAcc.1,LTW0;1行线为高,无键闭合,跳LTW0,;转判2行MOVA,#08H;1行有键闭合,首键号8→AAJMPLKP LTW0:JBA.2,LTHR;2行线为高,无键闭合,跳 ;LTHR,转判3行

MOVA,#10H;2行有键闭合,首键号10H→AAJMPLKP ;跳LKP,计算键号LTHR:JBAcc.3,NEXT;3行线为高,无键;闭合,跳NEXT,准备下一列扫描MOVA,#18H ;3行有键闭合,首键号18H→ALKP:

ADDA,R4;计算键号:首键号+列号=键号PUSHA ;键号进栈保护LK3:ACALLDIR ;调用显示子程序,延时6msACALLKS1 ;调用判有无键闭合子程序,延时 ;6ms JNZLK3 ;判键释放否,未释放,则循环

POPA ;键已释放,键号出栈→ARETNEXT:INCR4;列计数器加1,为下一列扫描作准备MOVA,R2;判是否已扫到最后一列(最右一列)JNBAcc.7,KND;键扫描已扫到最后一列,跳KND, ;重新进行整个键盘扫描RLA ;键扫描未扫到最后一列,,位选码左移 ;一位MOVR2,A;位选码→R2AJMPLK4;KND:AJMPKEYI;KS1:MOVDPTR,#7F01H;判有无键闭合子程序,全“0”→ ;扫描口(PA口)MOVA,#00H ;即列线全为低电平MOVX@DPTR,A;INCDPTR ;DPTR增2,指向PC口INCDPTR ;指针增1,指向PC口MOVXA,@DPTR;从PC口读行线的状态CPLA ;行线取反,如无键按下,则A为0;ANLA,#0FH;屏蔽无用的高4位RET10.3.2键盘/显示器专用芯片8279实现的键盘/显示器接口目前已经有各种专用的键盘/显示器接口芯片可供用户选择。用户可省去编写键盘/显示器动态扫描程序的繁琐工作,只需对键盘/显示器接口芯片中的各个控制寄存器进行正确的设置以及与键盘/显示器进行正确的连接即可。常用的专用可编程键盘/显示器接口电路芯片为Intel8279

和HD7279A。Intel8279芯片是一种可编程的专用键盘/显示器接口电路芯片,它能同时完成监视键盘输入和显示控制两种功能。8279芯片对键盘部分提供扫描工作方式,能对64个按键的键盘阵列不断扫描,自动消除抖动,自动识别出闭合的键并得到键号,能对双键或N个键同时按下进行处理。显示部分为LED或其他显示器提供按扫描方式工作的显示接口,可显示多达16位的字符或数字。1.8279的引脚及内部结构

图10-13图10-142.引脚功能介绍(1)与单片机的接口引脚DB0~DB7:数据总线、双向、三态,与单片机数据总线相连,在单片机和8279之间传送命令或数据。CLK:系统时钟,用于8279内部定时,以产生其工作所需的时序。RESET:高电平时,8279被复位,复位后的状态如下:*16个字符左边输入显示方式*编码扫描键盘、双键锁定方式CS*:片选A0:=1,写入的是命令字节;读出的是状态字节。=0,写入或读出的字节均为数据。RD*、WR*:读、写控制引脚IRQ:中断请求线。在键盘方式中,当键盘RAM(先进先出)中存有按下键的数据时,IRQ为高电平,向CPU提出中断申请。(2)扫描信号输出引脚CPU每次从键盘RAM中读出一个字节数据时,IRQ就变为低电平。

如果键盘RAM中还有未读完的数据,IRQ将再次变为高电平,再次提出中断请求。SL0~SL3

扫描输出。用来扫描键盘和显示器。可编程设定为编码输出,即SL0~SL3需外接4-16译码器,输出16取1的扫描信号,也可编程设定为译码输出,即由SL0~SL3直接输出4取1的扫描信号。(3)与键盘连接的引脚RL0~RL7键盘矩阵的行信号输入线。SHIFT输入线,通常用作键盘上、下档功能的控制键。CNTL/STB输入线,高电平有效。在键盘方式时,通常用来作为键盘控制功能键使用。(4)与显示器连接的引脚OUTA0~OUTA3(A组显示数据)、OUTB0~OUTB3(B组显示数据):向LED显示器输出的段码,与扫描信号线SL0~SL3同步。两组可独立使用,也可合并使用。BD*:消隐显示控制。3.8279的基本功能部件(1)扫描计数器编码方式:扫描线SL0~SL3输出,经外部4-16译码器译码后,为键盘和显示器提供16取1的扫描线。译码方式:计数器的最低二位在8279内部译码后,从SL0~SL3输出,为键盘和显示器提供4取1扫描线。D7D6D5D4D3D2D1D0CNTLSHIFT扫描回复(2)键盘去抖动及回复缓冲器RL0~RL7被接到键盘的行线。在逐列扫描时,当某一键闭合,消抖电路延时等待10ms之后,再检验该键是否仍闭合。若闭合,则该键的行、列地址和附加的移位、控制状态一起形成键盘数据,送入8279内部的键盘RAM存储器。格式为:

控制(CNTL)和移位(SHIFT)的状态由两个独立的附加开关决定,而扫描(D5、D4、D3)是被按键的列编码,而回复(D2、D1、D0)则是被按键的行位置数据。(3)键盘RAM及其状态寄存器键盘RAM:8字节先进先出(FIFO)存储器。内部的FIFO状态寄存器存放FIFO的工作状态,如FIFO是空还是满,其中存有多少字符,是否操作出错等等。当FIFO存储器空间不足时,状态逻辑将产生IRQ=1信号,向单片机发出中断申请。(4)显示RAM和显示地址寄存器显示RAM:存显示数据。16个字节,可存放16位显示信息。显示RAM的输出与显示扫描配合,同时轮流驱动被选中的显示位,使显示器呈现稳定的显示(动态扫描)。4.8279的命令字和状态字命令字:D7、D6、D5为命令特征位,来区分8条不同的命令字。状态字:主要用于键盘工作方式,以指示键盘RAM中的字符数和有无错误发生。5.8279与键盘/显示器的接口图10-15为8279与8位显示器,4×8键盘的接口电路。行线接8279的RL0~RL3,8279选用编码方式,SL0~SL2经74LS138(1)译码输出,接列线,实现键盘逐列扫描。SL0~SL2又由74LS138(2)译码输出到显示器各位的公共阴极,进行逐位扫描显示。OUTB0~3、OUTA0~3输出8位段码。当位切换时,BD*输出为低电平,使74LS138(2)输出全为高电平,显示消隐。当键盘上出现有效的闭合键时,键输入数据自动进入8279图10-15键盘RAM中的键输入数据。若要更新显示器输出,仅需改变显示RAM中的内容。图10-15:8279的命令/状态口地址为7FFFH,数据口地址为7FFEH。8279初始化程序如下:INITI:SETBEX1 ;允许外部中断1中断MOV DPTR,#7FFFH;命令/状态口地址写入DPTRMOV A,#0D1H ;控制字D1H送AMOVX @DPTR,A ;向命令/状态口写入控制字LP:MOVXA,@DPTR;读8279的状态JB Acc.7,LPMOV A,#00HMOVX@DPTR,AMOVA,#2AHMOVX@DPTR,ASETBEA……键输入中断服务程序:PINT1:PUSHPSWPUSHDPHPUSHDPLPUSHAccMOVDPTR,#7FFFH;向命令口写入读键盘RAM命令MOVA,#40HMOVX@DPTR,AMOVDPTR,#7FFEH;读键输入值MOVXA,@DPTRCJNEA,#37H,PRI1;判输入停机命令否SETB20HPRI1:POPAccPOPDPLPOPDPHPOPPSWRETI显示子程序:DIR:MOVDPTR,#7FFFH;输出写显示RAM命令MOVA,#90HMOVX@DPTR,AMOVR0,#70HMOVR7,#08H ;送显示RAM数据的个数MOVDPTR,#7FFEHDL0:MOVA,@R0ADDA,#05H ;05H为查表偏移量MOVCA,@A+PC ;查表得到段码MOVX@DPTR,A ;写入显示RAMINCR0 ;显示数据单元地址增1DJNZR7,DL0 ;8个显示数据是否输出完毕RETADSEG:DB3FH,06H,5BH,4FH,66H,6DH;段码表(共阴极)

DB7DH,07H,7FH,6FH,77H,7CHDB39H,5EH,79H,71H,73H,3EHDB31H,6EH,1CH,23H,40H,03H DB18H,38H,00H10.3.3键盘/显示器专用芯片HD7279A实现的键盘/显示器接口1.键盘/显示器专用芯片HD7279A简介8279芯片是动态循环扫描显示方式,与89C51单片机的接口需要8位数据线,还要扩充译码器、段驱动器和位驱动器,接口电路复杂,占用印制板面积大。本节介绍的HD7279A是键盘/显示器的串行控制芯片,能同时驱动8个共阴极LED显示器(或64个独立的LED发光二极管)和64(8×8)键的键盘矩阵。HD7279A采用的也是动态循环显示方式,具有如下特点:(1)与89C51单片机间采用串行接口方式,仅占用4条口线,接口简单;(2)内部含有译码器,可直接接收BCD码或十六进制码,同时具有两种译码方式,实现LED显示器位寻址和段寻址,可以方便地控制每位LED显示器中任意一段是否发光;(3)内部含有驱动器,可以直接驱动25.4mm及以下LED数码管,使外围电路变得简单可靠;(4)多种控制命令,如消隐、闪烁、左移、右移和段寻址、位寻址等;(5)含有片选信号输入端,容易实现多于8位显示器或多于64键的键盘控制;(6)具有自动消除键抖动并识别按键键值的功能。HD7279A芯片占用口线少,外围电路简单,还具有较高的性能价格比,已在智能仪器、家用电器、控制面板等单片机应用领域日益获得广泛应用。(1)引脚说明与电气特性HD7279A芯片为28引脚标准双列直插式封装,单一的+5V供电。引脚如图10-16所示,引脚功能如表10-6所列。位驱动输出端DIG0~DIG7可分别连接8只LED数码管的共阴极;段驱动输出端SA~SG分别连接至LED数码管的a~g段的阳极,而DP连至小数点dp的阳极。DIG0~DIG7和DP及SA~SG还分别是64键的键盘的列线和行线的端口,完成对键盘的译码和键值识别。8×8阵列中的每个键值可用读键盘命令读出,键值范围是00H~3FH。图10-16HD7279A引脚图图10-16HD7279A芯片与单片机连接仅需4条口线:CS*,DATA,CLK和KEY。CS*:当单片机访问HD7279A芯片(写入命令、显示数据、位地址、段地址或读出键值)时,应将CS*置为低电平。DATA:串行数据端,当单片机向HD7279A芯片发送数据时,DATA为输入端;当单片机从HD7279A芯片读入键值时,DATA为输出端。CLK:数据串行传送的同步时钟输入端,时钟的上升沿将数据写入HD7279A中或从HD7279A中读出数据。KEY:按键信号输出端,在无键按下时为高电平,在有键按下时变为低电平,并且一直保持到该按下键至释放为止。RESET*:复位端,由低电平变为高电平,并经过18~25ms复位结束。通常,该端接+5V即可。若对可靠性要求较高,则可外接复位电路,或直接由单片机控制。RC:用于外接振荡元件,其典型值:R=1.5k,C=15pF。NC:必须悬空,即不得有任何外部连接。表10-7所列为HD7279A的电气特性。(2)控制命令与时序HD7279A芯片的控制命令由6条纯命令、7条带数据命令和1条读键盘命令组成。①纯命令(6条)。所有纯命令都是1字节命令,如表10-8所列。②带数据命令(7条)。均由双字节组成,第1字节为命令标志码(有的还有位地址),第2字节为显示内容。按方式0译码显示命令b.按方式1译码显示命令c.不译码显示命令d.闪烁控制命令e.消隐控制命令f.段点亮命令g.段关闭命令③读取键盘命令

从HD7279A读出当前的按键值。命令第1字节为15H,表示单片机写到HD7279A的是读键命令,而第2字节d7~d0为从HD7279A中读出的按键值,其范围为00H~3FH。当按键按下时,KEY引脚从高电平变为低电平,并保持到按键释放为止。在此期间,若HD7279A收到来自单片机的读键盘命令15H,则HD7279A输出当前的按键代码。应注意,HD7279A只能给出其中一个按下键的代码,不适合需要2个或2个以上键同时按下的场合。如果确实需要双键组合使用,可在单片机某位I/O引脚接一键,HD7279A所连键盘共同组成双键功能。④时序。HD7279A采用串行方式与单片机通信,串行数据从DATA引脚送入或输出,并与CLK端同步。当片选信号CS*变为低电平后,DATA引脚上的数据在CLK脉冲上升沿作用下写入或读出HD7279A的数据缓冲器。图10-17a.纯命令时序单片机发出8个CLK脉冲,向HD7279A发出8位命令,DATA引脚最后为高阻态,如图10-17所示。图10-18b.带数据命令时序单片机发出16个CLK脉冲,前8个向HD7279A发送8位命令;后8个向HD7279A传送8位显示数据,DATA引脚最后为高阻态,如图10-18所示。c.读键盘命令时序单片机发出16个CLK脉冲,前8个向HD7279A发送8位命令;发送完之后DATA引脚为高阻态;后8个CLK由HD7279A向单片机返回8位按键值,DATA引脚为输出状态。最后一个CLK脉冲的下降沿将DATA引脚恢复为高阻态,如图10-19所示。图10-19保证正确的时序是HD7279A正常工作的前提条件。当选定HD7279A的振荡元件RC和单片机的晶振之后,应调节延时时间,使时序中的T1~T8满足表10-16所列要求。由表中的数值可知HD7279A的速度,应仔细调整HD7279A的时序,使其运行时间接近最短。2.89C51与HD7279A接口设计(1)硬件接口电路图10-20是与AT89C51单片机的接口电路,外接振荡元件为典型值,89C51的晶振频率为12MHz。上电后,HD7279A大约经过15~18ms的时间才进入工作状态。HD7279A应连接共阴极显示器。对于不使用的按键和显示器,可以不连接。省去的显示器或对显示器设置的消隐、闪烁属性,均不影响键盘的使用。除非不使用显示器,否则串联在DP及SA~SG引线上的200Ω电阻不可省去。如果不使用键盘,图10-20中与键盘连接的10kΩ电阻和100kΩ电阻便可省去。如果使用键盘,电路中的100kΩ下拉电阻则不可省去。单片机通过KEY引线电平判断是否有键按下。在使用查询方式时,该引脚接至单片机的外部中断输入端,同时应将中断触发控制位设置成下降沿有效触发方式;若设置成电平触发方式,则在按键时间较长时可引发多次中断申请问题。HD7279A采用动态循环扫描方式,如果采用的普通LED显示器亮度不够,则可采用高亮度或超高亮度的型号。图10-20中的3、5、26引脚悬空。图10-20(2)接口程序举例根据图10-20,编制程序实现当有按键按下时,单片机读取该按键代码并将其显示在LED上。程序中使用单片机内RAM位寻址的29H和28H两个单元。29H单元的位地址为48H~4FH;28H单元的位地址为40H~47H。①发送29H单元中的数据到HD7279A,高位在前。程序入口条件为CS*=1,CLK=0。SEND: MOV R2,#08H ;发送8位数据

CLR P1.0 ;CS*=0 LCALL DELY1 ;延时50s(T1)LOOP1: MOV C,4FH ;29H单元的D7位传至HD7279A MOV P1.2,C ;数据出现在DATA引脚上

SETB P1.1 ;置CLK为高电平,

数据写入HD7279A MOV A,29H ;待发数据左移1位 RL AMOV 29H,ALCALL DELY2 ;延时8s(T2)CLR P1.1 ;置CLK为低电平 LCALL DELY2 ;延时8s(T3) DJNZ R2,LOOP1 ;检测8位数据是否发送完毕

CLR P1.2 ;发送完毕,

DATA为低(输出状态)

RET ;返回②读入的键码送到28H单元,高位在前。程序入口条件为CS*=0,CLK=0。RESE: MOV R2,#08H ;接收8位数据 SETB P1.2 ;P1.2输出锁存器为高电平,

准备输入 LCALL DELY3 ;延时25s(T5)LOOP2:SETB P1.1 ;置CLK为高电平,

读出HD7279A数据 LCALL DELY2 ;延时8s(T6和T7) MOV A,28H ;接收数据左移1位 RL A MOV 28H,A MOV C,P1.2 ;接收1位数据 MOV 40H,C ;读入数据存入28H的D0位 CLR P1.1 ;置P1.1为低电平 LCALL DELY2 ;延时8s(T3) DJNZ R2,LOOP2 ;检测8位数据是否发送完毕 CLR P1.2 ;接收完毕,

DATA引脚置低电平(输出状态) RET ;返回③查询方式读键值并显示。 MOV P1,#0F9H ;CS*=1,KEY=1,CLK=0,DATA=0LCALL DELY4 ;延时25msMOV 29H,#0A4H ;复位命令 LCALL SEND SETB P1.0 ;CS*=1MAIN: JB P1.3,MAIN ;检测按键,无键按下则等待 MOV 29H,#15H ;发读键盘命令

LCALL SEND ;写入HD7279A LCALL RESE ;读键值到28H单元

SETB P1.0 ;CS*=1 MOV B,#0AH ;十六进制键值转换成BCD码 MOV A,28H DIV AB MOV R1,A ;十位暂存于R1 MOV 29H,#81H ;按方式0译码显示在L2位LED LCALL SEND ;命令写入HD7279A LCALL DELY3 ;延时25s(T4) MOV 29H,R1 LCALL SEND ;显示十位 SETB P1.0 ;CS*=1 MOV 29H,#80H ;按方式0译码显示在L1位LED LCALL SEND LCALL DELY3 ;延时25s(T4) MOV 29H,B ;显示个位 LCALL SEND SETB P1.0 ;CS*=1WAIT: JNB P1.3,WAIT ;等待按键释放 SJMP MAIN延时子程序由用户自行编写。10.489C51与液晶显示器(LCD)的接口LCD(LiquidCrystalDisplay):液晶显示器的缩写,被动式显示器-液晶本身并不发光,而是经液晶经过处理后能改变光线通过方向的特性,而达到白底黑字或黑底白字显示的目的。液晶显示器具有功耗低、抗干扰能力强等优点,广泛用在仪器仪表和控制系统中。10.4.1LCD显示器的分类按排列形状分:字段型、点阵字符型和点阵图形。(1)字段型广泛用于电子表、数字仪表、计算器中。(2)点阵字符型显示字母、数字、符号。它是由5×7或5×10点阵组成,广泛用在单片机系统中。(3)点阵图形型笔记本电脑和彩色电视等设备中。10.4.2点阵字符型液晶显示模块介绍点阵字符型LCD显示器,需相应的LCD控制器、驱动器,来对LCD显示器进行扫描、驱动,以及一定空间的RAM和ROM来存储写入的命令和显示字符的点阵。现已将上述元部件和LCD显示器用PCB连接到一起,称为液晶显示模块LCM(LCDModule)。只向LCM送入相应的命令和数据就可实现所需要的显示内容,接口简单,灵活方便。分字符和图形两种。1.基本结构(1)液晶板在上面排列着若干5×7或5×10点阵的字符显示位,从规格上分为每行8、16、20、24、32、40位,有1行、2行及4行三类,根据需要,来选择。(2)模块电路框图由控制器HD44780、驱动器HD44100及几个电阻电容组成。HD44100是扩展显示字符位用的(例如:16字符×1行模块就可不用HD44100,16字符×2行模块就要用一片HD44100)。图10-21引线号符号名称功能1VSS地0V2VDD电源5V±5%3VEE液晶驱动电压4RS寄存器选择1:数据寄存器,0:命令寄存器5R/W*读/写1:读;0:写6E使能下降沿触发7-14DB0-DB78位数据线数据传输表10-17液晶显示模块的引脚模块14个引脚,其中有8条数据线,3条控制线,3条电源线,见表10-17。通过单片机写入模块的数据和指令,就可对显示方式和显示内容作出选择。RSR/W*操作00命令寄存器写入01忙标志和地址计数器读出10数据寄存器写入11数据寄存器读出表10-18寄存器的选择命令格式及命令功能说明

(1)内部寄存器控制器HD44780内有多个寄存器,如表10-18所示。RS位和R/W*引脚上的电平来选择寄存器,读还是写,而DB7~DB0则决定命令功能。命令共11种:清除,返回,输入方式设置,显示开关控制,移位控制,功能设置,CGRAM(字符生成RAM)地址设置,DDRAM(显示数据RAM)地址设置,读忙标志和地址,写数据到CGRAM或DDRAM,从CGRAM或DDRAM读数据。这些命令功能强:可组合成各种输入、显示、移位方式以满足不同的要求。(2)标准字符库

图10-22:字符库的内容、字符码和字型的对应关系。例如“A”的字符码为41H,“B”的字符码为42H。图10-2210.4.389C51与LCD的接口及软件编程1.89C51与LCD模块的接口接口电路见图10-23。将LCM挂接在89C51的总线上,通过对数据总线的读写实现对LCM的控制。图10-232.软件编程初始化用户所编的显示程序,开始必须进行初始化,否则模块无法正常显示。初始化流程如图10-24所示。

图10-24显示程序(自己阅读)

10.589C51与TPμP-40A/16A微型打印机的接口内部有一个控制用单片机,固化有控打程序,智能化程度高。常用的微型打印机:TPμP-40A/16A、GP16以及XLF嵌入仪器面板上的汉字微型打印机。1.TPμP-40A/16A微型打印机

单片机控制的微型智能打印机。TPμP-40A与TPμP-16A的接口信号与时序完全相同,操作方式相近,硬件电路及插脚完全兼容,只是指令代码不完全相同。TPμP-40A每行40个字符,TPμP-16A则打印16个字符。2.主要性能、接口要求及时序(1)TPμP-40A主要技术性能单片机控制,2KB控打程序及标准的Centronics并行接口。可打印全部ASCII代码字符及128个非标准字符和图符。用户定义的16个代码字符(6×7点阵)。可打印出8×240点阵的图样(汉字或图案点阵)。字符、图符和点阵图可在宽和高的方向放大为×2、×3、×4倍。每行字符的点行数(包括字符的行间距)可用命令更换。即字符行间距空点行在0~256间任选。(2)接口信号采用国际上流行的Centronics打印机并行接口,与单片机间是通过一条20芯扁平电缆及接插件相连。打印机有一个20线扁平插座,信号引脚排列如图10-25所示。引脚介绍:DB0~DB7:数据线,单向传输,由单片机输入给打印机。STB*:数据选通信号。在该信号的上升沿时,数据线上的8位并行数据被打印机读入机内锁存。图10-25BUSY:打印机“忙”状态信号。当该信号有效(高电平)时,表示打印机正忙。此时,单片机不得向打印机送入新的数据。ACK*:打印机的应答信号。低电平有效,表明打印机已取走数据线上的数据。ERR*:“出错”信号。当送入打印机的命令格式出错时,打印机立即打印一行出错信息,提示出错。在打印出错信息之前,该信号线出现一个负脉冲,脉冲宽度为30μs。(3)接口信号时序接口信号时序如图10-26所示。图10-26选通信号STB*宽度需大于0.5μs。应答信号ACK*可与STB*信号作为一对应答联络信号,也可与BUSY作为一对应答联络信号。3.字符代码及打印命令写入的全部代码共256个,其中00H无效。代码:01H~0FH为打印命令;代码:10H~1FH为用户自定义代码;代码:20H~7FH为标准ASCII代码;代码:80H~FFH为非ASCII代码,如图10-27所示。其中包括少量汉字、希腊字母、块图图符和一些特殊字符。图10-274.TPμP-40A/16A与89C51单片机接口设计TPμP-

温馨提示

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

评论

0/150

提交评论