74HC595驱动程序 测试可用

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

74HC驱动程序

#include

#include

#define uint unsigned int

#define uchar unsigned char

sbit SDA = P1^0;

sbit SHIFT_CP = P1^1;

sbit ST_CP = P1^2;

#define NOP _nop_()

uchar code wei[]=

{0x01,0x02,0x04,0x08,

0x10,0x20,0x40,0x80

};

uchar code duan[]={

0xc0,0xf9,0xa4,0xb0,

0x99,0x92,0x82,0xf8,

0x80,0x90

};

void disp(uint var,uchar rol,uchar pot); void InitSerialPort(void)

{

SDA = 0;

SHIFT_CP = 0;

ST_CP = 0;

}

void SerialSendData(uint dat)

{

uchar ii;

uint sdata=dat;

for(ii=0;ii<16;ii++)

{

if(sdata&0x8000)SDA=1;

else SDA = 0;

sdata<<=1;

SHIFT_CP =0;

NOP;

NOP;

SHIFT_CP = 1;

NOP;

NOP;

}

ST_CP = 1;

NOP;

NOP;

ST_CP = 0;

}

void disp(uint var,uchar rol,uchar pot) {

unsigned int dx;

uchar a=var/1000;

uchar b=(var%1000)/100;

uchar c=(var%100)/10;

uchar d=var%10;

if(rol==0)

{

InitSerialPort();

dx=wei[0];

if(pot==0)

{

dx=((dx<<8)|duan[a]&0x7f);

}

else

{

dx=((dx<<8)|duan[a]);

}

SerialSendData(dx);

dx=wei[1];

if(pot==1)

{

dx=((dx<<8)|duan[b]&0x7f);

}

else

{

dx=((dx<<8)|duan[b]);

}

SerialSendData(dx);

dx=wei[2];

if(pot==2)

{

dx=((dx<<8)|duan[c]&0x7f);

}

else

{

}

SerialSendData(dx);

dx=wei[3];

if(pot==3)

{

dx=((dx<<8)|duan[d]&0x7f);

}

else

{

dx=((dx<<8)|duan[d]);

}

SerialSendData(dx);

}

else if(rol==1)

{

InitSerialPort();

dx=wei[4];

if(pot==0)

{

dx=((dx<<8)|duan[a]&0x7f);

}

else

{

dx=((dx<<8)|duan[a]);

}

SerialSendData(dx);

dx=wei[5];

if(pot==1)

{

dx=((dx<<8)|duan[b]&0x7f);

}

else

{

dx=((dx<<8)|duan[b]);

}

SerialSendData(dx);

dx=wei[6];

if(pot==2)

{

dx=((dx<<8)|duan[c]&0x7f);

}

else

{

}

SerialSendData(dx);

dx=wei[7];

if(pot==3)

{

dx=((dx<<8)|duan[d]&0x7f);

}

else

{

dx=((dx<<8)|duan[d]);

}

SerialSendData(dx);

}

}

void main()

{

while(1)

{

disp(1234,0,0);

disp(5678,1,0);

}

}

相关文档
最新文档