电工技术基础_电工基础知识_电工之家-电工学习网

欢迎来到电工学习网!

单片外围芯片作业原理图

2017-05-30 14:41分类:电子技术 阅读:

 

74HC573常被这个芯片搞昏了头,啥段选操控了,位选操控了,咱先不必管它,先看看这个74HC573芯片的工作原理是怎样回事,尽管有芯片的阐明文档,但缘缘觉得那看起来不易了解,所以缘缘就依据阐明文件,画了一个图来:

咱们看到,这个573芯片是20管脚的,除电源的两根外,有8根输入和输出,这么就只剩余了两个管脚了:即OE和LE,那么这两个是干啥的呢,OE是三态使能输入,低电平有用,意思便是当这个管脚接成低电往常,这个芯片才会工作,不然输入和输入都不工作,LE是啥意思呢,锁存使能输入,意思便是操控输入与输出状况的,咱们看到,当LE为低电平0时,输入有用,但输出无效,当LE为高电平1时,输入有用,输出也有用。
通过前面的剖析,咱们得知,咱们操控这个芯片时只操控OE和LE就行了,通常地,要设置成芯片输入输出有用工作,所以直接把OE设成低电平,即接地状况,而对LE操控来操控是不是输出,以抵达运用央求,8根输入接单片机P口,8根输出接外载,那么咱们看看它是怎样操控8个数码管的:

