实验二数码管显示

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

实验二数码管显示本实验的目的是掌握数码管的工作原理与使用,实现数码管的静、动态显示。静态数码管我们先看看什么是数码管,上图就是各种长相各种样子的数码管了,肯定很眼熟了吧。不管将几位数码管连在一起,数码管的显示原理都是一样的,都是靠点亮内部的发光二极管来发光,下面就来我们讲解一个数码管是如何亮起来的。数码管内部电路如下图所示,从右图可看出,一位数码管的引脚是10个,显示一个8字需要7个小段,另外还有一个小数点,所以其内部一共有8个小的发光二极管,最后还有一个公共端,生产商为了封装统一,单位数码管都封装10个引脚,其中第3和第8引脚是连接在一起的。而它们的公共端又可分为共阳极和共阴极,中间图为共阴极内部原理图,右图为共阳极内部原理图。上图展出了常用的两种数码管的引脚排列和内部结构。总所周知,点亮发光二极管就是要给予它足够大的正向压降。所以点亮数码管其实也就是给它内部相应的发光二极管正向压降。如上图左(一共a、b、c、d、e、f、g、DP八段),如果要显示“1”则要点亮b、c两段LED;显示“A”则点亮a、b、c、e、f、g这六段LED;我们还知道,既然LED加载的是正向压降,它的两端电压必然会有高低之分:如果八段LED电压高的一端为公共端,我们称之为共阳极数码管(如上图中);如果八段LED电压低的一段为公共端,则称之为共阴极数码管(上图右)。所以,要点亮共阳极数码管,则要在公共端给予高于非公共端的电平;反之点亮共阴极数码管,则要在非公共端给予较高电平。对共阴极数码来说,其8个发光二极管的阴极在数码管内部全部连接在一起,所以称“共阴”,而它们的阳极是独立的,通常在设计电路时一般把阴极接地。当我们给数码管的任意一个阳极加一个高电平时,对应的这个发光二极管就点亮了。如果想要显示出一个8字,并且把右下角的小数点也点亮的话,可以给8个阳极全部送高电平,如果想让它显示出一个0字,那么我们可以除了给第“g,dp”这两位送低电平外,其余引脚全部都送高电平,这样它就显示出0字了。想让它显示几,就给相对应的发光二极管送高电平,因此我们在显示数字的时候首先做的就是给0-9十个数字编码,在要它亮什么数字的时候直接把这个编码送到它的阳极就行了。共阳极数码管其内部8个发光二极管的所有阳极全部连接在一起,电路连接时,公共端接高电平,因此我们要点亮的那个发光管二极管就需要给阴极送低电平,此时显示数字的编码与共阳极编码是相反的关系,数码管内部发光二极管点亮时,也需要5mA以上的电流,而且电流不可过大,否则会烧毁发光二极管。由于单片机的I/O口送不出如此大的电流,所以数码管与单片机连接时需要加驱动电路,可以用上拉电阻的方法或使用专门的数码管驱动芯片,本实验板上使用的是74HC573锁存器,其输出电流较大,电路接口简单,可借鉴使用。一般共阳极数码管更为常用,为什么呢?这是因为数码管的非公共端往往接在IC芯片的IO上,而IC芯片的驱动能力往往是比较小的,如果采用共阴极数码管,它的驱动端在非公共端,就有可能受限于IC芯片输出电流不够而显示昏暗(比如51单片机),要外加上拉电阻或者是三极管加大驱动能力。所以使用共阳数码管的好处是:将驱动数码管的工作交到公共端(一般接驱动电源),加大驱动电源的功率自然要比加大IC芯片IO口的驱动电流简单许多。另一方面,这样也能减轻MCU的负担。当多位一体时,它们内部的公共端是独立的,而负责显示什么数字的段线全部是连接在一起的,独立的公共端可以控制多位一体中的哪一位数码管点亮,而连接在一起的段线可以控制这个能点亮数码管亮什么数字,通常我们把公共端叫做“位选线”,连接在一起的段线叫做“段选线”,有了这两个线后,通过单片机及外部驱动电路就可以控制任意的数码管显示任意的数字了。一般单位数码管有10个引脚,二位数码管也是10个引脚,四位数码管是12个引脚,关于具体的引脚及段、位标号大家可以查询相关资料,最简单的办法就是用数字万用表测量,若没有数字万用表也可用5V直流电源串接1k电阻后测量,将测量结果记录,通过统计便可绘制出引脚标号。知识点:如何用万用表检浏数码管的引脚排列对数字万用表来说,红色表笔连接表内部电池正极,黑色表笔连接表内部电池负极,当把数字万用表置于二极管档时,其两表笔间开路电压约为1.5V,把两表笔正确加在发光二极管两端时,可以点亮发光二极管。如下图所示,将数字万用表置于二极管挡,红表笔接在①脚,然后用黑表笔去接触其他各引脚,假设只有当接触到⑨脚时,数码管的a段发光,而接触其余引脚时则不发光。由此可知,被测数码管为共阴极结构类型,⑨脚是公共阴极,①脚则是数码管的a段.接下来再检测各段引脚,仍使用数字万用表二极管档,将黑表笔固定接在⑨脚,用红表笔依次接触②、③、④、⑤、⑥、⑦、⑧、⑩引脚时,数码管的其他段先后分别发光,据此便可绘出该数码管的内部结构和引脚排列图。检测中,若被测数码管为共阳极类型,则需将红、黑表笔对调才能测出上述结果,在判别结构类型时,操作时要灵活掌握,反复试验,直到找出公共端为止,大家只要懂得了原理,检测出各个引脚便不在是问题了。数码管静态显示当多位数码管应用于某一系统时,它们的“位选”是可独立控制的,而“段选”是连接在一起的,我们可以通过位选信号控制哪几个数码管亮,而在同一时刻,位选选通的所有数码管上显示的数字始终都是一样的,因为它们的段选是连接在一起的,所以送入所有数码管的段选信号都是相同的,那么它们显示的数字必定一样,数码管的这种显示方法叫做静态显示。从电路图可以看出,本开发板使用的是共阴极数码管,在每段数码管端加上一个限流电阻。C程序:/********************************************************************************实验名:静态数码管实验*使用的IO:数码管使用P0,键盘使用P3.0、P3.1、P3.2、P3.3*实验效果:按下K1键,显示0,按下K2键,显示9,按下K3键,显示减1,按下K4键,*显示加1。*******************************************************************************/#includereg51.h#includeintrins.h#defineGPIO_DIGP0sbitLSA=P2^2;sbitLSB=P2^3;sbitLSC=P2^4;sbitK1=P3^1;sbitK2=P3^0;sbitK3=P3^2;sbitK4=P3^3;unsignedcharcodeDIG_CODE[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//显示0~9的值voidDelay10ms();//延时10ms/********************************************************************************函数名:main*函数功能:主函数*输入:无*输出:无*******************************************************************************/voidmain(void){unsignedinti,j;LSA=0;LSB=0;LSC=0;while(1){if(K1==0)//检测按键K1是否按下{Delay10ms();//消除抖动if(K1==0){j=0;}while((i50)&&(K1==0))//检测按键是否松开{Delay10ms();i++;}i=0;}if(K2==0)//检测按键K2是否按下{Delay10ms();if(K2==0){j=9;}while((i50)&&(K2==0)){Delay10ms();i++;}i=0;}if(K3==0)//检测按键K3是否按下{Delay10ms();if(K3==0){j--;if(j9)j=9;}while((i50)&&(K3==0)){Delay10ms();i++;}i=0;}if(K4==0)//检测按键K4是否按下{Delay10ms();if(K4==0){j++;if(j9)j=0;}while((i50)&&(K4==0)){Delay10ms();i++;}i=0;}GPIO_DIG=DIG_CODE[j];}}/********************************************************************************函数名:Delay10ms*函数功能:延时函数,延时10ms*输入:无*输出:无*******************************************************************************/voidDelay10ms(void)//误差0us{unsignedchara,b,c;for(c=1;c0;c--)for(b=38;b0;b--)for(a=130;a0;a--);}汇编程序:ORG00HLJMPINITORG30HDB03FH,006H,05BH,04FH,066H,06DH,07DH,007H,07FH,06FH;*************;;主程序;;*************;INIT:CLRP2.2CLRP2.3CLRP2.4MOVR1,#00HSTART:MOVA,R1MOVDPTR,#30HMOVCA,@A+DPTRMAIN:MOVP3,#0FFHMOVP0,AJNBP3.1,K1JNBP3.0,K2JNBP3.2,K3JNBP3.3,K4SJMPMAIN;*************************;;K1按键按下处理程序;;*************************;K1:ACALLDELAY10MS;延时消抖JBP3.1,MAINMOVR1,00HMOVR2,#030HKEY1_UP:ACALLDELAY10MSDJNZR2,KEY1_UP;按键延时LJMPSTART;*************************;;K2按键按下处理程序;;*************************;K2:ACALLDELAY10MSJBP3.0,MAINMOVR1,#09HMOVR2,#030HKEY2_UP:ACALLDELAY10MSDJNZR2,KEY2_UPLJMPSTART;*************************;;K3按键按下处理程序;;*************************;K3:ACALLDELAY10MSJBP3.2,MAINDECR1MOVR2,#030HKEY3_UP:ACALLDELAY10MSDJNZR2,KEY3_UPCJNER1,#0FFH,KEY3MOVR1,#09HKEY3:LJMPSTART;*************************;;K4按键按下处理程序;;*************************;K4:ACALLDELAY10MSJBP3.3,MAININCR1MOVR2,#030HKEY4_UP:ACALLDELAY10MSDJNZR2,KEY4_UPCJNER1,#00AH,KEY4MOVR1,#00HKEY4:LJMPSTART;*************;;延时程序;;*************;DELAY10MS:MOVR6,#015HDE1:MOVR7,#0F8HDE2:DJNZR7,DE2DJNZR6,DE1RETEND动态数码管1.动态扫描的原理在实际的单片机系统中,往往需要多位显示。动态显示是一种最常见的多位显示方法,应用非常广泛。所有数码管段选都连接在一起的时候,怎么让数码管显示不一样的数字呢?动态显示是多个数码管,交替显示,利用人的视觉暂停作用使人看到多个数码管同时

1 / 17
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功