试验二数码管显示_第1页
试验二数码管显示_第2页
试验二数码管显示_第3页
试验二数码管显示_第4页
试验二数码管显示_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验二数码管显不本实验的LI的是掌握数码管的工作原理与使用,实现数码管的静、动态 显示。静态数码管我们先看看什么是数码管,上图就是各种长相各种样子的数码管了,肯定很眼熟了吧。不管将儿位数码管连在一起,数码管的显示原理都是一样的,都是靠点亮内 部的发光二极管来发光,下面就来我们讲解一个数码管是如何亮起来的。数码管 内部电路如下图所示,从右图可看出,一位数码管的引脚是10个,显示一个8 字需要7个小段,另外还有一个小数点,所以其内部一共有8个小的发光二极管, 最后还有一个公共端,生产商为了封装统一,单位数码管都封装10个引脚,其 中笫3和第8引脚是连接在一起的。而它们的公共端乂可分为共阳极和共阴极

2、, 中间图为共阴极内部原理图,右图为共阳极内部原理图。ww W WWW上图展出了常用的两种数码管的引脚排列和内部结构。总所周知,点亮发光 二极管就是要给予它足够大的正向压降。所以点亮数码管其实也就是给它内部相 应的发光二极管正向压降。如上图左(一共a、b、c、d、e、f、g、DP八段), 如果要显示“1”则要点亮b、c两段LED;显示“A”则点亮a、b、c、e、f、g这 六段LED;我们还知道,既然LED加载的是正向压降,它的两端电压必然会有高 低之分:如果八段LED电压高的一端为公共端,我们称之为共阳极数码管(如上 图中);如果八段LED电压低的一段为公共端,则称之为共阴极数码管(上图右)。

3、 所以,要点亮共阳极数码管,则要在公共端给予高于非公共端的电平;反之点亮 共阴极数码管,则要在非公共端给予较高电平。对共阴极数码来说,其8个发光二极管的阴极在数码管内部全部连接在一起, 所以称“共阴”,而它们的阳极是独立的,通常在设计电路时一般把阴极接地。 当我们给数码管的任意一个阳极加一个高电平时,对应的这个发光二极管就点亮 了。如果想要显示出一个8字,并且把右下角的小数点也点亮的话,可以给8个阳 极全部送高电平,如果想让它显示出一个0字,那么我们可以除了给第“g, dp” 这两位送低电平外,其余引脚全部都送高电平,这样它就显示出0字了。想让它 显示儿,就给相对应的发光二极管送高电平,因此我

4、们在显示数字的时候首先做 的就是给0-9十个数字编码,在要它亮什么数字的时候直接把这个编码送到它的 阳极就行了。共阳极数码管其内部8个发光二极管的所有阳极全部连接在一起,电路连接 时,公共端接高电平,因此我们要点壳的那个发光管二极管就需要给阴极送低电 平,此时显示数字的编码与共阳极编码是相反的关系,数码管内部发光二极管点 亮时,也需要5mA以上的电流,而且电流不可过大,否则会烧毁发光二极管。由 于单片机的I/O口送不出如此大的电流,所以数码管与单片机连接时需要加驱动 电路,可以用上拉电阻的方法或使用专门的数码管驱动芯片,本实验板上使用的 是74HC573锁存器,其输出电流较大,电路接口简单,可

5、借鉴使用。一般共阳极数码管更为常用,为什么呢?这是因为数码管的非公共端往往接 在IC芯片的10上,而IC芯片的驱动能力往往是比较小的,如果采用共阴极数码 管,它的驱动端在非公共端,就有可能受限于IC芯片输出电流不够而显示昏暗(比 如51单片机),要外加上拉电阻或者是三极管加大驱动能力。所以使用共阳数码 管的好处是:将驱动数码管的工作交到公共端(一般接驱动电源),加大驱动电 源的功率自然要比加大IC芯片10口的驱动电流简单许多。另一方面,这样也能减 轻MCU的负担。当多位一体时,它们内部的公共端是独立的,而负责显示什么数字的段线全 部是连接在一起的,独立的公共端可以控制多位一体中的哪一位数码管点

