当前位置:首页 > 单片机 > 单片机
[导读] 共阴极或者共阳极数码管,因为其需要电流大,而一般51输出电流低,需要锁存器。买的开发板使用的共阴极数码管。 至于其构造,找个相关方面的书看看,这里主要是对做好的电路板进行编程。 刚开始的时候

共阴极或者共阳极数码管,因为其需要电流大,而一般51输出电流低,需要锁存器。买的开发板使用的共阴极数码管

至于其构造,找个相关方面的书看看,这里主要是对做好的电路板进行编程。

刚开始的时候,感觉在数码管上显示数字很厉害。但是等到自己写这篇日志的时候,才发现了了。。

在对数码管编程前,需要对锁存器有所了解。买的开发板上用的是74HC573贴片式的。

74HC573真值表

输入 输出

!OE LE D | Q

L H H | H

L H L | L

L L X | Q0

H X X | X

<真值表具体参考郭天祥那本新概念P36页>

使用的时候74HC573的 !OE 引脚需要接低电平,否则D跟Q都成任意电平了,不听自己使唤了。失去锁存器的作用,因此必须让!OE为低电平。

通过74HC573在LE端为高电平时,把单片机的IO电平信号锁存。然后把LE变为低电平,这样不论单片机的IO电平如何变化,74HC573的输出口电平都保存LE变为低电平之前的数值,从而实现锁存。

由于多位数码管的段都是接在相同的IO口上,因此在买的这块开发板上分别用两个573对多位数码管的段、位进行锁存。

一、静态数码管显示的实现

这个实现比较简单,通过位锁存器数据判断那个数码管点亮,那个不点亮。然后通过段锁存器显示被选中的数码管上的数字或字母。

位:

由于是共阴极数码管,当该位置0时,该位数码管被选中,即通电后点亮。

段:

这个就是显示被选中的数码管显示什么内容了。网上有数码管小助手。或者自己一个个的计算得到。


显示多位数码管中某一个数码管的代码:

显示字母“L”

#include

#include "hj_init.h"

sbit WE = P2^1;

sbit DU = P2^0;

void main()

{

WE = 1;

P0 = 0xfe;

WE = 0;

DU = 1;

P0 = 0x38;

DU = 0;

while(1);

}

效果图:



显示多位数码管中两个数码管代码:

这个主要就是更改位的数值。想让那个亮,就置0。因为是共阴极数码管:P


除了这个静态的占IO的缺点外,还有就是不论你选中几个数码管,显示的数字都是一样的,不好玩。至于显示不同的内容,就要靠动态数码管了。


二、动态数码管显示的实现


说是动态,其实还是静态一位一位的显示。但是因为速度快,而人眼有视觉暂留作用,感觉上是动态显示而已。如果想看清到底是如何显示的,可以把延时的时间变长,这样能更好的看清是如何显示的。

动态里面还有个关键的地方就是消影。P0 = 0xff 。

先把段选数据送到锁存器中。再送位选数据。中间如果不加上消影,在显示位选数据前,P0仍保持上次的段选数据,会造成干扰。因此需要添加消影。但后来发现如果先送位选的数据,在打开位对应的锁存器,可以省去P0 = 0xff 这句专用的消影语句。但先送位选数据,再打开相应锁存器,应该也算消影的方式吧。

实现8位共阴数码管动态显示的代码如下:

#include

#include "delay.h"

#define uchar unsigned char

#define uint unsigned int

#define N 1 //方便调整延时时间

sbit DUAN = P2^0; //声明段锁存器的LE(锁存允许端,或锁存控制端)引脚

sbit WE = P2^1; //声明位锁存器的LE(锁存允许端,或锁存控制端)引脚

//数码管码表

uchar code table[]={

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

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

0x7f,0x6f,0x77,0x7c, //数字8、9、A、b

0x39,0x5e,0x79,0x71 //C、d、E、F

};

void main()

