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