输入端口少如何扩展?74hc148或74ls148级联在arduino中实现16转4的应用

这篇具有很好参考价值的文章主要介绍了输入端口少如何扩展?74hc148或74ls148级联在arduino中实现16转4的应用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

上一篇博文我们使用矩阵键盘时面临的一个问题就是占用的端口多,以前我们扩展输出端口使用了74hc595,那么这里我们面临的是输入端口少需要扩展的问题,那么可以使用什么芯片来完成了?有没有直接可使用的芯片呢?


文章原出处: https://blog.csdn.net/haigear/article/details/130025987

一、使用74hc148芯片

1、148芯片的说明

:74HC148是一个8位优先编码器,可以将多个输入数据按照优先级编码输出。A0-A3是编码输出端,,0-7是输入数据线,管脚说明如下:

管脚名 功能说明
A0~A2 编码输出端口,用于对0~7输入8个数据线的信号进行编码。
0~7 输入端口,不做特别说明
VCC、GND 电源端口。
EI 编码使能端口,低电平时编码有效,否则无效,级联时链接上一级的EO端
EO 编码状态输出端,有编码时输出时,或说正在编码时其端口输出为高电平,否则低电平
GS 测试端口,用于检测编码器的工作状态。处于编码状态时,GS为低电平,否则为高电平

2、148芯片常见管脚图

74hc148,Arduino探索,Arduino,人工智能,扩展输入端口,嵌入式,arduino,74hc148
我们在proteus中使用的默认是没有VCC和GND
74hc148,Arduino探索,Arduino,人工智能,扩展输入端口,嵌入式,arduino,74hc148

2、74HC(LS)148的级联

我们前面的博文曾经介绍过74HC系列的串行输入并行出处的芯片,这里我们采用8路并行输入的芯片74HC148(arduino官网也有介绍可以参考),使用它可以轻易的将8路的输入转化为3路输入(我们这里使用的是4x4的矩阵键盘,所以需要16路,所以就需要用148芯片进行级联了)。级联电路如下:

74hc148,Arduino探索,Arduino,人工智能,扩展输入端口,嵌入式,arduino,74hc148
很明显,级联采用的是将各个芯片的三个A0~A2管脚和GS管脚用与非门连接,其中第位的管脚来自于级联初级的GS管脚,用两个GS管脚通过与非门的输出脚作为优先级标志位,从GS输出。
我们知道EI管脚低电平时才可以编码,而通过级联后只要初级芯片有编码输出初级芯片的EO管脚就会被置为高电平,后级芯片EI管脚也就会被置为高电平,所以后级芯片就不能编码了。

我们知道,与非门对低电平有效,当初级芯片编码时后级芯片EI为高电平,同时后级芯片所有的管脚输出高电平,输出到与非门的全为无效的高电平。这个时候,我们读取的就是初级芯片的编码信号。

二、在arduino实现矩阵简单中的应用

1、电路及说明

我们来看看,在键盘矩阵中的应用,这里很显然是采用了16路的按钮来单独输入,每个按钮的一端直接接的地。

74hc148,Arduino探索,Arduino,人工智能,扩展输入端口,嵌入式,arduino,74hc148
这里我使用了两个BCD数码管,因为刚好二进制的输出刚好可以使用。不过信号要取反,因为A0~A2输出的都是低电平。第一个数码管测试的是一个后级148芯片的输出,在初级148芯片没有编码时,后级是可以正常输出的。
第二个数码管则输出的是级联后的效果,也就是说,一旦启动了初级芯片后后级芯片就不能输出了,这个时候第一个数码管(左边的那个数码管)就只能显示零了。

同时,我们还采用了串口输出到虚拟终端上,便于大家同步查看效果。

2、代码如下:

这里的程序只为将我们得到的端口信号转换为可以现在在虚拟终端显示的数值。其实思路有两种,一种是我在程序中注销的部分,采用的思路就是2的平方和逐位累加实现数值,但我们得到的是一个double类型的,不太好看,所以我最终采用了位运算和或运算得到了一个二进制的数值,还好Serial.println可以自动将二进制转化为十进制,所以刚好我们可以看到效果。

//定义输入引脚
const int controlPins[] = {2, 3, 4, 5};
int n=0b0000;
void setup() {
	for(int i=0;i<6;i++)
	  pinMode(controlPins[i], INPUT);
	Serial.begin(9600);
}
void loop() {
  n=0b0000;
  for (int j = 5; j > 1; j--) {
	int b=0b0001; 
	 if(digitalRead(j))
	{
	 //Serial.println(pow(2,j-2));
     //n=n+pow(2,j-2);
	 //n+=exp((j-2)*log(2));
       b=b<<(j-2); //哪一个端口检测到高电平则移位对应的位数
	   n=n|b;	   //和0进行或运算得到最终的数值
	}
	delay(100);
  }
 Serial.println(n);
}

3、运行效果:

74hc148,Arduino探索,Arduino,人工智能,扩展输入端口,嵌入式,arduino,74hc148
文章随时可能更新,转载请注明出文章原出处:https://blog.csdn.net/haigear/article/details/130025987文章来源地址https://www.toymoban.com/news/detail-766213.html

