本帖最后由 yy温控 于 2009-12-16 13:08 编辑
我用了两片cd4094级联,下面的是我写的程序。
不知道问什么不能实现级联,望大家指教!
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit STR=P1^2;
sbit CLK=P1^1;
sbit DATA=P1^0;
sbit key=P2^7;
void Out_4094(uchar data1);//CD4094写数据子函数;
void Out_40941(uchar data1);//CD4094写数据子函数;
void main()
{
while(1)
{
if(key==0)
{
Out_40941(0x02);
Out_4094(0x40);
}
else if (key==1)
{
Out_40941(0x08);
Out_4094(0x01);
}
}
}
void Out_4094(uchar data1) //写CD4094子函数;
{
uchar i;
STR=0;
for(i=0;i<8;i++)
{
if(data1&0x01)
{
DATA=1;
}
else
{
DATA=0;
}
CLK=0;
_nop_();
_nop_();
_nop_(); //延时;
CLK=1;
data1>>=1;
}//数据送完;更新显示;
STR=1;
}
void Out_40941(uchar data1) //写CD4094子函数;
{
uchar i;
STR=0 ;
for(i=0;i<16;i++)
{
if(data1&0x01)
{
DATA=1;
}
else
{
DATA=0;
}
CLK=0;
_nop_();
_nop_();
_nop_(); //延时;
CLK=1;
data1>>=1;
}//数据送完;更新显示;
STR=1;
} |