1、显示器接口显示器接口设计设计在单片机系统中,常用的显示器有:发光二极管显示器,简在单片机系统中,常用的显示器有:发光二极管显示器,简称称LED(LightLED(Light EmittingEmitting diode)diode);液晶显示器,简称液晶显示器,简称 LCD(LiquidLCD(Liquid crystalcrystal Display);Display);荧光管显示器。荧光管显示器。近年来也开始使用简易的近年来也开始使用简易的 CRTCRT,显示一些汉字及图形显示一些汉字及图形。前三种显示器前三种显示器都有两种显示结构都有两种显示结构;段显示段显示(7(7 段段,“米米”字型
2、等字型等) )和点阵显示和点阵显示(5(57 7,5 58 8,8 88 8 点阵等点阵等) )。而发光二极管显示又分为固定段显示和可以拼而发光二极管显示又分为固定段显示和可以拼装的大型字段显示,此外还有共阳极和共阴极之分等。装的大型字段显示,此外还有共阳极和共阴极之分等。三种显示器中三种显示器中,以荧光管显示器亮度最高以荧光管显示器亮度最高,发光二极管次之发光二极管次之而而液晶显示器最弱,为被动显示器,必须有外光源。液晶显示器最弱,为被动显示器,必须有外光源。一、一、LEDLED 段显示器结构与原理段显示器结构与原理LEDLED 显示块是由发光二极管显示字段组成的显示器显示块是由发光二极管显
3、示字段组成的显示器, 有有 7 7 段和段和 “米米”字段之分。这种显示块有共阳极和共阴极两种。如图所示:字段之分。这种显示块有共阳极和共阴极两种。如图所示:共阴极共阴极 LEDLED 数码管的发光二极管的阴极连接在一起数码管的发光二极管的阴极连接在一起, 通常此公共阴极通常此公共阴极接地接地,当某个发光二极管的阳极为高电平时当某个发光二极管的阳极为高电平时,发光二极管点亮发光二极管点亮,相应相应的段被显示。的段被显示。同样同样, 共阳板共阳板 LEDLED 数码管的发光二极管的阳极连接在一起数码管的发光二极管的阳极连接在一起, 通常此公通常此公共阳极接正电压。共阳极接正电压。当某个发光二极管
4、的阴极接低电平时当某个发光二极管的阴极接低电平时, 发光二极管被点亮发光二极管被点亮, 相应的段相应的段被显示。被显示。图中的两个显示块都有图中的两个显示块都有 dpdp 显示段,用于显示小数点。显示段,用于显示小数点。7 7 段段 LEDLED 的字型码如表所示的字型码如表所示,由于只有由于只有 7 7 个段发光二极管个段发光二极管,所以所以字型码为一个字节。字型码为一个字节。二、二、 LEDLED 显示器及显示方式显示器及显示方式由由 N N 片片 LEDLED 数码管可拼接成数码管可拼接成 N N 位位 LEDLED 显示器。是显示器。是 4 4 位位 LEDLED 显示显示器的结构原理
5、图。器的结构原理图。N N 位位 LEDLED 显示器有显示器有 N N 根位选线和根位选线和 8 8N N 根段选线。根据显示方式根段选线。根据显示方式的不同的不同, 位选线和段选线的连接方法也各不相同位选线和段选线的连接方法也各不相同。 段选线控制显示字段选线控制显示字符的字型,而位选线则控制显示位的亮、暗。符的字型,而位选线则控制显示位的亮、暗。LEDLED 显示器有静态显示和动态显示两种显示方式,分述如下:显示器有静态显示和动态显示两种显示方式,分述如下:LEDLED 静态显示方式静态显示方式LEDLED 显示器工作于静态显示方式时,各位的共阴极显示器工作于静态显示方式时,各位的共阴极
6、( (或共阳极或共阳极) )连接在一起并接地连接在一起并接地( (或十或十 5V)5V);每位的段选线每位的段选线(a(adp)dp)分别与一分别与一 8 8 位的锁存输出相连。位的锁存输出相连。之所以称为静态显示,是由于显示器中的各位相互独立,而且之所以称为静态显示,是由于显示器中的各位相互独立,而且各位的显示字符一经确定各位的显示字符一经确定, 相应锁存器的输出将维持不变相应锁存器的输出将维持不变, 直到显示直到显示另一个字符为止。也正因为如此,静态显示器的亮度都较高。另一个字符为止。也正因为如此,静态显示器的亮度都较高。图所示为一个四位静态图所示为一个四位静态 LEDLED 显示器电路。
7、显示器电路。该电路各位可独立显示该电路各位可独立显示, 只要在该位的段选线上保持段选码电平只要在该位的段选线上保持段选码电平, 该该位就能保持相应的显示字符位就能保持相应的显示字符。 由于各位分别由一个由于各位分别由一个 8 8 位输出口控制段位输出口控制段选码选码,故在同一时间里故在同一时间里,每一位显示的字符可以各不相同每一位显示的字符可以各不相同。这种显示这种显示方式接口方式接口, 编程容易编程容易, 管理也简单管理也简单 付出的代价是占用口线资源较多付出的代价是占用口线资源较多。如果显示器位数增多,则静态显示方式更是无法适应。如果显示器位数增多,则静态显示方式更是无法适应。因此在显示位
8、数较多的情况下,一般都采用动态显示方式。因此在显示位数较多的情况下,一般都采用动态显示方式。LEDLED 动态显示方式动态显示方式在多位在多位 LEDLED 显示时显示时, 为了简化硬件电路为了简化硬件电路, 通常将所有位的段选线通常将所有位的段选线相应地并联在一起,由一相应地并联在一起,由一个个 8 8 位位 I IO O 口控制,形成段选线的多路复用。而各位的共阳极或共口控制,形成段选线的多路复用。而各位的共阳极或共阴极分别由相应的阴极分别由相应的 I IO O 口线控制,实现各位的分时选通。口线控制,实现各位的分时选通。图所示为一个图所示为一个 4 4 位位 7 7 段段 LEDLED
9、动态显示器电路原理图。动态显示器电路原理图。其中段选线占用一个其中段选线占用一个 8 8 位位 I IO O 口口, 而位选线占用一个而位选线占用一个 4 4 位位 I IO O口。由于各位的段选线并联,段选码的输出对各位来说都是相同的口。由于各位的段选线并联,段选码的输出对各位来说都是相同的。因此因此,同一时刻同一时刻,如果各位位选线都处于选通状态的话如果各位位选线都处于选通状态的话,4 4 位位 LEDLED 将将显示相同的字符。若要各位显示相同的字符。若要各位 LEDLED 能够显示出与本位相应的显示字符能够显示出与本位相应的显示字符,就必须采用扫描显示方式就必须采用扫描显示方式, 即在
10、同一时刻即在同一时刻, 只让某一位的位选线处于只让某一位的位选线处于选通状态选通状态,而其它各位的位选线处于关闭状态而其它各位的位选线处于关闭状态,同时同时,段选线上输出段选线上输出相应位要显示字符的字型码,这样相应位要显示字符的字型码,这样同一时刻同一时刻,4 4 位位 LEDLED 中只有选通的那一位显示出字符中只有选通的那一位显示出字符,而其它三位则而其它三位则是熄灭的。同样,在下一时刻,只让下一位的位选线处于选通状态是熄灭的。同样,在下一时刻,只让下一位的位选线处于选通状态,而其它各位的位选线处于关闭状态时而其它各位的位选线处于关闭状态时, 在段选线上输出相应位将要显在段选线上输出相应
11、位将要显示字符的字型码示字符的字型码,则同一时刻则同一时刻,只有选通位显示出相应的字符只有选通位显示出相应的字符,而其而其它各位则是熄灭的它各位则是熄灭的。 如此循环下去如此循环下去, 就可以使各位显示出将要显示的就可以使各位显示出将要显示的字符字符,虽然这些字符是在不同时刻出现的虽然这些字符是在不同时刻出现的,而且同而且同时刻时刻,只有一位只有一位显示显示,其它各位熄灭其它各位熄灭,但由于人眼有视觉暂留现象但由于人眼有视觉暂留现象,只要每位显示间只要每位显示间隔足够短便可造成多位同时亮的假象,达到显示的目的。隔足够短便可造成多位同时亮的假象,达到显示的目的。LEDLED 不同位显示的时间间隔
12、可以通过定时中断完成。如对不同位显示的时间间隔可以通过定时中断完成。如对 8 8 位位LEDLED 显示器显示器,扫描显示频率为扫描显示频率为 50Hz50Hz,假若显示一位保持假若显示一位保持 1ms1ms 时间时间则则显示完所有显示完所有 8 8 位之后位之后,只需只需 8ms8ms,于是另外于是另外 12msCPU12msCPU 完全可以处理其完全可以处理其它工作它工作。上述保持上述保持 1ms1ms 的时间应根据实际情况而定的时间应根据实际情况而定。不能太小不能太小,因为因为发光二极管从导通到发光有一定的延时发光二极管从导通到发光有一定的延时, 导通时间太小导通时间太小, 发光太弱人发
13、光太弱人眼无法看清眼无法看清。但也不能大大但也不能大大,因为毕竞要受限于临界闪烁频率因为毕竞要受限于临界闪烁频率,而且而且此时间越长此时间越长,占用占用 CPUCPU 时间也越多时间也越多。另外另外,显示位增多显示位增多,也将占用大也将占用大量的量的 CPUCPU 时间时间, 因此动态显示实质是以牺牲因此动态显示实质是以牺牲 CPUCPU 时间换取元件和能耗时间换取元件和能耗的减少。的减少。三、应用举例三、应用举例例例 1 1:动态显示:动态显示由由 82558255 构成构成若若 82558255 地址为:地址为:PAPA 口:口:7FFCH7FFCH、PCPC 口:口:7FFEH7FFEH
14、、控制口:控制口:7FFFH7FFFHA A 口输出字型码口输出字型码,C C 口输出位码口输出位码,扫描实现动态显示扫描实现动态显示。显示子程显示子程序如下:序如下:82558255 控制字:控制字:A A 口、口、C C 口输出方式口输出方式,1 1 0000 0 0 0 00 0 0 0 0 0 B=80HB=80H设置显示缓冲区:设置显示缓冲区:7AH7AH 7FH7FH数数码码管管6 6数数码码管管5 5数数码码管管4 4数数码码管管3 3数数码码管管2 2数数码码管管1 17FH7FH7EH7EH7DH7DH7CH7CH7BH7BH7AH7AHDISP:DISP:MOVMOVA,#
15、80HA,#80H; ;设置设置 82558255 的的 A A、C C 口为输出口为输出MOVMOVDPTR,#7FFFHDPTR,#7FFFH; ;MOVXMOVXDPTR,ADPTR,A; ;MOVMOVR0,#7AHR0,#7AH; ;显示缓冲区首地址显示缓冲区首地址MOVMOVR3,#01HR3,#01H; ;位码,最右边一位先位码,最右边一位先亮亮MOVMOVA,R3A,R3; ;DIS0:DIS0:MOVMOVDPTR,#7FFEHDPTR,#7FFEH; ;先输出位码先输出位码MOVXMOVXDPTR,ADPTR,A; ;MOVMOVDPTR,#7FFCHDPTR,#7FFCH
16、; ;MOVMOVA,R0A,R0; ;取待显示的数取待显示的数ADDADDA,#13A,#13; ;加上偏移量加上偏移量MOVCMOVCA,A+PCA,A+PC; ;取段码取段码MOVXMOVXDPTR,ADPTR,A; ;输出段码输出段码ACALLACALL DEL1msDEL1ms; ;延时延时INCINCR0R0; ;取下一个要显示的数取下一个要显示的数MOVMOVA,R3A,R3; ;JBJBACC.5,DISENDACC.5,DISEND ;6;6 位显示完了吗?位显示完了吗?RLRLA A; ;下一个位码下一个位码MOVMOVR3,AR3,A; ;AJMPAJMPDIS0DIS0
17、; ;点亮下一个数码管点亮下一个数码管DISEND:RETDISEND:RET; ;子程序结束子程序结束DATA:DATA:DBDB0C0H,0F9H,0A4H,0B0H,99H0C0H,0F9H,0A4H,0B0H,99H;段码表段码表 0 0 1 1 2 2 3 34 4DBDB92H,82H,0F8H,80H,90H92H,82H,0F8H,80H,90H;5 5 6 6 7 7 8 8 9 9DBDB88H,83H,0C6H,0A1H,86H,8EH88H,83H,0C6H,0A1H,86H,8EH;A A B B C C D D E E F FDBDB0FFH0FFHR0:R0:显示
18、缓冲区指针显示缓冲区指针R3:R3:位码位码例:在低例:在低 5 5 位显示位显示 89C5189C51MOVMOVR0,R0,#7AH#7AH; ;显示区首地址显示区首地址MOVMOVA,A,#01H#01H; ;送第一个数送第一个数MOVMOVR0,R0,A A; ;INCINCR0R0; ; 送第二个数送第二个数MOVMOVA,A,#05H#05H; ;MOVMOVR0,R0,A A; ;INCINCR0R0; ; 送第三个数送第三个数MOVMOVA,A,#0CH#0CH; ;MOVMOVR0,R0,A A; ;INCINCR0R0; ; 送第四个数送第四个数MOVMOVA,A,#09H
19、#09H; ;MOVMOVR0,R0,A A; ;INCINCR0R0; ; 送第五个数送第五个数MOVMOVA,A,#08H#08H; ;MOVMOVR0,R0,A A; ;INCINCR0R0; ; 送第六个数送第六个数MOVMOVA,A,# #1 10H0H; ;MOVMOVR0,R0,A A; ;LCALLLCALLDISPDISP; ;调显示子程序调显示子程序例例 2 2:以:以 MC14499MC14499 为核心的动态显示为核心的动态显示1 1 1449914499 简介简介1449914499 是公司生产的一种较新的串是公司生产的一种较新的串行码输入行码输入 十进制码输出的集成
20、电路十进制码输出的集成电路, ,一片一片1449914499 可直接驱动和控制可直接驱动和控制 4 4 个七段显示器个七段显示器, ,由于采用由于采用了动态扫描的显示方式了动态扫描的显示方式, ,因此其功耗较低。因此其功耗较低。1449914499 的管脚分的管脚分布如图布如图 1 1 所示。所示。各管脚说明如下各管脚说明如下: :, ,: :七段码及小数点输出七段码及小数点输出; ;1 14:4:字位选择输出字位选择输出; ;: :外接电容端外接电容端, ,其电容量大小决定了片其电容量大小决定了片内振荡器的振荡频率内振荡器的振荡频率, ,即显示电路的扫描频率即显示电路的扫描频率; ;: :串
21、行数据输入端串行数据输入端; ;: : 时钟输入端时钟输入端, ,提供串行接收的控制时提供串行接收的控制时钟信号钟信号; ;: :使能端使能端, ,为为 0 0 时时, ,1449914499 允许接收允许接收串行数据串行数据; ;置位时置位时(为为 1 1), ,1449914499 禁止接收串行数据禁止接收串行数据, ,并将片并将片内移位寄存器中的数据送至锁存器中锁存。内移位寄存器中的数据送至锁存器中锁存。1449914499 由移位寄存器由移位寄存器、锁存器锁存器、多路输出器多路输出器、译码驱动器及译码驱动器及振荡器等部分组成。振荡器等部分组成。移位寄存器移位寄存器保存外部串行输入的数据
22、保存外部串行输入的数据, ,锁存器锁存器保存显示器所要显示的数据保存显示器所要显示的数据, ,两者中的数据均以两者中的数据均以码形式保存。码形式保存。由由多路输出器多路输出器从锁存器取出的数据被输送到译码驱动器从锁存器取出的数据被输送到译码驱动器, ,经译经译码驱动后被送到及码驱动后被送到及p p 八个管脚上。八个管脚上。片内振荡器片内振荡器产生的振荡信号经四分频后送到产生的振荡信号经四分频后送到1 14 4 四个位控四个位控制输出管脚上制输出管脚上, ,以提供对显示器的轮流扫描。以提供对显示器的轮流扫描。1449914499 串行数据输入的时序图如图串行数据输入的时序图如图 2 2 所示:所
23、示:在时钟信号的下降沿在时钟信号的下降沿, ,串行数据被送入片内的移位寄存器。串行数据被送入片内的移位寄存器。1449914499 内接收数据的移位寄存器为内接收数据的移位寄存器为 2020 位位, ,这这 2020 位数据分为位数据分为四组码和一组小数点选择位。四组码和一组小数点选择位。各小数点的相应位为各小数点的相应位为“1 1”时小数点显示时小数点显示, ,为为“0 0”时熄灭。时熄灭。1449914499 每次可接收的串行数据最多为每次可接收的串行数据最多为 2020 位位, ,而而 89895151 单片单片机由于是机由于是 8 8 位机位机, ,每次送出的数据并非一定是每次送出的数
24、据并非一定是 2020 位位, ,因此因此144914499 9每次接收的数据可能多于或少于每次接收的数据可能多于或少于 2020 位。位。当当89895 51 1单片机送出的数据多单片机送出的数据多于于2 20 0位时位时, ,144914499 9接收的接收的将是最后将是最后 2020 位数据位数据,20,20 位以前多余的数据在移位过程中被后来的数位以前多余的数据在移位过程中被后来的数据挤出据挤出; ;当当89895 51 1单片机送出的数据少单片机送出的数据少于于2 20 0位时位时, ,144914499 9在接收在接收移位过程中将保留一部分移位寄存器中原来的数据。移位过程中将保留一
25、部分移位寄存器中原来的数据。898920512051 单片机每次发送完数据后单片机每次发送完数据后, ,必须将必须将1449914499 使能使能端置位端置位。 这是因为这是因为1449914499 进行译码输出的并非是其移位寄存器内进行译码输出的并非是其移位寄存器内的数据的数据, ,而是其锁存器内的数据。而是其锁存器内的数据。将使能端置位有两个作用将使能端置位有两个作用: :第一第一, ,禁止禁止1449914499 再接收外来数再接收外来数据据; ;第二第二, ,将移位寄存器内的数据送入将移位寄存器内的数据送入锁存器中锁存器中, ,以提供译码输出。以提供译码输出。在下面驱动程序中在下面驱动
26、程序中, ,均假设小数点选择位均假设小数点选择位、段码段码 1 1、段码段码 2 2、段段码码3 3、段码、段码 4 4 以压缩码的形式存放于以为首地址的单片以压缩码的形式存放于以为首地址的单片机内部中。机内部中。2 2硬件图如下:硬件图如下:3 3显示子程序:显示子程序:: :1.01.0; ;复位复位, ,允许允许1449914499 接收数据接收数据0,#0,#; ;设置数据区设置数据区首址首址1,#031,#03 ; ;送三个字节送三个字节 3 38=248=24E E: :,0 0;取八;取八位位ENDBENDB; ;发送一个字节发送一个字节0 0; ;继续发送后继续发送后续数据续数
27、据1,1,ENEN1.01.0; ;置位置位, ,禁止禁止1449914499 接收数据接收数据, ,并将片内移位寄存器的数据送至锁存器中锁存并将片内移位寄存器的数据送至锁存器中锁存ENDB:ENDB:2,#082,#08 ;送一个字节;送一个字节END1:END1:1.11.1; ;置位置位; ;逐位从累加器中取逐位从累加器中取出数据出数据1.2,1.2,; ;串行数据被送至串行数据被送至端端1.11.1; ;复位复位, ,在在的下降沿的下降沿, ,;数据被送入;数据被送入1449914499 的移位寄存器的移位寄存器2,2,END1END1;返回;返回例例 3 3:静态显示:静态显示由串行口方式由串行口方式 0 0 和移位寄存器构成和移位寄存器构成