第四章键盘和显示器_第1页
第四章键盘和显示器_第2页
第四章键盘和显示器_第3页
第四章键盘和显示器_第4页
第四章键盘和显示器_第5页
已阅读5页,还剩162页未读 继续免费阅读

下载本文档

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

文档简介

第四章智能仪表的键盘和显示器接口第四章智能化测控仪表的键盘、显示器及打印输出接口1智能化测控仪表的操作管理是通过计算机的外部输入输出设备完成的,键盘、显示器和打印机是最常用的外部输入/输出设备。第四章智能化测控仪表的键盘、显示器及打印输出接口2第四章智能化测控仪表的键盘、显示器及打印输出接口4.1键盘接口技术键盘实际上是由排列成矩阵形式的一系列按键开关组成的,最常用的人机联系的一种输入设备。键盘按其结构形式可分为编码式键盘和非编码式键盘两大类。编码式键盘是由其内部硬件逻辑电路自动产生被按键的编码。这种键盘使用方便,但价格较贵。3智能仪表中普遍使用非编码式键盘。非编码式键盘硬件接口简单,但要占用较多的CPU时间。这类键盘应主要解决以下几个问题:(1)键的识别;(2)反弹跳;(3)串键的保护。4.1键盘接口技术√4(1)键的识别;——决定是否有键按下,若有,识别是哪个键。常用方法:行扫描法和线反转法。4.1键盘接口技术(2)反弹跳;——由于按键采用的是机械开关,当开关的触点闭合或者断开到稳定,会产生一个短暂的抖动和弹跳。54.1键盘接口技术6消除方法:☆硬件方法(适用于键数较少的情况)

☆软件延时的方法(键数较多时)4.1键盘接口技术7(3)串键保护由于操作不慎,可能会造成同时有几个键被按下,称为串键。处理技术有三:①两键同时按下*只有一个键按下才读取键盘,最后仍被按下的是有效的正确按键——软件扫描键盘;*当第1个按键未松开时,按第2个按键不产生选通信号4.1键盘接口技术8②n键同时按下不理会所有按下的键,或者将所有的按键信息存储,然后逐个处理。③n键锁定只处理1个键,任何其他按下又松开的键不产生任何码。通常第一个按下或者最后一个松开的按键产生代码。4.1键盘接口技术91.非编码式键盘的结构

非编码式键盘一般采用行列式结构并按矩阵形式排列,如图4.3所示。

