并行I/O口扩展实例

//《51单片机原理及应用(第二版)——基于Keil C与Proteus》第四章例4.4

I/O口不能完全用于输入/输出操作,当需要扩展外部存储器时,P0、P2口用作地址总线和数据总线,此时能用的I/O口就只有P1和P3口,如果再使用串行通信,I/O口就不够使用了,需要扩展I/O口

两种方式:

① 采用普通锁存器、三态门等芯片来进行简单的扩展(如74LS373或74LS244等)

② 采用可编程的I/O芯片来扩展(如8255或8155等)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

要求:用4个开关控制4个LED的亮灭状态,其中采用74LS244控制开关的输入,采用74LS373控制LED输出

代码:

电路图:

过程分析:

过程://右键点击图片"在新标签页中打开图片"即可放大

  1. #18 P0=0xff; 通过拉高P0口置为1111 1111,即关闭LED灯;
  2. 和CD4071 U2.B的5输入一个0;
  3. 输入一个0;
  4. 由于CD4071的功能是执行逻辑或运算,1和2分别输入0,则3输出0给74LS244的OE口;
  5. 74LS244缓冲驱动器的OE为使能端,低电平是有效的,高电平时输出为三态,此时通过CD4071传给OE低电平,使开关的电平可以通过74LS244传入P0;
  6. 开关状态传入P0;
  7. #21 temp = P0; 通过定义的unsigned char temp来存放P0的状态
  8. 输入一个1;
  9. 1=0;2=1;此时或门输出为1;
  10. 74LS244的OE端高电平时输出为三态,关闭74LS244
  11. 输入一个1;
  12. 此时5=0;6=1;CD4071 U2.B的7输出一个1;
  13. 74LS343的OE为低电平时,用作地址锁存器;LE为高电平时,输出Q0-Q7状态与D0-D7状态相同;当LE发生负跳变(1->0)时,输入端的D0-D7锁入Q0-Q7
  14. #24 P0 = temp; temp中的数据存入P0,传送到74LS343的D端;
  15. 输入一个0;
  16. 此时5=0;6=0;CD4071 U2.B的7输出一个0;
  17. LE的状态从1->0,发生负跳变,输出Q0-Q7
  18. LED等接受到开关的情况,发生亮灭。

实验结果

51单片机 | 并行I/O口扩展实例(74LS244/74LS373/4071)的更多相关文章

  1. 51单片机 | A/D转换器实现数字电压表实例

    ———————————————————————————————————————————— ADC0809 - - - - - - - - - - - - - - - - - - - - - - - - ...

  2. 51单片机 | 实现SMC1602液晶屏显示实例

    ———————————————————————————————————————————— LCD1602 - - - - - - - - - - - - - - - - - - - - - - - - ...

  3. STM32GPIO口8种模式细致分析(类比51单片机)

    关于STM32GPIO口的8种工作模式,我们先引出一些问题? STM32GPIO口如果既要输入又要输出怎么办? 1.浮空输入模式 上图红色的表示便是浮空输入的过程,外部输入时0读出的就是0,外部输入时 ...

  4. 51单片机I/O口直接输入输出实例(附调试及分析过程)

    51单片机P0/P1/P2/P3口的区别: P0口要作为低8位地址总线和8位数据总线用,这种情况下P0口不能用作I/O,要先作为地址总线对外传送低8位的地址,然后作为数据总线对外交换数据: P1口只能 ...

  5. 51单片机 | I/O口直接输入输出实例

    51单片机P0/P1/P2/P3口的区别: P0口要作为低8位地址总线和8位数据总线用,这种情况下P0口不能用作I/O,要先作为地址总线对外传送低8位的地址,然后作为数据总线对外交换数据: P1口只能 ...

  6. 51单片机:IO口扩展芯片用法(74HC165,74HC595)

    IO口扩展芯片,主要是解决单片机IO口太少. 74HC165:数据从并转串 74HC595:数据从串转并 两种芯片,都是通过时序电路,加上移位功能,进行数据传输 74HC165:数据从并转串.以下实例 ...

  7. 51单片机I/O引脚IO口工作原理

    51单片机I/O引脚IO口工作原理 一.51单片机管脚p0.p1.p2.p3口区别如下: 1.意思不同P0口作输出口用时,需加上拉电阻.P0口有复用功能.当对外部存储器进行读写操作时,P0口先是提供外 ...

  8. 关于51单片机P0口的结构及上拉问题

    1.P0作为地址数据总线时,V1和V2是一起工作的,构成推挽结构.高电平时,V1打开,V2截止:低电平时,V1截止,V2打开.这种情况下不用外接上拉电阻.而且,当V1打开,V2截止,输出高电平的时候, ...

  9. 51单片机GPIO口模拟串口通信

    51单片机GPIO口模拟串口通信 标签: bytetimer终端存储 2011-08-03 11:06 6387人阅读 评论(2) 收藏 举报 本文章已收录于:   分类: 深入C语言(20) 作者同 ...

随机推荐

  1. OpenGL入门学习 教程 (五)三维的空间变换

    http://oulehui.blog.163.com/blog/static/796146982011924428755/ 在前面绘制几何图形的时候,大家是否觉得我们绘图的范围太狭隘了呢?坐标只能从 ...

  2. [Oracle] 关系型数据库排序算法和数据结构以及关联查询

    关系型数据库排序算法和数据结构以及关联查询 1. Merge sort 理解merge sort算法将有助于更好地理解数据库join操作 - merge join 算法逻辑 将2个有序的大小为N/2的 ...

  3. [Oracle] Setup DataGuard

    Oracle一步步搭建DataGuard DataGuard环境: OS: SuSe 10 Primary DB: IP address:1.1.1.1 user:root passwd:****** ...

  4. mysql-MHA 故障收集

    在manager 主机上开启监控服务,启动不了 [root@manager ~]# managerStart [] [root@manager ~]# managerStatus app1 is st ...

  5. spring JPA写法一种

    第一次用,搞了半天,终于知道了大概. 基于ORM的JPA还是蛮好用的, 这次是实现一个MANGODB的日志存储和检索. PRISM用的. repository的写法: package paic.sto ...

  6. AC日记——Vicious Keyboard codeforces 801a

    801A - Vicious Keyboard 思路: 水题: 来,上代码: #include <cstdio> #include <cstring> #include < ...

  7. MSSQL删除重复记录

    SQL(根据自己需要改列名.表名): delete from tableA where id not in (select min(id) from tableA group by name,age)

  8. jQuery Lazy Load图片懒加载

    传送门:官网地址,jQuery Lazy Load v1.7.2下载,Github 使用方法: 1.引用js文件 <script src="jquery.js">< ...

  9. vue的路由设置小结

    vue的路由设置小结 // 异步路由的编写示例.其中针对component字段进行懒加载及分块处理,提升首屏加载速度的同时,也可以手动控制让某些页面合并到一个单独的js文件中,而不是每个页面都是一个j ...

  10. 四. Java继承和多态3. 继承中的方法的覆盖和重载

    在类继承中,子类可以修改从父类继承来的方法,也就是说子类能创建一个与父类方法有不同功能的方法,但具有相同的名称.返回值类型.参数列表. 如果在新类中定义一个方法,其名称.返回值类型和参数列表正好与父类 ...