单片机io扩展74hc165和74hc595程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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++)