6、亮,而 连接在一起的段线可以控制这个能点亮数码管亮什么数字,通常我们把公共端叫 做“位选线”,连接在一起的段线叫做“段选线”,有了这两个线后,通过单片 机及外部驱动电路就可以控制任意的数码管显示任意的数字了。一般单位数码管有10个引脚,二位数码管也是10个引脚,四位数码管是12 个引脚,关于具体的引脚及段、位标号大家可以查询相关资料,最简单的办法就 是用数字万用表测量,若没有数字万用表也可用5V直流电源审接lk电阻后测量, 将测量结果记录,通过统计便可绘制出引脚标号。知识点:如何用万用表检浏数码管的引脚排列对数字万用表来说,红色表笔连接表内部电池正极,黑色表笔连接表内部电 池负极,当把数字万用

7、表置于二极管档时,其两表笔间开路电压约为1. 5V,把两 表笔正确加在发光二极管两端时,可以点亮发光二极管。如下图所示,将数字万用表置于二极管挡,红表笔接在脚,然后用黑表笔 去接触其他各引脚,假设只有当接触到脚时,数码管的&段发光,而接触其余 引脚时则不发光。山此可知,被测数码管为共阴极结构类型,脚是公共阴极, 脚则是数码管的a段接下来再检测各段引脚,仍使用数字万用表二极管档,将黑表笔固定接在脚,用红表笔依次接触、引脚 时,数码管的其他段先后分别发光,据此便可绘出该数码管的内部结构和引脚排 列图。检测中,若被测数码管为共阳极类型,则需将红、黑表笔对调才能测出上述 结果,在判别结构类型时

