74hc138驱动共阳数码管你了解多少呢?74hc138驱动共阳数码管的方法是什么呢?本文首要关于74hc138驱动共阳数码管的介绍。
数码管的根本介绍
数码管原理图
这是比较常见的数码管的原理图,咱们板子上一共有6只数码管。前边有了LED小灯的学习,数码管学习就会轻松的多了。从图1能看出来,数码管共有a,b,c,d,e,f,g,dp这8个段,而实际上,这8个段每一段都是一个LED小灯,所以数码管便是由8个LED小灯所组成的。咱们看一下数码管内部结构图。
数码管分为共阳数码管和共阴数码管,所谓的共阴数码管便是8只LED小灯的阴极是接在一同的,也便是阴极是公共端,由阳极来操控小灯是否亮灭。同理,共阳数码管便是阳极是接到一同的,咱们能够仔细研讨下图1。仔细的同学也会发现,数码管上边有2个com,实际上便是咱们数码管的公共端。为什么有2个,我个人认为,一方面有2个能够起到对称的作用,刚好是10个引脚,别的一个方面,公共端通过的电流较大,咱们初中就学过,并联电路电流之和等于总电流,用2个com能够把公共电流均匀到2个引脚上去,下降线路接受的电流。
从咱们板子的电路图上能看出来,咱们所用的数码管是共阳数码管,如图所示。
共阳数码管电路
74hc138操控共阳数码管
从上文咱们知道,他们的com是接到了正极上,当然了,和LED小灯电路相似,也是由74HC138操控了三极管的导通来操控整个数码管的电流,咱们先来看DS1这个数码管。原理图上能够看出来,操控DS1的三极管是Q17,操控Q17的引脚是LEDS0,对应到74HC138上边便是Y0端的输出。
74HC138操控图
咱们现在的意图是让LEDS0这个引脚输出低电平,信任咱们现在能够独立依据前边学到的内容把ADDR0,ADDR1,ADDR2,ADDR3,ENLED这4个输入状况写出来,现在咱们不要偷闲,都去依据138的手册去写一下,不需要你记住这些定论,可是遇到就写一次,训练过几回后,遇到同类芯片自己就知道怎么去解决问题了。
数码管通常是用来显现数字的,咱们板子上的6个数码管,习惯上咱们称之为6位,那操控位挑选的便是74HC138了。而数码管内部的8个LED小灯咱们称之为数码管的段,那么数码管的段挑选(即该段的亮灭)是通过P0口操控,通过74HC245驱动,这样整个电路就完成了。
74hc138操控共阳数码管程序
#include //包括寄存器的库文件
sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;
void main()
{
unsigned char j = 0;
unsigned int i = 0;
ENLED = 0;
ADDR0 = 0;
ADDR1 = 0;
ADDR2 = 0;
ADDR3 = 1; //74HC138敞开三极管Q17
while(1) //程序死循环
{
P0 = 0xF9; //翻开数码管b和c段
}
}
数码管的静态显现
从上文咱们了解到74HC138一起一次只能让一个输出口为低电平,也便是在一个时间内,咱们只能让一个数码管显现,一直选通数码管而且能够依据咱们的P0总线的信号来改动这个数码管的值,咱们能够理解为数码管的静态显现。
数码管静态显现是对应动态显现而言的,静态显现关于一两个数码管还行,多个数码管,静态显现完成的含义就没有了。这节课咱们先用一个数码管的静态显现来完成一个简略的秒表,为下节课的动态显现打下根底。
先来介绍一个51单片机的关键字code。咱们前边课程界说变量的时分,一般用到unsigned char或许unsigned int这两个关键字,这样界说的变量都是放在咱们的单片机的RAM中,咱们在程序中能够随意去改动这个变量的值。可是还有一种常数,咱们在程序中要运用,可是却不进行对这个值的改动,这种值咱们能够加一个code关键字润饰一下,润饰结束后,这个值就会存储到咱们的程序空间flash中,这样能够大大节约咱们单片机的RAM的运用量,究竟咱们的RAM空间比较小,而程序空间是很大的。
数码管的静态显现程序:
#include //包括寄存器的库文件
sbit LED = P0^0;
sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;
unsigned char code LedChar[] = {
0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8e
}; //用数组来存储数码管真值表,下一课具体介绍数组
void main()
{
unsigned char counter = 0;
unsigned char j = 0;
ENLED = 0; ADDR0 = 0; ADDR1 = 0;
ADDR2 = 0; ADDR3 = 1; P0 = 0XFF; //74HC138和P0初始化部分
TMOD = 0x01; //设置定时器0为形式1
TH0 = 0xB8;
TL0 = 0x00; //定时值初值
TR0 = 1; //翻开定时器0
while(1)
{
if(1 == TF0) //判别定时器0是否溢出
{
TF0 = 0;
TH0 = 0xB8; //溢出后,从头赋值
TL0 = 0x00;
counter++;
if(50 == counter) //判别定时器0溢出是否到达50次
{
counter = 0; //counter清0,从头计数
P0 = LedChar[j++]; //把数组里的对应值送给P0
if(16 == j) //当显现到F后,归0从头开始
{
j = 0;
}
}
}
}
}
结语
关于74hc138操控共阳数码管的介绍就到这儿了,如有不足之处欢迎纠正。