|
CD4094驱动程序
CD4094用的比较广...可以用在静态显示...串口转并口...驱动数码管LED等...
程序...
#include<at89x52.h> #include<intrins.h>
#define uint unsigned int #define uchar unsigned char
/* sbit K1 = P3^4; sbit K2 = P3^5; sbit K3 = P2^4; sbit K4 = P2^5; */
sbit STR = P2^0;//定义CD4094各端口; sbit DATA = P2^1; sbit CLK = P2^2;
//code unsigned char C51BOX2[3] _at_ 0x43;
void Out_4094(uchar data1);//CD4094写数据子函数; void Delay(uint a); //延时子函数;
//主程序开始; void main() { uchar i; //无限循环; while(1) { for(i=0;i<255;i++) //让CD4094端口的LED不断从0-255显示; { Delay(10000); //延时; Out_4094(i); //调用显示子函数; Delay(10000); //延时; } } //while(1); }
void Out_4094(uchar data1) //写CD4094子函数; { uchar i; //定义子函数; STR="0"; //保持然来的状态不变; for(i=0;i<8;i++) //写八位数据进CD4094; { if(data1&0x01) //判断并发串行数据; { DATA="1"; //发高电平; } else { DATA="0"; //发低电平; } CLK="0"; //形成上升延脉冲; _nop_(); _nop_(); //延时; _nop_(); CLK=1; data1>>=1; //数据移位,送下一位数据; } STR="1"; //数据送完;更新显示; }
void Delay(uint a) //延时子函数; { uint b; for(b=0;b<a;b++); }
|