0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

两种单片机IO扩展的方法和代码免费下载

Wildesbeast 来源:单片机教程网 作者:单片机教程网 2020-08-09 14:13 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

下面介绍两种单片机io扩展的方法

!!!!用8243扩展单片机IO接口

/*----------------------------------------------------------------------------------------------------------------

函数名称:Config.h

功能描述:8243端口配置

输入参数:无

输出参数:无

特殊说明:在不同的单片机应用系统中,需要做相应调整

//----------------------------------------------------------------------------------------------------------------*/

#include 《reg52.h》

sbit ContrBit0=P1^0;

sbit ContrBit1=P1^1;

sbit ContrBit2=P1^2;

sbit ContrBit3=P1^3;

sbit PROG =P1^4;

sbit CS =P1^5;

sfr data_buf=0x90;

/*----------------------------------------------------------------------------------------------------------------

函数名称:driver8243

功能描述:驱动8243

输入参数:sele_P端口选择,sele_M工作模式选择,out_data输出模式下的输出数据

输出参数:in_data接收模式返回接收到的数据,其它模式返回0

特殊说明:在不同的单片机应用系统中,需要做相应得调整

//----------------------------------------------------------------------------------------------------------------*/

#include《config.h》

char driver8243(char sele_P,char sele_M,char out_data)

{

char in_data=0;

PROG=1; //置PROG为高电平

//开始写控制字

if((sele_P&0x01)==0) //将控制字最低位送到8243的p2.0

{

ContrBit0=0;

}

else

{

ContrBit0=1;

}

if((sele_P&0x02)==0) //将控制字第二位送到8243的p2.1

{

ContrBit1=0;

}

else

{

ContrBit1=1; //以上两位共同指定端口地址

}

//写端口工作模式控制字

if((sele_M&0x01)==0) //将端口工作模式控制字低位送到8243的p2.2

{

ContrBit2=0;

}

else

{

ContrBit2=1;

}

if((sele_M&0x01)==0) //将端口工作模式控制字高位送到8243的p2.3

{

ContrBit3=0;

}

else

{

ContrBit3=1;

} //写控制字完成

PROG=0; //在PROG上产生下降沿

switch(sele_M&0x03) //判断工作模式

{

case 0: break; //sele_M=B00为输入,不处理,等待上升沿

case 1: data_buf=out_data;break; //sele_M=B01为输出,直接送数据

case 2: data_buf=out_data;break; //sele_M=B10为逻辑或,直接送数据

case 3: data_buf=out_data;break; //sele_M=B11为逻辑与,直接送数据

}

PROG=1; //在PROG上产生上升沿

if((sele_M&0x03)==0) //sele_M=B00为输入,接收数据

in_data=(data_buf&0x0F);

return(in_data); //sele_M=B00,返回接收到的数据

//sele_M!=B00,返回0

}

void main( void)

{

char receive_data;

receive_data= driver8243(1,0,5);

}

单片机io扩展方法2:

=======================单片机中IO口扩展IC===================================

单片机中IO口数量非常有限,做一些少量的外围控制还可以,如果系统稍大一些就要加外加芯片来扩展IO数量,在应用过程

中我发现PCF8574这款芯片非常理想具有8路的输入输出的IO口同时具有锁存功能,和MCU的通讯方式为I2C,还具有中断

输出功能当其中一个脚拉低时,就从中断脚输出一个低电平来通知单片机响应,这样MCU就可以按自己的方式工作当有外部触

发 时才读取PCF8574做为外部扩展按键等非常方便。

现在这种片子在使用中由于在使用中没有规化好端口的输入输出,在具体的应用时不太符合常规,大家也有所看法,所以philips最近

又出了一款新的IO扩展芯片打算取尔代之,地址也是和PCF8574一样它的名字叫PCA9554

