单片机io扩展74hc165和74hc595程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

74hc165接收函数支持联级

/**************************************************** 74hc165intn();//初始化

74hc165satin();//开始输入

接收单级数据:dat=inpute();//接收返回值到dat

使用数组保存多级:hc165pinsav(d)//d为接收个数,联级个数。******************************************************/ #ifndef __74hc165_H__

#define __74hc165_H__

#include "A T89X52.h"

#include

#include

unsigned char hc165insav[4];//保存接收数据联极

sbit ck=P1^1;//时钟2引脚。

sbit sd=P1^0;//数据9引脚。

sbit sh=P1^2;//开始输入1引脚。

//SI联级10引脚,连接下级的9引脚。

/****************************************************

五个机器周期

******************************************************/ void nop()

{_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();}

/****************************************************

74hc165初始化

******************************************************/

void hc165intn() //初始化

{sh=1;

sd=1;

ck=1;

}

/****************************************************

74hc165开始输人

******************************************************/ void hc165satin()

{

sh=0; //起始接收脉冲开始接收。

sh=1;

}

/****************************************************

74hc165接收函数

******************************************************/ unsigned char hc165inpute() //接收扩展8位函数{unsigned char i,mm;

for(i=0;i<8;i++)

{ mm=(mm<<1)|sd;

ck=0;

nop();

ck=1; }

return mm;

}

/****************************************************

74hc数165保存

******************************************************/

hc165pinsav(unsigned char d)

{unsigned char i;

for(i=0;i

{hc165insav[i]=hc165inpute();

}

}

#endif

74HC595程序支持联级

/**************************************************** 74HC595intn();

单级数据发送:74HC595Write(要发送的数);

数组发送多联级数:hc595Writef(ms)//ms为发送个数。

4HC595out();开始输出

** ****************************************************/

#ifndef __74HC595_H__

#define __74HC595_H__

#include "A T89X52.h"

#include

#include

unsigned char hc595sen[5];//联级发送

sbit scl=P3^4;//时钟信号11号引脚

sbit scp=P3^2 ;//数据线14号引脚

sbit sda=P3^3; //锁存12号引脚

//Q'7联级9引脚,连接下级的14引脚。

/****************************************************

起始信号放开总线

******************************************************/ void hc595intn() //595发送初始化

{

scl=0;//时钟信号11号引脚

sda=1;//数据线14号引脚

scp=0; //锁存12号引脚

}

/****************************************************

五个机器周期

******************************************************/ void snop()

{_nop_();_nop_();_nop_();

_nop_();_nop_();_nop_();_nop_();}

/****************************************************

74HC595开始输出

******************************************************/

void hc595out()

{

scp=0;

snop();

scp=1;

snop();

scp=0;

hc595intn();

}

/**************************************************** 74hc595发送数据8位数据发送

******************************************************/ hc595Write(unsigned char input) //发送input

{unsigned char temp;

for(temp=0;temp<8;temp++)

相关文档
最新文档