4.1.1非编码键盘输入三态缓冲器+5VR1R2R3R4行线C4C3C2C1输出锁存器至CPU数据总线图4.34×4矩阵键盘接口通过检查行线的输出电平和列线的输入电平来识别按键列线102.按键识别方法非编码式键盘识别闭合键通常有两种方法:一种称为行扫描法,另一种称为线反转法。1)行扫描法——就是通过行线发出低电平信号,如果该行线所连接的键没有按下的话,则列线所连接的输出端口得到的是全“1”信号;如果有键按下的话,则得到的是非全“1”信号。4.1.1非编码键盘—行扫描法11输入+5VR1R2R3R4C4C3C2C1输出输入+5VR1R2R3R4C4C3C2C1输出01110111图4.4行扫描按键识别4.1.1非编码键盘—行扫描法12图4.4行扫描按键识别输入+5VR1R2R3R4C4C3C2C1输出110111104.1.1非编码键盘—行扫描法输入+5VR1R2R3R4C4C3C2C1输出13R1R2R3R4C2C1C4C3K1K2K3K4K5K6K7K8K9K10K11K12K13K14K15K16表4-1键位与行列线关系表输入+5VR1R2R3R4C4C3C2C1输出4.1.1非编码键盘—行扫描法行号列号键值14采用行扫描法进行按键识别时,常用软件编程来提供串键保护。基本思路:当有多个按键被压下时,不立即求取键值,而是重新回到按键识别直至只剩下1个键压下为止。4.1.1非编码键盘—行扫描法152)线反转法线反转法也是识别闭合键的一种常用方法。该方法比行扫描法速度要快,但在硬件电路上要求行线与列线均需有上拉电阻,故比行扫描法稍复杂些。线反转法借助并行接口实现,比行扫描法的速度快。要求所使用的并行接口芯片具有方向寄存器和数据寄存器。4.1.1非编码键盘—线反转法164.1.1非编码键盘—线反转法0000110111110000并行接口数据寄存器方向寄存器+5V+5VINT“1”输出端口“0”输入端口01230123行列PB0PB1PB2PB3PB4PB5PB6PB7列线信息:PB7~PB4=1011171101110100001111并行接口数据寄存器方向寄存器+5V+5VINT“1”输入端口“0”输出端口01230123行列PB0PB1PB2PB3PB4PB5PB6PB74.1.1非编码键盘—线反转法行线信息:PB3~PB0=1011完整信息:PB7~PB0=10111011B1101110100001111并行接口数据寄存器方向寄存器+5V+5VINT“1”输入端口“0”输出端口01230123行列PB0PB1PB2PB3PB4PB5PB6PB7184.1.1非编码键盘+5VLED×4反向驱动器同向驱动器+5V……740775452PC0PC1PC2PC3PA口PB口AD0~AD7ALEWRRDCEIO/MALEWRRDP0.0~P0.7P2.7P2.080C51图4.7单片机80C51通过8155实现的键盘、显示器接口C840D951EA62FB73PA0PA1PA2PA319KEY:MOVDPTR,#7F00H;8155命令口地址MOVA,#03H;置8155的PA、PB为输入,PC为输出MOVX@DPTR,AMOVR4,#00H;0键号寄存器MOVR2,#01H;扫描方式R2KEY1:MOVDPTR,#7F01HMOVA,R2MOVX@DPTR,AINCDPTRINCDPTR;指向PC口MOVXA,@DPTRJBACC.0,KEY2;判断PC0=1?即第0列有键入么?MOVA,#00HAJMPKEY5KEY2:JBACC.1,KEY3MOVA,#01HAJMPKEY54.1.1非编码键盘20KEY3:JBACC.2,KEY4MOVA,#02HAJMPKEY5KEY4:JBACC.3,NEXTMOVA,#03HKEY5:ADDA,R4;列线号+(R4)作为键值AMOVR4,ARETNEXT:MOVA,R4ADDA,#04HMOVR4,AMOVA,R2JBACC.3,NEXT1;判别是否已扫描到最后一行RLAMOVR2,AAJMPKEY1NEXT1:MOVR4,#88H;扫描到最后一行仍无按键置无键闭合标志RET4.1.1非编码键盘214.1.2键值分析单片机从键盘接口获得键值后究竟执行什么操作,完全取决于键盘解释程序。对于同一个键盘接口,由于分析和解释键盘的程序不同,使其功能全然不同。按键基本上分为数字键和功能键。功能键又分为单个功能键和字符串功能键。224.1.2键值分析单个功能键的作用是按了一个键,仪表就完成该键所规定的功能。字符串功能键是在按完多个键后,仪表才会完成规定的功能。键值分析常采用查表法和状态分析法。[查表法]根据得到的键值代码,到固化在ROM中的表格中查找对应该代码的程序首地址,适用于单个命令键。[状态分析法]根据键码和当前所处的状态找出下一个应进入的状态及动作例行程序,适用于多键配合产生一个动作的多意键。23现设计一仪表的键盘有以下功能:4.1.2键值分析——查表法表4-3键值表按键键值0~FRUNRETADRSSTOREREADWRITE00H~0FH10H11H12H13H14H15H表4-2功能子程序转移地址表功能子程序入口地址入口地址1入口地址2入口地址3……子程序1子程序2子程序324INPUT:LCALLKEY;调用按键识别子程序,键值在A中MOVR0,AANLA,#10HJZDATAIN;小于10H为数字键,转入数字操作MOVA,R0ANLA,#0FH;保留键值的低4位MOVR0,A;实现(A)×3RLAADDA,R0MOVDPTR,#TABLE;取转移表首地址JMP@A+DPTR;按不同的键值转入不同的子程序4.1.2键值分析——查表法为什么?25TABLE:LJMP#RUN;转入RUN命令子程序LJMP#RET;转入RET命令子程序LJMP#ADRS;转入ADRS命令子程序LJMP#STORE;转入STORE命令子程序LJMP#READ;转入READ命令子程序LJMP#WRITE;转入WRITE命令子程序DATAIN:………4.1.2键值分析——查表法3字节指令26当按键较多,复用次数较多时,若依然采用查表法,使得命令的识别和子程序的执行交织在一起,结构复杂,层次不清,不易阅读和修改。这时可采用状态变量法。系统的“状态”是表示系统的最小一组变量(状态变量)。只要知道了t=t0时的状态变量和t≥t0时的输入就可完全确定系统在t≥t0任何时间内的行为。4.1.2键值分析——状态变量法27PESET=f(Kc-1,Kc-2,……)其中,Kc-1,Kc-2……为t0时刻以前的按键序列;PESET称为程序的当前状态(简称现状)。4.1.2键值分析——状态变量法表4-4状态矩阵表SUB01NEXT01SUB02NEXT02SUB03NEXT02K1K2KnST0ST1STmSUB11NEXT01SUB12NEXT12SUB13NEXT13SUBm1NEXTm1SUBm2NEXTm2SUBmnNEXTmn………………………按键状态28应用状态变量法设计键值分析程序具有如下优点:(1)应用一张状态表,统一处理任何一组按键状态的组合,简化编译过程、使程序易读、易懂。(2)翻译、解释按键序列与执行子程序完全分离,键值分析程序可单独进行。(3)若仪表功能发生改变,程序的结构不变,仅需要修改状态表。(4)仪表设计越复杂,按键复用次数越多,效率越高。4.1.2键值分析——状态变量法29*发光二极管价格低、寿命长,对电压电流要求低。*LED是近似恒压的元件,导电的正向压降一般为1.6V或2.4V,反向击穿电压一般≥5V。*工作电流在10~20mA,需串联适当的限流电阻。4.2LED显示器接口技术301.LED数码显示器的结构LED数码显示器是1种由LED发光二极管组合显示字符的显示器件。它使用了8个LED发光二极管,其中7个用于显示字符,1个用于显示小数点,故通常称之为7段(也有称作8段)发光二极管数码显示器。其内部结构如图4.14所示。4.2LED显示器接口技术31图4.147段LED数码显示器4.2LED显示器接口技术322.LED数码显示器的显示段码为了显示字符,要为LED显示器提供显示段码(或称字形代码),组成一个“8”字形字符的7段,再加上1个小数点位,共计8段,因此提供给LED显示器的显示段码为1个字节。各段码位的对应关系如下:段码位D7D6D5D4D3D2D1D0显示段dpgfedcba4.2LED显示器接口技术33表4-7十六进制数及空白字符与P的显示段码

