直接用的那篇帖子里的代码
#include <stdio.h>
#include <string.h>
#include <DS1302.h>
//74HC595 数码管的A-G
int latchPin = 2;
int clockPin = 3;
int dataPin = 1;
//数字,d1,d2,d3,d4
int d1 = 13;
int d2 = 12;
int d3 = 11;
int d4 = 10;
//DS1302
uint8_t CE_PIN = 5;
uint8_t IO_PIN = 6;
uint8_t SCLK_PIN = 7;
DS1302 rtc(CE_PIN, IO_PIN, SCLK_PIN);
void setup()
{
pinMode(d1, OUTPUT);
pinMode(d2, OUTPUT);
pinMode(d3, OUTPUT);
pinMode(d4, OUTPUT);
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
rtc.write_protect(false);
rtc.halt(false);
}
void loop()
{
Time t = rtc.time();
//显示第一位数字
cls();
dig(1);
num(t.hr/10);
//显示第二位数字
cls();
dig(2);
num(t.hr%10);
//显示第三位数字
cls();
dig(3);
num(t.min/10);
//显示第四位数字
cls();
dig(4);
num(t.min%10);
}
void dig(int x)//dig(x),开启d(x)端口
{
digitalWrite(d1, 0);
digitalWrite(d2, 0);
digitalWrite(d3, 0);
digitalWrite(d4, 0);
switch(x)
{
case 1:
digitalWrite(d1, 1);
break;
case 2:
digitalWrite(d2, 1);
break;
case 3:
digitalWrite(d3, 1);
break;
default:
digitalWrite(d4, 1);
break;
}
}
void num(int x) //num(x),显示数字x
{
switch(x)
{
default: //0
digitalWrite(latchPin,0);
shiftOut(dataPin,clockPin,MSBFIRST,3);
digitalWrite(latchPin,1);
break;
case 1: //1
digitalWrite(latchPin,0);
shiftOut(dataPin,clockPin,MSBFIRST,159);
digitalWrite(latchPin,1);
break;
case 2: //2
digitalWrite(latchPin,0);
shiftOut(dataPin,clockPin,MSBFIRST,37);
digitalWrite(latchPin,1);
break;
case 3: //3
digitalWrite(latchPin,0);
shiftOut(dataPin,clockPin,MSBFIRST,13);
digitalWrite(latchPin,1);
break;
case 4: //4
digitalWrite(latchPin,0);
shiftOut(dataPin,clockPin,MSBFIRST,153);
digitalWrite(latchPin,1);
break;
case 5: //5
digitalWrite(latchPin,0);
shiftOut(dataPin,clockPin,MSBFIRST,73);
digitalWrite(latchPin,1);
break;
case 6: //6
digitalWrite(latchPin,0);
shiftOut(dataPin,clockPin,MSBFIRST,65);
digitalWrite(latchPin,1);
break;
case 7: //7
digitalWrite(latchPin,0);
shiftOut(dataPin,clockPin,MSBFIRST,27);
digitalWrite(latchPin,1);
break;
case 8: //8
digitalWrite(latchPin,0);
shiftOut(dataPin,clockPin,MSBFIRST,1);
digitalWrite(latchPin,1);
break;
case 9: //9
digitalWrite(latchPin,0);
shiftOut(dataPin,clockPin,MSBFIRST,9);
digitalWrite(latchPin,1);
break;
}
}
void cls()//清屏
{
digitalWrite(latchPin,LOW);
shiftOut(dataPin,clockPin,MSBFIRST,255);
digitalWrite(latchPin,HIGH);
} |