到了这里,关于输入端口少如何扩展?74hc148或74ls148级联在arduino中实现16转4的应用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 单片机(二):3个IO扩展n*8个IO,基于74hc595与74hc165的8x8矩阵键盘

    3个IO通过一片74hc595扩展8个输出IO,3个IO通过一片74hc1655扩展8个输入IO,最终成为8X8的矩阵键盘。对于普通的矩阵键盘,再加入防止鬼键、消抖和按下与松开识别。 74HC595是一个8位串行输入、并行输出的移位缓存器。通俗的来讲就是在输入时钟的上升沿数据输入端的数据可以位

    2024年02月10日
    浏览(59)
  • 51单片机通过两片74HC595级联,用8位LED数码管,分别显示当前日期,如:“2”、“0”、“-”、“0”、“5”、“-”、“2”、“6”,用Proteus仿真实现。

    1.先上仿真图,但这么连仿真图是不太正确的,要注意。展示的话能用就行。 2.从上到下依次放上数据手册上的引脚解释和逻辑功能和时序图    3.贴上代码:写了发送一字节数据函数,发送全部字节函数,加上一些写了很久的解释(求赞)。

    2024年02月08日
    浏览(61)
  • 51单片机---编程实现流水灯----键盘控制数码管显示--利用74LS164扩展并行输出口---定时中断方式驱动一个数码管

    目录 基于51单片机,用c语言编程实现流水灯 代码: 使用C语言编写的基于51单片机的键盘控制数码管显示 代码: 基于51单片机,用c语言编程实现利用74LS164扩展并行输出口 代码: 基于51单片机,用c语言编程实现定时中断方式驱动一个数码管  代码:  1- 2- 上述代码中,使用

    2024年02月16日
    浏览(51)
  • 桂电 数电实验 期末考试 试卷+解析(74LS192 + 74LS153 + 74LS139 + 74LS00 / 74LS20)

    目录 考试注意事项 A卷    74LS192 + 74LS00 B卷  74LS153 + 74LS00 / 74LS20 + 74LS139  C卷   74LS153 + 74LS00 / 74LS20 + 74LS139 课程感悟 1.考试前请检查实验箱号和仪器号与座位号是否一样,不一样请请示老师更换; 2.请自行检查导线、芯片、仪器的好坏,如有问题,请及时找教师更换;否则由

    2024年02月03日
    浏览(46)
  • KT148A语音芯片智能锁扩展语音地址以及如何支持大量小文件的打包

    智能锁的语音播放需求中,有很多需要多国语言合并在一起的需求 其中语音文件数多,并且每个语音文件小的特点 如果使用OTP的语音芯片,就很麻烦,因为用户不可烧录,调试也很繁琐 同时大容量的又很贵,所以使用KT148A-sop8的flash型语音芯片就是最优的解决方案 解决KT14

    2024年01月18日
    浏览(59)
  • 2021-06-10 Multisim的74LS192功能表及555时基74LS190

    缘由https://ask.csdn.net/questions/7445811?spm=1005.2025.3001.5141以及60s倒计时电路连接后没有显示 - 24小时必答区 74LS192芯片是一个具有双计数功能的芯片,既可以做加计数,也可以做减计数。 1、A、B、C、D    置数输入端,管脚悬空相当于接低电平“0”; 2、Qa、Qb、Qc、Qd     数字信

    2024年02月06日
    浏览(114)
  • 74LS系列芯片简记——00-09

            由于兴趣与实际需求特学习对应的数字芯片,以此笔记简略记录用途等,如有不足欢迎批评指正。欢迎大家踊跃交流。前期门芯片讲述较为简单。 74LS00( 四组2输入与非门) 逻辑为: 可用于进行与非判断,基本RS触发器,与非门方波发生器等。其中与非门1、2与外界

    2024年02月08日
    浏览(45)
  • 2021-06-02 Multisim 14.0 74LS160异步21进制74LS161组成61进制160与161的区别154显示193加减

    74ls160是十进制计数器,也就是说它只能记十个数从0000-1001(0-9)到9之后再来时钟就回到0,首先是clk,这是时钟。之后是rco,这是输出,MR是复位低电频有效(图上接线前面花圈的都是低电平有效)load是置数信号,当他为低电平时,在始终作用下读入D0到D3。为了使161正常工作

    2024年02月13日
    浏览(46)
  • 使用74LS161设计任意进制计数器

    可预置的四位二进制同步计数器74LS161具有并行预置数据、清零、置数、计数和保持功能,并且有进位输出端,可以串接计数器使用。引脚排列如图7-1所示,功能表见7-2所示。 图7-1 74LS161引脚排列 从下表7-2中可知,该计数器具有信号清零端 ,信号使能端CEP、CET,信号置数端

    2024年02月02日
    浏览(65)
  • 用74ls90及少量器件制作电子时钟

    2022-12-22 前言:用74ls90及少量器件制作电子时钟是一个电子技术基础的作业,设计的过程中顺便也就写了这篇文章,分享一下在设计中的一些思路。 内容要求:电子时钟,1.实现时分秒,2.可进行电子时钟清零,3.具有设置时、分、秒功能。 设计一个元件时,首先最重要的是了

    2024年02月08日
    浏览(106)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包