4.2LED显示器接口技术343.LED数码显示器的接口方法单片机与LED数码显示器有以硬件为主和以软件为主的两种接口方法。1)以硬件为主的接口方法这种接口方法的电路如图4.15所示。4.2LED显示器接口技术35图4.15采用硬件译码器的LED接口edcbagfD1D2D3D4Q1Q2Q3Q4ABCDD1D2D3D474759368FND500+5V0088H锁存器段译码器共阴极显示器将输入的十六进制数转换成段码输出若该接口地址为0088H,显示数字0程序如下:MOVDPTR,#0088HMOVA,#00HMOVX@DPTR,A4.2LED显示器接口技术36

2)以软件为主的接口方法接口方法的电路如图4.16所示,它是以软件查表代替硬件译码,不但省去了译码器,而且还能显示更多的字符。但是驱动器是必不可少的,因为仅靠接口提供不了较大的电流供LED显示器使用。4.2LED显示器接口技术374.2LED显示器接口技术字型码字位LED6反向驱动器同向驱动器…740775452PA口PB口AD0~AD7ALEWRRDCEIO/MALEWRRDP0.0~P0.7P2.7P2.080C51LED1……图4.16软件译码的动态扫描多位LED显示接口8155384.LED数码显示器的显示方法

由于各位数码管的显示段码是互相并联的,因此在同一时刻只能显示同一种字符。对于这种接口电路来说,其显示方法有静态显示和动态显示两种。(1)静态显示[静态显示]就是在同一时刻只显示1种字符,或者说被显示的字符在同一时刻是稳定不变的。*其显示方法比较简单,只要将显示段码送至段码口,并把位控字送至位控口即可。所用指令为:

4.2LED显示器接口技术39MOVDPTR,#SEGPORT;指向段码口MOVA,#SEG;取显示段码MOVX@DPTR,A;输出段码MOVDPTR,#BITPORT;指向位控口MOVA,#BIT;取位控字MOVX@DPTR,A;输出位控字4.2LED显示器接口技术40(2)动态显示如果要在同一时刻显示不同的字符,从电路上看,这是办不到的。因此只能利用人眼对视觉的残留效应,采用动态扫描显示的方法,逐个地循环点亮各位数码管,每位显示1ms左右,使人看起来就好象在同时显示不同的字符一样(在亮度上要有差别)。在进行动态扫描显示时,往往事先并不知道应显示什么内容,这样也就无从选择被显示字符的显示段码。为此,一般采用查表的方法,由待显示的字符通过查表得到其对应的显示段码。

4.2LED显示器接口技术414.2LED显示器接口技术字型码字位LED6反向驱动器同向驱动器…740775452PA口PB口AD0~AD7ALEWRRDCEIO/MALEWRRDP0.0~P0.7P2.7P2.080C51LED1……图4.16软件译码的动态扫描多位LED显示接口8155PA.0PA.542DISPB:MOVDPTR,#7F00H;8155命令口地址MOVA,#03HMOVX@DPTR,A;PA、PB为输出方式MOVR0,#7AH;显示缓冲区首地址MOVR3,#01HMOVA,R3DISPB1:MOVDPTR,#7F01H;指向PA口MOVX@DPTR,A4.2LED显示器接口技术将单片机80C51内部RAM中的7AH~7FH单元作为显示缓冲区,用来存放欲显示的数据。8155的口地址为7F00H~7F05H;程序中采用查表取段码指令MOVCA,@A+PC或者MOVCA,@A+DPTR43INCDPTR;指向PB口MOVA,@R0;取显示数据ADDA,#0DH;查表偏移量MOVCA,@A+PC;执行后A中为段码值MOVX@DPTR,A;1字节

ACALLDELAY;延时2字节

INCR0;1字节

MOVA,R3;1字节

4.2LED显示器接口技术将单片机80C51内部RAM中的7AH~7FH单元作为显示缓冲区,用来存放欲显示的数据。8155的口地址为7F00H~7F05H;程序中采用查表取段码指令MOVCA,@A+PC或者MOVCA,@A+DPTR44JBACC.5,DISPB2;判断6位LED是否都显示完3字节

RLA;扫描模式左移1位1字节

MOVR3,A;1字节

AJMPDISPB1;2字节

DISPB2:RET;1字节

SEGPT2:DB3FH,06H,5BH,4FH,66H,6DH,……DELAY:…;延时RET4.2LED显示器接口技术将单片机80C51内部RAM中的7AH~7FH单元作为显示缓冲区,用来存放欲显示的数据。8155的口地址为7F00H~7F05H;程序中采用查表取段码指令MOVCA,@A+PC或者MOVCA,@A+DPTR45程序说明:(1)本例接口电路是以软件为主的接口电路,显示数据有6位,每位数码管对应1位有效显示数据。(2)由程序可知,由于数码显示器的低位(最右边的位)显示的是显示缓冲区中的低地址单元中的数,因此数在显示缓冲区中存放的次序为低地址单元存低位,高地址单元存高位。(3)在动态扫描显示过程中,每位数码管的显示时间约1ms,这由调用延时1ms子程序DELY来实现。4.2LED显示器接口技术46(4)本程序是利用查表方法来得到显示段码的,这是一种既简便又快速的方法。由于MCS-51单片机具有查表指令(MOVC指令),因此用来编制查表程序是非常方便的。(5)在实际的单片机应用系统中,一般将显示程序作为1个子程序供监控程序调用。4.2LED显示器接口技术47LED数码显示器应用1.静态显示举例例1:开始时在数码显示器的最右边一位上显示1个“P”字,以后每隔0.5秒将“0”字左移1位,直到最左边一位后则停止显示。接口电路与端口地址同上,设有20ms延时子程序D20MS可供调用。试编写相应的程序。4.2LED显示器接口技术482.动态显示举例例2:有一单字节无符号数存放在片内RAM30H单元中,要求在数码显示器的最右边两位上显示。提示:在不显示数字的位上数码管应该不亮,而动态扫描显示子程序每次对6位数码管全扫描一遍。程序按如下思路编写:(1)将该无符号数拆字节后存入显示缓冲区,应注意数的存放次序。根据题意,低位数应存入显示缓冲区的低地址单元。(2)将“空白”字符的查表值10H送入不显示位所对应的显示缓冲区中。(3)反复调用动态扫描显示子程序。

