您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 单片机应用系统设计技术第七章5节
单片机应用系统设计技术第七章5节来源:作者:发布时间:2007-12-29小字体大字体内容提要:7.5单片机系统中的显示技术显示器常作为单片机系统中最简单的输出设备,用以显示关键词:技术设计显示显示器LED数码驱动接口输出字符7.5单片机系统中的显示技术显示器常作为单片机系统中最简单的输出设备,用以显示单片机系统的运行结果与运行状态等。常用的显示器主要有LED数码显示器、LCD液晶显示器和CRT显示器。在单片机系统中,通常用LED数码显示器显示各种数字或符号。由于它具有显示清晰、亮度高、使用电压低、寿命长的特点,因此使用非常广泛。本节以LED为例,介绍其结构、工作原理及与单片机的接口技术。7.5.1LED显示器的结构与原理LED显示器是由发光二极管显示字段的显示器件,也可称为数码管。单片机系统中通常使用8段LED数码显示器,其外形及引脚如图1(a)所示,由图可见8段LED显示器由8个发光二极管组成。其中7个长条形的发光二极管排列成“日”字形,另一个圆点形的发光二极管在显示器的右下角作为显示小数点用,通过不同的组合可用来显示各种数字,包括A~F在内的部分英文字母和小数点“.”等字样。LED显示器有两种不同的形式:一种是8个发光二极管的阳极都连在一起的,称为共阳极LED显示器;另一种是8个发光二极管的阴极都连在一起的,称为共阴极LED显示器。如图1(b)所示。共阴和共阳结构的LED显示器各笔划段名和安排位置是相同的,当二极管导通时,相应的笔划段发亮,由发亮的笔划段组合从而显示各种字符。8个笔划段dpgfedcba对应于1B(8位)的D7、D6、D5、D4、D3、D2、D1、D0,于是用8位二进制码就可以表示欲显示字符的字形代码。例如,对于共阴极LED显示器,当公共阴极接地(为零电平),而阳极dpgfedcba各段为01110011时,显示器显示“P”字符,即对于共阴极LED显示器,“P”字符的字形码是0x73。如果是共阳极LED显示器,公共阳极接高电平,显示“P”字符的字形代码应为10001100(0x8C)。这里必须注意的是:很多产品为方便接线,常不按规则的方法去对应字段与位的关系,这时字形码就必须根据接线自行设计了。图18段LED数码显示器LED显示器的显示方法有静态显示与动态显示两种,下面分别予以介绍。7.5.2LED静态显示接口数码管工作在静态显示方式时,共阴极(共阳极)的公共端COM连接在一起接地(电源)。每位的段选线与一个8位并行口相连。只要在该位的段选线上保持段选码电平,该位就能保持相应的显示字符。这里的8位并行口可以直接采用并行I/O接口片(例如80C51的P1端口、8155和8255的I/O端口等),也可以采用串行输入/并行输出的移位寄存器。考虑到若采用并行I/O接口,占用I/O资源较多,因而静态显示方式常采用串行接口方式,外接8位移位寄存器74HCl64构成显示电路,图2是通过串行口扩展8位LED显示器静态驱动电路,在TXD(P3.1)运行时钟信号,将显示数据由RXD(P3.0)口串行输出,串行口工作在移位寄存器方式(方式0)。图2串行扩展8位LED显示器静态驱动电路图2中使用的是共阴极数码管,因而各数码管的公共极COM端接地,要显示某字段,则相应的移位寄存器74HC164的输出线必须是高电平。显然,要显示某字符,首先要把这个字符转换成相应的字形码,然后再通过串行口发送到74HC164。74HC164把串行口收到的数变为并行输出加到数码管上。先建立一个字形码表,以十六进制数的次序存放它们的相应字形码,共阴极字形码表如表1所示。表1共阴极字形码表如要显示字符6,查表可知6的字形码为0x7d,把0x7d送到8位移位寄存器74HC164即可。显然,要显示字符0~9、A~F,其高4位为全0,而低4位为十六进制数。如果要显示的数高半字节不是0,则要通过程序加以变换。【例】按照图2显示电路编写显示驱动程序。voiddisplay(void)/*显示0,1,¼,7*/{ucharcodeLEDValue[8]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07}uchari;TI=0;for(i=0;i8;i++){/*8位数码管依次显示0,1,¼,7*/SBUF=LEDValue[7-i];while(TI==0);TI=0;来源:作者:发布时间:2007-12-29小字体大字体内容提要:7.5单片机系统中的显示技术显示器常作为单片机系统中最简单的输出设备,用以显示关键词:技术设计显示显示器LED数码驱动接口输出字符这种静态LED显示法有着显示亮度大,软件较为简单的优点,但硬件上使用芯片多,每个LED显示器需要一个驱动电路。7.5.3LED动态扫描显示接口LED动态显示的基本做法在于分时轮流选通数码管的公共端,使得各数码管轮流导通,在选通相应LED后,即在显示字段上得到显示字形码。这种方式不但能提高数码管的发光效率,而且由于各个数码管的字段线是并联使用的,从而大大简化了硬件线路。动态扫描显示接口是单片机系统中应用最为广泛的一种显示方式。其接口电路是把所有显示器的8个笔划段a~dp同名端并联在起,而每一个显示器的公共极COM是各自独立地受I/O线控制。CPU向字段输出口送出字形码时,所有显示器由于同名端并连接收到相同的字形码,但究竟是哪个显示器亮,则取决于COM端,而这一端是由I/O控制的,所以就可以自行决定何时显示哪一位了。而所谓动态扫描是指采用分时的方法,轮流控制各个显示器的COM端,使各个显示器轮流点亮。在轮流点亮扫描过程中,每位显示器的点亮时间是极为短暂的(约1ms),但由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位显示器并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。图3是一个典型的动态扫描8位LED显示接口电路。该电路由74HC245提供段a~dp的驱动,74LS145提供位COM1~COM8的驱动。请注意89C52的P0.0~P0.7每个口线上有1个10kW的上拉电阻,图中未示出。图3动态扫描显示接口电路图中采用了共阴极的数码管。使用总线驱动器74HC245作为段驱动,由于HC电路的输出电阻较大,外部可直接驱动而不需要限流电阻。位驱动使用十进制译码驱动器74LS145,具有10个OC门输出(图中用了8个),用来驱动8段显示器的公共极COM。数码管是8段共阴极LED显示器,所以发光时字形驱动输出1有效,位驱动输出0有效。但注意位驱动是74LS145的译码输出,如果要显示第5位(数码管序号为0~7)数码管,74LS145的输入端应为DCBA=0101。【例】按照图3电路,编写在8个数码管依次显示0,1,…,7的程序。#includereg52.hexternvoiddelay_1ms(void);/*延时1ms函数*/voiddisplay(void)/*在数码管上显示0,1,…,7子程序*/{ucharcodeLEDValue[8]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07}uchari;for(i=0;i8;i++){/*8位数码管依次显示0,1,…,7*/P0=LEDValue[i];P2=[i];delay_1ms();}}采用此显示子程序,每调用一次,仅扫描一遍,要得到稳定的显示,必须不断地调用显示子程序
本文标题:单片机应用系统设计技术第七章5节
链接地址:https://www.777doc.com/doc-2606509 .html