===================================================================================

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6074

    文章

    45340

    浏览量

    663449
  • IO
    IO
    +关注

    关注

    0

    文章

    505

    浏览量

    41896
  • 接口
    +关注

    关注

    33

    文章

    9443

    浏览量

    156134
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    单片机系统硬件的调试方法

    单片机的系统硬件调试,通常有静态调试和动态调试两种不同,前者是通过目测、万能表测试、加电检查、联机检查的方法,在加电于样机之前.对样机的型号规格,以及安装要求等进行核对,同时检查 电源 系统.防止
    发表于 12-03 06:10

    用PLC实现卷径计算的两种算法

    卷径计算,是动态计算如钢卷,纸卷等存料量的一种方法,它是实现张力控制和自动充放料、以及甩尾控制的重要前提。卷径计算目前主流的方法两种,一是根据
    的头像 发表于 11-14 16:54 1349次阅读
    用PLC实现卷径计算的<b class='flag-5'>两种</b>算法

    怎么测单片机系统频率

    单片机系统频率是指单片机工作时的时钟频率,它直接影响单片机的运行速度和处理能力,准确测量系统频率对单片机应用开发、程序调试和性能优化具有重要意义。测量
    的头像 发表于 07-25 11:39 474次阅读

    单片机怎么烧程序

    骤,才能让单片机发挥作用。 烧程序前的准备工作 单片机烧程序前,需要做好硬件和软件方面的准备。硬件方面,核心设备包括目标单片机、编程器(或下载
    的头像 发表于 07-23 11:47 650次阅读

    纳祥科技NX2069B,PIN TO PIN PCF8574的QFN16小封装单片机拓展实用IC

    NAXIANGTECHNOLOGY纳祥科技NX2069BI2STOIO单片机扩展I2STOIO单片机扩展纳祥科技NX2069B是一款单片机
    的头像 发表于 07-15 16:06 476次阅读
    纳祥科技NX2069B,PIN TO PIN PCF8574的QFN16小封装<b class='flag-5'>单片机</b>拓展实用IC

    单片机原理及应用

    本书全面系统地介绍了 MCS-51 系列单片机的基本结构、工作原理及应用技术。主要内容包括:微型计算机的基础知识、MCS-51 单片机的基本结构、汇编语言和 C51 语言程序设计方法、中断系统
    发表于 06-16 16:58

    STC单片机范例程序

    电子发烧友网站提供《STC单片机范例程序.zip》资料免费下载
    发表于 06-04 16:27 8次下载

    单片机和伺服有什么区别

    单片机和伺服的区别 单片机(Microcontroller)和伺服(Servo System)是两种完全不同的技术概念,分别属于 控制系统硬件 和 运动控制执行系统 。以下是它们的详细对比和区别
    的头像 发表于 05-26 09:18 577次阅读

    瑞萨RA8D1单片机IO中断配置实现方法

    本文为结合瑞萨e2 studio工具,以及CPKCOR_RA8D1B评估板,给大家讲述瑞萨RA8D1单片机IO中断配置实现的方法
    的头像 发表于 04-09 15:05 1516次阅读
    瑞萨RA8D1<b class='flag-5'>单片机</b><b class='flag-5'>IO</b>中断配置实现<b class='flag-5'>方法</b>

    PLC和单片机到底有什么区别?

    在自动化和嵌入式开发领域,PLC和单片机两种常见的控制系统。虽然它们有许多相似之处,但它们的功能、应用范围、开发成本等方面也存在显著差异。本文将从多个角度详细探讨这者的不同之处,帮助大家更好地理
    的头像 发表于 04-07 11:58 4627次阅读
    PLC和<b class='flag-5'>单片机</b>到底有什么区别?

    单片机学习—C51源代码和Proteus仿真文件

    单片机学习—C51源代码和Proteus仿真文件.zip, 有各种例子
    发表于 02-10 13:46 2次下载

    GD32单片机GPIO结构及注意事项

    电子发烧友网站提供《GD32单片机GPIO结构及注意事项.pdf》资料免费下载
    发表于 02-07 17:27 3次下载
    GD32<b class='flag-5'>单片机</b>GPIO结构及注意事项

    AN4875-AVR DD系列单片机入门

    电子发烧友网站提供《AN4875-AVR DD系列单片机入门.pdf》资料免费下载
    发表于 01-21 14:37 0次下载
    AN4875-AVR DD系列<b class='flag-5'>单片机</b>入门

    32位单片机相关资料和解决方案参考指南

    电子发烧友网站提供《32位单片机相关资料和解决方案参考指南.pdf》资料免费下载
    发表于 01-21 14:00 0次下载
    32位<b class='flag-5'>单片机</b>相关资料和解决方案参考指南

    怎么提升单片机代码执行效率

    ​ 提升单片机代码执行效率需要从多个方面入手,包括代码优化、硬件资源利用、编译器设置、中断处理优化以及其他技巧等。在实际应用中,需要根据具体需求和硬件条件综合考虑这些因素,以实现最佳的性能表现。 ​
    的头像 发表于 01-10 11:06 937次阅读