⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ic4094.c

📁 当微处理器的I/O端口不够使用,可用IC4094来扩充.
💻 C
字号:
//IC4094扩充端口的应用
#include "reg51.h"
#include "intrins.h"

typedef    unsigned char     Byte;
typedef    unsigned int      Word;
typedef    unsigned long     Dword;	  
typedef	   bit 		     Bool ;
sbit STROBEl_PIN = P1^0;		//闸门
sbit DATA_PIN = P1^1;	//数据脚
sbit CLK_PIN = P1^2;	//时钟
sbit OE_PIN = P1^3;		//使能脚

void Out_Put4094_1(Byte value)
{
	OE_PIN = 1;			//使能
	Data_Tx8bit(value);
	Strobel();
	OE_PIN = 0;			//不使能
}

//1位输出
void Out_Put4094_2(void)
{
	OE_PIN = 1;			//使能
	OutPutData |= 0x02;	//Q2输出1
	Data_Tx8bit(OutPutData1);
	Strobel();
	OE_PIN = 0;			//不使能
}

void Out_Put4094_3(void)
{
	OE_PIN = 1;				//使能
	OutPutData &= ~(0x02);	//Q2输出0	
	Data_Tx8bit(OutPutData1);
	Strobel();
	OE_PIN = 0;				//不使能
}

//2位输出
void Out_Put4094_4(void)
{
	OE_PIN = 1;			//使能
	OutPutData |= 0x02;	//Q2输出1
	OutPutData &= ~(0x02);	//Q3输出0
	Data_Tx8bit(OutPutData1);
	Strobel();
	OE_PIN = 0;			//不使能
}

void Out_Put4094_5(void)
{
	OE_PIN = 1;			//使能
	OutPutData |= 0x02;
	Data_Tx8bit(OutPutData1);
	Strobel();
	OE_PIN = 0;			//不使能
}


void Data_Tx8bit(Byte value)
{
	Byte i;
	for(i=0; i<8; i++)
	{
		if(value&80)
		{
			DATA_PIN = 1;
		}
		else
		{
			DATA_PIN = 0;
		}
		value <<=1;
		Clk_Delay();
		CLK_PIN  = 1;
		Clk_Delay();
		CLK_PIN  = 0;
		Clk_Delay();		
	}
}

void Strbel(void)
{
	STROBE1_PIN = 0;	//P10=0--1--0
	Clk_Delay();
	STROBE1_PIN = 1;
	Clk_Delay();
	STROBE1_PIN = 0;
	Clk_Delay();
}

//50us
void Clk_Delay(void)
{
	Byte i;
	for(i=0; i<6; i++)
	;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -