完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
简介
74LS138 为3 线-8线译码器,共有 54LS138和 74LS138 两种线路结构型式。54LS138为军用,74LS138为民用。 工作原理 ①当一个选通端(E1)为高电平,另两个选通端()和()为低电平时,可将地址端(A0、A1、A2)的二进制编码在Y0至Y7对应的输出端以低电平译出。(即输出为Y0至Y7的非)比如:A2A1A0=110时,则Y6输出端输出低电平信号。 ②利用 E1、E2和E3可级联扩展成 24 线译码器;若外接一个反相器还可级联扩展成 32 线译码器。 ③若将选通端中的一个作为数据输入端时,74LS138还可作数据分配器。 ④可用在8086的译码电路中,扩展内存。 真值表 引脚功能 应用 74LS138可以组成三变量输入,四变量输入的任意组合逻辑电路。 (1)用一块3线-8线译码器74LS138可以组成任何一个三变量输入的逻辑函数,任意一个输入三变量的逻辑函数都可以用一块3线-8线译码器74LS138来实现。因为任意一个组合逻辑表达式都可以写成标准与或式的形式,即最小项之和的形式,而·块3线-8线译码器74LS138的输出正好是二变量最小项的全部体现。 (2)二块3线-8线译码器74LS138可以组成任何一个四变量输入的逻辑函数。 常见的一些编码器、译码器如(74LS138)都只是三位或四位二进制的编码译码,只能满足一些简单电子电路的需求,对于复杂电子电路就无能为力了。 中规模集成电路74LS138的工作原理十分简单,根据输出表达式,从中可以看出译码器74LS138是一个完全译码器,涵盖了所有三变量输入的最小项,这个特性正是它组成任意一个组合逻辑电路的基础。74ls138还有另一重要应用,可以组成数据分配器。其实在电路在家用电器、自动化控制等方面都有重要的应用。 软件部分 //基于普中单片机138译码器数码管实验 #include "reg51.h" //此文件中定义了单片机的一些特殊功能寄存器 typedef unsigned int u16; //对数据类型进行声明定义 typedef unsigned char u8; ***it LSA=P2^2; ***it LSB=P2^3; ***it LSC=P2^4; ***it led=P2^2; ***it beez=P1^5; u16 flag=60,q,w,i,num=0,qwe=0; double code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//显示0~F的值 void delay(u16 i)//us软件延迟 { while(i--); } void DigDisplay() { u8 i; for(i=0;i<2;i++) { switch(i) //位选,选择点亮的数码管, { case(0): LSA=0;LSB=0;LSC=0; P0=smgduan[0]; break;//显示第0位 case(1): LSA=1;LSB=0;LSC=0; P0=smgduan[6]; break;//显示第1位 case(2): LSA=0;LSB=1;LSC=0; break;//显示第2位 case(3): LSA=1;LSB=1;LSC=0; break;//显示第3位 case(4): LSA=0;LSB=0;LSC=1; break;//显示第4位 case(5): LSA=1;LSB=0;LSC=1; break;//显示第5位 case(6): LSA=0;LSB=1;LSC=1; break;//显示第6位 case(7): LSA=1;LSB=1;LSC=1; break;//显示第7位 } delay(100); //间隔一段时间扫描 P0=0x00;//消隐 } } void time() interrupt 1 { TH0=(65535-45872)/256; TL0=(65536-45872)%256; num++; if(num==20) { num=0; flag--; q = flag%10; w = flag/10%10; } } void main() { TMOD=0x01; TH0=(65535-45872)/256; TL0=(65536-45872)%256; EA=1; ET0=1; TR0=1; while(1) { for(i=0;i<2;i++) switch(i) //位选,选择点亮的数码管, { case(0): LSA=0;LSB=0;LSC=0; P0=smgduan[w]; break;//显示第0位 case(1): LSA=1;LSB=0;LSC=0; P0=smgduan[q]; break;//显示第1位 } } } 关于显示数字的处理(简单处理,可能有错误,毕竟小白) 一维数组表示数字, 取万位,就要/10000%10,主要看前面的数字取什么位 取个位,就要/1%10 //number%10 = number/1%10 LightBuf[0]= DuanMa[num%10]; //取个位/ number%1/10 LightBuf[1]= DuanMa[num/10%10];//取十位 number%10/10 LightBuf[2]= DuanMa[num/100%10];//取百位 number%100/10 LightBuf[3]= DuanMa[num/1000%10];//取千位 number%1000/10 |
|
|
|
只有小组成员才能发言,加入小组>>
2575 浏览 0 评论
772浏览 1评论
534浏览 0评论
281浏览 0评论
473浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-5 08:34 , Processed in 1.086850 second(s), Total 45, Slave 38 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号