i/o口不能完全用于输入/输出操作,当需要扩展外部存储器时,p0、p2口用作地址总线和数据总线,此时能用的i/o口就只有p1和p3口,如果再使用串行通信,i/o口就不够使用了,需要扩展i/o口
两种方式:
① 采用普通锁存器、三态门等芯片来进行简单的扩展(如74ls373或74ls244等)
②采用可编程的i/o芯片来扩展(如8255或8155等)
要求:用4个开关控制4个led的亮灭状态,其中采用74ls244控制开关的输入,采用74ls373控制led输出
代码:
电路图:
过程分析:
#18 p0=0xff;通过拉高p0口置为1111 1111,即关闭led灯;
#19 com=0;对cd4071 u2.a的1和cd4071 u2.b的5输入一个0;
#20 rd = 0;对cd4071 u2.a的2输入一个0;
由于cd4071的功能是执行逻辑或运算,1和2分别输入0,则3输出0给74ls244的oe口;
74ls244缓冲驱动器的oe为使能端,低电平是有效的,高电平时输出为三态,此时通过cd4071传给oe低电平,使开关的电平可以通过74ls244传入p0;
开关状态传入p0;
#21 temp = p0;通过定义的unsigned char temp来存放p0的状态
#22 rd = 1;对cd4071 u2.a的2输入一个1;
1=0;2=1;此时或门输出为1;
74ls244的oe端高电平时输出为三态,关闭74ls244
#23 wr = 1;对cd4071 u2.b的6输入一个1;
此时5=0;6=1;cd4071 u2.b的7输出一个1;
74ls343的oe为低电平时,用作地址锁存器;le为高电平时,输出q0-q7状态与d0-d7状态相同;当le发生负跳变(1->0)时,输入端的d0-d7锁入q0-q7
#24 p0 = temp;temp中的数据存入p0,传送到74ls343的d端;
#25 wr = 0;对cd4071 u2.b的6输入一个0;
此时5=0;6=0;cd4071 u2.b的7输出一个0;
le的状态从1->0,发生负跳变,输出q0-q7
led等接受到开关的情况,发生亮灭。
实验结果
关于直流分流器的应用,它的运行原理是怎样的
单相逆变器的工作原理讲解
华为HMS Core正式发布,开发者的新机会来临
云上办公兴起,华为云桌面Workspace更靠谱
传祺汽车实现点对点自动驾驶,车内可打麻将?
并行I/O口扩展的2种方式实例介绍
四种单片机按键软硬件设计方案介绍
NAS网络存储器的网站浏览器支持
ME300实例-1602LCD显示步进电机键控正反转实验-C
荣耀YOYO音箱拆解:4600分AI智商如何炼成?
什么是空地数据链系统
与CPU相比,人工智能芯片有何独特之处?
易华录携手伙伴加快推动数字经济发展
图解数字孪生应用白皮书(2020版)
Allegro的新传感器系列——A33110和A33115
赛目科技副总经理杨强将出席2023北京智源大会并发表主题演讲
高压功率器件的开关技术 功率器件的硬开关和软开关
如何选对LED锡膏?
关于EV12AD500A数模转换器E2V品牌的特征介绍
中兴通讯在OFC期间展示了在光通信领域领先的综合实力