单片机IO口加一个译码器芯片有什么用?
有些时候根据项目的变动,单片机引脚会有增加和调整的功能,可能会导致之前选择的单片机的IO引脚数量不够;针对单片机的IO引脚数量不够时,工程师该如何去较好地解决呢?
工程师可能会重新选择单片机的型号,直接通过简单地增加IO引脚数量来解决;此方案虽然可以解决,但不推荐,因为软件也要重新调试,硬件电路也要重新改,相当于之前的工作都白做了。
那有没有其他方案可以更好地解决呢?单片机的IO引脚数量不够时,除了重新选择新的单片机型号解决方案之外,还存在使用IO引脚扩展芯片的方案。比如74LS48译码器。
译码器74LS48 芯片,是一种常用的七段数码管译码器驱动器,常用在各种数字电路和单片机系统的显示系统中。
上图给出了74LS48的符号图。由符号图可以知道,4号管脚端具有输入和输出双重功能。作为输入(BI)低电平时,G21为0,所有字段输出置0,即实现消隐功能。作为输出(RBO),相当于LT,即LT=1,RBI=0,DCBA=0000时输出低电平,可实现动态灭零功能。3号(LT)端有效低电平时,V20=1,所有字段置1,实现灯测试功能。
以驱动数码管为例:
如果没有74LS48译码器,单片机则需要7个IO口分别控制a、b、c、d、e、f、g数码管的7个引脚,所以直接驱动占用的IO比较多。
如果加上74LS48译码器,单片机IO口只需要A、B、C、D四个引脚就可以控制数码管,相当于节约了3个单片机引脚,实现了IO口扩展功能。
今天的分享就到这里,希望能到帮到你。
搞懂元器件,就搞懂了电路的一半
硬件笔记本|加群
C51 单片机 12 让数字 1 向上移动
让数字 1 向上移动 就是将图片连续不断的切换,开始我们显示 - 8到-1这个图片,1秒以后显示-7到1,这个图片,再过一秒显示-6到2,依此类推 就可以看到数字1不断的往上移动。
图片上我们的-8是第一行,这样画是为了容易看明白。
#include<reg52.h>
sbit kongzhi0=P1^0;
sbit kongzhi1=P1^1;
sbit kongzhi2=P1^2;
sbit kongzhi3=P1^3;
sbit kongzhi4=P1^4;
sbit kongzhi5=P1^5;
sbit kongzhi6=P1^6;
sbit kongzhi7=P1^7;
unsigned char code shuzi[]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0x1c,0xe7,0xe7,0xe70xe7,0xc3,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, };
unsigned char djg=0; //第几个的缩写
bit shuaxin=0; //狗一秒,刷新一下。
unsigned char i=0;
void main()
{
while(1)
{
if(shuaxin==1)
{ shuaxin=0;
djg++;
if(djg>=16)
{ djg=0; }
}
if(i==0)
{ kongzhi7=1; kongzhi0 = 0; i++; P2 =shuzi[djg+0] ; }
else if( i==1 )
{ kongzhi0=1; kongzhi1 = 0; i++; P2 =shuzi[djg+1] ; }
else if( i==2 )
{ kongzhi1=1; kongzhi2 = 0; i++; P2 =shuzi[djg+2] ; }
else if( i==3 )
{ kongzhi2=1; kongzhi3 = 0; i++; P2 =shuzi[djg+3] ; }
else if( i==4 )
{ kongzhi3=1; kongzhi4 = 0; i++; P2 =shuzi[djg+4] ; }
else if( i==5 )
{ kongzhi4=1; kongzhi5 = 0; i++; P2 =shuzi[djg+5] ; }
else if( i==6 )
{ kongzhi5=1; kongzhi6 = 0; i++; P2 =shuzi[djg+6] ; }
else if( i==7 )
{ kongzhi6=1; kongzhi7 = 0; i=0; P2 =shuzi[djg+7] ; }
}
}
void dingshiqi0() interrupt 1
{
static unsingned char i=0;
TH0=0xD8;
TL0=0xEF;
i++;
if(i>=100)
{
i=0;
shuaxin=1;
}
}
这里在定时器0中也有一个变量i和程序一开始的变量名字相同,其实每一个程序都会优先使用函数 内 定义的变量,也就是静态变量。
相关问答
【定时计数器实质是 加1 计数器是什么意思】作业帮[最佳回答]51系列单片机内部有两个计数器/定时器,是加1计数器,就是每个机器周期计数值就加1,如原来值是10,加1后就为11.如果是减1计数器就减1,减1后就为9.搞清...
单片机 外部中断实验p1口接八个发光二极管,实现:s1 加1 键,s2减...[最佳回答]很容易写的,在INT0中断左移P1在INT1中断右移P1外部中断设为下降沿方式
51 单片机 串口通信,下面的何时发生中断?为什么要 加 一个flag=...这里我给你解释一下flag=1;的作用,比如串口调试助手,发送数据单片机自动开启接收中断,接收RI=1;当单片机接收数据完成后,必须软件进行清零RI=0,说明...
为什么 单片机 C语言中使用while( 1 ),总要在后面 加 一对{},不管里面有没有内容?要是只有一条语句可以不加,但是要写为“while(1);”分号不能少,如果是含有多条语句,那么大括号一定要加!如果是含有多条语句还不加的话,循环只能管到其后...
学 单片机 可以接什么单?学习单片机可以搭建各种电子系统和项目,因此可以接很多不同的单元和硬件。以下是一些常见的单元和硬件,你可以使用单片机与其进行连接和控制:1.传感器:例如...
请问 单片机 中TRO= 1 表示的是什么?是TR0不是TRO51内核单片机中TR0=1表示控制定时器0启动TR1=1表示控制定时器1启动是TR0不是TRO51内核单片机中TR0=1表示控制定时器0启动TR1=1表示控制定时器...
51 单片机 的P 1 .0口(IO口)输出高电平的C语言怎么写?sbitP1.0=P1^0;//P1.0声明P1.0=1;//输出高电平P1.0=0;//输出低电平sbitP1.0=P1^0;//P1.0声明P1.0=1;//输出高电平P1.0=0;//输出低电...
求各位大哥举例说明 单片机 中的OV的用法! 单片机 书上说用0V= 1 表示错误,怎么理解?OV主要用于有符号数的运算,平时很少用。对有符号数来说,8位二进制数的最高位D7为符号位,当两个有符号数相加时,数的最高位这时应该是D6,也就是说按道理来讲...
写 单片机 中断中(C语言)interrupt 1 using01,0是什么用的?求解释?interrupt后面的点是中断号。重点我给你解释下using。这是C51编译器扩展的关键字。用来选择80c51单片机中不同的寄存器组,你也知道R0-R7总共有4组,那么using...
51 单片机 P0口做输入口时需要先写一并且外接上拉电阻,是这样的吗?51单片机P0口做输入口时需要先写1即可,外部不需要上拉电阻。其实,单片机上电复位时,P0已全部为置1状态,就可以直接读输入状态了。只有输出过低电平,再读输入...