|
|
发表于 2014-9-22 16:17:41
|
显示全部楼层
用shiftOut函数,虽然我用的是STCunio,也就是51版的arduino ,程序应该差不多,595使用shiftOut函数之后要再来个下降沿才是正确的。我这个是级联的
code table1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
code table2[]={0xf7,0xfb,0xfd,0xfe};
void main()
{ int dataPin=8;
int clockPin=9;
int ST_CP=10;
int _data;
u8 data1,data2,data3,data4;
Serialbegin(2400);
pinMode(dataPin,PullUp);
pinMode(clockPin,PullUp);
pinMode(ST_CP,PullUp);
while(1)
{
//最先进的数据会在Q7输出
u8 i;
for(i=0;i<=9;i++)
{
shiftOut(dataPin, clockPin, MSBFIRST,table1[i]);//位选
shiftOut(dataPin, clockPin, MSBFIRST,0xf7); //段选
digitalWrite(ST_CP,LOW);
digitalWrite(ST_CP,HIGH);
delay_ms(200);
}
for(i=0;i<=9;i++)
{
shiftOut(dataPin, clockPin, MSBFIRST,table1[i]);//位选
shiftOut(dataPin, clockPin, MSBFIRST,0xfb); //段选
digitalWrite(ST_CP,LOW);
digitalWrite(ST_CP,HIGH);
delay_ms(200);
}
for(i=0;i<=9;i++)
{
shiftOut(dataPin, clockPin, MSBFIRST,table1[i]);//位选
shiftOut(dataPin, clockPin, MSBFIRST,0xfd); //段选
digitalWrite(ST_CP,LOW);
digitalWrite(ST_CP,HIGH);
delay_ms(200);
}
for(i=0;i<=9;i++)
{
shiftOut(dataPin, clockPin, MSBFIRST,table1[i]);//位选
shiftOut(dataPin, clockPin, MSBFIRST,0xfe); //段选
digitalWrite(ST_CP,LOW);
digitalWrite(ST_CP,HIGH);
delay_ms(200);
}
_data=1345;
while(1)//一直显示_data的值
{
data1=_data/1000;
data2=_data%1000/100;
data3=_data%100/10;
data4=_data%10;
shiftOut(dataPin, clockPin, MSBFIRST,table1[data1]);//位选
shiftOut(dataPin, clockPin, MSBFIRST,table2[3]); //段选
digitalWrite(ST_CP,LOW);
digitalWrite(ST_CP,HIGH);
shiftOut(dataPin, clockPin, MSBFIRST,table1[data2]);//位选
shiftOut(dataPin, clockPin, MSBFIRST,table2[2]); //段选
digitalWrite(ST_CP,LOW);
digitalWrite(ST_CP,HIGH);
shiftOut(dataPin, clockPin, MSBFIRST,table1[data3]);//位选
shiftOut(dataPin, clockPin, MSBFIRST,table2[1]); //段选
digitalWrite(ST_CP,LOW);
digitalWrite(ST_CP,HIGH);
shiftOut(dataPin, clockPin, MSBFIRST,table1[data4]);//位选
shiftOut(dataPin, clockPin, MSBFIRST,table2[0]); //段选
digitalWrite(ST_CP,LOW);
digitalWrite(ST_CP,HIGH);
}
}
}
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|