LED显示接口•静态驱动方式的工作原理是每一个LED显示器用一个I/O端口驱动、亮度大、耗电也大、占用的I/O端口多,但显示位多时一般很小采用。•动态扫面方式的工作原理是将多个显示器的段码同名端连在一起,位码分别控制,利用视角暂留效应,分别进行显示。只要保证显示的频率,看起来的效果和一直显示是一样的。电路上一般用一个I/O端口驱动段码,用另一个I/O口实现位控。因此动态显示占用的I/O口少,耗电也少。•(1)静态显示接口目前静态显示接口一般采用如下三种方式•1)采用并行输出接口的静态显示接口采用的并行输出接口可以是TTL的锁存器(如74LS273、74LS373),也可采用大规模集成并行输出接口(如8155、8255A等)。图8-2中8255A的PA、PB、PC口各驱动1个8段数码管,实现静态接口。abcdefgdpabcdefgdpabcdefgdpabcdefgdpabcdefgdpabcdefgdpPA0PA1PA2PA3PA4PA5PA6PA7PB0PB1PB2PB3PB4PB5PB6PB7PC0PC1PC2PC3PC4PC5PC6PC78255A+5VCOMCOMCOM•2)采用硬件译码器件构成静态显示接口在CMOS和TTL器件里,都有专门用于驱动显示的器件。CMOS类型的器件有CD4511、CD14547、CD14495、CM14513等。TTL类型器件有74LS47、74LS247、74LS48等,其中74LS47和74LS247可驱动共阳数码管,其余只可驱动共阴数码管。这些驱动器中大部分CMOS驱动器均带有锁存器,而TTL器件均不带锁存器,在设计时,应在其前面加上锁存电路。图8-3是CD4511构成的静态显示电路。图中要显示的数据送P1.0P1.2,利用74LS138译码信号使能CD4511,通过CD4511译码并锁存,从而实现静态显示的功能。abdefgdpcabcdefgdpabdefgdpcabcdefgdpabdefgdpcabcdefgdpabdefgdpcabcdefgdpABDEFCGABDEFCGABDEFCGABDEFCGLELELELEY0Y1Y2Y3Y4Y5Y6Y7ABCDABCDABCDABCDABCP1.4P1.5P1.6P1.0P1.1P1.2P1.3805174LS138CD4511CD4511CD4511CD4511COMCOMCOMCOMGND•3)用串转并接口芯片构成静态显示接口abcdefgdpabcdefgdpQ0Q1Q2Q3Q4Q5Q6Q774LS164ABCLKMRabcdefgdpabcdefgdpQ0Q1Q2Q3Q4Q5Q6Q774LS164ABCLKMRabcdefgdpabcdefgdpQ0Q1Q2Q3Q4Q5Q6Q774LS164ABCLKMRabcdefgdpabcdefgdpQ0Q1Q2Q3Q4Q5Q6Q774LS164ABCLKMRRXDTXD8051+5V(2)动态显示接口•所谓动态显示是指一位一位地轮流点亮各个显示器。对于每一位显示器来说,每隔一段时间点亮一次。通常点亮时间为1mS左右,相隔时间为20mS。图8-5为8位共阴显示器和74LS273构成的动态显示接口。abcdefgdpabcdefgdpabcdefgdpabcdefgdpabcdefgdpabcdefgdpQ0Q1Q2Q3Q4Q5Q6Q7Q0Q1Q2Q3Q4Q5Q6Q7CLKP2.6P2.7P0.0~P0.78051CLKD0~D7D0~D774LS273-174LS273-2COMCOMCOMWR•(3)定时扫描显示程序•上述的动态扫描子程序用延时方法控制一位的显示时间,CPU的效率低下,并且仅当CPU能循环调用该程序时,显示器才能稳定地显示数据,若CPU忙于其它事务,显示器会抖动,甚至只显示某一位而其它位发黑。使用定时器T0中断,定时扫描显示器,可以解决这个问题。方法如下:•用变量DispBuf指向显示缓冲区,其初始值为70H;用ScanCode保存位扫描码•当它的某一位为0,对应的LED选通,初始值设为7EH,然后每扫描一次位扫描码码左移一位以便选通下一个LED,8个LED全显示完了,又设置其值为7EH。•设置一个显示1位子程序,其功能是将DispBuf指向的单元值显示在对应位上,显示完后修改DispBuf和ScanCode。•启动定时器,使定时器产生1ms定时,在定时中断中调用显示1位子程序,使CPU每隔1ms对显示器扫描1位。8.1.2点阵式发光显示屏的接口技术•1.点阵显示原理介绍点阵式显示是把发光管整齐地排列在点阵式结构中,在点阵结构中,发光管不同亮灭组合就可以显示不同的图像、汉字或字符。图8-6是一个16X16点阵结构。•设图中发光管亮用‘1’表示,中发光管灭用‘0’表示,则第一列上半部分的亮灭可以用一个字节02H表示,第二列上半部分的亮灭可以用一个字节42H表示…第16列上半部分可以用00H表示;第一列下半部分可以04H表示,第二列下半部分的亮灭可以用一个字节04H表示…第16列下半部分可以用00H。如果由这些点阵显示汉字并按从左到右,从上到下的顺序排列就构成了汉字点阵表。图8-6构成的汉字“波”的点阵如下:•HAZI:DB02H,42H,04H,0CH,80H,F8H,88H,88H,88H,0FFH,88H,88H,0A8H,18H,00H,00H,•04H,04H,0FEH,41H,30H,8FH,40H,22H,14H,08H,14H,22H,41H,0C0H,40H,00H2.显示屏结构和接口方法•图8-7为16X128点阵式发光显示屏的一种结构,用16X16个74LS164直接驱动高亮度发光管(图中用.表示),发光管阴极接地。图8-8为显示屏的一种接口电路。74LS377-2输出8路脉冲,每一路接两行74LS164的时钟端(CLKiCLKi+1)。74LS377-1和74LS377-2共同输出16位点阵数据。•74LS377是一种8D锁存器,为其实能端,当为低电平,CLK的上升沿将D0-D7上的数据打入锁存器Q0-Q7。从图8-8可以很容易知道,74LS377-0、74LS377-1、74LS377-2与单片机接口地址分别为0DFH、0BFH和07FH。图中对74LS377的操作可以用下列指令实现:D0|D7Q0|Q7ECLKD0|D7Q0|Q7ECLKD0|D7Q0|Q7ECLKCLK01CLK23CLK45CLK67CLK89CLK1011CLK1213CLK1415D0|D7D8|D15WRD0~D7A7A6A5驱动器显示屏74LS377-074LS377-174LS377-2•MOVR0,#ADDR;74LS377接口地址•MOVA,#DATA;要写的数据•MOVX@R0,A;数据输出•3.点阵显示程序设计•CLK_ADDREQU7FH•DATA0_7_ADDREQU0BFH•DATA8_15ADDREQU0DFH•(1)脉冲产生程序。通过74LS377-2产生8路脉冲信号,程序如下:PLUSE:MOVR0,#CLK_ADDR;指向74LS377-2MOVA,#0FFH;先送高电平•MOVX@R0,A•CLRA;再送低电平,产生负跳变脉冲•MOVX@R0,A•RET•(2)清屏程序MOVR7,#80H;脉冲个数为128CLR_COL:CLRA;清屏信号(全0)MOVR0,#DATA0_7_ADDRMOVX@R0,A;送D0~D7MOVR0,#DATA8_15ADDRMOVX@R0,A;送送D8~D15CLR_LP:LCALLPLUSEDJNZR7,CLR_LP;128个脉冲是一行16片164全;部移完RET•(3)显示一个汉字程序•程序中R2为汉字的宽度(如前面的16X16点阵汉字“波”,R2的值为16),DPTR为汉字字形码的首地址。•DISP_CHA:•MOVA,R2;汉字的宽带存R2•MOVR7,A•CHA_LP:•CLRA•MOVCA,@A+DPTR;上半部字形码数据•MOVR0,#DATA0_7_ADDR•MOVX@R0,A•MOVR0,#DATA8_15ADDR•MOVA,R2•MOVCA,@A+DPTR;下半部字形码数据•MOVX@R0,A•INCDPTR;74LS164左移一位后,DPTR指向下一列•LACLLPLUSE;产生74LS164移位时钟•DJNZR7CHA_LP;一个汉字没移完,继续74LS164移位•RET8.1.3LCD显示接口•LCD显示器是一种用液晶材料制成的显示器,它具有体积小、功耗低等优点。因此,广泛应用于各种手持仪器仪表及消费类电子产品等低功耗应用场所。•LCD显示器通常可分为字符点阵型、图形点阵型两大类。字符点阵型LCD在其控制器内设有字符发生器,可以提供若干常用字符或符号的点阵,用户程序只要输入字符的ASCII值即可显示。图形点阵则在器控制器内设置了图形缓冲区,缓冲区内每个字节的每一位都和图形点阵LCD上的点相对应,通过输入“0”、“1”控制这些点的亮灭,从而形成不同的图形。•在单片机应用系统中,一般倾向于直接选用专用的LCD显示驱动模块。LCD显示驱动模块是一种将液晶显示器、连接器、驱动电路、背光源等装在一起的组件,称为LCM。单片机只要按照LCM外部接口时序要求,向LCM发送命令或数据即可实现对它的驱动。•1.1602字符点阵式LCM简介•(1)LCM1602内部结构•1602字符点阵式LCM内部采用HD44780作为显示控制器,通过HD44100进行显示规模的扩展(见图8-9)。图中SEG1~SEG40是HD44780输出的段线,SEG41~SEG80是通过HD44100扩展的段线,这80列段线以5列为单位组成16个5X8点阵字符的列•线。COM1~COM16以8行为单位分为上下两部分,上部分为COM1~COM8、下部分为COM9~COM16。这样,以COM1~COM8为行,SEG1~SEG80为列可组成16个5X8点阵字符,作为显示器第一行字符;以COM9~COM16为行,SEG1~SEG80为列又可•组成16个5X8点阵字符,作为显示器第而行字符。因此1602点阵式LCM共有两个显示行,每行可显示16个字符。COM1COM8COM9COM16SEG1SEG40SEG41SEG80HD44100HD44780DB0-DB7ER/WD/IVEEVCCGND•由于1602显示的2行16个字,1602显示屏与DDRAM的对应关系如表8-4。需要注意的是第二行的起始地址是40H,与第一行没有连续。•表8-41602显示屏与DDRAM的对应关系•显示位置1234567…16DRAM地址第一行00H01H02H03H04H05H06H…OFH第二行40H41H42H43H44H45H46H…4FH如果要在第一行第一列显示字符“A”,只有向DDRAM的00H地址写入字符“A”的ASCII值就可以了。字符“A”对应的字形码由字符产生器CGROM产生,在HD44780内部的CGROM已固化了192个常用字符的字形码,另外用户还可以在CGRAM中自定义8个字符。D0D1D2D3D4D5D6D7GNDVCCVOEWR/D/IVCCGND1234567891011121314P00P01P02P03P04P05P06P07P10P11P12BLABLK1516GNDP13VCC单片机LCM1602•(5)在指定位置显示一个字符•;输入:R6,列位置,范围为0~15•;R7,行位置,范围为0~1•;R1,要显示字符的ASCII值•DispOneChar:•MOVA,R6;X•ANLA,#0FH;限制X不能大于15•MOVR6,A•MOVA,R7;Y•ANLA,#01H;Y不能大于1•MOVR7,A•JZLine0•MOVA,R6•ORLA,#40H;第二行DDRAM对应的起始地址为40H•MOVR6,A•Line0:MOVA,R6•ORLA,#80H;写入地址命令最高为为1•MOVR2,A•LC