如何用单片机控制数码管(带原理图程序注释)
说起数码管这个器件时,你可能会对它产生好奇,是怎样控制它显示数字字母的,也许正是因为这个好奇心驱使我们总想去了解它使用它。
数码管:由多个发光二极管封装在一起组成8字结构,引线已在内部完成,我们只需引出他们的各个笔画,公共电极。数码管实际上由七个发光二极管组成“8”字型结构,加上小数点就是8个,这些段位分别由a,b,c,d,e,f,g,dp来表示。
数码管(图片来源于网络)
数码管(图片来源于网络)
数码管(图片来源于网络)
在市场上可以分为两种数码管,分别为共阳极,共阴极,共阳极顾名思义就是把LED的正极端连在一块,在点亮的时候只需要把另一端通过单片机的指令让其接地即可,共阳极也是如此(本篇中为共阴极)。
原理图如下:
原理图
原理图
在单片系统中扩展LED数码管多用共阳极数码管,原因就是选用共阴极数码管在用单片机驱动时,所用的驱动功率较大,共阳极就避免了这个问题,在使用的时候为了避免电流过大,还需在每个字段要串联一个电阻。
但是在使用的时候由于数码管端口较多,想要控制多个数码管的话,还需加74H573锁存器,在本篇讲解中使用该锁存器,数码管采用共阴极。
74H573
原理图
如果想让上图中第一个数码管显示字母'b',则只需要控制相应的位拉高(既c,d,e,f,g),其余为低电平即可,转化成二进制就是0111 1100。
控制代码如下
#include <reg52.h>
sbit duan=P2^6;//定义段选
sbit wei=P2^7;//定义位选
main()
{
P0=0x07;//0111 1100--b
duan=1;//锁存IC失能
duan=0;
P0=0xfe;//1111 1110
wei=1;//锁存IC使能
wei=0;
while(1);
}
在程序中出现断选和位选,所谓断选就是控制数码管显示什么,位选是控制哪一个数码管亮,文章中是想让第一个数码管点亮,在程序中只需让第一个数码管是低电平,其余是高电平即可,转化为二进制就是1111 1110,另外程序中还有让断选或位选等于0和等于1的那句话,这可以理解为锁存器的启动,这样可以把数据写进去而且后期不能随便修改。
小伙伴们你们学会了吗?敢不敢来试试,点亮第三个数码管,显示数字9,把你的答案写在评论区,分享一下吧!
教你玩单片机之静态数码管(附程序)
静态数码管的相关知识:
LED数码管是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。LED数码管常用的段数一般为7段,有的另加一个小数点 。LED数码管根据LED的接法不同,分为共阴和共阳两类 。
原理图解析:
HC6800-ES V1.0实验板上面用的数码管是共阴极的数码管,数码管的公共端接到138译码器,段码段通过74H573锁存器接到单片机的P0口。
锁存器(Latch):
是一种对脉冲电平敏感的存储单元,它们可以在特定输入脉冲电平作用下改变和保持状态,所谓锁存,就是把信号暂存以维持某种电平状态。
74H573锁存器的功能说明:
1. OE为时能端,当他为低电平的时候, 锁存器开始工作
2. VCC和GND为电源和地端
3 .LE为锁存端,当LE为高电平的时候,Q0~Q7都跟D0~D7状态一样,当LE为低电平的时候,Q0~Q7都锁存数据,无论D0~D7怎么变化,Q0~Q7都保持锁存之前的那个状态。
74H573锁存器 逻辑引脚:
74H573锁存器真值表:
51单片机数码管显示数字程序:
使用的IO: 数码管使用P0
#include<reg51.h>
#define GPIO_DIG P0
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
//RAM,ROM
unsigned char code DIG_CODE[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//显示0~9的值
//0~9段码
//0:0011_1111
void main(void)
{
LSA=0;
LSB=0;
LSC=0;//我们可以理解为打开某一个数码管打开
while(1)
{
GPIO_DIG=DIG_CODE[6];
}
}
相关问答
利用总线结构,用51 单片机 结合373锁存器来完成 数码管 的显示 程序 怎么写(C语言版的)?按你电路的意思也很简单,设一显示缓冲区,要显示内容的显示码放入缓冲区。设一3-5毫秒的定时中断,中断服务程序中用位选作为地址输出显示代码,输出地址被373...
单片机 和 数码管 接线需要什么?单片机和数码管接线要限流电阻。单片机和数码管接线要限流电阻。
单片机数码管 几种显示方式如何实现?单片机连接数码管,可以用单片机的I/O口直连,也可以通过其他驱动芯片连接。I/O直连的方式,连线简单,编程也简单,但是会占用大量的I/O口资源,故很少这...单片...
单片机数码管 亮度怎么调?有两种常用方法,一种是用硬件对数码管的发光管进行限流调节,即是加装电理进行电流控制,从而控制数码管的亮度。弟二种方法是用软件对数码管的发光时间进行控...
如何将 数码管 与LCD同时接入 单片机 ,我想做一个999秒的倒计时,同时用LCD显示我的英文名字?用个引脚比较多的单片机就可以了。比如STC89C52等等。数码管用扫描方式,LCD如果用1602就直接写,也不会占用单片机多少时间。用个引脚比较多的单片机就可以了...
单片机 中 数码管 显示时位控和段控的信号怎么输进来?显示分静态/动态2种,动态需定时循环刷新位控码和段码,静态时不用段码一般由2种方式驱动,一种是并口直接驱动或者并口加锁存器驱动,一种是串口转并口驱动这...
数字式电子秒表设计 程序 (max7219与 单片机 连接8位 数码管 显示)?你好!7219驱动两位数码管完成99秒计时,通过按键控制开始和复位你好!7219驱动两位数码管完成99秒计时,通过按键控制开始和复位
8段led 数码管 怎么找 单片机 ?拿8段1位数码管做例子。8段指有8个LED,如果是共阴极的,那这8个LED的负极连在一起,正极不连。8个LED的8个正极分别连一个限流电阻,再接到单片机一个IO引脚上...
单片机 两个 数码管 如何显示?通过分别控制两个数码管的数字和位置,可以实现单片机控制两个数码管进行显示。首先需要通过GPIO口控制数码管的电流,再通过PWM波来控制数码管的亮度;然后根据...
想用51 单片机 编个倒计时的c 程序 ,要求用两位 数码管 显示分钟的?并用一个按键啥?51单片机我没设计过电路,用的学习板是现成的,对着电路图。那个学习板上没有锁存器啥的,只能靠扫描来显示2个数字(就是两个数码管轮流显示...