导航:首页 > 使用方法 > 数码管使用方法

数码管使用方法

发布时间:2023-03-26 09:24:22

‘壹’ 2位7段数码管怎么使用

1、2是公共端,控制位码,控制那个数码管亮(左右),如果是纤迟虚共阴的则接低电平,若为供阳的则相反。(这个可以用万用表的二极管档来判断,最好买的时候稳毁燃清楚),a-g、dp是控制断码,控制9个二极管的亮暗,可以直接接51的输出口(P0要加上拉电阻),如果是共阴的则接旦哪高电平来使数码管亮,若为供阳的则相反。用8位码控制,用16进制表示!二极管从最上面顺时针分别为a,b,c,d,e,f中间横线为g,点为dp。

‘贰’ 2位7段共阳数码管如何使用应如何和单片机进行连接。

嘿嘿 可以按照下面的图 进行连接

一个接在P0口、一个接在P2口上,分别为7段数码管提供段形,采用共阴极的数码管,数码管的3、8引脚都接地,即公地。送高电平可陪迟以点亮相应的各段掘桥。

为静态显示方式。

呵呵 满意判乱猛就选满意回答

‘叁’ 数码管显示方式及特点

数码管的显示方式有两种:静态显示和动态显示。

静卜郑态显示方式特点:所谓静态显示就是指无论是多少位数码管,同时处于显示状态。 当单片机系统中使用静态数码管显示时,需要在每一个数码管上添加一个锁存器,当需要某个数码管显示其他内容时,只需要修改与其相连的型档颂锁存器的值蠢举即可。

动态显示方式特点:所谓动态显示,是指无论在任何时刻只有一个数码管处于显示状态,每个数码管轮流显示。当数码管处于动态显示时,所有位选线分离,而每个数码管的各条段选线相连。

‘肆’ 数码管在PLC中如何使用

只需用一个共阴极七段数码管,每段接一个2.2K的颂渣电阻,电阻的另一端接PLC的一组输出口(如:Q1.0、Q1.1、。。。Q1.6),数码管的共阴极接PLC输出侧的地,这样,运行时,如使Q1.0=1,则Q1.0对应的那一段就友罩亮,如Q1.0=0,,则Q1.0对应的那一段就灭。记住每一个输出口对应数码管的段,编出数字由0到9输出口对应的输出状态的值,编程时,在显示送数前,先判断送出的数是几,再把这“几对应的状态值”送给输出野告悄口就可以是数码管显示“几”。S7-200有7段译码指令,用它就可省事多了。

‘伍’ 数码管怎么使用

数码管是嵌入式开发中比较常用的一个模块,本篇文章根据查阅的资料以及学习笔记整理成文,尽可能详尽的讲解常用数码管原理和使用方法。有不足和疏忽的地方,请不吝指正。

一、工作原理

数码管是一种半导体发光器件,其基本单元是发光雀游二极管。能显示4位数字的叫四位数码管,当然也有多位和只有一位的数码管,他们的电气原理相同。数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段的阳极为低电平时,相应字段就不亮。

二、电气特性

单位数码管有十个管脚,其中有8根是用顷哗销来点亮a,b,c,d,e,f,dp 共8个发光二极管(原理中有介绍),3,8两个管脚为公共COM脚,它们相连通且作用相同,可接任意一根。为了更清楚介绍,贴图如下

共阴数码管脚位对应图

三、驱动方式

1、静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,要知道一个89S51单片机可用的'I/O端口才32个呢:),实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。

2、数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,芦瞎但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。

四、开发实例

下面讲解一下四位数码管的动态驱动显示,首先看一下接线引脚图如下。

接下来用51单片机设计目标:通过编写c语言程序经编译连接后下载到单片机中,使四位数码管依次显示1,2,3,4

#define uchar usigned char

#define uint usigned int

//位选控制端口

sbit p20=P2^0;

sbit p21=P2^1;

sbit p22=P2^2;

sbit p23=P2^3;

//数码管段选编码数组,分别为显示:1,2,3,4的编码

uchar code BianMa[] ={0x7,0xb,0xd,0xe};

//延时1ms函数(用于数码管动态刷新)

void Delay1ms(int time);

void main()