4.2LED显示器接口技术494.2LED显示器接口技术字型码字位LED6反向驱动器同向驱动器…740775452PA口PB口AD0~AD7ALEWRRDCEIO/MALEWRRDP0.0~P0.7P2.7P2.080C51LED1……图4.16软件译码的动态扫描多位LED显示接口8155PA.0PA.550解:本例要显示的字符已知,且在同一时刻只显示1种字符,故可采用静态显示的方法。由图4.16可知,当采用共阳极数码管时,应按共阳极规律控制。在程序的开始,应对8155进行初始化编程,设A、B口均为输出。4.2LED显示器接口技术51MOVA,#0FH;取最右边1位字符MOVR0,#7AH;指向显缓区首址(最低位)MOVR1,#06H;共送入6个字符LOOP:MOV@R0,A;将字符送入显缓区INCR0;指向下一显示单元DECA;取下一个显示字符DJNZR1,LOOP;6个数未送完,则重复MM:LCALLDIR;扫描显示一遍SJMPMM;重复扫描4.2LED显示器接口技术例3:编一动态显示程序,使数码显示器同时显示“ABCDEF”6个字符。设显示缓冲区的首地址为7AH,可调用动态扫描显示子程序DIR(直接调用)。52例4:在一串单字节无符号数中找出最大值,并在数码显示器的最右边两位上显示。设数据串的长度为20,存放在片内RAM从30H单元开始的一段区域中。解:根据题意,LED数码显示器必须采用动态扫描显示的方法。本例要显示的是两位数,而数码显示器有6位。在不显示数字的位上数码管应该不亮,而动态扫描显示子程序每次对6位数码管全扫描一遍。4.2LED显示器接口技术53程序按如下思路编写:(1)先求出最大值。(2)将最大值拆字节后存入显示缓冲区,应注意数的存放次序。根据题意,低位数应存入显示缓冲区的低地址单元。

如72H,应在高地址单元存储07H,低地址存存储02H。(3)将“空白”字符的查表值10H送入不显示位所对应的显示缓冲区中。(4)反复调用动态扫描显示子程序。4.2LED显示器接口技术54

程序如下:MOVR0,#30H;R0指向数据区首地址MOVR1,#13H;比较次数送R1MOVA,@R0;取第1个数M1:INCR0;指向下一个数MOV70H,@R0;下一个数送入70H单元中CJNEA,70H,M3;若前后两个数不相等则转M2:DJNZR1,M1;若相等,则判比较完否?SJMPM4;若已完,则转至显示处理M3:JNCM2;前一个数大,转至判结束否?4.2LED显示器接口技术55MOVA,70H;前一个数小,将大数换入A中SJMPM2;转至判结束处M4:MOVR2,A;暂存最大值ANLA,#0FH;保留低位数MOV7AH,A;将低位数存入显示缓冲区中MOVA,R2;恢复最大值ANLA,#0F0H;保留高位数SWAP;将高位换入低位中MOV7BH,A;存入高位数4.2LED显示器接口技术56MOVA,#10H;取“空白”字符查表值MOV7CH,A;放入显示缓冲区不显示位的单元中MOV7DH,A;高4位不显示MOV7EH,AMOV7FH,AMM:LCALLDIR;扫描显示一遍SJMPMM;重复扫描,显示最大值4.2LED显示器接口技术57MAX7219是MAXIM公司生产的一种串行接口方式7段共阴极LED显示驱动器。片内有一个BCD码到B码的译码器、多路复用扫描电路、字段和字位驱动器,以及存储每个数字的8×8RAM。采用三线串行方式与单片机接口。4.2.2串行接口8位共阴极LED驱动器MAX7219584.2.2串行接口8位共阴极LED驱动器MAX7219123456789101112242322212019181716151413DINDOUTDIG0DIG4DIG6DIG2DIG3DIG7GNDGNDDIG5DIG1LOADCLKSEGASEGFSEGBSEGGSEGDSEGDPSEGESEGCV+ISETMAX7219串行数据输入,在CLK时钟的上升沿移入,且最高位(MSB)在前串行数据输出594.2.2串行接口8位共阴极LED驱动器MAX7219123456789101112242322212019181716151413DINDOUTDIG0DIG4DIG6DIG2DIG3DIG7GNDGNDDIG5DIG1LOADCLKSEGASEGFSEGBSEGGSEGDSEGDPSEGESEGCV+ISETMAX7219字位驱动引脚,从LED显示器吸入电流604.2.2串行接口8位共阴极LED驱动器MAX7219123456789101112242322212019181716151413DINDOUTDIG0DIG4DIG6DIG2DIG3DIG7GNDGNDDIG5DIG1LOADCLKSEGASEGFSEGBSEGGSEGDSEGDPSEGESEGCV+ISETMAX7219两个地必须相连614.2.2串行接口8位共阴极LED驱动器MAX7219123456789101112242322212019181716151413DINDOUTDIG0DIG4DIG6DIG2DIG3DIG7GNDGNDDIG5DIG1LOADCLKSEGASEGFSEGBSEGGSEGDSEGDPSEGESEGCV+ISETMAX7219在LOAD的上升沿将串行输入数据的最后16位锁存624.2.2串行接口8位共阴极LED驱动器MAX7219123456789101112242322212019181716151413DINDOUTDIG0DIG4DIG6DIG2DIG3DIG7GNDGNDDIG5DIG1LOADCLKSEGASEGFSEGBSEGGSEGDSEGDPSEGESEGCV+ISETMAX7219输入的移位脉冲,最高频率10MHz上升沿时,串行数据被移入内部移位寄存器,下降沿从DOUT移出。634.2.2串行接口8位共阴极LED驱动器MAX7219123456789101112242322212019181716151413DINDOUTDIG0DIG4DIG6DIG2DIG3DIG7GNDGNDDIG5DIG1LOADCLKSEGASEGFSEGBSEGGSEGDSEGDPSEGESEGCV+ISETMAX72197段和小数点驱动输出,提供LED显示器源电流。644.2.2串行接口8位共阴极LED驱动器MAX7219123456789101112242322212019181716151413DINDOUTDIG0DIG4DIG6DIG2DIG3DIG7GNDGNDDIG5DIG1LOADCLKSEGASEGFSEGBSEGGSEGDSEGDPSEGESEGCV+ISETMAX7219+5V电源65MAX7219采用串行数据传输方式,由16位数据包发送到DIN,每一位数据在CLK的上升沿被移入内部16位移位寄存器中,然后在LOAD的上升沿将数据锁存到数据或控制寄存器中。串行数据以16为一楨,其中D15-D12任意,D11-D8为内部寄存器地址,D7-D0为寄存器数据。4.2.2串行接口8位共阴极LED驱动器MAX7219D15D14D13D12D11D10D9D8D7D6D5D4D3D2D1D0××××地址数据MSBLSB66MAX7219具有5个控制寄存器,分别用于译码方式、显示亮度、扫描界限(扫描数位的个数)、停机和显示测试。每一种寄存器都有其固定的地址,编程时按照书中介绍的对应十六进制代码。P210~P213MAX7219与单片机的接口如图所示:4.2.2串行接口8位共阴极LED驱动器MAX7219674.2.2串行接口8位共阴极LED驱动器MAX7219684.2.2串行接口8位共阴极LED驱动器MAX7219694.2.2串行接口8位共阴极LED驱动器MAX7219MAX7219显示驱动程序:ORG0000HLJMPMAINORG0030HMAIN:MOVSP,#60HMOVR7,#0AH;亮度寄存器MOVR5,#07H;亮度值LCALLDINPUT;调用7219命令写入子程序MOVR7,#0BH;扫描界限MOVR5,#07H;显示0-7位数字704.2.2串行接口8位共阴极LED驱动器MAX7219

