首页 > 编程知识 正文

八段数码管引脚图,8位共阴数码管显示

时间:2023-05-04 19:53:55 阅读:111187 作者:636

51单片机数码管显示一、八级数码管基础部分1.8级数码管共阴极和共阳极2.8级数码管的位码和段码二、 八段数码管动态显示1.8个八段数码管动态扫描0至7流水显示2.8个八段数码管动态扫描0至7常开显示3.8段数码管静态显示1.1个静态显示0至9

一、八段数码管基础部分1.8段数码管共阴极和共阳极

一个8级数码管由8级二极管组成,即a、b、c、d、e、f、g、dop (共8级)。 其中,数码管分为两种,共阴极和共阳极(共阳极:数码管的阳极全部相连,呈低电平点亮,共阳极则呈低电平点亮。 )

2.8位数码管的位码和段码一般为4位数码管,4个管脚控制选择哪根数码管(位选择),8位段选择通用。 也就是说,当比特被选择为第一位时,段选择码仅点亮第一位的那些段。 同样当选第二名时,段码只对第二名有效。 以下相同。 一般的硬件结构确定后,就会出现段码位码这个词。 例如,4个比特选择管脚分别连接单片机p2.2.3 ) 2.4,这3个端口分别为74HC138解码器端口。 发光管越是共阴,排名第一的位代码是xxxx1110。 第2位是xxxx1101; 第三位是xxxx1011; 第4位是xxxx0111; 这样,我在显示时,如果显示第一位的数据,就会向p2口发送xxxx1110,发送第一位的段代码。

二、八级数码管动态显示的所谓静态显示,就是每个数码管段代码必须独占一个具有锁存功能的输出端口,通过将CPU显示的代码传送到输出端口,显示与数码管相对应的文字,接下来是另一种代码动态显示具有显示稳定、亮度大、节省CPU时间等优点,但占用较多的I/O端口,硬件成本较高。

1.8个8段数码管动态扫描显示0到7的流水# includere g51.h # defineucharunsignedchar # defineuintunsignedintsbitlsa=p2 ^2# //74HC138解码器端口sbit LSB=P2^3; sbit LSC=P2^4; //共阳性数码表ucharcodetable1[ ]={0xc 0,0x F9,0x a4,0xb 0,0x 99,0x 92,0x F8,0x 80,0x 90,0x 88,0x 83,0x 83,0xc 60x4f,0x 66,0x6d,0x7d,0x 07,0x7f,0x6f,0x77,0x77c,0x 39,0x 39//voiddelayms (uintx ) { uchar t; while(x----for ) t=0; t120; t; //主程序void main () { uchar i; wile(1) for ) I=0; i8; I ) { P0=0xff; LSA=0; LSB=0; LSC=0; P0=table2[0]; 延迟毫秒(100; LSA=1; LSB=0; LSC=0; P0=table2[1]; 延迟毫秒(100; LSA=0; LSB=1; LSC=0; P0=table2[2]; 延迟毫秒(100; LSA=1; LSB=1; LSC=0; P0=table2[3]; 延迟毫秒(100; LSA=0; LSB=0; LSC=1; P0=table2[4]; 延迟毫秒(100; LSA=1; LSB=0; LSC=1; P0=table2[5]; 延迟毫秒(100; LSA=0; LSB=1; LSC=1; P0=table2[6]; 延迟毫秒(100; LSA=1; LSB=1; LSC=1; P0=table2[7]; 延迟毫秒(100; }}2.8个8段数码管动态扫描0至7常亮显示# includereg 52.htypedefunsignedintuint; typedef unsigned char uchar; sbit LSA=P2^2; //74HC138解码器端口sbit LSB=P2^3; sbit LSC=P2^4; uchar out[17]={0x3f,0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x7f,0x 77,0x7c,0x 39,0x5e,0x79,0x79,0000000x 79 } void display () {uint i; for(I=0; i8; I )开关(I ) /位选择,选择要点亮的数码管,(case) :LSA=0; LSB=0; LSC=0; 黑; //0位case(1)显示:LSA=1; LSB=0; LSC=0; 黑;//第1位case(2)显示:LSA=0; LSB=1; LSC=0; 黑;//第2位case(3)显示:LSA=1; LSB=1; LSC=0; 黑;//第3位case(4)显示:LSA=0; LSB=0; LSC=1; 黑;//第4位case(5) :LSA=1; LSB=0; LSC=1; 黑;//第5位case(6) :LSA=0; LSB=1; LSC=1; 黑;//第6位case(7)显示:LSA=1; LSB=1; LSC=1; 黑;//显示第7位(}P0=out[i]; //发送段代码delay (100 ); //按一定时间间隔扫描P0=0x00 //消隐}} void main () while )1) ) {display ); )三八段数码管静态显示的动态显示是指所有显示器的8个段码中,将A-dp的每个相同段连接到一个公共输出端口,数码管的位端分别连接到不同的输出端口也就是说,以一定顺序交替地显示各个数据管,如果扫描频率足够高,则由于人眼的“视觉暂时停留”现象,能够连续稳定地显示。 动态显示可以大幅降低显示部分的成本,大幅减少显示界面的连接结构。

1 .一个数码管静态显示0至9 # includere g51.h # defineucharunsignedchar # defineuintunsignedint//共阳数码管码表ucharcodetable1[ //共阴数码表uchar code table2[]={0x3f,0x 06,0x5b,0x4f,0x66,0x6d,0x 07,0x7f,0x6f,0x 77,0x7c,0x7d while(x----for ) t=0; t120; t; //主程序void main () {uchar i=0; P0=0x3f; for (; i 10; I () { P0=table2[i]; if(I==9) i=0; 延迟ms (300; (while ) 1; )初学者去旅行的话,还有很多不明白的事情和错误的事情。 另外,如果一键三联支持的话,之后也请继续更新。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。