{

while(1)

{

p20 =0; //共阴极数码管低位选有效,表示已选中第一位数码管

P0 =BianMa[0];//通过I/O口P0向数码管送段选编码

Delay1ms(500);//第一位数码管显示0.5秒,然后换到第二位,依次下去,由于视觉停留和数码管余辉,所以感觉四位都在显示

p20 =1;

p21 =0; //第二位亮

P0 =BianMa[1];

Delay1ms(500);

p21 =1;

p22 =0; //第三位亮

P0 =BianMa[2];

Delay1ms(500);

p22 =1;

p23 =0; //第四位亮

P0 =BianMa[3];

Delay1ms(500);

p23 =1;

}

//延时函数体

void Delay1ms(int time

{

int i,j;

for(i =time;i>0;i--)

for(j =110;j>0;j--)

}

五、关于亮度和锁存器

一般来说静态驱动的亮度要高于动态驱动的亮度,但不影响使用。实际使用中为了达到更好的效果,会配合锁存器如74HC573一起使用,可以记忆先前状态数据直到有新数据覆盖。对做51单片机应用开发来说,相对LCD液晶,液晶模块编程更方便,样式更多样,但是其缺点亮度不够。这也恰恰是数码管的优势,如果做简单的计数显示,数码管是最好选择。

六、使用中注意事项

数码管的基本组成是发光二极管,因此其可以通过的电流只有几mA,接5V直流电源做测试的时候一定要串上一个几十K大小的电阻。否则,很容易烧掉,此外用万用表的测电阻档就可将其点亮,足以说明其电流之小。


‘陆’ 数码管——wiringPi接口的使用

我们先来看下数码管的实物图

数码管由四个引脚:CLK,DIO,VCC,GND

VCC接5V   GND接GND   CLK和DIO接GPIO。

实现原理: https://blog.csdn.net/q1241580040/article/details/45815245

数码管显示原理:https://www.cnblogs.com/yuwl26/p/3307337.html

数码管相对于之前的LED,按钮之类要复杂,想要了解详情的可以看以上两个链接。

我就简单的介绍下数码管原理:通过CLK DIO 两个引脚的高低电平变化来写入数据。

数码管接收到开始信号后 可以写入数据 接收到停止信号后结束写入。

数码管分两种:共阴极  和 共阳极

数码管上的每个数字都由七条短杠 和 一个小数点组成,共阴极的数码管 当短杠接收到高电平时会通电发光,供阳极则为低电平通电发光。

这样说不是很好理解 我就举个例子,比方说我们想让共阴极的数码管显示数字 5,那就要让afgcd 这五个短杠 为高电平1,那个abcdefgD(D表示小数点)为 10110110,这里的数据写入格式为 Dgfedcba ,即01101101,转换为十六进制为 0x6d

unsigned char code table[]={//共阴极0~f数码管编码

0x3f,0x06,0x5b,0x4f,    //0~3

0x66,0x6d,0x7d,0x07,  衡胡  //4~7

0x7f,0x6f,0x77,0x7c,    //8~b

0x39,0x5e,0x79,0x71    祥棚//c~f

};

除了显示数字字母 数码管还有一些固定的咐宴拦命令

0xc0~0xc3 表示数码管上四个数字的地址

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

#include <wiringPi.h>

#include <unistd.h>

#include <signal.h>

#include <time.h>

#define CLK 27

#define DIO 22

//共阴极0~f数码管编码

char segdata[]={

0x3f,0x06,0x5b,0x4f,    //0~3

0x66,0x6d,0x7d,0x07,    //4~7

0x7f,0x6f,0x77,0x7c,    //8~b

0x39,0x5e,0x79,0x71,    //c~f

0x00  //不显示

};

//共阴极0~9带小数点的数码管编码

char segdatadp[]={

0xbf,0x86,0xdb,

0xcf,0xe6,0xed,

0xfd,0x87,0xff,0xef

};

//初始化wiringPi 使用BCM编码

void tm1637_init()

{

if(-1==wiringPiSetupGpio())

{

exit(-1);

}

pinMode(CLK,OUTPUT);

pinMode(DIO,OUTPUT);

}

//当CLK高电平时,DIO由高变低则代表开始信号

void tm1637_start()

{

digitalWrite(CLK,1);

usleep(140);

digitalWrite(DIO,1);

usleep(140);

digitalWrite(DIO,0);

usleep(140);

digitalWrite(CLK,0);

usleep(140);

}

//当CLK高电平时,DIO由低变高则代表停止信号

void tm1637_stop()

{

digitalWrite(CLK,0);

usleep(140);

digitalWrite(DIO,0);

usleep(140);

digitalWrite(CLK,1);

usleep(140);

digitalWrite(DIO,1);

usleep(140);

}

void write_bit(char bit)

{

digitalWrite(CLK,0);

usleep(140);

if(bit){

digitalWrite(DIO,1);

}else{

digitalWrite(DIO,0);

}

usleep(140);

digitalWrite(CLK,1);

usleep(140);

}

void write_byte(char data)

{

char i = 0;

for(i=0;i<8;i++)

{

write_bit((data>>i)&0x01);

}

digitalWrite(CLK,0);

usleep(140);

digitalWrite(DIO,1);

usleep(140);

digitalWrite(CLK,1);

usleep(140);

pinMode(DIO,INPUT);

while(digitalRead(DIO));

pinMode(DIO,OUTPUT);

}

void write_command(char cmd)

{

tm1637_start();

write_byte(cmd);

tm1637_stop();

}

void write_data(char addr,char data)

{

tm1637_start();

write_byte(addr);

write_byte(data);

tm1637_stop();

}

void number_display(int h_shi,int h_ge,int m_shi,int m_ge)

{

write_command(0x40);//写数据

write_command(0x44);//固定地址

write_data(0xc0,segdata[h_shi]);//写入第一个数码管

write_data(0xc1,segdata[h_ge]);

write_data(0xc2,segdata[m_shi]);

write_data(0xc3,segdata[m_ge]);

write_command(0x88);//显示开

}

void time_display(int h_shi,int h_ge,int m_shi,int m_ge,int f_dp)

{

write_command(0x40);//写数据

write_command(0x44);//固定地址

write_data(0xc0,segdata[h_shi]);//写入第一个数码管

if(f_dp)

{

write_data(0xc1,segdata[h_ge]);

}else{

write_data(0xc1,segdatadp[h_ge]);

}

write_data(0xc2,segdata[m_shi]);

write_data(0xc3,segdata[m_ge]);

write_command(0x88);//显示开

}

//sigint信号处理函数 退出并关闭数码管

void handler(int signo)

{

number_display(16,16,16,16);

exit(-1);

}

int main()

{

char FLAGDP = 1;

signal(SIGINT,handler);

tm1637_init();

char i = 0;

#if 0

while(1)

{

for(i=0;i<10;i++)

{

number_display(i,i,i,i);

sleep(1);

}

}

#endif

while(1)

{

FLAGDP^=1;

time_t t = time(NULL);

struct tm* _mt = gmtime(&t);

int h_s=0,h_g=0,m_s=0,m_g=0;

h_s = (_mt->tm_hour+8)/10;//时区+8

h_g = (_mt->tm_hour+8)%10;

m_s = _mt->tm_min/10;

m_g = _mt->tm_min%10;

time_display(h_s,h_g,m_s,m_g,FLAGDP);

sleep(1);

}

return 0;

}

阅读全文

与数码管使用方法相关的资料

热点内容
用什么化学方法鉴别乙醇和乙烷 浏览:220
上皮样血管平滑肌脂肪瘤治疗方法 浏览:665
17拼音拼读的教学方法 浏览:994
手机支架方法图片 浏览:248
排气管漏水怎么办最简单的方法 浏览:276
尼龙干热收缩率检测方法 浏览:10
女生发烧有哪些退烧方法 浏览:746
提肌训练方法大全 浏览:955
氧化铝原料检测方法及仪器 浏览:708
先天性畸形治疗方法 浏览:849
流式细胞仪使用方法 浏览:537
哪里有修炼的方法 浏览:804
侧方30公分线最佳找点方法 浏览:709
夹布条的最佳方法 浏览:992
做事方法分析 浏览:832
红石电路密室教学方法 浏览:404
地下水灭蚁灵的检测方法 浏览:717
纤维长度测量方法 浏览:457
草席上的油渍怎么去除最快方法 浏览:708
碘131治疗甲亢方法 浏览:417