专栏首页嵌入式学习巧用c语言数组来操作数字逻辑电路

巧用c语言数组来操作数字逻辑电路

这个算是开发中的小技巧了,也不知道如何起标题。

通常为了节省单片机的引脚,我我们同城会使用比较多的数字电路来扩展,比如74hc574的D触发器,74ls138的38译码器,3态八路缓冲器/线路驱动器74hc541,还有就是串进并出的74hc595.

当然还有与非门、与门、或门等等最基本的数字逻辑电路来构成gpio的扩展。

数字电路的扩展的理解:

这里有两点比较值得注意的, 1、很多时候,8个引脚会控制16个引脚,通过d触发器来进行选择哪个8路,而且有可能前级的触发器引脚也是有几个(比如3个)来控制的,因此引脚1的上升沿输出的时候,就不能影响到引脚2的电平,因此前三个引脚在真值表设计的时候,就要注意,1上升沿的时候,2引脚保持高电平或保持低电平,反过来同理。

2、38译码器当中也有使能端的,比如74ls138,只有e3=H,E1=L,E2=L的情况下,就会正常输出某一路低电平,而如果上述三个是能引尖叫有一个电平不正常就会输出全H。这样就可以两个引脚同时互斥的控制两个38译码器。从而到达引脚的扩展。

软件编程 通常硬件工程师在设计的时候是有一定的规律的,但是不一定十分符合软件的编写,因为涉及到pcb的布局等,因此需要软件来完成。 举个例子:

D触发器的输出引脚是这样的,对应到电路上面某一个设备的序号是红色标注的,很明显,不太符合我们软件上面的操作,我们希望Q0-Q7按顺序递增,但是很无奈,实际是乱序的,因此可以保存一个枚举,把后面的乱序的做一个整理。

举个例子: 左边是实物上器件的序号,右边是D触发器的引脚序号。 typedef enum { VAT0=5 VAT1=0 VAT2=2 VAT3=1 . . VAT6=7 VAT7=4 };

然后定义一个数组: const static vat_conv[]= { [0] = VAT0 [1] = VAT1 [2] = VAT2 [3] = VAT3 . . . };

从这个数组可以看到,我要控制0通道的设备,实际上,软件是操作VAT0的引脚。省去了穷举法的if语句。

最后在函数中的参数如下: void set( uint8_t ch) { set_driver(vat_conv[ch]); }

这样,set函数参数ch可以直接是0-7,具体的驱动由set_driver来完成,期间用数组来转换即可,非常类似以前数码管的操作。 总不可能用穷举法的方式,点亮1,输出8bit数据,点亮2,在数据,8个if语句,多浪费。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • IAR添加debug和release选项

    在IAR的Workspace窗口顶部的下拉菜单中有两个选项,Debug和Release。

    用户4645519
  • stm32——fmsc控制外部SRAM——小结

    近期项目中使用到了 IS64LV25616AL 的芯片,因此我要总结一下。 IS64LV25616AL这个是256*16的的,数据格式是16位,所以一共有5...

    用户4645519
  • 串口+RS485驱动

    其实RS485不算什么协议,只是物理层做了差分传输,AB两线的电压差来表示0,1,0,1,可靠性和距离更加好,因此,一个串口外设只能作为半双工使用,而RS232...

    用户4645519
  • ESP8266简单介绍

    是面向物联网应用的高性价比、高度集成的 Wi-Fi MCU。MCU是为控制单元的意思。

    挥刀北上
  • Arduino数字引脚作为GPIO的使用

    引脚(pin)是对芯片的外部物理接口的一个称呼,它是在不把这个物理接口投入到具体应用场合下的称呼。例如,我们可以说,某某芯片的P1.5引脚可以作为数字输出驱动外...

    云深无际
  • 4-51单片机WIFI学习(开发板51单片机自动冷启动下载原理)

    上一篇链接 http://www.cnblogs.com/yangfengwu/p/8743936.html 这一篇说一下自己板子的51单片机自动冷启动下载原理...

    杨奉武
  • Arduino Sensor Shield v5 传感器扩展板

    Sensor Shield V5.0适用于Uno,Mega 2560和类似外形的Arduino板,并提供了一种方便的方法来连接传感器和其他外围设备,例如伺服电机...

    云深无际
  • PointPillars/SECOND代码调试笔记

    代码链接上一篇文章已经显示。目前最新版的SECOND已经集成了PointPillars功能。

    点云乐课堂
  • 07 设计模式 桥接模式

    桥接模式,指的就是像桥一样将两个类关联起来,将抽象与实现分离,使得每个部分可以独立变化。

    shimeath
  • 第六课:在LCD驱动中使用设备树

    转载请注明文章地址 http://wiki.100ask.org/Linux_devicetree

    韦东山

扫码关注云+社区

领取腾讯云代金券