初级会员

- 积分
- 59
- 金钱
- 59
- 注册时间
- 2012-12-29
- 在线时间
- 11 小时
|

楼主 |
发表于 2017-3-14 22:54:15
|
显示全部楼层
本帖最后由 wangrupin 于 2017-3-14 22:57 编辑
高手们,帮忙看看, 哪里写错?
开发环境搭建 见:http://www.openedv.com/forum.php?mod=viewthread&tid=27100
TM1637的arduino库:https://github.com/avishorp/TM1637
代码:
#include <Arduino.h>
#include <TM1637Display.h>
#include "RTClock.h"
//showNumberDec(int num, bool leading_zero, uint8_t length, uint8_t pos)
//display.showNumberDec(8,true); Show decimal numbers with/without leading zeros
//display.showNumberDec(0153, True, 4, 0); showNumberDec(int num, bool leading_zero, uint8_t length, uint8_t pos)
#define BOARD_LED_PIN PC13 // Module connection pins (Digital Pins)
#define CLK PB6
#define DIO PB7
TM1637Display display(CLK, DIO);
uint8_t data[]={ 0xff, 0xff, 0xff, 0xff };
RTClock rTime;
time_t timeR;
struct tm *tr;
void setup()
{
pinMode(BOARD_LED_PIN, OUTPUT);
//RTClock(RTCSEL_LSE, 0); //LSE should be 32768 Hz.
rtc_init(RTCSEL_LSE);//LSE should be 32768 Hz.
rtc_set_prescaler_load(0x7fff);//32767+1 Hz.
delay(1000);
display.setBrightness(0x0f);
display.setSegments(data);
delay(5000);
timeR=0x58C85A49;
rTime.setTime(timeR);
data[1] &= 0x7F;
display.setSegments(data);
delay(1000);
}
void loop()
{
volatile uint8_t ss,mm,hh,m0,m1,h0,h1;
rTime.getTime(tr);
ss=tr->tm_sec;
mm=tr->tm_min;
hh=tr->tm_hour;
m1=mm/10;
m0=mm%10;
h1=hh/10;
h0=hh%10;
data[0] = display.encodeDigit(h1);
data[1] = display.encodeDigit(h0);
data[2] = display.encodeDigit(m1);
data[3] = display.encodeDigit(m0);
data[1] |= 0x80;
display.setSegments(data);
digitalWrite(BOARD_LED_PIN, LOW);
delay(500);
data[1] &= 0x7F;
display.setSegments(data);
digitalWrite(BOARD_LED_PIN, HIGH);
delay(500);
}
|
|