单片机驱动数码管设计详解(用74HC595实现)
简单设计了一个单片机驱动数码管的电路,该设计中只使用了4位数码管,占用了单片机3个IO口,如果驱动芯片全用满可以驱动8位数码管。仅供初学者分享学习。
本设计使用了一个4位的数码管,为共阳型,为了节省单片机的IO口,使用了两片74HC595作为数码管的驱动芯片,共占用3个IO口。74HC595部分电路图如下:
与单片机相连接的三个脚分别为:HC_DAT,HC_RCK,HC_CLK。两片595采用级联方式,即U2的第9脚接到U3的第14引脚。
2. 74HC595简介
74HC595是8位的移位寄存器,串入并出,并具有锁存功能,被广泛的用于数码管、点阵的驱动电路中。其管脚介绍如下:
15:数据输出A-接数码管数据A段;
1:数据输出B-接数码管数据B段;
2:数据输出C-接数码管数据C段;
3:数据输出D-接数码管数据D段;
4:数据输出E-接数码管数据E段;
5:数据输出F-接数码管数据F段;
6:数据输出G-接数码管数据G段;
7:数据输出H-接数码管数据H段;
16:电源正脚-接电源正;
8:电源负脚-接电源负;
14:数据输入脚-接单片机管脚;
12:数据锁存时钟-接单片机管脚;
11:数据输入时钟-接单片机管脚;
13:使能输出脚-低电平有效,接低电平;
10:数据清零-不清零,接高电平;
9:数据级联输出-接下一片595的数据输入脚;
74HC595的真值表如下:
知道了74HC595的引脚定义和真值表,那该如何编程呢?下面重点来了,通过时序图来编程。看重点!!!
3. 74HC595时序图
我是重点!我是重点!我是重点!
通过时序可以看出:
SCK是上升沿的时候要把数据写入;
RCK是上升沿的时候数据才能锁存显示;
有数据操作的过程中RESET必须是高电平;
EN必须是低电平,595才能工作;
知道了以上4点就可以写程序了。其中3、4条是硬件连接上的事情(也可以用单片机的IO口来连接,这样的话可以随时控制74HC595的工作与否情况)。写程序主要靠1、2条。下面具体操作。
4. 程序实例
看下面一段程序:
第39行:HC595_CLK(0)的原型如下:
HC595_CLK(0)是让CLK处于低电平,即上升沿还没有来到;
HC595_DAT(1)就是要把写入的数据准备好;
temp<<1是将数据移位,即一个字节分八次写入;
HC595_CLK(1)是让CLK处于高电平,即上升沿来了;
以上几句解释一下就是:
在CLK时钟上升沿来临之前把要写入的数据准备好,等上升沿来了就把准备好的数据写入。 这就是对时序图的解释。
记住,这仅仅是把数据写入到了74HC595中,但是还没有让74HC595锁存,即没有让数据显示出来,如果让数据显示的话,必须要给RCK一个上升沿(即时序图中的第2条),操作如下:
单片机执行完这个程序后,数据才会在数码管上显示出来。
这一节内容的难度较大,主要是因为时序图这个东西是很模糊的一个内容,大家可以慢慢理解体会。
本订阅号致力于单片机、ARM等嵌入式软硬件的设计经验分享,秉承“人人都是电子设计经验的分享者”的理念,成功路上不孤单,我们一起努力。公众号:micropoint8
如何用单片机控制数码管(带原理图程序注释)
说起数码管这个器件时,你可能会对它产生好奇,是怎样控制它显示数字字母的,也许正是因为这个好奇心驱使我们总想去了解它使用它。
数码管:由多个发光二极管封装在一起组成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,把你的答案写在评论区,分享一下吧!
相关问答
一位共阳极 数码管 怎么与 单片机 相连_作业帮[最佳回答]最容易,最好用的接法数码管的公共端接VCC数码管的a,b,c,d,e,f,dp串470Ω-1K的电阻接到单片机P0.0---P0.7最容易,最好用的接法数码管的公共端接VCC...
74LS245芯片可以直接连接 单片机 驱动 数码管 吗?应该用74244或者74240,74245是双向线驱动器,驱动数码管用单向的就够了。不需要译码器,可以程序译码,相比直接用译码器,会多占用管脚,但译码更灵活。应该用742...
单片机 直接点亮 数码管 需要译码器吗?就看你用的单片机提供的驱动电流是不是足够驱动数码管,好像51的不行,所以要加三极管放大,avr的话是可以直接驱动的用于驱动数码管的话,就用七段显示译码器,...
51 单片机 max7219 数码管 使用方法?使用方法如下:1.接线:将Max7219引脚与MCU引脚相连,VCC和GND分别连接到正负电源上。2.初始化:编写初始化函数,包括设置控制口输出、设置扫描限制、设置亮度...
单片机 两个 数码管 怎么设置?先让你的第一个数码管显示要显示的第一个数字,其他数码管关闭;然后关闭第一个数码管显示;然后让你的第二个数码管显示要显示的第二个数字,其他数码管关闭;...
单片机 里 数码管 的共阴极和共阳极是怎么回事?数码管是共阴极,意思是几段数码管的阴极都接在一起。这样只要给阴极一个高电平,所有的段码都不会亮,如果给低电平,则看对应阳极的电平高低,所以共阴极就是位...
单片机数码管 最小系统怎么接?1.单片机数码管最小系统可以接通。2.因为单片机数码管最小系统只需要一个单片机、一个数码管、若干电阻、若干连接线等简单元件即可搭建,接线简单,不需要复...
单片机 仿真软件中如何设置 数码管 与24C04?这个题目看着东西多,实际上没有太大的难度。需要知道单片机如何控制数码管显示即可,其他题目中更多的是一些业务逻辑,你需要设置一个交互逻辑即可,比如通过按...
c51 单片机 什么时候用共阴极 数码管 什么时候用共阳极 数码管 ?数码管是共阴极,意思是几段数码管的阴极都接在一起。这样只要给阴极一个高电平,所有的段码都不会亮,如果给低电平,则看对应阳极的电平高低,所以共阴极就是位...
为什么 单片机 的外 接数码管 要接成共阳极?数码管的公共端,最多时,要有8个段电流流过。单片机引脚承受不了这么大的电流。所以,需要三极管。数码管的公共端,最多时,要有8个段电流流过。单片机引脚承...