51单片机之数码管显示

编程入门 行业动态 更新时间:2024-10-03 19:22:53

51<a href=https://www.elefans.com/category/jswz/34/1769836.html style=单片机之数码管显示"/>

51单片机之数码管显示

一.数码管显示原理
依靠点亮内部发光二极管来发光,数码管内部电路如图a,一位数码管的引脚是10个,显示一个8需要7个小段,还有一个小数点,所以其内部有8个小的发光二极管,最后还有一个公共端,这个公共端又有共阴极和共阳极之分,下面对这两种数码管原理做以介绍。
1.共阴极数码管
“共阴”顾名思义是8个二极管的阴极全部连接在一起如图b,而他们的阳极是独立的。电路连接时,只要给数码管的任意一个阳极加高电平,对应这个数码管就亮了,例如想显示“8”,并且把与下角小数点也点亮,则给8个阳极全通高电平即可。
2。共阳极数码管
数码管所有阳极连接在一起如图c,公共端接的事高电平,想让哪个数码管亮就给那个阴极送个低电平即可,此时显示数字的编码与共阴极编码相反。

数码管静态显示

通常我们把公共端叫做“位选线”,把连接在一起的线段叫“段选线”。
在点亮数码管之前,先介绍下74HC573锁存器。
锁存器:把数据输入端与输出端进行隔离或者连接。
输出口Q要想输出高低电平OE脚必须接地。
当LE脚为高电平时,输出端Q随输入端D的变化而变化;
当LE脚为低电平时,输出端Q数据保存不变,输入端D数据变化不会改变Q的数据。
假如我们给输入端(与P0口直接相连)送一个0x06的值,LE为高时,锁存器两端就连接起来了,输出端也会输出0x06。如果P0口需要输送其他值时,只需将LE脚接个低电平,锁存器两端就断开了。当OE脚接高电平时,不论输入什么都不会输出,此时是一个高阻态的状态。

Ok,接下来上代码,让数码管上显示一个“1”。

#include<reg51.h>
sbit dula=P2^6;     //申明U1锁存器的锁存端
sbit wela=P2^7;     //申明U2锁存器的锁存端
void main()
{wela=1;        //打开U2锁存器P0=0xFE;       //送入位选信号wela=0;        //关闭U2锁存器dula=1;        //打开U1锁存器P0=0x06;       //送入段选信号dula=0;        //关闭U1锁存器
}

U1锁存器控制数码管显示的内容,U2锁存器控制哪一个数码管显示。

数码管动态显示

所谓动态显示,就是轮流向数码管送字形码和相应的位选。下面用代码来详细说一下,现象是第一个数码管显示1,时间为0.5s,然后关闭它,接着第二个数码管显示2,时间也为0.5s。

#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^6;
sbit wela=P2^7;
void delayms(uint xms)      //   延迟函数
{Uint i,j;for(i=xms;i>0;i--)for(j=110;j>0;j--);
}
void main()
{dula=1;P0=0x06;dula=0;P0=0xff;        //送位选数据前关闭所有显示,防止造成混乱wela=1;P0=0xfe;      //第一个数码管亮wela=0;delayms(500);dula=1;P0=0x5b;dula=0;P0=0xff;        //送位选数据前关闭所有显示,防止造成混乱wela=1;P0=0xfd;      //第二个数码管亮wela=0;delayms(500);
}

更多推荐

51单片机之数码管显示

本文发布于:2024-02-28 10:46:11,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1769521.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:单片机   数码管

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!