LCALLDINPUTMOVR7,#09H;译码方式寄存器MOVR5,#0FFH;7-0位译码LCALLDINPUTMOVR7,#0CH;停止寄存器MOVR5,#01H;正常工作LCALLDINPUTMOV30H,#08HMOV31H,#00HMOV32H,#05H

714.2.2串行接口8位共阴极LED驱动器MAX7219

MOV33H,#01HMOVR7,#30HLCALLDISPLY

HERE:SJMPHEREDINPUT:MOVA,R7MOVR2,#08H;作为7219控制寄存器的8位地址值LOOP1:RLCA;A的D7位移到P1.0,依此为D6~D0MOVP1.0,C;8位地址移入DINCLRP1.2;P1.2输出时钟信号SETBP1.2DJNZR2,LOOP1MOVA,R5MOVR2,#08H;8位数据724.2.2串行接口8位共阴极LED驱动器MAX7219LOOP2:RLCA;A的D7位移到P1.0,依此为D6~D0MOVP1.0,CCLRP1.2SETBP1.2DJNZR2,LOOP2CLRP1.1;输出LOAD信号SETBP1.1RET

734.2.2串行接口8位共阴极LED驱动器MAX7219DISPLY:MOVA,R7;装缓冲区入口地址MOVR0,AMOVR1,#01H;R1指向8字节显示RAM首地址MOVR3,#08HLOOP3:MOVA,@R0MOVR5,AMOVA,R1MOVR7,ALCALLDINPUTINCR0INCR1DJNZR3,LOOP3RET744.2.2串行接口8位共阴极LED驱动器MAX7219思考?使用C语言如何实现?754.2.2串行接口8位共阴极LED驱动器MAX7219#include<reg52.h>#defineucharunsignedcharsbitdin=P1^0;sbitclk=P1^2;sbitload=P1^1;764.2.2串行接口8位共阴极LED驱动器MAX7219voidWrite_Max7219_byte(ucharDATA)//LED写数据函数{uchari;load=0;for(i=8;i>=1;i--){clk=0;din=(bit)(DATA&0x80);DATA=DATA<<1;clk=1;}}774.2.2串行接口8位共阴极LED驱动器MAX72197219写数字程序//功能:先写LED数字控制寄存器,再将要显示的字符送到相应的数字寄存器显示voidWrite_Max7219(ucharaddress,uchardat){load=0;Write_Max7219_byte(address);Write_Max7219_byte(dat);load=1;}784.2.2串行接口8位共阴极LED驱动器MAX7219/****************7219初始化程序**********************/voidInit_Max7219(void)