8、,操作时要灵活掌握,反复试验,直到找出公共端为止, 大家只要懂得了原理,检测出各个引脚便不在是问题了。数码管静态显示当多位数码管应用于某一系统时,它们的“位选”是可独立控制的,而“段 选”是连接在一起的,我们可以通过位选信号控制哪儿个数码管亮,而在同一时 刻,位选选通的所有数码管上显示的数字始终都是一样的,因为它们的段选是连 接在一起的,所以送入所有数码管的段选信号都是相同的,那么它们显示的数字 必定一样,数码管的这种显示方法叫做静态显示。iim inr IFD6 im ihm urn irre uni(ND从电路图可以看出,本开发板使用的是共阴极数码管,在每段数码管端加上 一个限流电阻。C程

9、序:/*实验需*使用的io*实验效果 下K4键,*显示加lo静态数码管实验数码管使用P0,键盘使用P3.0、P3l、P3.2. P3.3按下K1键,显示0,按下K2键,显示9,按下K3键,显示减1,按券丰卒半节乍彷彷芥丰卒卒丰不彷彷丰卒卒卒丰不卒k丰丰半半半不彷巧彷茶卒半卒丰卒不彷芥丰半半卒卒毕XX卒卒半半不彷芥丰丰半节丰不卒举券丰下半彷彷芥芥丰卒丰节不彷/#include<reg51 h>#include<intrins h> define GPIO.DIG PO sbit LSA二P2"2;sbit LS氏P2"3;sbit LSC二P2F;sb

10、it KI二P3X;sbit K2二P3"0;sbit K3二P32;sbit K4=P3“3;unsignedcharcodeDIG_CODE1O二0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,0x7f, 0x6f;显示 0、9 的值void DelaylOms ();/延时 10msmain 主函数 无 无/*客*客函数名 *函数功能 *输 入 拳输 出*void main(void)unsigned int i, j;LSA=O;LSB二0;LSC二0;while (1)辻(K1=O)/检测按键K1是否按下DelaylOms ()

11、;/消除抖动if(Kl=O)j 二0;while(i<50)&&(Kl=0)/检测按键是否松开DelaylOms0;i+;i 二0;辻(K2=0)/检测按键K2是否按下DelaylOms();辻(K2=0)j 二9;while(i<50)&&(K2=0)DelaylOms0;i+;i 二0;辻(K3=0)/检测按键K3是否按下DelaylOms();辻(K3=0)辻(j>9)j 二9;wh 订 e(i<50)&&(K3=0)DelaylOms();i+;if(K4=0)/检测按键K4是否按下Delay10ms 0; if(

12、K4=0)j+;if(j>9) j 二0;while(i<50)&&(K4=0) DelaylOmsO ; i+;i 二0;GPIO_DIG二DIG_CODEj;京函数名 *函数功能 *输 入 客输 出DelaylOms延时函数,延时10ms 无无*void DelaylOms (void) /误差 Ous unsigned char a,b, c; for(c=l;c>0;c) for(b=38;b>0;b)for(a=130;a>0;a);汇编程序:ORGOOHUMPINITORG30HDB03FH,006H,05BH,04FH66H,06DH

13、Q7DH,007HQ7FH,06FH*車*球*車* / /INIT:CLRP2.2CLRP2.3CLRP2.4MOV R1,#OOHSTART:MOVA,R1MOV DPTR,#3OHMOVC A,A+DPTRMAIN:MOVP3,#OFFHMOVPOZAJNBP3.1.K1JNBP3.0,K2JNBP32K3JNBP3.3,K4SJMPMAIN.*車車* 京*4ti)t* . / /;KI按键按下处理程序:.*球*京京*./ /KI:ACALLDELAY1OMS;延时消抖JBP31MAINMOVR1,OOHMOVR2Z#O3OHKEY1_UP:ACALLDELAY1OMSDJNZR2,KEY

14、1_UP;按键延时UMPSTART.京 * 案*4(*#才才* .;K2按键按下处理程序:/9K2:ACALL DELAY1OMSJBP3QMAINMOVRl,#09HMOVR2Z#O3OHKEY2_UP:ACALL DELAY1OMSDJNZ R2,KEY2_UPUMP START*璟*/ /;K3按键按下处理程序:.*車*未璟*未未未*.K3:ACALLDELAY1OMSJBP32MAINDECR1MOVR2Z#O3OHKEY3_UP:ACALLDELAY1OMSDJNZR2,KEY3_UPCJNER1,#OFFH,KEY3MOVRlz#09HKEY3:UMPSTART.*未璟*未未未*.

15、;K4按键按下处理程序:.*車#*#/*.K4:ACALLDELAY1OMSJBP3.3,MAININC R1MOVR2/#O3OHKEY4_UP:ACALLDELAY1OMSDJNZR2,KEY4_UPCJNERlz#00AH,KEY4MOVR1Z#OOHKEY4:UMPSTART.京*.;延时程序.*孚*.DELAY10MS:MOVR6Z#O15HDEI:MOVR7,#OF8HDE2:DJNZR7ZDE2DJNZR6,DE1RETEND动态数码管1.动态扫描的原理在实际的单片机系统中,往往需要多位显示。动态显示是一种最常见的 多位显示方法,应用非常广泛。所有数码管段选都连接在一起的时候,怎

16、么 让数码管显示不一样的数字呢?动态显示是多个数码管,交替显示,利用人 的视觉暂停作用使人看到多个数码管同时显示的效果。首先我们来看一下开发板上的电路原理图:译玛数码管本开发板上使用的是,通过P22、P23、P24控制3-8译码器来对数码管进行位 选,通过P0口经过573的驱动控制数码管的段选,通过P13控制573的使能端,为 低电平时373才会有输出。 " " » " » » " » " " » " » » " » " &q

17、uot; » " » » " » " " » " » » " » " " » " » » " » " " » " » » " » " " » " » » " » " " » " &

18、#187; » " » I 1 I I I I I I I 1 I I I I I I I 1 I I I I I I I 1 I I I I I I I 1 I I I I I I I 1 I I I I I I I 1 I I I I I I I 1 I I I I I I *实验名:动态显示数码管实验*使用的10:数码管使用P0, P2. 2, P2. 3, P2. 4*实验效果:数码管显示76543210c " » " " » » " " " » "

19、; " » » " " " » " " » » " " " » " " » » " " " » " " » » " " " » " " » » " " " » " " » 

20、7; " " " » " " » » " " » 4 4 | 1 | 4 4 4 | 1 | 4 4 4 | 1 | 4 4 4 | 1 | 4 4 4 | 1 | 4 4 4 | 1 | 4 4 4 | 1 | 4 4 4 | 1 | 4 4 #includereg31 h>ttdefine GPIO DIG P0sbit LSA二P2"2;sbit LSB二P2"3;sbit LSC二P2"4;unsigned char code DIG_C0D

21、E17=0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,0x7f, 0x6f, 0x77, 0x7c, 0x39, Oxoe, 0x79, 0x71;/0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的显示码 unsigned char DisplayData8;用来存放要显示的8位数的值void DigDisplay () ; /动态显示函数1 I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I

22、 I I I I I I I I I I I I I I I I I I 1 1 I 1 I 1 I I 1 1 I 1 1 *函数名:main*函数功能:主函数*输入:无*输出:无 » " " » " » » " » " " » " » » " » " " » " » » " » " " » " »

23、; » " » " " » " » » " » " " » " » » " » " " » " » » " » " " » " » » " » I I 1 I I I I I I I 1 I I I I I I I 1 I I I I I I I 1

24、 I I I I I I I 1 I I I I I I I 1 I I I I I I I 1 I I I I I I I 1 I I I I I I f | | 4 | 1 | | 4 | | 4 | 1 4 void main(void)unsigned char i:for(i=0;i<8;i+)DisplayDatai=DIG_CODEi;while (1)DigDisplay (); » » " " » " » " » » " " » "

25、 " I I I I I I I I I I I I I I I *函数名*函数功能*输 入*输 出:DigDisplay:使用数码管显示:无:无 » » " " » " " » » " " » " " » » " " » " " » » " " » " " » » " &quo

26、t; » " " » » " " » " " » » " " » " " » » " " » " " " » » * » * " » " » » * » * » I | a j j j * * a | a j j a void DigDisplay(

27、)unsigned char i:unsigned int j;for(i=0;i<8;i+)switch(i)/位选,选择点亮的数码管,case(0):LSA二0;LSB二0;LSC二0; break;/显示:第0位 case (1):LSA二 1; LSB二0; LSC二0; break; /显示第 1 位 case(2):LSA二0; LSB二 1; LSC二0; break; /显示第2位 case (3):LSA二 1; LSB二 1; LSC二0; break; /显示第3位 case (4):LSA二0; LSB二0; LSC二 1; break; /显示第4位case (

28、5):LSA二 1; LSB二0; LSO1; break; /显示第5位case(6):LSA二0; LSB二 1; LSOl; break; /显示第6位case(7):LSA二 1; LSB二 1; LSC二 1; break; /显示第7位GPIO_DIG=DisplayDatai;/发送段码j二10;/扫描间隔时间设定while(j-);GPI0_DIG 二 0x00;/ 消隐在用C语言编程时,编码定义方法如下:unsigned char code DIG_C0DE17 = 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0

29、x6f, 0x77, 0x7c, 0x39, Oxoe, 0x79, 0x71 ;/0、1、2、3、4、5、 6、1、8、9、A、b、C、d、E、F的显示码编码定义方法与C语言中的数组定义方法非常相似,不同的地方就是在数组 类型后面多了一个code关键字,code即表示编码的意思。需要注意的是,单片机 C语言中定义数组时是占用内存空间的,而定义编码时是直接分配到程序空间中, 编译后编码占用的是程序存储空间,而非内存空间。汇编程序:0RG00HLJMPINIT0RG30HDB03FH,006H,05BH, 04FH, 066H, 06DH, 07DH, 007H, 07FH, 06FH, 077H, 07CH, 039H,05EH, 079H, 071H;0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, FDAT0EQU30H;要显示的八位数DAT1EQU31HDAT2EQU32HDAT3EQU33HDAT4EQU34H

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论