设计与开发

单片机加1 单片机IO口加一个译码器芯片有什么用?

小编 2024-10-06 设计与开发 23 0

单片机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状态,就可以直接读输入状态了。只有输出过低电平,再读输入...

猜你喜欢