ls138,集成译码器74ls138

http://www.itjxue.com  2023-01-05 05:33  来源:未知  点击次数: 

求一个单片机交通灯的程序

/* 名称:LED模拟交通灯

说明:东西向绿灯亮若干秒,黄灯闪烁5次后红灯亮, 红灯亮后,南北向由红灯变为绿灯,若干秒后南北向黄灯闪烁5此后变红灯,东西向变绿灯,如此重复。

*/

#includereg51.h

#define uchar unsigned char

#define uint unsigned int

sbit ls138a=P0^4;

sbit ls138b=P0^5;

sbit ls138c=P0^6;

sbit RED_A=P1^0; //东西向灯

sbit YELLOW_A=P1^1;

sbit GREEN_A=P1^2;

sbit RED_B=P1^3; //南北向灯

sbit YELLOW_B=P1^4;

sbit GREEN_B=P1^5;

uchar Flash_Count=0,num,num1,time,i,j; //闪烁次数

uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

uchar tmp[]={30,5,25};

uchar tmp1[]={25,30,5};

//延时

void delay(uint z)

{

uint x,y;

for(x=z;x0;x--)

for(y=110;y0;y--);

}

void display(uchar numdis,numdis1)

{

P0=table[numdis%100/10];

ls138a=0;ls138b=0;ls138c=0;

delay(1);

P0=table[numdis%10];

ls138a=1;ls138b=0;ls138c=0;

delay(1);

P0=table[numdis1%100/10];

ls138a=0;ls138b=1;ls138c=0;

delay(1);

P0=table[numdis1%10];

ls138a=1;ls138b=1;ls138c=0;

delay(1);

}

void init()

{

TMOD=0x01;

TH0=(65536-45872)/256;

TL0=(65536-45872)%256;

EA=1;

ET0=1;

TR0=1;

}

//交通灯切换

void Traffic_Light()

{

P1=0xde;//南北红灯亮,东西绿灯亮

delay(10000);

while(++Flash_Count!=5)

{

P1=0xee;//南北红灯亮,东西黄灯亮

delay(500);

P1=0xfe;//南北红灯亮,东西黄灯灭

delay(500);

} //黄灯亮灭5次

Flash_Count=0;

P1=0xf3;//南北绿灯亮,东西红灯亮

delay(10000);

while(++Flash_Count!=5)

{

P1=0xf5;//南北黄灯亮,东西红灯亮

delay(500);

P1=0xf7;//南北黄灯灭,东西红灯亮

delay(500);

} //黄灯亮灭5次

Flash_Count=0;

}

//主程序

void main()

{

init();

i=0;

j=0;

num=tmp[0];

num1=tmp1[0];

while(1)

{

Traffic_Light();

display(num,num1);

}

}void T0_time () interrupt 1

{

TH0=(65536-45872)/256;

TL0=(65536-45872)%256;

time++;

if(time==20)

{

time=0;

if(num0){num--;}

else

{

i++;

if(i2)i=0;

num=tmp[i];

}

if(num10){num1--;}

else

{

j++;

if(j2)j=0;

num1=tmp1[j];

}

}

}

74ls138译码电路

71LS138有三个附加的控制端、和。当、时,输出为高电平(S=1),译码器处于工作状态。否则,译码器被禁止,所有的输出端被封锁在高电平,如表3.3.5所示。这三个控制端也叫做“片选”输入端,利用片选的作用可以将多篇连接起来以扩展译码器的功能。

带控制输入端的译码器又是一个完整的数据分配器。在图3.3.8电路中如果把作为“数据”输入端(在同一个时间),而将作为“地址”输入端,那么从送来的数据只能通过所指定的一根输出线送出去。这就不难理解为什么把叫做地址输入了。例如当=101时,门的输入端除了接至输出端的一个以外全是高电平,因此的数据以反码的形式从输出,而不会被送到其他任何一个输出端上。

例2. 74LS138 3-8译码器的各输入端的连接情况及第六脚()输入信号A的波形如下图所示。试画出八个输出管脚的波形。

解:由74LS138的功能表知,当(A为低电平段)译码器不工作,8个输出管脚全为高电平,当(A为高电平段)译码器处于工作状态。因所以其余7个管脚输出全为高电平,因此可知,在输入信号A的作用下,8个输出管脚的波形如下:

即与A反相;

其余各管脚的输出恒等于1(高电平)与A的波形无关。

【例3.3.2】 试用两片3线-8线译码器74LS138组成4线-16线译码器,将输入的4位二进制代码译成16个独立的低电平信号。

解:由图3.3.8可见,74LS138仅有3个地址输入端。如果想对4位二进制代码,只能利用一个附加控制端(当中的一个)作为第四个地址输入端。

取第(1)片74LS138的和作为它的第四个地址输入端(在同一个时间令),取第(2)片的作为它的第四个地址输入端(在同一个时间令),取两片的、、,并将第(1)片的和接至,将第(2)片的接至,如图3.3.9所示,于是得到两片74LS138的输出分别为

图3.3.9 用两片74LS138接成的4线-16线译码器

式(3.3.8)表明时第(1)片74LS138工作而第(2)片74LS138禁止,将的0000~0111这8个代码译成8个低电平信号。而式(3.3.9)表明时,第(2)片74LS138工作,第(1)片74LS138禁止,将的1000~1111这8个代码译成8个低电平信号。这样就用两个3线-8线译码器扩展成一个4线-16线的译码器了。

同理,也可一用两个带控制端的4线-16线译码器接成一个5线-32线译码器。

51单片机中LS138译码器的原理

这个数字芯片属于3线-8线译码器,输入3位,输出8位。

因为3位2进制数可以组成8个状态,即000,001,010,011,100,101,110,111。然后没一种状态的输出是唯一的,8位输出中有一位为0。举个例子:输入假如输入为000,那么输出就是01111111,假如数码管是共阳型,这时第一位数码管就被点亮;假如输入为001,那么输出就是10111111,

这时点亮的数码管就是第二位了;以此类推,输入010时输出就为11011111……一直到输入111,输出11111110。

就是这8种组合。当然高级应用可以用来做很多位其它译码

单片机题目,求8255端口地址

LS138,要Y2有输出,则 CBA=010,即 A4=A0=0,A3=1;

另外 G1=1=A6*A7,即 A6=A7=1;A5=0;这些是LS138要求的条件;

所以 A7A6A5A4A3A2A1A0=11001xx0;

那么 8255 端口地址分别是 11001000(C8)、11001010(CA)、11001100(CC)、11001110(CE);

余下的,你自己参看教材去做吧

(责任编辑:IT教学网)

更多

相关Access文章

推荐Access文章