{Write_Max7219(0x09,0xff);//译码寄存器,写入0ffH,对0至7位均译码Write_Max7219(0x0a,0x07);//亮度调节寄存器,写入07H,实现一般的亮度显示Write_Max7219(0x0b,0x07);//扫描界限寄存器,写入07H,实现对0到7位数码管的显示Write_Max7219(0x0c,0x01);//停机寄存器,写入01H,实现正常工作Write_Max7219(0x0f,0x00);//显示测试寄存器,写入00H,实现正常工作}794.2.2串行接口8位共阴极LED驱动器MAX7219/*****************主程序******************///实现四个数码显示80510000voidmain(){Init_Max7219();Write_Max7219(0x01,0x08);Write_Max7219(0x02,0x00);Write_Max7219(0x03,0x05);Write_Max7219(0x04,0x01);Write_Max7219(0x05,0x00);Write_Max7219(0x06,0x00);Write_Max7219(0x07,0x00);Write_Max7219(0x08,0x00);}804.38279可编程键盘/显示器芯片接口技术4.3.18279工作原理8279分为两个部分:键盘部分和显示部分。键盘部分:提供64按键阵列的扫描接口,也可以接传感器阵列。显示部分:对LED数码管等提供显示接口。814.38279可编程键盘/显示器芯片接口技术8279的组成及引脚

8279芯片有40条引脚,由单一+5V电源供电。它主要由以下几部分组成:(1)I/O控制和数据缓冲器;(2)控制和定时寄存器及定时控制部分;(3)扫描计数器;(4)回送缓冲器与键盘去抖动控制电路;(5)FIFO(先进先出)寄存器和状态电路;(6)显示器地址寄存器及显示RAM。824.38279可编程键盘/显示器芯片接口技术双向数据总线。834.38279可编程键盘/显示器芯片接口技术命令状态或数据选择线。A0=1,表示从DB0~DB7线上传送的是命令或状态字;A0=0表示为数据。844.38279可编程键盘/显示器芯片接口技术扫描线。可进行译码扫描(4选1),也可进行编码扫描(16选1),但要使用4-16译码器。若用3-8译码器的话,则扫描线为8选1。854.38279可编程键盘/显示器芯片接口技术回送线。内部有上拉电阻,从此线上得到键盘的回扫信号。864.38279可编程键盘/显示器芯片接口技术显示器刷新寄存器输出,与扫描线同步。874.38279可编程键盘/显示器芯片接口技术4.3.28279的数据输入、显示及命令格式1、数据输入8279的数据输入有3种方式:(1)键扫描方式(2)传感器方式(3)选通输入方式884.38279可编程键盘/显示器芯片接口技术(1)键扫描方式格式CNTLSHIFT扫描行序号回馈线(列)序号D7D6D5D4D3D2D1D0

如果CNTL和SHIFT接地,按下键的位置在第二行,且与第四列回馈线相交,则该键的代码为00010100。8279的扫描输出有两种:译码扫描和编码扫描。在采用编码扫描时要选择合适的译码器。扫描的数据被存在FIFO中。894.38279可编程键盘/显示器芯片接口技术(2)传感器扫描方式这种扫描方式,将对开关阵列中的每一个结点的通、断状态(传感器状态)进行扫描,当阵列中的任何一个状态改变时将产生IRQ信号。此时,FIFO为一状态积存器。(3)选通输入方式选通工作方式时,RL0~RL7作为并行输入端口来使用,CNTL作为选通输入信号输入端。904.38279可编程键盘/显示器芯片接口技术2、显示输出8279内部设置了16×8显示数据存储器,每个单元存一个字符的8位显示代码。8个输出端与存储单元的各位的对应关系为:D7D6D5D4D3D2D1D0A3A2A1A0B3B2B1B0扫描信号与键盘扫描共用。914.38279可编程键盘/显示器芯片接口技术3、命令格式1)键盘、显示器工作模式设置命令D7D6D5D4D3D2D1D0000D1D0K2K1K0说明:(1)D7~D5特征码(2)D1D0显示管理方式008字符显示,左端输入

0116字符显示,左端输入108字符显示,右端输入1116字符显示,右端输入924.38279可编程键盘/显示器芯片接口技术说明:(3)K2K1K0数据输入及扫描方式

