1、1,第十章 单片机与I/O外部设备的接口,2,LED结构 LED的工作原理 LED显示器的接口方式 LED显示器的显示方式,10.1 LED数码管显示,3,单片机应用系统常用的显示器件有:,发光二极管显示器,简称LED(Light Emitting Diode)液晶显示器,简称LCD(Liquid Crystal Display),4,LED显示器 内部由发光二极管组成段显示。数码管结构分为共阳极型和共阴极型LCD液晶显示器常用的LCD可为字符型和点阵型两类 字符型可用来显示字符和数字 点阵型可用来显示汉字及图形,5,a)共阴极结构 b)共阳极结构 c)外引脚图,一、LED结构,6,二、LED
2、的工作原理,共阴极结构中:所有发光二极管的阴极接在一起形成公共端COM,使用时COM端接低电平,当某段发光二极管的阳极接高电平时,则该段二极管发光显示字符。 共阳极结构中:所有发光二极管的阳极接在一起形成公共端COM,使用时COM端接高电平,当某段发光二极管的阴极接低电平时,则该段二极管发光显示字符。,7,为了要显示某个字形,则应使此字形的相应段点亮,也即送一个不同的电平组合代表的数据来控制 LED的显示字形,此数据称为字符的段码。数据字位数与LED段码的关系如表所示: 数据字位数与LED段码的关系,数据位数,LED段码,8,a,b,c,d,e,f,g,Dp,9,a,b,c,d,e,f,g,L
3、ED显示“0”示意图,Dp,10,常用字符显示编码表3-1,11,三、LED显示器的接口方式,所谓LED接口方式是指LED七段数码显示器与单片机的连接方式。 按照显示代码获得形式的不同,可分为两种:,硬件译码方式,软件译码方式,12,(1)硬件译码方式(以硬件为主的接口方法 ),采用BCD码译码器/驱动器通过译码把一位BCD码翻译为相应的字形代码,然后由驱动器提供足够的功率去驱动发光二极管。,硬件译码电路,13,(2)软件译码方式(以软件为主的接口方法 ),由软件完成硬件译码器的功能。,软件译码电路,图3-11,14,比较:,硬件译码器一般都具有直接驱动LED的能力,且占用单片机系统接口资源少
4、(字形口只需4个口线),编程简单。缺点是显示字形有限,通常只能显示09十个字符。 软件译码方式显示字形较多,可由用户自己编码决定。其缺点是占用单片机系统接口资源较多(字形口需8个口线),且一般要配置驱动器(如7406、7407、8718)编程相对复杂。,15,四、LED显示器的显示方式,LED的公共端COM叫显示器的位选线控制LED的每一位是否显示 ;ag称为段选线控制每一位的显示字符.在单片机应用系统中,一般要同时使用N片LED构成N位LED显示器.这样N位LED显示器有N根位选线,N8根段选线(包括小数点位)。,16,根据位选线与段选线的接法,LED有两种显示方式: 静态显示方式 动态显示
5、方式,17,(1) 静态显示方式,所有的位选线COM连接到一起接低电平(共阴极)或接高电平(共阳极);每一位LED的段选线连接到一个8位显示输出口上,这样N位显示器共需要8N根显示输出线,显示时位与位之间是相互独立的。,18,N位LED静态显示原理图,19,2位共阳极LED与单片机静态显示接口方式,20,静态显示方式特点:,优点: 具有显示亮度高,显示稳定, 控制方便等。缺点: 显示的位数较多时,占用的 I/O口线较多。,21,(2)动态显示方式,动态显示的硬件接法是将所有LED显示器的段选线并在一起,接到一个8位的I/O口上,形成段选线的多路复用;位选线则分开接到各自的控制I/O线上,形成各
6、位的分时选通。,22,N位动态LED显示原理图,23,5位LED动态显示电路,反相位驱动器,24,动态显示方式原理:,LED在每一个时间段内只有一位LED显示,而其他LED不显示;通过程序或硬件电路控制,各LED在一个显示周期内分别显示一段时间,当一个显示周期足够短时,由于人眼的视觉暂留特性,使人感觉每个LED总在亮。,25,例10-1:LED的动态显示电路由MCS-51单片机的P1口和P2口分别驱动LED的段和位,试问:如要显示1、2、3、4、5,P1.0P1.7分别对应adp,则段驱动与位驱动及显示状态如何?(设LED采用共阳极显示器),反相位驱动器,26,段选码、位选码及显示状态表,27
7、,动态显示方式特点:,优点:动态显示与静态显示相比 需要I/O口线少。缺点:控制程序较复杂, 显示亮度低。,28,小结比较:,4位静态显示,4位动态显示,29,例10-2:利用74LS164实现2位静态显示电路,电路图,30,C语言程序:#include reg51.h#define uchar unsigned char#define uint unsigned intuchar ddseg12=0x03,0x9F,0x25,0x0D,0x99,0x49, 0x41,0x1F,0x01,0x09,0x30; /定义段码void disp(uchar *p1,uchar k)/显示子程序,显示位数为k,数组首地址为*p1 uchar i,j; for (i=0;ik;i+) j=*p1; /取出要显示数据 SBUF=ddsegj; /取出段码数据送串口缓冲区 p1+;,31,while (!TI)/判断数据是否发送完成 ; TI=0;/清除标志位,准备下次发送数据 main() uchar disstr2;/显示数据存放数组 disstr0=2; /初始化显示数据 disstr1=1; SCON=0X00;/方式0,同步移位寄存器工作方式 disp(disstr,2);/调用显示子程序,,32,仿真图,