下面介绍两种单片机io扩展的方法
!!!!用8243扩展单片机IO接口
/*------------------------------------------------------------------------------------------------
函数名称:Config.h
功能描述:8243端口配置
输入参数:无
输出参数:无
特殊说明:在不同的单片机应用系统中,需要做相应调整
//----------------------------------------------------------------------------------------*/
#include
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
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
======================================================
关键字:单片机 io扩展 8243端口
引用地址:
单片机io扩展程序设计
推荐阅读最新更新时间:2024-03-16 13:18
HOLTEK新推出BC68F2420 Sub-1GHz RF超再生OOK Receiver SoC MCU
Holtek新推出具低耗电、高接收灵敏特性的RF 超再生OOK Receiver SoC Flash MCU – BC68F2420,适用在315M/433MHz ISM频段于无线吊扇、无线门铃等无线接收产品以及智能家居无线控制应用。下面就随单片机小编一起来了解一下相关内容吧。 HOLTEK新推出BC68F2420 Sub-1GHz RF超再生OOK Receiver SoC MCU BC68F2420的MCU资源为1K×14 Flash Program ROM、64 Byte Data RAM、32 Byte True Data EEPROM可用来储存参数设定、10-bit CTM及PTM各一组、两组Time base
[单片机]
51单片机----sbit
sbit: 定义特殊功能寄存器的位变量。 典型应用:sbit P0_0=P0^0;//即定义P0_0为P0口的第1位,以便进行位操作。 用法: 在C语言里,如果直接写P1.0,C编译器并不能识别,而且P1.0也不是一个合法的C语言变量名,所以得给它另起一个名字,这里起的名为P1_0,可是P1_0是不是就是P1.0呢?你这么认为,C编译器可不这么认为,所以必须给它们建立联系,这里使用了Keil C的关键字sbit来定义,sbit的用法有三种: 第一种方法:sbit 位变量名=地址值 第二种方法:sbit 位变量名=SFR名称^变量位地址值 第三种方法:sbit 位变量名=SFR地址值^变量位地址值 如定义PSW中的O
[单片机]
浅论单片机在温控系统中的应用
一、单片机在贮液容器温控系统中的应用 该系统中以贮液容器温度为被控参数,蒸汽流量为控制参数,输入贮液容器冷物料的初温为前馈控制,构成前馈一反馈控制系统。发挥前馈控制和反馈控制的各自优势,将可测而不可控的干扰由前馈控制克服,其他干扰由反馈控制克服,从而达到控制贮液容器温度。满足工艺要求的目的。 (一)硬件设计。选单片机AT89C51为主机,配以两路传感变送器、多路开关、A/D转换器、D/A转换器、V/I转换器、调节阀等实现对贮液容器温度的自动控制,同时还设有报警电路、键盘和显示电路。系统在稳态时,贮液容器的温度恒定在工艺要求的数值不变。当冷物料的初始温度与其设定值相比发生变化时,如果变化很小,将完全由前馈控制来克服这
[单片机]
AVR单片机的监控系统设计方案
众所周知,安全是电力企业一个永恒的主题,而安全工器具的好坏,将直接影响着电力企业在生产过程中的人身和设备安全。笔者提出了一种基于AVR单片机的安全工器具监控系统的设计方案,主要是对安全工器具的离就位状态信息、有效使用期限和安全工器具柜内的温湿度状况等进行监控,可以根据实现安全工器具柜内温湿度的自动调节,能够自动记录安全工器具的相关信息。本文首先阐述了系统的总体结构,然后详细论述了系统的硬件设计和软件设计。 1 安全工器具监控系统的总体结构 1.1 系统结构 本文所设计的安全工器具监控系统主要分为下位机数据采集和上位机数据管理两个部分,两者之间通过网络进行通信。 系统首先通过数据采集板对安全工器具柜的相关量进行采集,然后将采
[单片机]
基于单片机C语言编程格式
1. 凡是注解均用如下长度的字符数,此数是正常情况下在keil中A4纸的打印长度(105个字符),在word中设置左右边距为1.0cm。 // 2. 文件头的格式: /* * Company Name * Address * * (c) Copyright 20xx, Company Name, City, State * All Rights Reserved * * * FileName : * Version : * P
[单片机]
利用单片机实现远程电源控制
我单位有一无人值守的机房位于一高山山顶上,上山的路是600多级的台阶。因通信需要,有时要开关某些机器设备,操作上虽然简单,但要工作人员花10多分钟爬一趟山,不仅辛苦,而且拖延了时间。为解决此问题,本人利用89C2051单片机,设计了一遥控开关,在山下机房便可对山顶上的设备进行开关机。 一、 原理简介 该方案的框图如下: 山顶机房及山下机房各安装一块控制板,两者之间通过专线MODEM相连。山下控制板主要功能是:将操作人员的开关信息转换成指令,发送给山顶控制板,并根据山顶控制板发来的电源通断状态报告指令,以指示灯的形式显示给操作人员。山顶控制板主要功能是:通过控制继电器的吸放来控制设备的电源,该板在接收到山下控制板
[单片机]
stc单片机不断电下载程序
stc单片机支持串口isp程序下载,不必使用专用下载器,仅使用串口就能下载程序。但每次下载程序都要断电再上电,比较麻烦。 下面介绍一种不需断电就能下载程序的方法,在程序调试时比较方便。 基本原理: stc单片机有专用的复位寄存器,通过对该寄存器写入不同的数值可以实现单片机热启动复位。 寄存器功能如下图所示: 由上图可以看出只要满足某个条件,向ISP_CONTR写入0x60,就可以实现从ISP监控区软启动启动 某个条件设置为:当串口接收到0xaa数据时,单片机执行ISP_CONTR=0x60; 指令,从ISP监控区软启动启动。 演示程序如下: //*************************STC12C541
[单片机]
恩智浦将LCD支持功能集成进ARM7微控制器系列
LPC2478和 LPC2470微控制器支持高带宽外设的同步操作,同时显著降低功耗 荷兰,爱因霍芬,2007年3月1日 ——恩智浦半导体(前身为飞利浦半导体)今日发布其全新的LPC2478微控器,这是业界唯一的提供集成的LCD支持的基于闪存的ARM7? MCU。同时推出的LPC2470是其无闪存版本。全新的微控制器配有双路 ARM? 高速总线(AHB),可实现多种高带宽外设(包括LCD、10/100以太网、USB主机/OTG/设备、和两个CAN通道)的同步操作。这一全新的恩智浦微控制器系列显著降低了成本、空间和功耗,是广泛应用于LCD面板并需要网络或因特网连接的工业、消费、零售和医疗系统产品的理想之选。 恩智浦半导体微控制器
[新品]