000编码扫描,键盘输入,两键互锁001译码扫描,键盘输入,两键互锁010编码扫描,键盘输入,多键有效011译码扫描,键盘输入,多键有效100编码扫描,传感器阵列检测101译码扫描,传感器阵列检测110选通输入,编码扫描显示器111选通输入,译码扫描显示器注意:RESET信号等效于08H。934.38279可编程键盘/显示器芯片接口技术2)扫描频率设置命令D7D6D5D4D3D2D1D0001P4P3P2P1P0说明:P4~P0的取值为2~31,为外接时钟的分频系数,经分频后得到内部时钟频率。RESET后取31。944.38279可编程键盘/显示器芯片接口技术3)读FIFO堆栈命令D7D6D5D4D3D2D1D0010AIXA2A1A0说明:在读FIFO之前,CPU必须先输出该命令。8279领命之后,CPU执行输入指令,从FIFO读数据。地址由A2~A0给出。AI为自动加1标志。省略了CPU修改地址的操作。954.38279可编程键盘/显示器芯片接口技术4)读显示RAM命令D7D6D5D4D3D2D1D0011AIA3A2A1A0说明:在读显示RAM之前,CPU必须先输出该命令。964.38279可编程键盘/显示器芯片接口技术5)写显示RAM命令D7D6D5D4D3D2D1D0100AIA3A2A1A0说明:在写显示RAM之前,CPU必须先输出该命令。974.38279可编程键盘/显示器芯片接口技术6)显示屏蔽消隐命令D7D6D5D4D3D2D1D0101A3IWAIWBBLABLB说明:IWA和IWB分别用于屏蔽A组和B组显示RAM。用于双四位显示器。BLA和BLB是消隐特征位。要消隐两位显示输出,必须使之为1,恢复显示时为0。984.38279可编程键盘/显示器芯片接口技术7)清除命令说明:CD2CD1CD0清除方式×0×显示RAM全部清0110全部置20H×11全部置10××不清除(CA=0时)CF=1,FIFO置空状态,复位IRQCA是总清除的标志位。D7D6D5D4D3D2D1D0110CD2CD1CD0CFCA994.38279可编程键盘/显示器芯片接口技术8)中断结束/设置出错方式命令说明:在传感器工作方式中,该命令使IRQ输出线为低电平。在N键巡回工作方式中,E=1指在消颤期内如果有多键按下,则产成中断,并且阻止写入RAM。D7D6D5D4D3D2D1D0111EX××X1004.38279可编程键盘/显示器芯片接口技术4、状态字说明:N2~N0表示FIFO中数据个数F=1,表示FIFO满在FIFO中没有数据时,CPU读FIFO,则U置1当FIFO满数据时,又输入一个字符时O置1S/E,传感器工作方式时,多个传感器同时闭合则置1清除命令期间DU为1,此时对显示RAM的写无效D7D6D5D4D3D2D1D0DUS/EOUFN2N1N0(FIFO中字符个数、出错信息、能否对显示RAM进行写入操作)1014.38279可编程键盘/显示器芯片接口技术4.3.38279接口方法1024.38279可编程键盘/显示器芯片接口技术初始化程序如下:INI79:MOVDPTR,#7FFFH;置8279命令/状态口地址MOVA,#0D1H;置清显示命令字MOVX@DPTR,A;送清显示命令WNDU:MOVXA,@DPTR;读状态JBACC.7,WEIT;等待清显示RAM结束MOVA,#34H;置分频系数MOVX@DPTR,A;送分频系数MOVA,#00H;置键盘/显示命令MOVX@DPTR,A;送键盘/显示命令MOVIE,#84H;允许8279中断RET1034.38279可编程键盘/显示器芯片接口技术显示子程序如下:DIS:MOVDPTR,#7FFFH;置8279命令/状态口地址MOVR0,#78H;字段码首地址MOVR7,#08H;8位显示MOVA,#90H;置显示命令字MOVX@DPTR,A;送显示命令MOVDPTR,#7FFEH;置数据口地址LP:MOVA,@R0;取显示数据ADDA,#5;加偏移量MOVCA,@A+PC;查表,取得数据的段码MOVX@DPTR,A;送段码显示INCR0;调整数据指针DJNZR7,LP;RET

1044.38279可编程键盘/显示器芯片接口技术SEG:DB3FH,06H,5BH,4FH,66H,6DH;字符0、1、2、3、4、5段码DB7DH,07H,7EH,6FH,77H,7CH;字符6、7、8、9、A、b段码DB39H,5EH,79H,71H,73H,3EH;字符C、d、E、F、P、U段码DB76H,38H,40H,6EH,FFH,00H;字符H、L、-、Y、日、“空”段码105键盘中断子程序如下:KEY:PUSHPSWPUSHDPLPUSHDPHPUSHACCPUSHBSETBPSW.3;选工作寄存器MOVDPTR,#7FFFH;置状态口地址MOVXA,@DPTR;读FIFO状态ANLA,#0FH;JZPKYR;

4.38279可编程键盘/显示器芯片接口技术106MOVA,#40H;置读FIFO命令MOVX@DPTR,A;送读FIFO命令MOVDPTR,#7FFEH;置数据口地址MOVXA,@DPTR;读数据LJMPKEY1;转键值处理程序PKYR:POPBPOPACCPOPDPHPOPDPLPOPPSWRETI;KEY1:……;键值处理程序4.38279可编程键盘/显示器芯片接口技术1074.4LCD液晶显示器接口技术

液晶显示是一种功耗极低的被动式显示器件。其优点为:工作电流比LED小几个数量级,尺寸小,厚度约为LED的1/3等一、工作原理和驱动方式1、工作原理目前常用的LCD是根据液晶的扭曲-向列效应原理制成的。加在两块导电玻璃电极之间的液晶经一定的处理后,偏振面会旋转90°。有电场,扭曲结构小时,旋光作用也消失,偏振光通过;无电场,正好相反。1084.4LCD液晶显示器接口技术

当上、下电极加上一定的电压后,电极部分的液晶分子垂直排列,失去旋光性,从上偏振片入射的偏振光不被旋转,光无法通过下偏振片返回,因而呈黑色。根据需要,将电极做成各种文字、数字、图形。就可以获得各种状态显示。1094.4LCD液晶显示器接口技术

LCD常采用交流电驱动,采用“异或”门将显示信号和显示频率信号合并为交变的驱动信号。显示控制信号显示频率信号ACLCDB1101=1LCDABC不显示显示VBVCVA-VC4.4LCD液晶显示器接口技术VA1112、驱动方式液晶显示器的驱动方式由电极引线的选择方式确定。因此,在选择好液晶显示器后,用户无法改变驱动方式。液晶显示器的驱动方式一般有静态驱动和动态驱动两种。(1)在静态显示方式中,某个液晶显示字段上两个电极的电压相位相同时,两电极的相对电压为零,该字段不显示;当此字段上两个电极的电压相位相反时,两电极的相对电压为两倍幅值方波电压,该字段呈黑色显示。4.4LCD液晶显示器接口技术112