咱们看到,操控8个数码管时(记住这8个数码管后边还有8个PNP三极管哦),用了两个74HC573的芯片,一个接在数码管的段上,一个接在数码管的位上,但它们的输入却接在一个端口上,还有两个LE操控操控线也接了出来,这时,假定咱们给这个输入端口送一个数值,假定两个LE都是0的状况下,它不会输出,假定其间一个是1了,那么它会输出,了解了这个道理了,咱们就送一次位的值,再送一次段的值,当送位时,与位联接的573的LE是高电平1,芯片处在输出状况,段的LE是低电平0,处于紧闭状况不输出,反之也相同,这么,咱们就能够操控闪现8个数码管了,并以纷歧样的内容和位,这么就抵达了咱们的央求,并用1个P口送数据,节约了单片机名贵的IO口,那么咱们写个程序看看作用吧:
#include
#define uint unsigned int
#define uchar unsigned char
uchar temp,aa,numdu,numwe;
sbit dula=P2^7;//段573芯片的LE操控端口
sbit wela=P2^6;//位573芯片的LE操控端口
uchar code duan[]={
~0x3F,~0x06,~0x5B,~0x4F,~0x66,~0x6D,~0x7D,~0x07,~0x7F,~0x6F,~0x77,~0x7C,~0x39,~0x5E,~0x79,~0x71};//段的代码(共阴极与共阳极纷歧样哦)
uchar code wei[]={
0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//位的代码
void delay(uint z);
void main()
{
numdu=0;
numwe=0;
aa=0;
while(1)
{
delay(1000);
delay(1000);
if(numdu==16)
numdu=0;
dula=1;
P0=duan[numdu];
dula=0;
wela=1;
P0=wei[numwe];
wela=0;
numwe++;
if(numwe==8)
numwe=0;
delay(1000);
delay(1000);
numdu++;
}
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
怎样,简略吧,下载程序试试吧,当往后看到程序时,假定有相似的写法时,还会不了解吗?
573说完了,咱们再看看138是怎样回事:
74HC138:
相同,阐明文件不易了解,缘缘仍是给你看张图吧:

咱们看到这个芯片是16管脚的,除了两根电源与8根输出端口外,就只剩余了6个端口了,除了三个数据输入端口(ABC)外,有3个使能输入端(G1、 G2A、G2B),这三个使能端的电平是二低一高有用,也便是只需在这种状况下,输入与输出才调正常工作,所以在电路运用中,将两个低电平的接地,只操控一个高电平的,当高电往常,输入输出有用,当为低电往常,输入输出无效,对于ABC的组合,上图中标明得很了解了,也便是ABC的凹凸电平摆放组合会让8 个输出端的管脚进行低电平0输出,咱们先看看在电路中是怎样运用的(通常在数码管闪现时与573等芯片协作运用)

咱们写个程序看看是怎样的作用:
#include
#define uint unsigned int
#define uchar unsigned char
uchar numdu,numwei;
sbit dula=P2^7;//操控573段码闪现
sbit wei=P2^6;//操控138输出
sbit a=P2^0;//138数据端口abc
sbit b=P2^1;
sbit c=P2^2;
uchar code table[]={
~0x3F,~0x06,~0x5B,~0x4F,~0x66,~0x6D,~0x7D,~0x07,~0x7F,~0x6F,~0x77,~0x7C,~0x39,~0x5E,~0x79,~0x71};
void delay(uint z);
void main()
{
numdu=0;
numwei=0;
wei=1;//1为138输出有用
while(1)
{
dula=1;
P0=table[numdu];
dula=0;
if(numdu==16)
numdu=0;
switch(numwei) //运用switch 句子操控位选 也可所以用查表的方法
{
case 0:a=0; b=0; c=0; break;
case 1:a=1; b=0; c=0; break;
case 2:a=0; b=1; c=0; break;
case 3:a=1; b=1; c=0; break;
case 4:a=0; b=0; c=1; break;
case 5:a=1; b=0; c=1; break;
case 6:a=0; b=1; c=1; break;
case 7:a=1; b=1; c=1; break;
}
numwei++;
if(numwei==8)
numwei=0;
delay(2000);
}
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
这儿有个switch句子,那么这条句子是啥意思呢?
C言语还供应了另一种用于多分支挑选的switch句子, 其通常方法为:
switch(表达式){
case常量表达式1: 句子1;
case常量表达式2: 句子2;

case常量表达式n: 句子n;
default:句子n+1;
}
其语义是:核算表达式的值。 并逐一与这往后的常量表达式值比照照,当表达式的值与某个常量表达式的值持往常, 即施行这往后的句子,然后不再进行差异,持续施行后边悉数case后的句子。如表达式的值与悉数case后的常量表达式均不相一同,则施行default后的句子。
【例4.9】
main(){
int a;
printf("input integer number: ");
scanf("%d",&a);
switch (a){
case 1:printf("Mondayn");
case 2:printf("Tuesdayn");
case 3:printf("Wednesdayn");
case 4:printf("Thursdayn");
case 5:printf("Fridayn");
case 6:printf("Saturdayn");
case 7:printf("Sundayn");
default:printf("errorn");
}
}
本程序是央求输入一个数字,输出一个英文单词。可是当输入3往后,却施行了case3以及往后的悉数句子,输出了Wednesday 及往后的悉数单词。这当然是不期望的。为何会呈现这种状况呢?这恰恰反响了switch句子的一个特征。在switch句子中,“case 常量表达式”只恰当于一个句子标号, 表达式的值和某标号持平则转向该标号施行,但不能在施行完该标号的句子后主动跳出悉数switch 句子,所以呈现了持续施行悉数后边case句子的状况。 这是与前面介绍的if句子彻底纷歧样的,应分外留神。
为了防止上述状况,C言语还供应了一种break句子,专用于跳出switch句子,break 句子只需求害字break,没有参数。在后边还将详细介绍。批改例题的程序,在每一case句子往后添加break 句子, 使每一次施行往后均可跳出switch句子,然后防止输出不该有的作用。
【例4.10】
main(){
int a;
printf("input integer number: ");
scanf("%d",&a);
switch (a){
case 1:printf("Mondayn");break;
case 2:printf("Tuesdayn"); break;
case 3:printf("Wednesdayn");break;
case 4:printf("Thursdayn");break;
case 5:printf("Fridayn");break;
case 6:printf("Saturdayn");break;
case 7:printf("Sundayn");break;
default:printf("errorn");
}
}
在运用switch句子时还应留神以下几点:
在case后的各常量表达式的值不能相同,不然会呈现过失。
在case后,容许有多个句子,能够不必{}括起来。
各case和default子句的先后次第能够改动,而不会影响程序施行作用。
default子句能够省掉不必。
看了解了吗,这条句子便是先以switch括号中的值为参照,然后顺次差异大括号里边的值,假定与switch后边括号中的值相一同,就施行后边的句子,不然就会跳出这条句子来。
如今的亲对这两个芯片很了解了,上面的原理图是缘用芯片的实习管脚制造的,所以亲们在运用这两个芯片的时分,就按缘缘画的管脚去接线,必定不会错的

上一篇:按钮报警器怎样接线?手动报警按钮接线图

下一篇:三极管丈量办法_怎样丈量三级管好坏

相关推荐

电工推荐

    电工技术基础_电工基础知识_电工之家-电工学习网
返回顶部