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

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

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

    关注

    5997

    文章

    43947

    浏览量

    620538
  • IO
    IO
    +关注

    关注

    0

    文章

    395

    浏览量

    38504
  • 接口
    +关注

    关注

    33

    文章

    7609

    浏览量

    148376
收藏 人收藏

    评论

    相关推荐

    单片机解析g代码方法

    的运动。 解析G代码是将其转化为单片机能够理解和执行的指令集。单片机解析G代码方法主要包括以下几个方面:G
    的头像 发表于 12-22 14:15 477次阅读

    avr单片机两种烧写程序方式的区别?

    最近在做一个单片机程序,有点疑问,用avrstudio烧程序接的是avrdragon,用ISPUSB是另外一个软件,这两种烧程序有什么区别?者过程都是先写熔丝,写flash,写eeprom;我试着用ISPUSB连avrsrud
    发表于 11-10 07:41

    如何连接单片机实现IO口模拟数据的接受发送?

    如何连接个51单片机,实现IO口模拟数据的接受发送
    发表于 11-03 06:56

    ch340怎么实现单片机之间的io口通信?

    使用ch340,怎么实现单片机之间的io口通信
    发表于 11-03 06:33

    利用74373芯片进行单片机IO扩展方法

    在电路设计的某些时候,微处理器(如单片机IO口不够用了,此时该怎么办呢?利用辅助芯片进行IO扩展是个简单直接的方法,能用较少的成本增多
    的头像 发表于 11-02 14:20 1170次阅读
    利用74373芯片进行<b class='flag-5'>单片机</b><b class='flag-5'>IO</b>口<b class='flag-5'>扩展</b>的<b class='flag-5'>方法</b>

    单片机IO扩展有哪几种方法

    单片机IO扩展有哪几种方法
    发表于 11-01 07:47

    单片机IO口不够用了怎么办?如何扩展单片机IO口?

    单片机IO口不够用了怎么办?如何扩展单片机IO口? 单片机是应用广泛的微处理器,其具有较高的
    的头像 发表于 10-24 11:49 5243次阅读

    基于单片机的智能仪表扩展USB 接口的方法

    电子发烧友网站提供《基于单片机的智能仪表扩展USB 接口的方法.pdf》资料免费下载
    发表于 10-19 11:01 0次下载
    基于<b class='flag-5'>单片机</b>的智能仪表<b class='flag-5'>扩展</b>USB 接口的<b class='flag-5'>方法</b>

    单片机C代码嵌套汇编的一些方法

    单片机C代码嵌套汇编的一些方法
    的头像 发表于 10-18 16:39 271次阅读
    <b class='flag-5'>单片机</b>C<b class='flag-5'>代码</b>嵌套汇编的一些<b class='flag-5'>方法</b>

    单片机用Jlink下载后的启动模式和直接用电源接在5V供电启动,两种启动模式有什么区别?

    请问单片机用Jlink下载后的启动模式和直接用电源接在5V供电启动,两种启动模式有什么区别,会对程序运行由什么影响?
    发表于 10-18 07:38

    STC ISPV6.87单片机烧录软件免费下载

    STC ISPV6.87单片机烧录软件免费下载
    发表于 09-25 06:43

    单片机4个IO口的作用

    单片机4个IO口的作用  单片机是嵌入式系统中的一种重要元器件,其可以实现数据处理、控制和通信等功能。作为单片机的一个核心部件,IO口(In
    的头像 发表于 09-22 16:21 4168次阅读

    STC单片机BRT编程脉冲输出Timer0中断取反IO输出源代码

    STC单片机BRT编程脉冲输出-Timer0中断取反IO输出源代码
    发表于 05-17 15:08 0次下载

    STC单片机串口1原样返回-Timer0中断取反IO代码

    STC单片机串口1原样返回-Timer0中断取反IO代码
    发表于 05-17 15:07 1次下载

    基于STC单片机IO口推挽输出测试例程

    STC单片机IO口推挽输出测试例程源代码
    发表于 05-12 16:21 1次下载