静态驱动方式下,LCD的每个字段都要引出电极,所有显示器的公共电极连在一起。适用于显示位数少的场合。(2)动态驱动方式采用矩阵驱动法来驱动字段显示。分时驱动是常用的动态驱动方法,常采用偏压法。其占空比有1/2,1/8,1/11,1/16,1/32,1/64等,偏比有1/2,1/3,1/4,1/5,1/7,1/9等。4.4.1LCD液晶显示器接口技术4.4LCD液晶显示器接口技术1134.4LCD液晶显示器接口技术2Vc/3Vc/3Vc/3Vc0VCDRSVc/3Vc/3Vc/3CDRS2Vc/3Vc/3Vc/3RCCSDRVcDS1144.4LCD液晶显示器接口技术

液晶显示器有字段型、字符型、点阵图形型,在使用时,有的液晶显示器内部有控制器,使用比较方便。字段型液晶显示器有六段、七段、八段等多种,七段是常用的一种。

字段型LCD以七段显示为常见,用于显示0~9十个数字及少量字符,在单片机应用中需要专用的液晶显示译码驱动器才能工作。1154.4LCD液晶显示器接口技术

字段型显示器采用通用的三位半字段式芯片,它的具体尺寸和显示信息见图116abcdefgBIPHABCDLDMC14543abcdefgBIPHABCDLDMC14543abcdefgBIPHABCDLDMC14543a1b1c1d1e1f1g1a1b1c1d1e1f1g1a1b1c1d1e1f1g1a1b1c1d1e1f1g14N07COMP3.7P1.4P1.5P1.64.4.2字段式LCD液晶显示器的驱动接口工作电压为3-6V,阈值电压为1.5V,工作频率为50-200Hz。静态驱动。abcdefgBIPHABCDLDMC14543117abcdefgBIPHABCDLDMC145434.4.2字段式LCD液晶显示器的驱动接口MC14543是译码驱动器,将输入的BCD码转换为7段显示码输出至a~g控制驱动方式,输入显示方波信号内部锁存器选通端“1”时允许A~D端输入BCD码数据;“0”时锁存BCD码输入端,D为高位消隐控制端,“1”消隐;“0”显示1184.4.2字段式LCD液晶显示器的驱动接口abcdefgBIPHABCDLDMC14543P3.7P1.0P1.1P1.2abcdefgBIPHABCDLDMC14543abcdefgBIPHABCDLDMC14543abcdefgBIPHABCDLDMC14543a1b1c1d1e1f1g1a1b1c1d1e1f1g1a1b1c1d1e1f1g1a1b1c1d1e1f1g14N07COMP3.7P1.4P1.5P1.6P1.7P1.3119将显示缓冲区DISB中的内容显示在LCD上。程序代码如下:主程序显示子程序中断子程序4.4.2字段式LCD液晶显示器的驱动接口120DISBEQU60HORG0000HHINIT:LJMPSTART ORG001BH;定时器1入口 LJMPINTT1 ORG0030HSTART:MOVTMOD,#10HMOVTH1,#0ECHMOVTL1,#78HSETBTR1 SETBEASETBET1……LCALLDISP;调用显示子程序4.4.2字段式LCD液晶显示器的驱动接口121显示子程序:DISP:MOVR0,#DISBMOVR2,#10H;设定最高位锁存控制标志DISP1:MOVA,@R0ANLA,#0FH;保留BCD码ORLA,R2;加上锁存控制位MOVP1,AANLP1,#0FH;令所有的位处于锁存状态INCR0 MOVA,R2;修改锁存控制位RLAMOVR2,AJNBACC.0,DISP1;未完成4位则继续RET4.4.2字段式LCD液晶显示器的驱动接口122定时器1中断服务程序如下:INTT:CPLP3.7MOVTH1,#0ECHMOVTL1,#78HRETI4.4.2字段式LCD液晶显示器的驱动接口123

点阵式液晶显示模块能显示的字符多,还可显示汉字,在智能测控仪表中应用广泛。点阵图形型液晶显示器内部都有控制器,各种类型的点阵图形液晶显示器的控制器使用要求不同,指令各异,但基本控制方式相同,一般点阵图形型液晶显示器都有一个对外的接口,了解了接口引脚的定义和使用条件,可以应用单片机的数据总线或P1口对点阵图形型液晶显示器件进行控制。4.4.3点阵式液晶显示模块1244.4LCD液晶显示器接口技术重点EA_D20040点阵式液晶显示模块引脚:Vss地线Vdd+5v电源V0液晶显示面板调节,通过10-20K电阻RS寄存器选择信号输入,0选通指令寄存器,1选通数据寄存器R/W读写控制,0写入,1度出E片选,1有效D0-D7数据线1254.4LCD液晶显示器接口技术显示数据存储器DDRAM与显示屏幕的物理位置一一对应。如表4-17字符编码就是字符存储器的地址。有CGRAM;CGROM用于造字1264.4LCD液晶显示器接口技术命令:D7D6D5D4D3D2D1D0000000011清显示命令该命令把空格编码20H送入数据存储器的所有单元1274.4LCD液晶显示器接口技术D7D6D5D4D3D2D1D00000001X2光标返回命令1284.4LCD液晶显示器接口技术D7D6D5D4D3D2D1D0000001I/DS3设置输入方式命令1294.4LCD液晶显示器接口技术D7D6D5D4D3D2D1D000001DCB4显示开关控制命令D=0显示器关闭,=1显示器立即显示DDRAMA中数据C=0不显示光标,=1显示光标B=1显示闪烁光标1304.4LCD液晶显示器接口技术D7D6D5D4D3D2D1D00000S/CR/LXX5光标或显示屏移动命令S/CR/L作用00光标左移,地址计数器减10

温馨提示

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

评论

0/150

提交评论