文档库 最新最全的文档下载
当前位置:文档库 › 树莓派 双595 4位数码管时钟显示程序

树莓派 双595 4位数码管时钟显示程序

#include
#include
#include
#include
#include
#define SCLK 12 //37
#define RCLK 13 //38
#define DIO 14 //24
unsigned int code_char[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned char code_segbit[]={0x01,0x02,0x04,0x08};
int pins[3]={SCLK,RCLK,DIO};
int init(){
int i=0;
for(i=0;i<3;i++)
{
pinMode(pins[i],OUTPUT);
digitalWrite(pins[i],LOW);
}
}
int destroy(){
int i=0;
for(i=0;i<3;i++)
{
digitalWrite(pins[i],LOW);
pinMode(pins[i],INPUT);
}
}
void loop(){
time_t rawtime;
time(&rawtime);
struct tm *timeinfo;
timeinfo=localtime(&rawtime);
digitalWrite(RCLK,LOW);
if(timeinfo->tm_min>=10)
shiftOut(DIO,SCLK,1,code_char[timeinfo->tm_min%10]);//character
else
shiftOut(DIO,SCLK,1,code_char[timeinfo->tm_min]);
shiftOut(DIO,SCLK,1,code_segbit[0]);//bit
digitalWrite(RCLK,HIGH);
digitalWrite(RCLK,LOW);
if(timeinfo->tm_min>=10)
shiftOut(DIO,SCLK,1,code_char[timeinfo->tm_min/10]);//character
else
shiftOut(DIO,SCLK,1,code_char[0]);
shiftOut(DIO,SCLK,1,code_segbit[1]);//bit
digitalWrite(RCLK,HIGH);
digitalWrite(RCLK,LOW);
if(timeinfo->tm_hour>=10)
shiftOut(DIO,SCLK,1,code_char[timeinfo->tm_hour%10]);//character
else
shiftOut(DIO,SCLK,1,code_char[timeinfo->tm_hour]);
shiftOut(DIO,SCLK,1,code_segbit[2]);//bit
digitalWrite(RCLK,HIGH);
digitalWrite(RCLK,LOW);
if(timeinfo->tm_hour>=10)
shiftOut(DIO,SCLK,1,code_char[timeinfo->tm_hour/10]);//character
else
shiftOut(DIO,SCLK,1,code_char[0]);
shiftOut(DIO,SCLK,1,code_segbit[3]);//bit
digitalWrite(RCLK,HIGH);
//printf("%d %d\t%d %d %d %d\n",
// timeinfo->tm_hour,timeinfo->tm_min,
// timeinfo->tm_hour/10,timeinfo->tm_hour%10,
// timeinfo->tm_min/10,timeinfo->tm_min%10);
delayMicroseconds(10);
}
int main(void){
if(wiringPiSetup()==-1) //wiringPiSetupGpio==BCM
exit(1);
init();
while(1) {
loop();
}
destroy();
return 0;
}

相关文档
相关文档 最新文档