{

hj_init();

while(1)

{

/*数字0x06 = 1*/

//送入段选数据

DUAN = 1 ;

P0 = table[3];

DUAN = 0 ;

P0 = 0xff; //消影

//送入位选数据

WE = 1;

P0 = 0xfe;

WE = 0;

delayms(N); //延时

/***********************************************************/

/*数字0x5b = 2*/

//送入段选数据

DUAN = 1 ;

P0 = table[3];

DUAN = 0 ;

P0 = 0xff; //消影

//送入位选数据

WE = 1;

P0 = 0xfd;

WE = 0;

delayms(N); //延时

/***********************************************************/

/*数字0x4f = 3*/

//送入段选数据

DUAN = 1 ;

P0 = table[9];

DUAN = 0 ;

P0 = 0xff; //消影

//送入位选数据

WE = 1;

P0 = 0xfb;

WE = 0;

delayms(N); //延时

/***********************************************************/

/*数字0x66 = 4*/

//送入段选数据

DUAN = 1 ;

P0 = table[8];

DUAN = 0 ;

P0 = 0xff; //消影

//送入位选数据

WE = 1;

P0 = 0xf7;

WE = 0;

delayms(N); //延时

/***********************************************************/

/*数字0x6d = 5*/

//送入段选数据

DUAN = 1 ;

P0 = table[4];

DUAN = 0 ;

P0 = 0xff; //消影

//送入位选数据

WE = 1;

P0 = 0xef;

WE = 0;

delayms(N); //延时

/***********************************************************/

/*数字0x7d = 6*/

//送入段选数据

DUAN = 1 ;

P0 = table[8];

DUAN = 0 ;

P0 = 0xff; //消影

//送入位选数据

WE = 1;

P0 = 0xdf;

WE = 0;

delayms(N); //延时

/***********************************************************/

//送入段选数据

DUAN = 1 ;

P0 = table[7];

DUAN = 0 ;

P0 = 0xff; //消影

//送入位选数据

WE = 1;

P0 = 0xbf;

WE = 0;

delayms(N); //延时

/***********************************************************/

//送入段选数据

DUAN = 1 ;

P0 = table[6];

DUAN = 0 ;

P0 = 0xff; //消影

//送入位选数据

WE = 1;

P0 = 0x7f;

WE

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

在电子工程和数字系统设计中,FPGA(现场可编程门阵列)因其高度的灵活性和可配置性而备受青睐。FPGA不仅可以用于实现复杂的逻辑功能,还能轻松处理数字信号和接口各种外设。本文将重点介绍FPGA入门基础中的数码管显示技术,...

关键字: 数码管 FPGA 现场可编程门阵列

以下内容中,小编将对电子管的相关内容进行着重介绍和阐述,希望本文能帮您增进对电子管的了解,和小编一起来看看吧。

关键字: 电子管 阴极 电压

嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分,通常嵌入式系统是一个控制程序存储在ROM中的嵌入式处理器控制板,事实上所有带有数字接口的设备,有些嵌入式系统还包含操作系统,但大多数嵌入式系统都是由单个程序实现整...

关键字: 嵌入式 语言 技术

语音编码器的主要功能就是把用户语音的PCM(脉冲编码调制)样值编码成少量的比特(帧)。这种方法使得语音在连路产生误码、网络抖动和突发传输时具有健壮性(Robustness)。在接收端,语音帧先被误码为PCM语音样值,然后...

关键字: 语音编码器 PCM 语言

电子管,是一种最早期的电信号放大器件。被封闭在玻璃容器(一般为玻璃管)中的阴极电子发射部分、控制栅极、加速栅极、阳极(屏极)引线被焊在管基上。利用电场对真空中的控制栅极注入电子调制信号,并在阳极获得对信号放大或反馈振荡后...

关键字: 电子管 阴极 碳化钨

模糊控制算法(理论知识)

关键字: 模糊控制 语言

数码管里面相当于有8个段码管(或叫发光二极管)。 数码管分阳极管(CA),阴极管(CC)。阳极管是接高电平然后通过每个段选为来控制数码管亮灭(高电平灭,低电平亮)。阴极管则是接低电平,通过段选来控制亮灭(高电平亮,低电...

关键字: 数码管 使用

数码管引脚图

关键字: 数码管 编程

共阳极、共阴极数码管编码表(0~9、A~P……全亮)

关键字: 数码管 段码

【单片机自学】3.数码管静态及动态显示

关键字: 数码管 数字
关闭