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

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

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

    关注

    6044

    文章

    44632

    浏览量

    639339
  • IO
    IO
    +关注

    关注

    0

    文章

    467

    浏览量

    39434
  • 接口
    +关注

    关注

    33

    文章

    8728

    浏览量

    152094
收藏 人收藏

    评论

    相关推荐

    如何写出稳定的单片机代码

    这篇文章分享怎么写出稳定的单片机代码。     我对优秀代码的理解,大体分为个部分:高效和稳定。   者都能做到很好的,如果靠自己摸索,
    的头像 发表于 11-15 16:40 492次阅读
    如何写出稳定的<b class='flag-5'>单片机</b><b class='flag-5'>代码</b>

    比较分析两种不同的可提高栅极驱动电流的方法

    电子发烧友网站提供《比较分析两种不同的可提高栅极驱动电流的方法.pdf》资料免费下载
    发表于 09-23 11:13 0次下载
    比较分析<b class='flag-5'>两种</b>不同的可提高栅极驱动电流的<b class='flag-5'>方法</b>

    单片机基本io功能调试过程

    所使用的单片机型号以及需要调试的IO口。不同型号的单片机IO口的配置和特性上可能有所不同。 查阅单片机手册 : 查阅
    的头像 发表于 09-14 14:38 826次阅读

    单片机io一般包含哪几种状态

    单片机IO口(Input/Output,即输入输出端口)通常包含以下几种状态,这些状态使得单片机能够灵活地与外部设备进行数据交互和控制。以下是对这些状态的说明: 输入状态(Input State
    的头像 发表于 09-14 14:35 948次阅读

    单片机io口怎么配置成输出口

    单片机IO口配置成输出口的过程通常涉及对单片机内部寄存器的操作。不同型号的单片机在寄存器配置和编程方式上可能有所不同,但基本原理是相似的。以下是一个通用的步骤,用于将
    的头像 发表于 09-14 14:33 1013次阅读

    单片机io口输出电流多大

    单片机IO口的输出电流大小会受到多种因素的影响,包括单片机的型号、IO口的配置模式以及外部电路的设计等。以下是对单片机
    的头像 发表于 09-14 14:29 2505次阅读

    单片机io口的四工作状态

    )是单片机与外部世界进行数据交换的接口。每个I/O口可以配置为输入或输出状态,或者同时具备这两种功能。I/O口的状态可以通过编程来控制,以满足不同的应用需求。 2. 单片机I/O口的工作原理 I/O口的工作原理涉及到数字电路的基
    的头像 发表于 09-14 14:24 2157次阅读

    单片机烧录程序的线比单片机上的少还能烧录吗

    的存储器通常分为类:ROM(只读存储器)和RAM(随机存取存储器)。ROM用于存储程序代码,而RAM用于存储程序运行过程中的数据。烧录过程就是将程序代码写入ROM中。 单片机烧录
    的头像 发表于 09-02 09:54 635次阅读

    提高MSP430G系列单片机的Flash擦写寿命的方法

    电子发烧友网站提供《提高MSP430G系列单片机的Flash擦写寿命的方法.pdf》资料免费下载
    发表于 08-28 11:51 0次下载
    提高MSP430G系列<b class='flag-5'>单片机</b>的Flash擦写寿命的<b class='flag-5'>方法</b>

    PLC与单片机的区别是什么

    在工业自动化和电子领域中,PLC(Programmable Logic Controller,可编程逻辑控制器)和单片机(Single-Chip Microcomputer)是两种常见的控制设备
    的头像 发表于 05-28 16:11 2166次阅读

    请问如何扩展单片机IO口?

    在很多项目上都会因单片机IO口不够、或降低硬件成本要扩展IO口,特别在一些机械设备上,如本人从事的这个行业,有时候由一个单片机
    发表于 04-24 06:30

    FH8A1‍8A是一io型,完全静态,基于otp的控制器8位MCU单片机

    FH8A1‍8A是一io型,完全静态,基于otp的控制器8位MCU单片机
    的头像 发表于 03-25 17:35 660次阅读

    基于单片机的燃气报警设计

    电子发烧友网站提供《基于单片机的燃气报警设计.doc》资料免费下载
    发表于 03-04 09:46 1次下载

    两种简单、精确、灵活的热电偶温度测量方法

    电子发烧友网站提供《两种简单、精确、灵活的热电偶温度测量方法.pdf》资料免费下载
    发表于 02-28 14:41 1次下载

    单片机编程和plc编程有什么区别

    单片机编程和PLC编程是两种不同的嵌入式系统开发领域。在这篇文章中,我们将详细探讨这两种编程方式的区别。首先,我们将简要介绍单片机和PLC的基本概念,然后分析它们的不同特点和使用场景。
    的头像 发表于 02-22 10:23 3031次阅读